/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1337 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 4 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 168 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 92 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 23 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 9 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 134 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 53 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) FilterProof [EQUIVALENT, 0 ms] (30) IntTRS (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 9 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 146 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 31 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 9 ms] (45) IntTRS (46) RankingReductionPairProof [EQUIVALENT, 0 ms] (47) YES (48) JBCTerminationSCC (49) SCCToIRSProof [SOUND, 101 ms] (50) IRSwT (51) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (52) IRSwT (53) IRSwTTerminationDigraphProof [EQUIVALENT, 12 ms] (54) IRSwT (55) IntTRSCompressionProof [EQUIVALENT, 0 ms] (56) IRSwT (57) TempFilterProof [SOUND, 39 ms] (58) IntTRS (59) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (60) YES (61) JBCTerminationSCC (62) SCCToIRSProof [SOUND, 108 ms] (63) IRSwT (64) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (65) IRSwT (66) IRSwTTerminationDigraphProof [EQUIVALENT, 56 ms] (67) AND (68) IRSwT (69) IntTRSCompressionProof [EQUIVALENT, 0 ms] (70) IRSwT (71) TempFilterProof [SOUND, 14 ms] (72) IntTRS (73) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (74) YES (75) IRSwT (76) IntTRSCompressionProof [EQUIVALENT, 0 ms] (77) IRSwT (78) TempFilterProof [SOUND, 14 ms] (79) IntTRS (80) RankingReductionPairProof [EQUIVALENT, 7 ms] (81) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class TriTas { static int N; static int[] a; static int nTas = 0; static void Ajouter(int v) { int i,j; nTas++; i = nTas - 1; while (i > 0 && a[(i - 1)/2] <= v){ a[i] = a[(i - 1)/2]; j = (i - 1)/2; if (j >= i) break; else i = j; } a[i] = v; } static int Maximum() { return a[0]; } static void Supprimer() { int i, j, v; a[0] = a[nTas - 1]; nTas--; i = 0; v = a[0]; while (2 * i + 1 < nTas) { j = 2*i + 1; if (j + 1 < nTas) if (a[j + 1] > a[j]) j++; if (v >= a[j]) break; a[i] = a[j]; i = j; } a[i] = v; } static void HeapSort(){ int i, v; nTas = 0; for (i = 0; i < N; i++) Ajouter(a[i]); for (i = N - 1; i >= 0; i--) { v = Maximum(); Supprimer(); a[i]=v; } } public static void main(String[] args){ Random.args = args; N = args.length; a = new int[N]; for (int i = 0; i < N; i++) a[i] = Random.random(); //for (int i = 0; i < N; i++) // System.out.print(a[i]+" "); //System.out.println(); HeapSort(); //for (int i = 0; i < N; i++) // System.out.print(a[i]+" "); //System.out.println(); } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class TriTas { static int N; static int[] a; static int nTas = 0; static void Ajouter(int v) { int i,j; nTas++; i = nTas - 1; while (i > 0 && a[(i - 1)/2] <= v){ a[i] = a[(i - 1)/2]; j = (i - 1)/2; if (j >= i) break; else i = j; } a[i] = v; } static int Maximum() { return a[0]; } static void Supprimer() { int i, j, v; a[0] = a[nTas - 1]; nTas--; i = 0; v = a[0]; while (2 * i + 1 < nTas) { j = 2*i + 1; if (j + 1 < nTas) if (a[j + 1] > a[j]) j++; if (v >= a[j]) break; a[i] = a[j]; i = j; } a[i] = v; } static void HeapSort(){ int i, v; nTas = 0; for (i = 0; i < N; i++) Ajouter(a[i]); for (i = N - 1; i >= 0; i--) { v = Maximum(); Supprimer(); a[i]=v; } } public static void main(String[] args){ Random.args = args; N = args.length; a = new int[N]; for (int i = 0; i < N; i++) a[i] = Random.random(); //for (int i = 0; i < N; i++) // System.out.print(a[i]+" "); //System.out.println(); HeapSort(); //for (int i = 0; i < N; i++) // System.out.print(a[i]+" "); //System.out.println(); } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: TriTas.main([Ljava/lang/String;)V: Graph of 204 nodes with 1 SCC. TriTas.HeapSort()V: Graph of 127 nodes with 2 SCCs. TriTas.Ajouter(I)V: Graph of 166 nodes with 1 SCC. TriTas.Supprimer()V: Graph of 270 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 5 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TriTas.Supprimer()V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 64 IRulesP rules: f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, matching1) -> f5298_0_Supprimer_IntArithmetic(EOS(STATIC_5298(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2, i1069) :|: TRUE && matching1 = 2 f5298_0_Supprimer_IntArithmetic(EOS(STATIC_5298(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, matching1, i1069) -> f5299_0_Supprimer_ConstantStackPush(EOS(STATIC_5299(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2 * i1069) :|: TRUE && matching1 = 2 f5299_0_Supprimer_ConstantStackPush(EOS(STATIC_5299(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1073) -> f5300_0_Supprimer_IntArithmetic(EOS(STATIC_5300(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1073, 1) :|: TRUE f5300_0_Supprimer_IntArithmetic(EOS(STATIC_5300(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1073, matching1) -> f5301_0_Supprimer_FieldAccess(EOS(STATIC_5301(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1073 + 1) :|: i1073 >= 0 && matching1 = 1 f5301_0_Supprimer_FieldAccess(EOS(STATIC_5301(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1074) -> f5302_0_Supprimer_GE(EOS(STATIC_5302(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1074, i1068) :|: TRUE f5302_0_Supprimer_GE(EOS(STATIC_5302(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1074, i1068) -> f5304_0_Supprimer_GE(EOS(STATIC_5304(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1074, i1068) :|: i1074 < i1068 f5304_0_Supprimer_GE(EOS(STATIC_5304(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1074, i1068) -> f5306_0_Supprimer_ConstantStackPush(EOS(STATIC_5306(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608) :|: i1074 < i1068 f5306_0_Supprimer_ConstantStackPush(EOS(STATIC_5306(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608) -> f5308_0_Supprimer_Load(EOS(STATIC_5308(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2) :|: TRUE f5308_0_Supprimer_Load(EOS(STATIC_5308(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, matching1) -> f5310_0_Supprimer_IntArithmetic(EOS(STATIC_5310(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2, i1069) :|: TRUE && matching1 = 2 f5310_0_Supprimer_IntArithmetic(EOS(STATIC_5310(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, matching1, i1069) -> f5312_0_Supprimer_ConstantStackPush(EOS(STATIC_5312(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2 * i1069) :|: TRUE && matching1 = 2 f5312_0_Supprimer_ConstantStackPush(EOS(STATIC_5312(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1075) -> f5315_0_Supprimer_IntArithmetic(EOS(STATIC_5315(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1075, 1) :|: TRUE f5315_0_Supprimer_IntArithmetic(EOS(STATIC_5315(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1075, matching1) -> f5318_0_Supprimer_Store(EOS(STATIC_5318(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1075 + 1) :|: i1075 >= 0 && matching1 = 1 f5318_0_Supprimer_Store(EOS(STATIC_5318(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, i1076) -> f5320_0_Supprimer_Load(EOS(STATIC_5320(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: TRUE f5320_0_Supprimer_Load(EOS(STATIC_5320(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5322_0_Supprimer_ConstantStackPush(EOS(STATIC_5322(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1076) :|: TRUE f5322_0_Supprimer_ConstantStackPush(EOS(STATIC_5322(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1076) -> f5325_0_Supprimer_IntArithmetic(EOS(STATIC_5325(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1076, 1) :|: TRUE f5325_0_Supprimer_IntArithmetic(EOS(STATIC_5325(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1076, matching1) -> f5326_0_Supprimer_FieldAccess(EOS(STATIC_5326(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1076 + 1) :|: i1076 > 0 && matching1 = 1 f5326_0_Supprimer_FieldAccess(EOS(STATIC_5326(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089) -> f5328_0_Supprimer_GE(EOS(STATIC_5328(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) :|: TRUE f5328_0_Supprimer_GE(EOS(STATIC_5328(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) -> f5330_0_Supprimer_GE(EOS(STATIC_5330(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) :|: i1089 >= i1068 f5328_0_Supprimer_GE(EOS(STATIC_5328(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) -> f5331_0_Supprimer_GE(EOS(STATIC_5331(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) :|: i1089 < i1068 f5330_0_Supprimer_GE(EOS(STATIC_5330(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) -> f5332_0_Supprimer_Load(EOS(STATIC_5332(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: i1089 >= i1068 f5332_0_Supprimer_Load(EOS(STATIC_5332(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5335_0_Supprimer_FieldAccess(EOS(STATIC_5335(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608) :|: TRUE f5335_0_Supprimer_FieldAccess(EOS(STATIC_5335(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608) -> f5338_0_Supprimer_Load(EOS(STATIC_5338(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746))) :|: TRUE f5338_0_Supprimer_Load(EOS(STATIC_5338(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746))) -> f5340_0_Supprimer_ArrayAccess(EOS(STATIC_5340(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5340_0_Supprimer_ArrayAccess(EOS(STATIC_5340(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) -> f5343_0_Supprimer_ArrayAccess(EOS(STATIC_5343(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5343_0_Supprimer_ArrayAccess(EOS(STATIC_5343(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) -> f5347_0_Supprimer_LT(EOS(STATIC_5347(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, i1097) :|: i1076 < i746 f5347_0_Supprimer_LT(EOS(STATIC_5347(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, i1097) -> f5351_0_Supprimer_LT(EOS(STATIC_5351(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, i1097) :|: i608 < i1097 f5351_0_Supprimer_LT(EOS(STATIC_5351(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, i1097) -> f5356_0_Supprimer_FieldAccess(EOS(STATIC_5356(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: i608 < i1097 f5356_0_Supprimer_FieldAccess(EOS(STATIC_5356(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5361_0_Supprimer_Load(EOS(STATIC_5361(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746))) :|: TRUE f5361_0_Supprimer_Load(EOS(STATIC_5361(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746))) -> f5367_0_Supprimer_FieldAccess(EOS(STATIC_5367(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069) :|: TRUE f5367_0_Supprimer_FieldAccess(EOS(STATIC_5367(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069) -> f5373_0_Supprimer_Load(EOS(STATIC_5373(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746))) :|: TRUE f5373_0_Supprimer_Load(EOS(STATIC_5373(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746))) -> f5379_0_Supprimer_ArrayAccess(EOS(STATIC_5379(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5379_0_Supprimer_ArrayAccess(EOS(STATIC_5379(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746)), i1076) -> f5386_0_Supprimer_ArrayAccess(EOS(STATIC_5386(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5386_0_Supprimer_ArrayAccess(EOS(STATIC_5386(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, java.lang.Object(ARRAY(i746)), i1076) -> f5393_0_Supprimer_ArrayAccess(EOS(STATIC_5393(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, i1120) :|: i1076 < i746 f5393_0_Supprimer_ArrayAccess(EOS(STATIC_5393(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, i1120) -> f5400_0_Supprimer_ArrayAccess(EOS(STATIC_5400(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, i1120) :|: TRUE f5400_0_Supprimer_ArrayAccess(EOS(STATIC_5400(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608, java.lang.Object(ARRAY(i746)), i1069, i1120) -> f5407_0_Supprimer_Load(EOS(STATIC_5407(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) :|: i1069 < i746 f5407_0_Supprimer_Load(EOS(STATIC_5407(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) -> f5415_0_Supprimer_Store(EOS(STATIC_5415(java.lang.Object(ARRAY(i746)), i1068)), i608, i1076) :|: TRUE f5415_0_Supprimer_Store(EOS(STATIC_5415(java.lang.Object(ARRAY(i746)), i1068)), i608, i1076) -> f5421_0_Supprimer_JMP(EOS(STATIC_5421(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) :|: TRUE f5421_0_Supprimer_JMP(EOS(STATIC_5421(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) -> f5426_0_Supprimer_ConstantStackPush(EOS(STATIC_5426(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) :|: TRUE f5426_0_Supprimer_ConstantStackPush(EOS(STATIC_5426(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) -> f5296_0_Supprimer_ConstantStackPush(EOS(STATIC_5296(java.lang.Object(ARRAY(i746)), i1068)), i1076, i608) :|: TRUE f5296_0_Supprimer_ConstantStackPush(EOS(STATIC_5296(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608) -> f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746)), i1068)), i1069, i608, 2) :|: TRUE f5331_0_Supprimer_GE(EOS(STATIC_5331(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1089, i1068) -> f5333_0_Supprimer_FieldAccess(EOS(STATIC_5333(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: i1089 < i1068 f5333_0_Supprimer_FieldAccess(EOS(STATIC_5333(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5336_0_Supprimer_Load(EOS(STATIC_5336(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746))) :|: TRUE f5336_0_Supprimer_Load(EOS(STATIC_5336(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746))) -> f5339_0_Supprimer_ConstantStackPush(EOS(STATIC_5339(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5339_0_Supprimer_ConstantStackPush(EOS(STATIC_5339(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1076) -> f5341_0_Supprimer_IntArithmetic(EOS(STATIC_5341(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1076, 1) :|: TRUE f5341_0_Supprimer_IntArithmetic(EOS(STATIC_5341(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1076, matching1) -> f5345_0_Supprimer_ArrayAccess(EOS(STATIC_5345(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1076 + 1) :|: i1076 > 0 && matching1 = 1 f5345_0_Supprimer_ArrayAccess(EOS(STATIC_5345(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1096) -> f5349_0_Supprimer_ArrayAccess(EOS(STATIC_5349(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1096) :|: TRUE f5349_0_Supprimer_ArrayAccess(EOS(STATIC_5349(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, java.lang.Object(ARRAY(i746)), i1096) -> f5353_0_Supprimer_FieldAccess(EOS(STATIC_5353(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098) :|: i1096 < i746 f5353_0_Supprimer_FieldAccess(EOS(STATIC_5353(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098) -> f5359_0_Supprimer_Load(EOS(STATIC_5359(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746))) :|: TRUE f5359_0_Supprimer_Load(EOS(STATIC_5359(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746))) -> f5364_0_Supprimer_ArrayAccess(EOS(STATIC_5364(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5364_0_Supprimer_ArrayAccess(EOS(STATIC_5364(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746)), i1076) -> f5369_0_Supprimer_ArrayAccess(EOS(STATIC_5369(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5369_0_Supprimer_ArrayAccess(EOS(STATIC_5369(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, java.lang.Object(ARRAY(i746)), i1076) -> f5376_0_Supprimer_LE(EOS(STATIC_5376(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) :|: i1076 < i746 f5376_0_Supprimer_LE(EOS(STATIC_5376(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) -> f5382_0_Supprimer_LE(EOS(STATIC_5382(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) :|: i1098 <= i1110 f5376_0_Supprimer_LE(EOS(STATIC_5376(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) -> f5383_0_Supprimer_LE(EOS(STATIC_5383(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) :|: i1098 > i1110 f5382_0_Supprimer_LE(EOS(STATIC_5382(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) -> f5388_0_Supprimer_Load(EOS(STATIC_5388(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: i1098 <= i1110 f5388_0_Supprimer_Load(EOS(STATIC_5388(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5396_0_Supprimer_FieldAccess(EOS(STATIC_5396(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608) :|: TRUE f5396_0_Supprimer_FieldAccess(EOS(STATIC_5396(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608) -> f5403_0_Supprimer_Load(EOS(STATIC_5403(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746))) :|: TRUE f5403_0_Supprimer_Load(EOS(STATIC_5403(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746))) -> f5410_0_Supprimer_ArrayAccess(EOS(STATIC_5410(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5410_0_Supprimer_ArrayAccess(EOS(STATIC_5410(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) -> f5340_0_Supprimer_ArrayAccess(EOS(STATIC_5340(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i608, java.lang.Object(ARRAY(i746)), i1076) :|: TRUE f5383_0_Supprimer_LE(EOS(STATIC_5383(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608, i1098, i1110) -> f5389_0_Supprimer_Inc(EOS(STATIC_5389(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) :|: i1098 > i1110 f5389_0_Supprimer_Inc(EOS(STATIC_5389(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076, i608) -> f5397_0_Supprimer_Load(EOS(STATIC_5397(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1076 + 1, i608) :|: TRUE f5397_0_Supprimer_Load(EOS(STATIC_5397(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608) -> f5404_0_Supprimer_FieldAccess(EOS(STATIC_5404(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608) :|: TRUE f5404_0_Supprimer_FieldAccess(EOS(STATIC_5404(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608) -> f5411_0_Supprimer_Load(EOS(STATIC_5411(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608, java.lang.Object(ARRAY(i746))) :|: TRUE f5411_0_Supprimer_Load(EOS(STATIC_5411(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608, java.lang.Object(ARRAY(i746))) -> f5418_0_Supprimer_ArrayAccess(EOS(STATIC_5418(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608, java.lang.Object(ARRAY(i746)), i1122) :|: TRUE f5418_0_Supprimer_ArrayAccess(EOS(STATIC_5418(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608, java.lang.Object(ARRAY(i746)), i1122) -> f5340_0_Supprimer_ArrayAccess(EOS(STATIC_5340(java.lang.Object(ARRAY(i746)), i1068)), i1069, i1122, i608, i608, java.lang.Object(ARRAY(i746)), i1122) :|: TRUE Combined rules. Obtained 3 IRulesP rules: f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), i1069:0, i608:0, 2) -> f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), 2 * i1069:0 + 1, i608:0, 2) :|: 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 1 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i746:0 > i1069:0 && i1110:0 >= i1098:0 f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), i1069:0, i608:0, 2) -> f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), 2 * i1069:0 + 1, i608:0, 2) :|: 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 1 && i1068:0 <= 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > i1069:0 f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), i1069:0, i608:0, 2) -> f5297_0_Supprimer_Load(EOS(STATIC_5297(java.lang.Object(ARRAY(i746:0)), i1068:0)), 2 * i1069:0 + 2, i608:0, 2) :|: 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 1 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 2 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 1 && i746:0 > i1069:0 && i1110:0 < i1098:0 Filtered constant ground arguments: f5297_0_Supprimer_Load(x1, x2, x3, x4) -> f5297_0_Supprimer_Load(x1, x2, x3) Finished conversion. Obtained 3 rules.P rules: f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(2 * i1069:0 + 1, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i1110:0 >= i1098:0 && i746:0 > i1069:0 f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(2 * i1069:0 + 1, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 <= 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i746:0 > i1069:0 && i608:0 < i1097:0 f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(2 * i1069:0 + 2, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 2 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 1 && i1110:0 < i1098:0 && i746:0 > i1069:0 ---------------------------------------- (9) Obligation: Rules: f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(2 * i1069:0 + 1, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i1110:0 >= i1098:0 && i746:0 > i1069:0 f5297_0_Supprimer_Load(x, x1, x2, x3) -> f5297_0_Supprimer_Load(2 * x + 1, x1, x2, x3) :|: x3 > 2 * x + 1 && 2 * x >= 0 && x3 <= 2 * x + 2 && x2 > 2 * x + 1 && x2 > x && x1 < x4 f5297_0_Supprimer_Load(x5, x6, x7, x8) -> f5297_0_Supprimer_Load(2 * x5 + 2, x6, x7, x8) :|: x8 > 2 * x5 + 1 && 2 * x5 >= 0 && x8 > 2 * x5 + 2 && x7 > 2 * x5 + 2 && x6 < x9 && x7 > 2 * x5 + 1 && x10 < x11 && x7 > x5 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(arith, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i1110:0 >= i1098:0 && i746:0 > i1069:0 && arith = 2 * i1069:0 + 1 f5297_0_Supprimer_Load(x12, x13, x14, x15) -> f5297_0_Supprimer_Load(x16, x13, x14, x15) :|: x15 > 2 * x12 + 1 && 2 * x12 >= 0 && x15 <= 2 * x12 + 2 && x14 > 2 * x12 + 1 && x14 > x12 && x13 < x17 && x16 = 2 * x12 + 1 f5297_0_Supprimer_Load(x18, x19, x20, x21) -> f5297_0_Supprimer_Load(x22, x19, x20, x21) :|: x21 > 2 * x18 + 1 && 2 * x18 >= 0 && x21 > 2 * x18 + 2 && x20 > 2 * x18 + 2 && x19 < x23 && x20 > 2 * x18 + 1 && x24 < x25 && x20 > x18 && x22 = 2 * x18 + 2 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(arith, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i1110:0 >= i1098:0 && i746:0 > i1069:0 && arith = 2 * i1069:0 + 1 (2) f5297_0_Supprimer_Load(x12, x13, x14, x15) -> f5297_0_Supprimer_Load(x16, x13, x14, x15) :|: x15 > 2 * x12 + 1 && 2 * x12 >= 0 && x15 <= 2 * x12 + 2 && x14 > 2 * x12 + 1 && x14 > x12 && x13 < x17 && x16 = 2 * x12 + 1 (3) f5297_0_Supprimer_Load(x18, x19, x20, x21) -> f5297_0_Supprimer_Load(x22, x19, x20, x21) :|: x21 > 2 * x18 + 1 && 2 * x18 >= 0 && x21 > 2 * x18 + 2 && x20 > 2 * x18 + 2 && x19 < x23 && x20 > 2 * x18 + 1 && x24 < x25 && x20 > x18 && x22 = 2 * x18 + 2 Arcs: (1) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f5297_0_Supprimer_Load(i1069:0, i608:0, i746:0, i1068:0) -> f5297_0_Supprimer_Load(arith, i608:0, i746:0, i1068:0) :|: i1068:0 > 2 * i1069:0 + 1 && 2 * i1069:0 >= 0 && i1068:0 > 2 * i1069:0 + 2 && i746:0 > 2 * i1069:0 + 1 && i608:0 < i1097:0 && i746:0 > 2 * i1069:0 + 2 && i1110:0 >= i1098:0 && i746:0 > i1069:0 && arith = 2 * i1069:0 + 1 (2) f5297_0_Supprimer_Load(x18, x19, x20, x21) -> f5297_0_Supprimer_Load(x22, x19, x20, x21) :|: x21 > 2 * x18 + 1 && 2 * x18 >= 0 && x21 > 2 * x18 + 2 && x20 > 2 * x18 + 2 && x19 < x23 && x20 > 2 * x18 + 1 && x24 < x25 && x20 > x18 && x22 = 2 * x18 + 2 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f5297_0_Supprimer_Load(i1069:0:0, i608:0:0, i746:0:0, i1068:0:0) -> f5297_0_Supprimer_Load(2 * i1069:0:0 + 1, i608:0:0, i746:0:0, i1068:0:0) :|: i1110:0:0 >= i1098:0:0 && i746:0:0 > i1069:0:0 && i746:0:0 > 2 * i1069:0:0 + 2 && i608:0:0 < i1097:0:0 && i746:0:0 > 2 * i1069:0:0 + 1 && i1068:0:0 > 2 * i1069:0:0 + 2 && 2 * i1069:0:0 >= 0 && i1068:0:0 > 2 * i1069:0:0 + 1 f5297_0_Supprimer_Load(x18:0, x19:0, x20:0, x21:0) -> f5297_0_Supprimer_Load(2 * x18:0 + 2, x19:0, x20:0, x21:0) :|: x25:0 > x24:0 && x20:0 > x18:0 && x20:0 > 2 * x18:0 + 1 && x23:0 > x19:0 && x20:0 > 2 * x18:0 + 2 && x21:0 > 2 * x18:0 + 2 && 2 * x18:0 >= 0 && x21:0 > 2 * x18:0 + 1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5297_0_Supprimer_Load(INTEGER, INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f5297_0_Supprimer_Load(i1069:0:0, i608:0:0, i746:0:0, i1068:0:0) -> f5297_0_Supprimer_Load(c, i608:0:0, i746:0:0, i1068:0:0) :|: c = 2 * i1069:0:0 + 1 && (i1110:0:0 >= i1098:0:0 && i746:0:0 > i1069:0:0 && i746:0:0 > 2 * i1069:0:0 + 2 && i608:0:0 < i1097:0:0 && i746:0:0 > 2 * i1069:0:0 + 1 && i1068:0:0 > 2 * i1069:0:0 + 2 && 2 * i1069:0:0 >= 0 && i1068:0:0 > 2 * i1069:0:0 + 1) f5297_0_Supprimer_Load(x18:0, x19:0, x20:0, x21:0) -> f5297_0_Supprimer_Load(c1, x19:0, x20:0, x21:0) :|: c1 = 2 * x18:0 + 2 && (x25:0 > x24:0 && x20:0 > x18:0 && x20:0 > 2 * x18:0 + 1 && x23:0 > x19:0 && x20:0 > 2 * x18:0 + 2 && x21:0 > 2 * x18:0 + 2 && 2 * x18:0 >= 0 && x21:0 > 2 * x18:0 + 1) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f5297_0_Supprimer_Load(x, x1, x2, x3)] = -2 - 2*x + x2 The following rules are decreasing: f5297_0_Supprimer_Load(i1069:0:0, i608:0:0, i746:0:0, i1068:0:0) -> f5297_0_Supprimer_Load(c, i608:0:0, i746:0:0, i1068:0:0) :|: c = 2 * i1069:0:0 + 1 && (i1110:0:0 >= i1098:0:0 && i746:0:0 > i1069:0:0 && i746:0:0 > 2 * i1069:0:0 + 2 && i608:0:0 < i1097:0:0 && i746:0:0 > 2 * i1069:0:0 + 1 && i1068:0:0 > 2 * i1069:0:0 + 2 && 2 * i1069:0:0 >= 0 && i1068:0:0 > 2 * i1069:0:0 + 1) f5297_0_Supprimer_Load(x18:0, x19:0, x20:0, x21:0) -> f5297_0_Supprimer_Load(c1, x19:0, x20:0, x21:0) :|: c1 = 2 * x18:0 + 2 && (x25:0 > x24:0 && x20:0 > x18:0 && x20:0 > 2 * x18:0 + 1 && x23:0 > x19:0 && x20:0 > 2 * x18:0 + 2 && x21:0 > 2 * x18:0 + 2 && 2 * x18:0 >= 0 && x21:0 > 2 * x18:0 + 1) The following rules are bounded: f5297_0_Supprimer_Load(i1069:0:0, i608:0:0, i746:0:0, i1068:0:0) -> f5297_0_Supprimer_Load(c, i608:0:0, i746:0:0, i1068:0:0) :|: c = 2 * i1069:0:0 + 1 && (i1110:0:0 >= i1098:0:0 && i746:0:0 > i1069:0:0 && i746:0:0 > 2 * i1069:0:0 + 2 && i608:0:0 < i1097:0:0 && i746:0:0 > 2 * i1069:0:0 + 1 && i1068:0:0 > 2 * i1069:0:0 + 2 && 2 * i1069:0:0 >= 0 && i1068:0:0 > 2 * i1069:0:0 + 1) f5297_0_Supprimer_Load(x18:0, x19:0, x20:0, x21:0) -> f5297_0_Supprimer_Load(c1, x19:0, x20:0, x21:0) :|: c1 = 2 * x18:0 + 2 && (x25:0 > x24:0 && x20:0 > x18:0 && x20:0 > 2 * x18:0 + 1 && x23:0 > x19:0 && x20:0 > 2 * x18:0 + 2 && x21:0 > 2 * x18:0 + 2 && 2 * x18:0 >= 0 && x21:0 > 2 * x18:0 + 1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TriTas.Ajouter(I)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 40 IRulesP rules: f4722_0_Ajouter_LE(EOS(STATIC_4722(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670) -> f4729_0_Ajouter_LE(EOS(STATIC_4729(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670) :|: TRUE f4729_0_Ajouter_LE(EOS(STATIC_4729(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670) -> f4736_0_Ajouter_FieldAccess(EOS(STATIC_4736(java.lang.Object(ARRAY(i517)))), i519, i519, i670) :|: i670 > 0 f4736_0_Ajouter_FieldAccess(EOS(STATIC_4736(java.lang.Object(ARRAY(i517)))), i519, i519, i670) -> f4743_0_Ajouter_Load(EOS(STATIC_4743(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517))) :|: TRUE f4743_0_Ajouter_Load(EOS(STATIC_4743(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517))) -> f4749_0_Ajouter_ConstantStackPush(EOS(STATIC_4749(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670) :|: TRUE f4749_0_Ajouter_ConstantStackPush(EOS(STATIC_4749(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670) -> f4755_0_Ajouter_IntArithmetic(EOS(STATIC_4755(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, 1) :|: TRUE f4755_0_Ajouter_IntArithmetic(EOS(STATIC_4755(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, matching1) -> f4762_0_Ajouter_ConstantStackPush(EOS(STATIC_4762(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670 - 1) :|: i670 > 0 && matching1 = 1 f4762_0_Ajouter_ConstantStackPush(EOS(STATIC_4762(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i695) -> f4769_0_Ajouter_IntArithmetic(EOS(STATIC_4769(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i695, 2) :|: TRUE f4769_0_Ajouter_IntArithmetic(EOS(STATIC_4769(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i695, matching1) -> f4776_0_Ajouter_ArrayAccess(EOS(STATIC_4776(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i702) :|: i702 = i695 / 2 && i702 <= i695 && matching1 = 2 f4776_0_Ajouter_ArrayAccess(EOS(STATIC_4776(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i702) -> f4783_0_Ajouter_ArrayAccess(EOS(STATIC_4783(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i702) :|: TRUE f4783_0_Ajouter_ArrayAccess(EOS(STATIC_4783(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i702) -> f4792_0_Ajouter_Load(EOS(STATIC_4792(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717) :|: i702 < i517 f4792_0_Ajouter_Load(EOS(STATIC_4792(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717) -> f4799_0_Ajouter_GT(EOS(STATIC_4799(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717, i519) :|: TRUE f4799_0_Ajouter_GT(EOS(STATIC_4799(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717, i519) -> f4808_0_Ajouter_GT(EOS(STATIC_4808(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717, i519) :|: i717 <= i519 f4808_0_Ajouter_GT(EOS(STATIC_4808(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i717, i519) -> f4818_0_Ajouter_FieldAccess(EOS(STATIC_4818(java.lang.Object(ARRAY(i517)))), i519, i519, i670) :|: i717 <= i519 f4818_0_Ajouter_FieldAccess(EOS(STATIC_4818(java.lang.Object(ARRAY(i517)))), i519, i519, i670) -> f4827_0_Ajouter_Load(EOS(STATIC_4827(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517))) :|: TRUE f4827_0_Ajouter_Load(EOS(STATIC_4827(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517))) -> f4836_0_Ajouter_FieldAccess(EOS(STATIC_4836(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670) :|: TRUE f4836_0_Ajouter_FieldAccess(EOS(STATIC_4836(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670) -> f4845_0_Ajouter_Load(EOS(STATIC_4845(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517))) :|: TRUE f4845_0_Ajouter_Load(EOS(STATIC_4845(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517))) -> f4856_0_Ajouter_ConstantStackPush(EOS(STATIC_4856(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i670) :|: TRUE f4856_0_Ajouter_ConstantStackPush(EOS(STATIC_4856(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i670) -> f4864_0_Ajouter_IntArithmetic(EOS(STATIC_4864(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i670, 1) :|: TRUE f4864_0_Ajouter_IntArithmetic(EOS(STATIC_4864(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i670, matching1) -> f4869_0_Ajouter_ConstantStackPush(EOS(STATIC_4869(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i670 - 1) :|: i670 > 0 && matching1 = 1 f4869_0_Ajouter_ConstantStackPush(EOS(STATIC_4869(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i754) -> f4874_0_Ajouter_IntArithmetic(EOS(STATIC_4874(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i754, 2) :|: TRUE f4874_0_Ajouter_IntArithmetic(EOS(STATIC_4874(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i754, matching1) -> f4878_0_Ajouter_ArrayAccess(EOS(STATIC_4878(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i756) :|: i756 = i754 / 2 && i756 <= i754 && matching1 = 2 f4878_0_Ajouter_ArrayAccess(EOS(STATIC_4878(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i756) -> f4884_0_Ajouter_ArrayAccess(EOS(STATIC_4884(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i756) :|: TRUE f4884_0_Ajouter_ArrayAccess(EOS(STATIC_4884(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, java.lang.Object(ARRAY(i517)), i756) -> f4891_0_Ajouter_ArrayAccess(EOS(STATIC_4891(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, i758) :|: i756 < i517 f4891_0_Ajouter_ArrayAccess(EOS(STATIC_4891(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, i758) -> f4896_0_Ajouter_ArrayAccess(EOS(STATIC_4896(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, i758) :|: TRUE f4896_0_Ajouter_ArrayAccess(EOS(STATIC_4896(java.lang.Object(ARRAY(i517)))), i519, i519, i670, java.lang.Object(ARRAY(i517)), i670, i758) -> f4904_0_Ajouter_Load(EOS(STATIC_4904(java.lang.Object(ARRAY(i517)))), i519, i519, i670) :|: i670 < i517 f4904_0_Ajouter_Load(EOS(STATIC_4904(java.lang.Object(ARRAY(i517)))), i519, i519, i670) -> f4912_0_Ajouter_ConstantStackPush(EOS(STATIC_4912(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670) :|: TRUE f4912_0_Ajouter_ConstantStackPush(EOS(STATIC_4912(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670) -> f4918_0_Ajouter_IntArithmetic(EOS(STATIC_4918(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670, 1) :|: TRUE f4918_0_Ajouter_IntArithmetic(EOS(STATIC_4918(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670, matching1) -> f4925_0_Ajouter_ConstantStackPush(EOS(STATIC_4925(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i670 - 1) :|: i670 > 0 && matching1 = 1 f4925_0_Ajouter_ConstantStackPush(EOS(STATIC_4925(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i768) -> f4933_0_Ajouter_IntArithmetic(EOS(STATIC_4933(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i768, 2) :|: TRUE f4933_0_Ajouter_IntArithmetic(EOS(STATIC_4933(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i768, matching1) -> f4940_0_Ajouter_Store(EOS(STATIC_4940(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770) :|: i770 = i768 / 2 && i770 <= i768 && matching1 = 2 f4940_0_Ajouter_Store(EOS(STATIC_4940(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770) -> f4948_0_Ajouter_Load(EOS(STATIC_4948(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770) :|: TRUE f4948_0_Ajouter_Load(EOS(STATIC_4948(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770) -> f4956_0_Ajouter_Load(EOS(STATIC_4956(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770) :|: TRUE f4956_0_Ajouter_Load(EOS(STATIC_4956(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770) -> f4962_0_Ajouter_LT(EOS(STATIC_4962(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770, i670) :|: TRUE f4962_0_Ajouter_LT(EOS(STATIC_4962(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770, i670) -> f4970_0_Ajouter_LT(EOS(STATIC_4970(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770, i670) :|: i770 < i670 f4970_0_Ajouter_LT(EOS(STATIC_4970(java.lang.Object(ARRAY(i517)))), i519, i519, i670, i770, i770, i670) -> f4977_0_Ajouter_Load(EOS(STATIC_4977(java.lang.Object(ARRAY(i517)))), i519, i519, i770) :|: i770 < i670 f4977_0_Ajouter_Load(EOS(STATIC_4977(java.lang.Object(ARRAY(i517)))), i519, i519, i770) -> f4986_0_Ajouter_Store(EOS(STATIC_4986(java.lang.Object(ARRAY(i517)))), i519, i519, i770) :|: TRUE f4986_0_Ajouter_Store(EOS(STATIC_4986(java.lang.Object(ARRAY(i517)))), i519, i519, i770) -> f4995_0_Ajouter_JMP(EOS(STATIC_4995(java.lang.Object(ARRAY(i517)))), i519, i519, i770) :|: TRUE f4995_0_Ajouter_JMP(EOS(STATIC_4995(java.lang.Object(ARRAY(i517)))), i519, i519, i770) -> f5003_0_Ajouter_Load(EOS(STATIC_5003(java.lang.Object(ARRAY(i517)))), i519, i519, i770) :|: TRUE f5003_0_Ajouter_Load(EOS(STATIC_5003(java.lang.Object(ARRAY(i517)))), i519, i519, i770) -> f4718_0_Ajouter_Load(EOS(STATIC_4718(java.lang.Object(ARRAY(i517)))), i519, i519, i770) :|: TRUE f4718_0_Ajouter_Load(EOS(STATIC_4718(java.lang.Object(ARRAY(i517)))), i519, i519, i656) -> f4722_0_Ajouter_LE(EOS(STATIC_4722(java.lang.Object(ARRAY(i517)))), i519, i519, i656, i656) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4722_0_Ajouter_LE(EOS(STATIC_4722(java.lang.Object(ARRAY(i517:0)))), i519:0, i519:0, i670:0, i670:0) -> f4722_0_Ajouter_LE'(EOS(STATIC_4722(java.lang.Object(ARRAY(i517:0)))), i519:0, i519:0, i670:0, i670:0) :|: i670:0 > 0 && i670:0 - 1 >= div && i517:0 > div && i717:0 <= i519:0 && i670:0 - 1 >= div1 && i517:0 > div1 && i670:0 < i517:0 && i670:0 - 1 >= div2 && i670:0 > div2 f4722_0_Ajouter_LE'(EOS(STATIC_4722(java.lang.Object(ARRAY(i517:0)))), i519:0, i519:0, i670:0, i670:0) -> f4722_0_Ajouter_LE(EOS(STATIC_4722(java.lang.Object(ARRAY(i517:0)))), i519:0, i519:0, div2, div2) :|: i670:0 > 0 && i670:0 - 1 >= div && i517:0 > div && i717:0 <= i519:0 && i670:0 - 1 >= div1 && i517:0 > div1 && i670:0 < i517:0 && i670:0 - 1 >= div2 && i670:0 > div2 && i670:0 - 1 - 2 * div > -2 && i670:0 - 1 - 2 * div < 2 && i670:0 - 1 - 2 * div1 > -2 && i670:0 - 1 - 2 * div1 < 2 && i670:0 - 1 - 2 * div2 < 2 && i670:0 - 1 - 2 * div2 > -2 Filtered duplicate arguments: f4722_0_Ajouter_LE(x1, x2, x3, x4, x5) -> f4722_0_Ajouter_LE(x1, x3, x5) f4722_0_Ajouter_LE'(x1, x2, x3, x4, x5) -> f4722_0_Ajouter_LE'(x1, x3, x5) Finished conversion. Obtained 2 rules.P rules: f4722_0_Ajouter_LE(i519:0, i670:0, i517:0) -> f4722_0_Ajouter_LE'(i519:0, i670:0, i517:0) :|: i670:0 - 1 >= div && i670:0 > 0 && i517:0 > div && i717:0 <= i519:0 && i670:0 - 1 >= div1 && i517:0 > div1 && i670:0 < i517:0 && i670:0 > div2 && i670:0 - 1 >= div2 f4722_0_Ajouter_LE'(i519:0, i670:0, i517:0) -> f4722_0_Ajouter_LE(i519:0, div2, i517:0) :|: i670:0 - 1 >= div && i670:0 > 0 && i517:0 > div && i717:0 <= i519:0 && i670:0 - 1 >= div1 && i517:0 > div1 && i670:0 < i517:0 && i670:0 - 1 >= div2 && i670:0 > div2 && i670:0 - 1 - 2 * div > -2 && i670:0 - 1 - 2 * div < 2 && i670:0 - 1 - 2 * div1 > -2 && i670:0 - 1 - 2 * div1 < 2 && i670:0 - 1 - 2 * div2 > -2 && i670:0 - 1 - 2 * div2 < 2 ---------------------------------------- (22) Obligation: Rules: f4722_0_Ajouter_LE(x, x1, x2) -> f4722_0_Ajouter_LE'(x, x1, x2) :|: x1 - 1 >= x3 && x1 > 0 && x2 > x3 && x4 <= x && x1 - 1 >= x5 && x2 > x5 && x1 < x2 && x1 > x6 && x1 - 1 >= x6 f4722_0_Ajouter_LE'(x7, x8, x9) -> f4722_0_Ajouter_LE(x7, x10, x9) :|: x8 - 1 >= x11 && x8 > 0 && x9 > x11 && x12 <= x7 && x8 - 1 >= x13 && x9 > x13 && x8 < x9 && x8 - 1 >= x10 && x8 > x10 && x8 - 1 - 2 * x11 > -2 && x8 - 1 - 2 * x11 < 2 && x8 - 1 - 2 * x13 > -2 && x8 - 1 - 2 * x13 < 2 && x8 - 1 - 2 * x10 > -2 && x8 - 1 - 2 * x10 < 2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f4722_0_Ajouter_LE(x, x1, x2) -> f4722_0_Ajouter_LE'(x, x1, x2) :|: x1 - 1 >= x3 && x1 > 0 && x2 > x3 && x4 <= x && x1 - 1 >= x5 && x2 > x5 && x1 < x2 && x1 > x6 && x1 - 1 >= x6 f4722_0_Ajouter_LE'(x7, x8, x9) -> f4722_0_Ajouter_LE(x7, x10, x9) :|: x8 - 1 >= x11 && x8 > 0 && x9 > x11 && x12 <= x7 && x8 - 1 >= x13 && x9 > x13 && x8 < x9 && x8 - 1 >= x10 && x8 > x10 && x8 - 1 - 2 * x11 > -2 && x8 - 1 - 2 * x11 < 2 && x8 - 1 - 2 * x13 > -2 && x8 - 1 - 2 * x13 < 2 && x8 - 1 - 2 * x10 > -2 && x8 - 1 - 2 * x10 < 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4722_0_Ajouter_LE(x, x1, x2) -> f4722_0_Ajouter_LE'(x, x1, x2) :|: x1 - 1 >= x3 && x1 > 0 && x2 > x3 && x4 <= x && x1 - 1 >= x5 && x2 > x5 && x1 < x2 && x1 > x6 && x1 - 1 >= x6 (2) f4722_0_Ajouter_LE'(x7, x8, x9) -> f4722_0_Ajouter_LE(x7, x10, x9) :|: x8 - 1 >= x11 && x8 > 0 && x9 > x11 && x12 <= x7 && x8 - 1 >= x13 && x9 > x13 && x8 < x9 && x8 - 1 >= x10 && x8 > x10 && x8 - 1 - 2 * x11 > -2 && x8 - 1 - 2 * x11 < 2 && x8 - 1 - 2 * x13 > -2 && x8 - 1 - 2 * x13 < 2 && x8 - 1 - 2 * x10 > -2 && x8 - 1 - 2 * x10 < 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f4722_0_Ajouter_LE(x, x1, x2) -> f4722_0_Ajouter_LE'(x, x1, x2) :|: x1 - 1 >= x3 && x1 > 0 && x2 > x3 && x4 <= x && x1 - 1 >= x5 && x2 > x5 && x1 < x2 && x1 > x6 && x1 - 1 >= x6 (2) f4722_0_Ajouter_LE'(x7, x8, x9) -> f4722_0_Ajouter_LE(x7, x10, x9) :|: x8 - 1 >= x11 && x8 > 0 && x9 > x11 && x12 <= x7 && x8 - 1 >= x13 && x9 > x13 && x8 < x9 && x8 - 1 >= x10 && x8 > x10 && x8 - 1 - 2 * x11 > -2 && x8 - 1 - 2 * x11 < 2 && x8 - 1 - 2 * x13 > -2 && x8 - 1 - 2 * x13 < 2 && x8 - 1 - 2 * x10 > -2 && x8 - 1 - 2 * x10 < 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f4722_0_Ajouter_LE(x:0, x1:0, x2:0) -> f4722_0_Ajouter_LE(x:0, x10:0, x2:0) :|: x1:0 - 1 - 2 * x10:0 < 2 && x6:0 <= x1:0 - 1 && x6:0 < x1:0 && x1:0 - 1 - 2 * x10:0 > -2 && x1:0 - 1 - 2 * x13:0 < 2 && x5:0 < x2:0 && x1:0 - 1 - 2 * x13:0 > -2 && x5:0 <= x1:0 - 1 && x1:0 - 1 - 2 * x11:0 < 2 && x:0 >= x4:0 && x1:0 - 1 - 2 * x11:0 > -2 && x3:0 < x2:0 && x1:0 > x10:0 && x3:0 <= x1:0 - 1 && x1:0 - 1 >= x10:0 && x2:0 > x1:0 && x2:0 > x13:0 && x1:0 - 1 >= x13:0 && x:0 >= x12:0 && x2:0 > x11:0 && x1:0 > 0 && x1:0 - 1 >= x11:0 ---------------------------------------- (29) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f4722_0_Ajouter_LE(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f4722_0_Ajouter_LE(x:0, x1:0, x2:0) -> f4722_0_Ajouter_LE(x:0, x10:0, x2:0) :|: x1:0 - 1 - 2 * x10:0 < 2 && x6:0 <= x1:0 - 1 && x6:0 < x1:0 && x1:0 - 1 - 2 * x10:0 > -2 && x1:0 - 1 - 2 * x13:0 < 2 && x5:0 < x2:0 && x1:0 - 1 - 2 * x13:0 > -2 && x5:0 <= x1:0 - 1 && x1:0 - 1 - 2 * x11:0 < 2 && x:0 >= x4:0 && x1:0 - 1 - 2 * x11:0 > -2 && x3:0 < x2:0 && x1:0 > x10:0 && x3:0 <= x1:0 - 1 && x1:0 - 1 >= x10:0 && x2:0 > x1:0 && x2:0 > x13:0 && x1:0 - 1 >= x13:0 && x:0 >= x12:0 && x2:0 > x11:0 && x1:0 > 0 && x1:0 - 1 >= x11:0 ---------------------------------------- (31) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (32) Obligation: Rules: f4722_0_Ajouter_LE(x:0:0, x1:0:0, x2:0:0) -> f4722_0_Ajouter_LE(x:0:0, x10:0:0, x2:0:0) :|: x1:0:0 > 0 && x1:0:0 - 1 >= x11:0:0 && x2:0:0 > x11:0:0 && x:0:0 >= x12:0:0 && x1:0:0 - 1 >= x13:0:0 && x2:0:0 > x13:0:0 && x2:0:0 > x1:0:0 && x1:0:0 - 1 >= x10:0:0 && x3:0:0 <= x1:0:0 - 1 && x1:0:0 > x10:0:0 && x3:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x11:0:0 > -2 && x:0:0 >= x4:0:0 && x1:0:0 - 1 - 2 * x11:0:0 < 2 && x5:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x13:0:0 > -2 && x5:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x13:0:0 < 2 && x1:0:0 - 1 - 2 * x10:0:0 > -2 && x6:0:0 < x1:0:0 && x6:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x10:0:0 < 2 ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4722_0_Ajouter_LE ] = 2*f4722_0_Ajouter_LE_2 The following rules are decreasing: f4722_0_Ajouter_LE(x:0:0, x1:0:0, x2:0:0) -> f4722_0_Ajouter_LE(x:0:0, x10:0:0, x2:0:0) :|: x1:0:0 > 0 && x1:0:0 - 1 >= x11:0:0 && x2:0:0 > x11:0:0 && x:0:0 >= x12:0:0 && x1:0:0 - 1 >= x13:0:0 && x2:0:0 > x13:0:0 && x2:0:0 > x1:0:0 && x1:0:0 - 1 >= x10:0:0 && x3:0:0 <= x1:0:0 - 1 && x1:0:0 > x10:0:0 && x3:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x11:0:0 > -2 && x:0:0 >= x4:0:0 && x1:0:0 - 1 - 2 * x11:0:0 < 2 && x5:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x13:0:0 > -2 && x5:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x13:0:0 < 2 && x1:0:0 - 1 - 2 * x10:0:0 > -2 && x6:0:0 < x1:0:0 && x6:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x10:0:0 < 2 The following rules are bounded: f4722_0_Ajouter_LE(x:0:0, x1:0:0, x2:0:0) -> f4722_0_Ajouter_LE(x:0:0, x10:0:0, x2:0:0) :|: x1:0:0 > 0 && x1:0:0 - 1 >= x11:0:0 && x2:0:0 > x11:0:0 && x:0:0 >= x12:0:0 && x1:0:0 - 1 >= x13:0:0 && x2:0:0 > x13:0:0 && x2:0:0 > x1:0:0 && x1:0:0 - 1 >= x10:0:0 && x3:0:0 <= x1:0:0 - 1 && x1:0:0 > x10:0:0 && x3:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x11:0:0 > -2 && x:0:0 >= x4:0:0 && x1:0:0 - 1 - 2 * x11:0:0 < 2 && x5:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x13:0:0 > -2 && x5:0:0 < x2:0:0 && x1:0:0 - 1 - 2 * x13:0:0 < 2 && x1:0:0 - 1 - 2 * x10:0:0 > -2 && x6:0:0 < x1:0:0 && x6:0:0 <= x1:0:0 - 1 && x1:0:0 - 1 - 2 * x10:0:0 < 2 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TriTas.HeapSort()V SCC calls the following helper methods: TriTas.Supprimer()V Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 23 IRulesP rules: f4030_0_HeapSort_LT(EOS(STATIC_4030(java.lang.Object(ARRAY(i496)))), i495, i495) -> f4049_0_HeapSort_LT(EOS(STATIC_4049(java.lang.Object(ARRAY(i496)))), i495, i495) :|: TRUE f4049_0_HeapSort_LT(EOS(STATIC_4049(java.lang.Object(ARRAY(i496)))), i495, i495) -> f4068_0_HeapSort_InvokeMethod(EOS(STATIC_4068(java.lang.Object(ARRAY(i496)))), i495) :|: i495 >= 0 f4068_0_HeapSort_InvokeMethod(EOS(STATIC_4068(java.lang.Object(ARRAY(i496)))), i495) -> f4116_0_Maximum_FieldAccess(EOS(STATIC_4116(java.lang.Object(ARRAY(i496)))), i495) :|: TRUE f4116_0_Maximum_FieldAccess(EOS(STATIC_4116(java.lang.Object(ARRAY(i496)))), i495) -> f4248_0_Maximum_ConstantStackPush(EOS(STATIC_4248(java.lang.Object(ARRAY(i496)))), i495, java.lang.Object(ARRAY(i496))) :|: TRUE f4248_0_Maximum_ConstantStackPush(EOS(STATIC_4248(java.lang.Object(ARRAY(i496)))), i495, java.lang.Object(ARRAY(i496))) -> f4295_0_Maximum_ArrayAccess(EOS(STATIC_4295(java.lang.Object(ARRAY(i496)))), i495, java.lang.Object(ARRAY(i496)), 0) :|: TRUE f4295_0_Maximum_ArrayAccess(EOS(STATIC_4295(java.lang.Object(ARRAY(i496)))), i495, java.lang.Object(ARRAY(i496)), matching1) -> f4352_0_Maximum_Return(EOS(STATIC_4352(java.lang.Object(ARRAY(i496)))), i495, i546) :|: 0 < i496 && matching1 = 0 f4352_0_Maximum_Return(EOS(STATIC_4352(java.lang.Object(ARRAY(i496)))), i495, i546) -> f4416_0_HeapSort_Store(EOS(STATIC_4416(java.lang.Object(ARRAY(i496)))), i495, i546) :|: TRUE f4416_0_HeapSort_Store(EOS(STATIC_4416(java.lang.Object(ARRAY(i496)))), i495, i546) -> f4443_0_HeapSort_InvokeMethod(EOS(STATIC_4443(java.lang.Object(ARRAY(i496)))), i495, i546) :|: TRUE f4443_0_HeapSort_InvokeMethod(EOS(STATIC_4443(java.lang.Object(ARRAY(i496)))), i495, i546) -> f4449_0_Supprimer_FieldAccess(EOS(STATIC_4449(java.lang.Object(ARRAY(i496))))) :|: i496 >= 1 && i496 > i495 f4443_0_HeapSort_InvokeMethod(EOS(STATIC_4443(java.lang.Object(ARRAY(i496)))), i495, i546) -> f4449_1_Supprimer_FieldAccess(EOS(STATIC_4449(java.lang.Object(ARRAY(i496)))), i495, i546) :|: i496 >= 1 && i496 > i495 f4449_0_Supprimer_FieldAccess(EOS(STATIC_4449(java.lang.Object(ARRAY(i496))))) -> f5760_0_Supprimer_FieldAccess(EOS(STATIC_5760(java.lang.Object(ARRAY(i496))))) :|: TRUE f5323_0_Supprimer_Return(EOS(STATIC_5323(java.lang.Object(ARRAY(i1083)))), i495, i546) -> f4966_0_Supprimer_Return(EOS(STATIC_4966(java.lang.Object(ARRAY(i1083)))), i495, i546) :|: TRUE f4966_0_Supprimer_Return(EOS(STATIC_4966(java.lang.Object(ARRAY(i786)))), i495, i546) -> f4975_0_HeapSort_FieldAccess(EOS(STATIC_4975(java.lang.Object(ARRAY(i786)))), i495, i546) :|: TRUE f4975_0_HeapSort_FieldAccess(EOS(STATIC_4975(java.lang.Object(ARRAY(i786)))), i495, i546) -> f4981_0_HeapSort_Load(EOS(STATIC_4981(java.lang.Object(ARRAY(i786)))), i495, i546, java.lang.Object(ARRAY(i786))) :|: TRUE f4981_0_HeapSort_Load(EOS(STATIC_4981(java.lang.Object(ARRAY(i786)))), i495, i546, java.lang.Object(ARRAY(i786))) -> f4990_0_HeapSort_Load(EOS(STATIC_4990(java.lang.Object(ARRAY(i786)))), i495, i546, java.lang.Object(ARRAY(i786)), i495) :|: TRUE f4990_0_HeapSort_Load(EOS(STATIC_4990(java.lang.Object(ARRAY(i786)))), i495, i546, java.lang.Object(ARRAY(i786)), i495) -> f4999_0_HeapSort_ArrayAccess(EOS(STATIC_4999(java.lang.Object(ARRAY(i786)))), i495, java.lang.Object(ARRAY(i786)), i495, i546) :|: TRUE f4999_0_HeapSort_ArrayAccess(EOS(STATIC_4999(java.lang.Object(ARRAY(i786)))), i495, java.lang.Object(ARRAY(i786)), i495, i546) -> f5005_0_HeapSort_ArrayAccess(EOS(STATIC_5005(java.lang.Object(ARRAY(i786)))), i495, java.lang.Object(ARRAY(i786)), i495, i546) :|: TRUE f5005_0_HeapSort_ArrayAccess(EOS(STATIC_5005(java.lang.Object(ARRAY(i786)))), i495, java.lang.Object(ARRAY(i786)), i495, i546) -> f5013_0_HeapSort_Inc(EOS(STATIC_5013(java.lang.Object(ARRAY(i786)))), i495) :|: i495 < i786 f5013_0_HeapSort_Inc(EOS(STATIC_5013(java.lang.Object(ARRAY(i786)))), i495) -> f5022_0_HeapSort_JMP(EOS(STATIC_5022(java.lang.Object(ARRAY(i786)))), i495 + -1) :|: TRUE f5022_0_HeapSort_JMP(EOS(STATIC_5022(java.lang.Object(ARRAY(i786)))), i844) -> f5027_0_HeapSort_Load(EOS(STATIC_5027(java.lang.Object(ARRAY(i786)))), i844) :|: TRUE f5027_0_HeapSort_Load(EOS(STATIC_5027(java.lang.Object(ARRAY(i786)))), i844) -> f3973_0_HeapSort_Load(EOS(STATIC_3973(java.lang.Object(ARRAY(i786)))), i844) :|: TRUE f3973_0_HeapSort_Load(EOS(STATIC_3973(java.lang.Object(ARRAY(i445)))), i481) -> f4030_0_HeapSort_LT(EOS(STATIC_4030(java.lang.Object(ARRAY(i445)))), i481, i481) :|: TRUE f4449_1_Supprimer_FieldAccess(EOS(STATIC_4449(java.lang.Object(ARRAY(i496)))), i495, i546) -> f5323_0_Supprimer_Return(EOS(STATIC_5323(java.lang.Object(ARRAY(i1083)))), i495, i546) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f5323_0_Supprimer_Return(EOS(STATIC_5323(java.lang.Object(ARRAY(i1083:0)))), i495:0, i546:0) -> f5323_0_Supprimer_Return(EOS(STATIC_5323(java.lang.Object(ARRAY(i1083:1)))), i495:0 - 1, i546:1) :|: i495:0 > 0 && i1083:0 > 0 && i495:0 < i1083:0 && i495:0 - 1 < i1083:0 Removed following non-SCC rules: f5323_0_Supprimer_Return(EOS(STATIC_5323(java.lang.Object(ARRAY(i1083:0)))), i495:0, i546:0) -> f5760_0_Supprimer_FieldAccess(EOS(STATIC_5760(java.lang.Object(ARRAY(i1083:0))))) :|: i495:0 > 0 && i1083:0 > 0 && i495:0 < i1083:0 && i495:0 - 1 < i1083:0 Filtered unneeded arguments: f5323_0_Supprimer_Return(x1, x2, x3) -> f5323_0_Supprimer_Return(x1, x2) Finished conversion. Obtained 1 rules.P rules: f5323_0_Supprimer_Return(i495:0, i1083:0) -> f5323_0_Supprimer_Return(i495:0 - 1, i1083:1) :|: i1083:0 > 0 && i495:0 > 0 && i495:0 - 1 < i1083:0 && i495:0 < i1083:0 ---------------------------------------- (37) Obligation: Rules: f5323_0_Supprimer_Return(i495:0, i1083:0) -> f5323_0_Supprimer_Return(i495:0 - 1, i1083:1) :|: i1083:0 > 0 && i495:0 > 0 && i495:0 - 1 < i1083:0 && i495:0 < i1083:0 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f5323_0_Supprimer_Return(i495:0, i1083:0) -> f5323_0_Supprimer_Return(arith, i1083:1) :|: i1083:0 > 0 && i495:0 > 0 && i495:0 - 1 < i1083:0 && i495:0 < i1083:0 && arith = i495:0 - 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5323_0_Supprimer_Return(i495:0, i1083:0) -> f5323_0_Supprimer_Return(arith, i1083:1) :|: i1083:0 > 0 && i495:0 > 0 && i495:0 - 1 < i1083:0 && i495:0 < i1083:0 && arith = i495:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f5323_0_Supprimer_Return(i495:0, i1083:0) -> f5323_0_Supprimer_Return(arith, i1083:1) :|: i1083:0 > 0 && i495:0 > 0 && i495:0 - 1 < i1083:0 && i495:0 < i1083:0 && arith = i495:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f5323_0_Supprimer_Return(i495:0:0, i1083:0:0) -> f5323_0_Supprimer_Return(i495:0:0 - 1, i1083:1:0) :|: i495:0:0 - 1 < i1083:0:0 && i495:0:0 < i1083:0:0 && i495:0:0 > 0 && i1083:0:0 > 0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5323_0_Supprimer_Return(INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f5323_0_Supprimer_Return(i495:0:0, i1083:0:0) -> f5323_0_Supprimer_Return(c, i1083:1:0) :|: c = i495:0:0 - 1 && (i495:0:0 - 1 < i1083:0:0 && i495:0:0 < i1083:0:0 && i495:0:0 > 0 && i1083:0:0 > 0) ---------------------------------------- (46) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5323_0_Supprimer_Return ] = f5323_0_Supprimer_Return_1 The following rules are decreasing: f5323_0_Supprimer_Return(i495:0:0, i1083:0:0) -> f5323_0_Supprimer_Return(c, i1083:1:0) :|: c = i495:0:0 - 1 && (i495:0:0 - 1 < i1083:0:0 && i495:0:0 < i1083:0:0 && i495:0:0 > 0 && i1083:0:0 > 0) The following rules are bounded: f5323_0_Supprimer_Return(i495:0:0, i1083:0:0) -> f5323_0_Supprimer_Return(c, i1083:1:0) :|: c = i495:0:0 - 1 && (i495:0:0 - 1 < i1083:0:0 && i495:0:0 < i1083:0:0 && i495:0:0 > 0 && i1083:0:0 > 0) ---------------------------------------- (47) YES ---------------------------------------- (48) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TriTas.HeapSort()V SCC calls the following helper methods: TriTas.Ajouter(I)V Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (49) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f3677_0_HeapSort_FieldAccess(EOS(STATIC_3677(i445, java.lang.Object(ARRAY(i445)))), i447, i447) -> f3715_0_HeapSort_GE(EOS(STATIC_3715(i445, java.lang.Object(ARRAY(i445)))), i447, i447, i445) :|: TRUE f3715_0_HeapSort_GE(EOS(STATIC_3715(i445, java.lang.Object(ARRAY(i445)))), i447, i447, i445) -> f3773_0_HeapSort_GE(EOS(STATIC_3773(i445, java.lang.Object(ARRAY(i445)))), i447, i447, i445) :|: i447 < i445 f3773_0_HeapSort_GE(EOS(STATIC_3773(i445, java.lang.Object(ARRAY(i445)))), i447, i447, i445) -> f3810_0_HeapSort_FieldAccess(EOS(STATIC_3810(i445, java.lang.Object(ARRAY(i445)))), i447) :|: i447 < i445 f3810_0_HeapSort_FieldAccess(EOS(STATIC_3810(i445, java.lang.Object(ARRAY(i445)))), i447) -> f3845_0_HeapSort_Load(EOS(STATIC_3845(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445))) :|: TRUE f3845_0_HeapSort_Load(EOS(STATIC_3845(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445))) -> f3926_0_HeapSort_ArrayAccess(EOS(STATIC_3926(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445)), i447) :|: TRUE f3926_0_HeapSort_ArrayAccess(EOS(STATIC_3926(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445)), i447) -> f3947_0_HeapSort_ArrayAccess(EOS(STATIC_3947(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445)), i447) :|: TRUE f3947_0_HeapSort_ArrayAccess(EOS(STATIC_3947(i445, java.lang.Object(ARRAY(i445)))), i447, java.lang.Object(ARRAY(i445)), i447) -> f3976_0_HeapSort_InvokeMethod(EOS(STATIC_3976(i445, java.lang.Object(ARRAY(i445)))), i447, i487) :|: i447 < i445 f3976_0_HeapSort_InvokeMethod(EOS(STATIC_3976(i445, java.lang.Object(ARRAY(i445)))), i447, i487) -> f4032_0_Ajouter_FieldAccess(EOS(STATIC_4032(i445, java.lang.Object(ARRAY(i445)))), i487, i487) :|: i445 >= 1 && i447 < i445 f3976_0_HeapSort_InvokeMethod(EOS(STATIC_3976(i445, java.lang.Object(ARRAY(i445)))), i447, i487) -> f4032_1_Ajouter_FieldAccess(EOS(STATIC_4032(i445, java.lang.Object(ARRAY(i445)))), i447, i487) :|: i445 >= 1 && i447 < i445 f4032_0_Ajouter_FieldAccess(EOS(STATIC_4032(i445, java.lang.Object(ARRAY(i445)))), i487, i487) -> f6356_0_Ajouter_FieldAccess(EOS(STATIC_6356(i445, java.lang.Object(ARRAY(i445)))), i487, i487) :|: TRUE f4791_0_Ajouter_Return(EOS(STATIC_4791(i710, java.lang.Object(ARRAY(i710)))), i447) -> f4520_0_Ajouter_Return(EOS(STATIC_4520(i710, java.lang.Object(ARRAY(i710)))), i447) :|: TRUE f4520_0_Ajouter_Return(EOS(STATIC_4520(i586, java.lang.Object(ARRAY(i586)))), i447) -> f4526_0_HeapSort_Inc(EOS(STATIC_4526(i586, java.lang.Object(ARRAY(i586)))), i447) :|: TRUE f4526_0_HeapSort_Inc(EOS(STATIC_4526(i586, java.lang.Object(ARRAY(i586)))), i447) -> f4533_0_HeapSort_JMP(EOS(STATIC_4533(i586, java.lang.Object(ARRAY(i586)))), i447 + 1) :|: TRUE f4533_0_HeapSort_JMP(EOS(STATIC_4533(i586, java.lang.Object(ARRAY(i586)))), i591) -> f4540_0_HeapSort_Load(EOS(STATIC_4540(i586, java.lang.Object(ARRAY(i586)))), i591) :|: TRUE f4540_0_HeapSort_Load(EOS(STATIC_4540(i586, java.lang.Object(ARRAY(i586)))), i591) -> f3646_0_HeapSort_Load(EOS(STATIC_3646(i586, java.lang.Object(ARRAY(i586)))), i591) :|: TRUE f3646_0_HeapSort_Load(EOS(STATIC_3646(i445, java.lang.Object(ARRAY(i445)))), i447) -> f3677_0_HeapSort_FieldAccess(EOS(STATIC_3677(i445, java.lang.Object(ARRAY(i445)))), i447, i447) :|: TRUE f4032_1_Ajouter_FieldAccess(EOS(STATIC_4032(i710, java.lang.Object(ARRAY(i445)))), i447, i487) -> f4791_0_Ajouter_Return(EOS(STATIC_4791(i710, java.lang.Object(ARRAY(i710)))), i447) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4791_0_Ajouter_Return(EOS(STATIC_4791(i710:0, java.lang.Object(ARRAY(i710:0)))), i447:0) -> f4791_0_Ajouter_Return(EOS(STATIC_4791(i710:0, java.lang.Object(ARRAY(i710:0)))), i447:0 + 1) :|: i710:0 > i447:0 + 1 && i710:0 > 0 Removed following non-SCC rules: f4791_0_Ajouter_Return(EOS(STATIC_4791(i710:0, java.lang.Object(ARRAY(i710:0)))), i447:0) -> f6356_0_Ajouter_FieldAccess(EOS(STATIC_6356(i710:0, java.lang.Object(ARRAY(i710:0)))), i487:0, i487:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 Finished conversion. Obtained 1 rules.P rules: f4791_0_Ajouter_Return(i447:0, i710:0, i710:0) -> f4791_0_Ajouter_Return(i447:0 + 1, i710:0, i710:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 ---------------------------------------- (50) Obligation: Rules: f4791_0_Ajouter_Return(i447:0, i710:0, i710:0) -> f4791_0_Ajouter_Return(i447:0 + 1, i710:0, i710:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 ---------------------------------------- (51) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (52) Obligation: Rules: f4791_0_Ajouter_Return(i447:0, i710:0, i710:0) -> f4791_0_Ajouter_Return(arith, i710:0, i710:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 && arith = i447:0 + 1 ---------------------------------------- (53) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4791_0_Ajouter_Return(i447:0, i710:0, i710:0) -> f4791_0_Ajouter_Return(arith, i710:0, i710:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 && arith = i447:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (54) Obligation: Termination digraph: Nodes: (1) f4791_0_Ajouter_Return(i447:0, i710:0, i710:0) -> f4791_0_Ajouter_Return(arith, i710:0, i710:0) :|: i710:0 > i447:0 + 1 && i710:0 > 0 && arith = i447:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (55) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (56) Obligation: Rules: f4791_0_Ajouter_Return(i447:0:0, i710:0:0, i710:0:0) -> f4791_0_Ajouter_Return(i447:0:0 + 1, i710:0:0, i710:0:0) :|: i710:0:0 > i447:0:0 + 1 && i710:0:0 > 0 ---------------------------------------- (57) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4791_0_Ajouter_Return(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (58) Obligation: Rules: f4791_0_Ajouter_Return(i447:0:0, i710:0:0, i710:0:0) -> f4791_0_Ajouter_Return(c, i710:0:0, i710:0:0) :|: c = i447:0:0 + 1 && (i710:0:0 > i447:0:0 + 1 && i710:0:0 > 0) ---------------------------------------- (59) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4791_0_Ajouter_Return(x, x1, x2)] = -x + x2 The following rules are decreasing: f4791_0_Ajouter_Return(i447:0:0, i710:0:0, i710:0:0) -> f4791_0_Ajouter_Return(c, i710:0:0, i710:0:0) :|: c = i447:0:0 + 1 && (i710:0:0 > i447:0:0 + 1 && i710:0:0 > 0) The following rules are bounded: f4791_0_Ajouter_Return(i447:0:0, i710:0:0, i710:0:0) -> f4791_0_Ajouter_Return(c, i710:0:0, i710:0:0) :|: c = i447:0:0 + 1 && (i710:0:0 > i447:0:0 + 1 && i710:0:0 > 0) ---------------------------------------- (60) YES ---------------------------------------- (61) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TriTas.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (62) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 45 IRulesP rules: f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245) -> f1880_0_main_GE(EOS(STATIC_1880(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245, i243) :|: TRUE f1880_0_main_GE(EOS(STATIC_1880(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245, i243) -> f1888_0_main_GE(EOS(STATIC_1888(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245, i243) :|: i245 < i243 f1888_0_main_GE(EOS(STATIC_1888(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245, i243) -> f2041_0_main_FieldAccess(EOS(STATIC_2041(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) :|: i245 < i243 f2041_0_main_FieldAccess(EOS(STATIC_2041(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) -> f2053_0_main_Load(EOS(STATIC_2053(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243))) :|: TRUE f2053_0_main_Load(EOS(STATIC_2053(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243))) -> f2070_0_main_InvokeMethod(EOS(STATIC_2070(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) :|: TRUE f2070_0_main_InvokeMethod(EOS(STATIC_2070(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) -> f2119_0_random_FieldAccess(EOS(STATIC_2119(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) :|: TRUE f2119_0_random_FieldAccess(EOS(STATIC_2119(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) -> f2197_0_random_FieldAccess(EOS(STATIC_2197(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244) :|: TRUE f2197_0_random_FieldAccess(EOS(STATIC_2197(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244) -> f2422_0_random_ArrayLength(EOS(STATIC_2422(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, java.lang.Object(ARRAY(i243))) :|: TRUE f2422_0_random_ArrayLength(EOS(STATIC_2422(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, java.lang.Object(ARRAY(i243))) -> f2435_0_random_LT(EOS(STATIC_2435(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) :|: i243 >= 0 f2435_0_random_LT(EOS(STATIC_2435(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) -> f2464_0_random_LT(EOS(STATIC_2464(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) :|: i244 < i243 f2435_0_random_LT(EOS(STATIC_2435(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) -> f2465_0_random_LT(EOS(STATIC_2465(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) :|: i244 >= i243 f2464_0_random_LT(EOS(STATIC_2464(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) -> f2511_0_random_FieldAccess(EOS(STATIC_2511(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) :|: i244 < i243 f2511_0_random_FieldAccess(EOS(STATIC_2511(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) -> f2556_0_random_FieldAccess(EOS(STATIC_2556(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243))) :|: TRUE f2556_0_random_FieldAccess(EOS(STATIC_2556(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243))) -> f2575_0_random_ArrayAccess(EOS(STATIC_2575(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i244) :|: TRUE f2575_0_random_ArrayAccess(EOS(STATIC_2575(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i314) -> f2591_0_random_ArrayAccess(EOS(STATIC_2591(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i314) :|: TRUE f2591_0_random_ArrayAccess(EOS(STATIC_2591(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i314) -> f2682_0_random_ArrayAccess(EOS(STATIC_2682(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i314) :|: TRUE f2682_0_random_ArrayAccess(EOS(STATIC_2682(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i314) -> f2706_0_random_Store(EOS(STATIC_2706(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) :|: TRUE f2706_0_random_Store(EOS(STATIC_2706(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) -> f2726_0_random_FieldAccess(EOS(STATIC_2726(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) :|: TRUE f2726_0_random_FieldAccess(EOS(STATIC_2726(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) -> f2826_0_random_ConstantStackPush(EOS(STATIC_2826(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i314) :|: TRUE f2826_0_random_ConstantStackPush(EOS(STATIC_2826(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i314) -> f2850_0_random_IntArithmetic(EOS(STATIC_2850(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i314, 1) :|: TRUE f2850_0_random_IntArithmetic(EOS(STATIC_2850(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i314, matching1) -> f2868_0_random_FieldAccess(EOS(STATIC_2868(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i314 + 1) :|: i314 >= 0 && matching1 = 1 f2868_0_random_FieldAccess(EOS(STATIC_2868(java.lang.Object(ARRAY(i243)), i314, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144, i344) -> f2894_0_random_Load(EOS(STATIC_2894(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) :|: TRUE f2894_0_random_Load(EOS(STATIC_2894(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) -> f2961_0_random_InvokeMethod(EOS(STATIC_2961(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, o144) :|: TRUE f2961_0_random_InvokeMethod(EOS(STATIC_2961(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o148sub)) -> f2976_0_random_InvokeMethod(EOS(STATIC_2976(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o148sub)) :|: TRUE f2976_0_random_InvokeMethod(EOS(STATIC_2976(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) -> f2986_0_random_InvokeMethod(EOS(STATIC_2986(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) :|: TRUE f2986_0_random_InvokeMethod(EOS(STATIC_2986(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) -> f3027_0_length_Load(EOS(STATIC_3027(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) :|: TRUE f3027_0_length_Load(EOS(STATIC_3027(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) -> f3144_0_length_FieldAccess(EOS(STATIC_3144(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(o149sub)) :|: TRUE f3144_0_length_FieldAccess(EOS(STATIC_3144(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(java.lang.String(EOC, i375))) -> f3171_0_length_FieldAccess(EOS(STATIC_3171(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(java.lang.String(EOC, i375))) :|: i375 >= 0 f3171_0_length_FieldAccess(EOS(STATIC_3171(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, java.lang.Object(java.lang.String(EOC, i375))) -> f3182_0_length_Return(EOS(STATIC_3182(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) :|: TRUE f3182_0_length_Return(EOS(STATIC_3182(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) -> f3207_0_random_Return(EOS(STATIC_3207(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) :|: TRUE f3207_0_random_Return(EOS(STATIC_3207(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) -> f3371_0_main_ArrayAccess(EOS(STATIC_3371(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) :|: TRUE f3371_0_main_ArrayAccess(EOS(STATIC_3371(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) -> f3379_0_main_ArrayAccess(EOS(STATIC_3379(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) :|: TRUE f3379_0_main_ArrayAccess(EOS(STATIC_3379(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i375) -> f3423_0_main_Inc(EOS(STATIC_3423(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) :|: i245 < i243 f3423_0_main_Inc(EOS(STATIC_3423(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) -> f3443_0_main_JMP(EOS(STATIC_3443(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245 + 1) :|: TRUE f3443_0_main_JMP(EOS(STATIC_3443(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i425) -> f3557_0_main_Load(EOS(STATIC_3557(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i425) :|: TRUE f3557_0_main_Load(EOS(STATIC_3557(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i425) -> f1869_0_main_Load(EOS(STATIC_1869(java.lang.Object(ARRAY(i243)), i344, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i425) :|: TRUE f1869_0_main_Load(EOS(STATIC_1869(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) -> f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, i245) :|: TRUE f2465_0_random_LT(EOS(STATIC_2465(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, i244, i243) -> f2514_0_random_ConstantStackPush(EOS(STATIC_2514(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) :|: i244 >= i243 f2514_0_random_ConstantStackPush(EOS(STATIC_2514(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245) -> f2559_0_random_Return(EOS(STATIC_2559(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, 0) :|: TRUE f2559_0_random_Return(EOS(STATIC_2559(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, matching1) -> f2577_0_main_ArrayAccess(EOS(STATIC_2577(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, 0) :|: TRUE && matching1 = 0 f2577_0_main_ArrayAccess(EOS(STATIC_2577(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, matching1) -> f2592_0_main_ArrayAccess(EOS(STATIC_2592(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, 0) :|: TRUE && matching1 = 0 f2592_0_main_ArrayAccess(EOS(STATIC_2592(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245, java.lang.Object(ARRAY(i243)), i245, matching1) -> f2687_0_main_Inc(EOS(STATIC_2687(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) :|: i245 < i243 && matching1 = 0 f2687_0_main_Inc(EOS(STATIC_2687(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245) -> f2708_0_main_JMP(EOS(STATIC_2708(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i245 + 1) :|: TRUE f2708_0_main_JMP(EOS(STATIC_2708(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i333) -> f2802_0_main_Load(EOS(STATIC_2802(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i333) :|: TRUE f2802_0_main_Load(EOS(STATIC_2802(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i333) -> f1869_0_main_Load(EOS(STATIC_1869(java.lang.Object(ARRAY(i243)), i244, i243, java.lang.Object(ARRAY(i243)))), java.lang.Object(ARRAY(i243)), i333) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243:0)), i244:0, i243:0, java.lang.Object(ARRAY(i243:0)))), java.lang.Object(ARRAY(i243:0)), i245:0, i245:0) -> f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243:0)), i244:0 + 1, i243:0, java.lang.Object(ARRAY(i243:0)))), java.lang.Object(ARRAY(i243:0)), i245:0 + 1, i245:0 + 1) :|: i245:0 < i243:0 && i243:0 > -1 && i244:0 < i243:0 && i244:0 > -1 && i375:0 > -1 f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243:0)), i244:0, i243:0, java.lang.Object(ARRAY(i243:0)))), java.lang.Object(ARRAY(i243:0)), i245:0, i245:0) -> f1875_0_main_FieldAccess(EOS(STATIC_1875(java.lang.Object(ARRAY(i243:0)), i244:0, i243:0, java.lang.Object(ARRAY(i243:0)))), java.lang.Object(ARRAY(i243:0)), i245:0 + 1, i245:0 + 1) :|: i245:0 < i243:0 && i243:0 > -1 && i244:0 >= i243:0 Filtered duplicate arguments: f1875_0_main_FieldAccess(x1, x2, x3, x4) -> f1875_0_main_FieldAccess(x1, x2, x4) STATIC_1875(x1, x2, x3, x4) -> STATIC_1875(x2, x3, x4) Finished conversion. Obtained 2 rules.P rules: f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0 + 1, i244:0 + 1, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i245:0 < i243:0 && i244:0 < i243:0 && i375:0 > -1 && i244:0 > -1 f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0 + 1, i244:0, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i244:0 >= i243:0 && i245:0 < i243:0 ---------------------------------------- (63) Obligation: Rules: f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0 + 1, i244:0 + 1, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i245:0 < i243:0 && i244:0 < i243:0 && i375:0 > -1 && i244:0 > -1 f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x)), x1, x2, x, x, x) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x)), x1 + 1, x2, x, x, x) :|: x > -1 && x2 >= x && x1 < x ---------------------------------------- (64) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (65) Obligation: Rules: f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), arith, arith1, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i245:0 < i243:0 && i244:0 < i243:0 && i375:0 > -1 && i244:0 > -1 && arith = i245:0 + 1 && arith1 = i244:0 + 1 f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3, x3) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x6, x5, x3, x3, x3) :|: x3 > -1 && x5 >= x3 && x4 < x3 && x6 = x4 + 1 ---------------------------------------- (66) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), arith, arith1, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i245:0 < i243:0 && i244:0 < i243:0 && i375:0 > -1 && i244:0 > -1 && arith = i245:0 + 1 && arith1 = i244:0 + 1 (2) f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3, x3) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x6, x5, x3, x3, x3) :|: x3 > -1 && x5 >= x3 && x4 < x3 && x6 = x4 + 1 Arcs: (1) -> (1), (2) (2) -> (2) This digraph is fully evaluated! ---------------------------------------- (67) Complex Obligation (AND) ---------------------------------------- (68) Obligation: Termination digraph: Nodes: (1) f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), i245:0, i244:0, i243:0, i243:0, i243:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0)), arith, arith1, i243:0, i243:0, i243:0) :|: i243:0 > -1 && i245:0 < i243:0 && i244:0 < i243:0 && i375:0 > -1 && i244:0 > -1 && arith = i245:0 + 1 && arith1 = i244:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (69) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (70) Obligation: Rules: f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0:0)), i245:0:0, i244:0:0, i243:0:0, i243:0:0, i243:0:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(i243:0:0)), i245:0:0 + 1, i244:0:0 + 1, i243:0:0, i243:0:0, i243:0:0) :|: i375:0:0 > -1 && i244:0:0 > -1 && i244:0:0 < i243:0:0 && i245:0:0 < i243:0:0 && i243:0:0 > -1 ---------------------------------------- (71) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1875_0_main_FieldAccess(VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (72) Obligation: Rules: f1875_0_main_FieldAccess(c, i245:0:0, i244:0:0, i243:0:0, i243:0:0, i243:0:0) -> f1875_0_main_FieldAccess(c1, c2, c3, i243:0:0, i243:0:0, i243:0:0) :|: c3 = i244:0:0 + 1 && (c2 = i245:0:0 + 1 && (c1 = 0 && c = 0)) && (i375:0:0 > -1 && i244:0:0 > -1 && i244:0:0 < i243:0:0 && i245:0:0 < i243:0:0 && i243:0:0 > -1) ---------------------------------------- (73) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1875_0_main_FieldAccess(x, x1, x2, x3, x4, x5)] = c*x - x2 + x3 The following rules are decreasing: f1875_0_main_FieldAccess(c, i245:0:0, i244:0:0, i243:0:0, i243:0:0, i243:0:0) -> f1875_0_main_FieldAccess(c1, c2, c3, i243:0:0, i243:0:0, i243:0:0) :|: c3 = i244:0:0 + 1 && (c2 = i245:0:0 + 1 && (c1 = 0 && c = 0)) && (i375:0:0 > -1 && i244:0:0 > -1 && i244:0:0 < i243:0:0 && i245:0:0 < i243:0:0 && i243:0:0 > -1) The following rules are bounded: f1875_0_main_FieldAccess(c, i245:0:0, i244:0:0, i243:0:0, i243:0:0, i243:0:0) -> f1875_0_main_FieldAccess(c1, c2, c3, i243:0:0, i243:0:0, i243:0:0) :|: c3 = i244:0:0 + 1 && (c2 = i245:0:0 + 1 && (c1 = 0 && c = 0)) && (i375:0:0 > -1 && i244:0:0 > -1 && i244:0:0 < i243:0:0 && i245:0:0 < i243:0:0 && i243:0:0 > -1) ---------------------------------------- (74) YES ---------------------------------------- (75) Obligation: Termination digraph: Nodes: (1) f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3, x3) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3)), x6, x5, x3, x3, x3) :|: x3 > -1 && x5 >= x3 && x4 < x3 && x6 = x4 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (76) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (77) Obligation: Rules: f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3:0)), x4:0, x5:0, x3:0, x3:0, x3:0) -> f1875_0_main_FieldAccess(java.lang.Object(ARRAY(x3:0)), x4:0 + 1, x5:0, x3:0, x3:0, x3:0) :|: x3:0 > -1 && x5:0 >= x3:0 && x4:0 < x3:0 ---------------------------------------- (78) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1875_0_main_FieldAccess(VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (79) Obligation: Rules: f1875_0_main_FieldAccess(c, x4:0, x5:0, x3:0, x3:0, x3:0) -> f1875_0_main_FieldAccess(c1, c2, x5:0, x3:0, x3:0, x3:0) :|: c2 = x4:0 + 1 && (c1 = 0 && c = 0) && (x3:0 > -1 && x5:0 >= x3:0 && x4:0 < x3:0) ---------------------------------------- (80) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1875_0_main_FieldAccess ] = f1875_0_main_FieldAccess_6 + -1*f1875_0_main_FieldAccess_2 The following rules are decreasing: f1875_0_main_FieldAccess(c, x4:0, x5:0, x3:0, x3:0, x3:0) -> f1875_0_main_FieldAccess(c1, c2, x5:0, x3:0, x3:0, x3:0) :|: c2 = x4:0 + 1 && (c1 = 0 && c = 0) && (x3:0 > -1 && x5:0 >= x3:0 && x4:0 < x3:0) The following rules are bounded: f1875_0_main_FieldAccess(c, x4:0, x5:0, x3:0, x3:0, x3:0) -> f1875_0_main_FieldAccess(c1, c2, x5:0, x3:0, x3:0, x3:0) :|: c2 = x4:0 + 1 && (c1 = 0 && c = 0) && (x3:0 > -1 && x5:0 >= x3:0 && x4:0 < x3:0) ---------------------------------------- (81) YES