/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/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, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 380 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 37 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 11 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 29 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 28 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 7 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 10 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 4 ms] (32) YES (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 69 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 13 ms] (43) IntTRS (44) RankingReductionPairProof [EQUIVALENT, 0 ms] (45) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: package example_1; public class A { int incr(int i) { return i=i+1; } } package example_1; public class B extends A { int incr(int i) { return i = i+2; } } package example_1; public class C extends B { int incr(int i) { return i=i+3; } } package example_1; public class Test { public int add(int n,A o){ int res=0; int i=0; while (i<=n){ res=res+i; i=o.incr(i); } return res; } public static void main(String[] args) { int test = 1000; Test testClass = new Test(); A a = new A(); int result1 = testClass.add(test,a); a = new B(); int result2 = testClass.add(test,a); a = new C(); int result3 = testClass.add(test,a); // System.out.println("Result: "+result1 + result2 + result3); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: package example_1; public class A { int incr(int i) { return i=i+1; } } package example_1; public class B extends A { int incr(int i) { return i = i+2; } } package example_1; public class C extends B { int incr(int i) { return i=i+3; } } package example_1; public class Test { public int add(int n,A o){ int res=0; int i=0; while (i<=n){ res=res+i; i=o.incr(i); } return res; } public static void main(String[] args) { int test = 1000; Test testClass = new Test(); A a = new A(); int result1 = testClass.add(test,a); a = new B(); int result2 = testClass.add(test,a); a = new C(); int result3 = testClass.add(test,a); // System.out.println("Result: "+result1 + result2 + result3); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: example_1.Test.main([Ljava/lang/String;)V: Graph of 146 nodes with 3 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: example_1.Test.main([Ljava/lang/String;)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 20 IRulesP rules: f1649_0_add_Load(EOS(STATIC_1649), matching1, i67, i67) -> f1654_0_add_GT(EOS(STATIC_1654), 1000, i67, i67, 1000) :|: TRUE && matching1 = 1000 f1654_0_add_GT(EOS(STATIC_1654), matching1, i72, i72, matching2) -> f1663_0_add_GT(EOS(STATIC_1663), 1000, i72, i72, 1000) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1663_0_add_GT(EOS(STATIC_1663), matching1, i72, i72, matching2) -> f1683_0_add_Load(EOS(STATIC_1683), 1000, i72) :|: i72 <= 1000 && matching1 = 1000 && matching2 = 1000 f1683_0_add_Load(EOS(STATIC_1683), matching1, i72) -> f1692_0_add_Load(EOS(STATIC_1692), 1000, i72) :|: TRUE && matching1 = 1000 f1692_0_add_Load(EOS(STATIC_1692), matching1, i72) -> f1701_0_add_IntArithmetic(EOS(STATIC_1701), 1000, i72, i72) :|: TRUE && matching1 = 1000 f1701_0_add_IntArithmetic(EOS(STATIC_1701), matching1, i72, i72) -> f1707_0_add_Store(EOS(STATIC_1707), 1000, i72) :|: i72 >= 0 && matching1 = 1000 f1707_0_add_Store(EOS(STATIC_1707), matching1, i72) -> f1710_0_add_Load(EOS(STATIC_1710), 1000, i72) :|: TRUE && matching1 = 1000 f1710_0_add_Load(EOS(STATIC_1710), matching1, i72) -> f1718_0_add_Load(EOS(STATIC_1718), 1000, i72) :|: TRUE && matching1 = 1000 f1718_0_add_Load(EOS(STATIC_1718), matching1, i72) -> f1724_0_add_InvokeMethod(EOS(STATIC_1724), 1000, i72) :|: TRUE && matching1 = 1000 f1724_0_add_InvokeMethod(EOS(STATIC_1724), matching1, i72) -> f1728_0_incr_Load(EOS(STATIC_1728), 1000, i72) :|: TRUE && matching1 = 1000 f1728_0_incr_Load(EOS(STATIC_1728), matching1, i72) -> f1731_0_incr_ConstantStackPush(EOS(STATIC_1731), 1000, i72) :|: TRUE && matching1 = 1000 f1731_0_incr_ConstantStackPush(EOS(STATIC_1731), matching1, i72) -> f1733_0_incr_IntArithmetic(EOS(STATIC_1733), 1000, i72, 3) :|: TRUE && matching1 = 1000 f1733_0_incr_IntArithmetic(EOS(STATIC_1733), matching1, i72, matching2) -> f1734_0_incr_Duplicate(EOS(STATIC_1734), 1000, i72 + 3) :|: i72 >= 0 && matching1 = 1000 && matching2 = 3 f1734_0_incr_Duplicate(EOS(STATIC_1734), matching1, i79) -> f1735_0_incr_Store(EOS(STATIC_1735), 1000, i79, i79) :|: TRUE && matching1 = 1000 f1735_0_incr_Store(EOS(STATIC_1735), matching1, i79, i79) -> f1736_0_incr_Return(EOS(STATIC_1736), 1000, i79) :|: TRUE && matching1 = 1000 f1736_0_incr_Return(EOS(STATIC_1736), matching1, i79) -> f1742_0_add_Store(EOS(STATIC_1742), 1000, i79) :|: TRUE && matching1 = 1000 f1742_0_add_Store(EOS(STATIC_1742), matching1, i79) -> f1747_0_add_JMP(EOS(STATIC_1747), 1000, i79) :|: TRUE && matching1 = 1000 f1747_0_add_JMP(EOS(STATIC_1747), matching1, i79) -> f1759_0_add_Load(EOS(STATIC_1759), 1000, i79) :|: TRUE && matching1 = 1000 f1759_0_add_Load(EOS(STATIC_1759), matching1, i79) -> f1648_0_add_Load(EOS(STATIC_1648), 1000, i79) :|: TRUE && matching1 = 1000 f1648_0_add_Load(EOS(STATIC_1648), matching1, i67) -> f1649_0_add_Load(EOS(STATIC_1649), 1000, i67, i67) :|: TRUE && matching1 = 1000 Combined rules. Obtained 1 IRulesP rules: f1649_0_add_Load(EOS(STATIC_1649), 1000, i67:0, i67:0) -> f1649_0_add_Load(EOS(STATIC_1649), 1000, i67:0 + 3, i67:0 + 3) :|: i67:0 < 1001 && i67:0 > -1 Filtered constant ground arguments: f1649_0_add_Load(x1, x2, x3, x4) -> f1649_0_add_Load(x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f1649_0_add_Load(x1, x2) -> f1649_0_add_Load(x2) Finished conversion. Obtained 1 rules.P rules: f1649_0_add_Load(i67:0) -> f1649_0_add_Load(i67:0 + 3) :|: i67:0 < 1001 && i67:0 > -1 ---------------------------------------- (9) Obligation: Rules: f1649_0_add_Load(i67:0) -> f1649_0_add_Load(i67:0 + 3) :|: i67:0 < 1001 && i67:0 > -1 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1649_0_add_Load(i67:0) -> f1649_0_add_Load(arith) :|: i67:0 < 1001 && i67:0 > -1 && arith = i67:0 + 3 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1649_0_add_Load(i67:0) -> f1649_0_add_Load(arith) :|: i67:0 < 1001 && i67:0 > -1 && arith = i67:0 + 3 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1649_0_add_Load(i67:0) -> f1649_0_add_Load(arith) :|: i67:0 < 1001 && i67:0 > -1 && arith = i67:0 + 3 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1649_0_add_Load(i67:0:0) -> f1649_0_add_Load(i67:0:0 + 3) :|: i67:0:0 < 1001 && i67:0:0 > -1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1649_0_add_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1649_0_add_Load(i67:0:0) -> f1649_0_add_Load(c) :|: c = i67:0:0 + 3 && (i67:0:0 < 1001 && i67:0:0 > -1) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1649_0_add_Load ] = -1/3*f1649_0_add_Load_1 The following rules are decreasing: f1649_0_add_Load(i67:0:0) -> f1649_0_add_Load(c) :|: c = i67:0:0 + 3 && (i67:0:0 < 1001 && i67:0:0 > -1) The following rules are bounded: f1649_0_add_Load(i67:0:0) -> f1649_0_add_Load(c) :|: c = i67:0:0 + 3 && (i67:0:0 < 1001 && i67:0:0 > -1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: example_1.Test.main([Ljava/lang/String;)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 20 IRulesP rules: f1289_0_add_Load(EOS(STATIC_1289), matching1, matching2, i36, i36) -> f1308_0_add_GT(EOS(STATIC_1308), 1000, 1000, i36, i36, 1000) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1308_0_add_GT(EOS(STATIC_1308), matching1, matching2, i41, i41, matching3) -> f1315_0_add_GT(EOS(STATIC_1315), 1000, 1000, i41, i41, 1000) :|: TRUE && matching1 = 1000 && matching2 = 1000 && matching3 = 1000 f1315_0_add_GT(EOS(STATIC_1315), matching1, matching2, i41, i41, matching3) -> f1332_0_add_Load(EOS(STATIC_1332), 1000, 1000, i41) :|: i41 <= 1000 && matching1 = 1000 && matching2 = 1000 && matching3 = 1000 f1332_0_add_Load(EOS(STATIC_1332), matching1, matching2, i41) -> f1339_0_add_Load(EOS(STATIC_1339), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1339_0_add_Load(EOS(STATIC_1339), matching1, matching2, i41) -> f1347_0_add_IntArithmetic(EOS(STATIC_1347), 1000, 1000, i41, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1347_0_add_IntArithmetic(EOS(STATIC_1347), matching1, matching2, i41, i41) -> f1350_0_add_Store(EOS(STATIC_1350), 1000, 1000, i41) :|: i41 >= 0 && matching1 = 1000 && matching2 = 1000 f1350_0_add_Store(EOS(STATIC_1350), matching1, matching2, i41) -> f1355_0_add_Load(EOS(STATIC_1355), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1355_0_add_Load(EOS(STATIC_1355), matching1, matching2, i41) -> f1357_0_add_Load(EOS(STATIC_1357), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1357_0_add_Load(EOS(STATIC_1357), matching1, matching2, i41) -> f1364_0_add_InvokeMethod(EOS(STATIC_1364), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1364_0_add_InvokeMethod(EOS(STATIC_1364), matching1, matching2, i41) -> f1368_0_incr_Load(EOS(STATIC_1368), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1368_0_incr_Load(EOS(STATIC_1368), matching1, matching2, i41) -> f1370_0_incr_ConstantStackPush(EOS(STATIC_1370), 1000, 1000, i41) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1370_0_incr_ConstantStackPush(EOS(STATIC_1370), matching1, matching2, i41) -> f1372_0_incr_IntArithmetic(EOS(STATIC_1372), 1000, 1000, i41, 2) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1372_0_incr_IntArithmetic(EOS(STATIC_1372), matching1, matching2, i41, matching3) -> f1373_0_incr_Duplicate(EOS(STATIC_1373), 1000, 1000, i41 + 2) :|: i41 >= 0 && matching1 = 1000 && matching2 = 1000 && matching3 = 2 f1373_0_incr_Duplicate(EOS(STATIC_1373), matching1, matching2, i46) -> f1375_0_incr_Store(EOS(STATIC_1375), 1000, 1000, i46, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1375_0_incr_Store(EOS(STATIC_1375), matching1, matching2, i46, i46) -> f1377_0_incr_Return(EOS(STATIC_1377), 1000, 1000, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1377_0_incr_Return(EOS(STATIC_1377), matching1, matching2, i46) -> f1378_0_add_Store(EOS(STATIC_1378), 1000, 1000, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1378_0_add_Store(EOS(STATIC_1378), matching1, matching2, i46) -> f1380_0_add_JMP(EOS(STATIC_1380), 1000, 1000, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1380_0_add_JMP(EOS(STATIC_1380), matching1, matching2, i46) -> f1382_0_add_Load(EOS(STATIC_1382), 1000, 1000, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1382_0_add_Load(EOS(STATIC_1382), matching1, matching2, i46) -> f1288_0_add_Load(EOS(STATIC_1288), 1000, 1000, i46) :|: TRUE && matching1 = 1000 && matching2 = 1000 f1288_0_add_Load(EOS(STATIC_1288), matching1, matching2, i36) -> f1289_0_add_Load(EOS(STATIC_1289), 1000, 1000, i36, i36) :|: TRUE && matching1 = 1000 && matching2 = 1000 Combined rules. Obtained 1 IRulesP rules: f1289_0_add_Load(EOS(STATIC_1289), 1000, 1000, i36:0, i36:0) -> f1289_0_add_Load(EOS(STATIC_1289), 1000, 1000, i36:0 + 2, i36:0 + 2) :|: i36:0 < 1001 && i36:0 > -1 Filtered constant ground arguments: f1289_0_add_Load(x1, x2, x3, x4, x5) -> f1289_0_add_Load(x4, x5) EOS(x1) -> EOS Filtered duplicate arguments: f1289_0_add_Load(x1, x2) -> f1289_0_add_Load(x2) Finished conversion. Obtained 1 rules.P rules: f1289_0_add_Load(i36:0) -> f1289_0_add_Load(i36:0 + 2) :|: i36:0 < 1001 && i36:0 > -1 ---------------------------------------- (22) Obligation: Rules: f1289_0_add_Load(i36:0) -> f1289_0_add_Load(i36:0 + 2) :|: i36:0 < 1001 && i36:0 > -1 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1289_0_add_Load(i36:0) -> f1289_0_add_Load(arith) :|: i36:0 < 1001 && i36:0 > -1 && arith = i36:0 + 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1289_0_add_Load(i36:0) -> f1289_0_add_Load(arith) :|: i36:0 < 1001 && i36:0 > -1 && arith = i36:0 + 2 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1289_0_add_Load(i36:0) -> f1289_0_add_Load(arith) :|: i36:0 < 1001 && i36:0 > -1 && arith = i36:0 + 2 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1289_0_add_Load(i36:0:0) -> f1289_0_add_Load(i36:0:0 + 2) :|: i36:0:0 < 1001 && i36:0:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1289_0_add_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1289_0_add_Load(i36:0:0) -> f1289_0_add_Load(c) :|: c = i36:0:0 + 2 && (i36:0:0 < 1001 && i36:0:0 > -1) ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1289_0_add_Load ] = -1/2*f1289_0_add_Load_1 The following rules are decreasing: f1289_0_add_Load(i36:0:0) -> f1289_0_add_Load(c) :|: c = i36:0:0 + 2 && (i36:0:0 < 1001 && i36:0:0 > -1) The following rules are bounded: f1289_0_add_Load(i36:0:0) -> f1289_0_add_Load(c) :|: c = i36:0:0 + 2 && (i36:0:0 < 1001 && i36:0:0 > -1) ---------------------------------------- (32) YES ---------------------------------------- (33) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: example_1.Test.main([Ljava/lang/String;)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: ---------------------------------------- (34) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 20 IRulesP rules: f344_0_add_Load(EOS(STATIC_344), matching1, matching2, i11, i11) -> f345_0_add_GT(EOS(STATIC_345), 1000, 1000, i11, i11, 1000) :|: TRUE && matching1 = 1000 && matching2 = 1000 f345_0_add_GT(EOS(STATIC_345), matching1, matching2, i14, i14, matching3) -> f364_0_add_GT(EOS(STATIC_364), 1000, 1000, i14, i14, 1000) :|: TRUE && matching1 = 1000 && matching2 = 1000 && matching3 = 1000 f364_0_add_GT(EOS(STATIC_364), matching1, matching2, i14, i14, matching3) -> f370_0_add_Load(EOS(STATIC_370), 1000, 1000, i14) :|: i14 <= 1000 && matching1 = 1000 && matching2 = 1000 && matching3 = 1000 f370_0_add_Load(EOS(STATIC_370), matching1, matching2, i14) -> f375_0_add_Load(EOS(STATIC_375), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f375_0_add_Load(EOS(STATIC_375), matching1, matching2, i14) -> f379_0_add_IntArithmetic(EOS(STATIC_379), 1000, 1000, i14, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f379_0_add_IntArithmetic(EOS(STATIC_379), matching1, matching2, i14, i14) -> f383_0_add_Store(EOS(STATIC_383), 1000, 1000, i14) :|: i14 >= 0 && matching1 = 1000 && matching2 = 1000 f383_0_add_Store(EOS(STATIC_383), matching1, matching2, i14) -> f388_0_add_Load(EOS(STATIC_388), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f388_0_add_Load(EOS(STATIC_388), matching1, matching2, i14) -> f394_0_add_Load(EOS(STATIC_394), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f394_0_add_Load(EOS(STATIC_394), matching1, matching2, i14) -> f396_0_add_InvokeMethod(EOS(STATIC_396), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f396_0_add_InvokeMethod(EOS(STATIC_396), matching1, matching2, i14) -> f399_0_incr_Load(EOS(STATIC_399), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f399_0_incr_Load(EOS(STATIC_399), matching1, matching2, i14) -> f404_0_incr_ConstantStackPush(EOS(STATIC_404), 1000, 1000, i14) :|: TRUE && matching1 = 1000 && matching2 = 1000 f404_0_incr_ConstantStackPush(EOS(STATIC_404), matching1, matching2, i14) -> f408_0_incr_IntArithmetic(EOS(STATIC_408), 1000, 1000, i14, 1) :|: TRUE && matching1 = 1000 && matching2 = 1000 f408_0_incr_IntArithmetic(EOS(STATIC_408), matching1, matching2, i14, matching3) -> f410_0_incr_Duplicate(EOS(STATIC_410), 1000, 1000, i14 + 1) :|: i14 >= 0 && matching1 = 1000 && matching2 = 1000 && matching3 = 1 f410_0_incr_Duplicate(EOS(STATIC_410), matching1, matching2, i17) -> f414_0_incr_Store(EOS(STATIC_414), 1000, 1000, i17, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f414_0_incr_Store(EOS(STATIC_414), matching1, matching2, i17, i17) -> f420_0_incr_Return(EOS(STATIC_420), 1000, 1000, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f420_0_incr_Return(EOS(STATIC_420), matching1, matching2, i17) -> f425_0_add_Store(EOS(STATIC_425), 1000, 1000, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f425_0_add_Store(EOS(STATIC_425), matching1, matching2, i17) -> f429_0_add_JMP(EOS(STATIC_429), 1000, 1000, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f429_0_add_JMP(EOS(STATIC_429), matching1, matching2, i17) -> f457_0_add_Load(EOS(STATIC_457), 1000, 1000, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f457_0_add_Load(EOS(STATIC_457), matching1, matching2, i17) -> f339_0_add_Load(EOS(STATIC_339), 1000, 1000, i17) :|: TRUE && matching1 = 1000 && matching2 = 1000 f339_0_add_Load(EOS(STATIC_339), matching1, matching2, i11) -> f344_0_add_Load(EOS(STATIC_344), 1000, 1000, i11, i11) :|: TRUE && matching1 = 1000 && matching2 = 1000 Combined rules. Obtained 1 IRulesP rules: f344_0_add_Load(EOS(STATIC_344), 1000, 1000, i11:0, i11:0) -> f344_0_add_Load(EOS(STATIC_344), 1000, 1000, i11:0 + 1, i11:0 + 1) :|: i11:0 < 1001 && i11:0 > -1 Filtered constant ground arguments: f344_0_add_Load(x1, x2, x3, x4, x5) -> f344_0_add_Load(x4, x5) EOS(x1) -> EOS Filtered duplicate arguments: f344_0_add_Load(x1, x2) -> f344_0_add_Load(x2) Finished conversion. Obtained 1 rules.P rules: f344_0_add_Load(i11:0) -> f344_0_add_Load(i11:0 + 1) :|: i11:0 < 1001 && i11:0 > -1 ---------------------------------------- (35) Obligation: Rules: f344_0_add_Load(i11:0) -> f344_0_add_Load(i11:0 + 1) :|: i11:0 < 1001 && i11:0 > -1 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f344_0_add_Load(i11:0) -> f344_0_add_Load(arith) :|: i11:0 < 1001 && i11:0 > -1 && arith = i11:0 + 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f344_0_add_Load(i11:0) -> f344_0_add_Load(arith) :|: i11:0 < 1001 && i11:0 > -1 && arith = i11:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f344_0_add_Load(i11:0) -> f344_0_add_Load(arith) :|: i11:0 < 1001 && i11:0 > -1 && arith = i11:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f344_0_add_Load(i11:0:0) -> f344_0_add_Load(i11:0:0 + 1) :|: i11:0:0 < 1001 && i11:0:0 > -1 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f344_0_add_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f344_0_add_Load(i11:0:0) -> f344_0_add_Load(c) :|: c = i11:0:0 + 1 && (i11:0:0 < 1001 && i11:0:0 > -1) ---------------------------------------- (44) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f344_0_add_Load ] = -1*f344_0_add_Load_1 The following rules are decreasing: f344_0_add_Load(i11:0:0) -> f344_0_add_Load(c) :|: c = i11:0:0 + 1 && (i11:0:0 < 1001 && i11:0:0 > -1) The following rules are bounded: f344_0_add_Load(i11:0:0) -> f344_0_add_Load(c) :|: c = i11:0:0 + 1 && (i11:0:0 < 1001 && i11:0:0 > -1) ---------------------------------------- (45) YES