/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, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 318 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 35 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 3 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 13 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 103 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 48 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 23 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 6 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 0 ms] (34) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Test10 { public static void main(String[] args) { rec(args.length); } private static void rec(long l) { if (l > 0) { for (int i = (int) l ; i < 100; i++) test(i); rec (l - 1); } } private static void test(int i) { descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); } private static void descend(int i) { if (i > 0) descend(i - 1); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Test10 { public static void main(String[] args) { rec(args.length); } private static void rec(long l) { if (l > 0) { for (int i = (int) l ; i < 100; i++) test(i); rec (l - 1); } } private static void test(int i) { descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); descend(i); } private static void descend(int i) { if (i > 0) descend(i - 1); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Test10.main([Ljava/lang/String;)V: Graph of 11 nodes with 0 SCCs. Test10.rec(J)V: Graph of 73 nodes with 1 SCC. Test10.descend(I)V: Graph of 16 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test10.descend(I)V SCC calls the following helper methods: Test10.descend(I)V 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 10 IRulesP rules: f466_0_descend_LE(EOS(STATIC_466), i91, i91, i91) -> f470_0_descend_LE(EOS(STATIC_470), i91, i91, i91) :|: TRUE f470_0_descend_LE(EOS(STATIC_470), i91, i91, i91) -> f477_0_descend_Load(EOS(STATIC_477), i91, i91) :|: i91 > 0 f477_0_descend_Load(EOS(STATIC_477), i91, i91) -> f480_0_descend_ConstantStackPush(EOS(STATIC_480), i91, i91) :|: TRUE f480_0_descend_ConstantStackPush(EOS(STATIC_480), i91, i91) -> f482_0_descend_IntArithmetic(EOS(STATIC_482), i91, i91, 1) :|: TRUE f482_0_descend_IntArithmetic(EOS(STATIC_482), i91, i91, matching1) -> f484_0_descend_InvokeMethod(EOS(STATIC_484), i91, i91 - 1) :|: i91 > 0 && matching1 = 1 f484_0_descend_InvokeMethod(EOS(STATIC_484), i91, i93) -> f485_0_descend_Load(EOS(STATIC_485), i93, i93) :|: i91 >= 1 && i93 < i91 f484_0_descend_InvokeMethod(EOS(STATIC_484), i91, i93) -> f485_1_descend_Load(EOS(STATIC_485), i91, i93) :|: i91 >= 1 && i93 < i91 f485_0_descend_Load(EOS(STATIC_485), i93, i93) -> f486_0_descend_Load(EOS(STATIC_486), i93, i93) :|: TRUE f486_0_descend_Load(EOS(STATIC_486), i93, i93) -> f463_0_descend_Load(EOS(STATIC_463), i93, i93) :|: TRUE f463_0_descend_Load(EOS(STATIC_463), i89, i89) -> f466_0_descend_LE(EOS(STATIC_466), i89, i89, i89) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f466_0_descend_LE(EOS(STATIC_466), i91:0, i91:0, i91:0) -> f466_0_descend_LE(EOS(STATIC_466), i91:0 - 1, i91:0 - 1, i91:0 - 1) :|: i91:0 > 0 && i91:0 - 1 < i91:0 Removed following non-SCC rules: f466_0_descend_LE(EOS(STATIC_466), i91:0, i91:0, i91:0) -> f485_1_descend_Load(EOS(STATIC_485), i91:0, i91:0 - 1) :|: i91:0 > 0 && i91:0 - 1 < i91:0 Filtered constant ground arguments: f466_0_descend_LE(x1, x2, x3, x4) -> f466_0_descend_LE(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f466_0_descend_LE(x1, x2, x3) -> f466_0_descend_LE(x3) Finished conversion. Obtained 1 rules.P rules: f466_0_descend_LE(i91:0) -> f466_0_descend_LE(i91:0 - 1) :|: i91:0 > 0 && i91:0 - 1 < i91:0 ---------------------------------------- (9) Obligation: Rules: f466_0_descend_LE(i91:0) -> f466_0_descend_LE(i91:0 - 1) :|: i91:0 > 0 && i91:0 - 1 < i91:0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f466_0_descend_LE(i91:0) -> f466_0_descend_LE(arith) :|: i91:0 > 0 && i91:0 - 1 < i91:0 && arith = i91:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f466_0_descend_LE(i91:0) -> f466_0_descend_LE(arith) :|: i91:0 > 0 && i91:0 - 1 < i91:0 && arith = i91:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f466_0_descend_LE(i91:0) -> f466_0_descend_LE(arith) :|: i91:0 > 0 && i91:0 - 1 < i91:0 && arith = i91:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f466_0_descend_LE(i91:0:0) -> f466_0_descend_LE(i91:0:0 - 1) :|: i91:0:0 > 0 && i91:0:0 - 1 < i91:0:0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f466_0_descend_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f466_0_descend_LE(i91:0:0) -> f466_0_descend_LE(c) :|: c = i91:0:0 - 1 && (i91:0:0 > 0 && i91:0:0 - 1 < i91:0:0) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f466_0_descend_LE(x)] = x The following rules are decreasing: f466_0_descend_LE(i91:0:0) -> f466_0_descend_LE(c) :|: c = i91:0:0 - 1 && (i91:0:0 > 0 && i91:0:0 - 1 < i91:0:0) The following rules are bounded: f466_0_descend_LE(i91:0:0) -> f466_0_descend_LE(c) :|: c = i91:0:0 - 1 && (i91:0:0 > 0 && i91:0:0 - 1 < i91:0:0) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test10.rec(J)V SCC calls the following helper methods: Test10.descend(I)V, Test10.rec(J)V 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 75 IRulesP rules: f17_0_rec_ConstantStackPush(EOS(STATIC_17), i4, i4, i4) -> f18_0_rec_Cmp(EOS(STATIC_18), i4, i4, i4, 0) :|: TRUE f18_0_rec_Cmp(EOS(STATIC_18), i5, i5, i5, matching1) -> f21_0_rec_Cmp(EOS(STATIC_21), i5, i5, i5, 0) :|: TRUE && matching1 = 0 f21_0_rec_Cmp(EOS(STATIC_21), i5, i5, i5, matching1) -> f31_0_rec_LE(EOS(STATIC_31), i5, i5, 1) :|: TRUE && matching1 = 0 f31_0_rec_LE(EOS(STATIC_31), i5, i5, matching1) -> f33_0_rec_Load(EOS(STATIC_33), i5, i5) :|: 1 > 0 && matching1 = 1 f33_0_rec_Load(EOS(STATIC_33), i5, i5) -> f35_0_rec_TypeCast(EOS(STATIC_35), i5, i5, i5) :|: TRUE f35_0_rec_TypeCast(EOS(STATIC_35), i5, i5, i5) -> f48_0_rec_Store(EOS(STATIC_48), i5, i5, i10) :|: i10 = i5 f48_0_rec_Store(EOS(STATIC_48), i5, i5, i10) -> f50_0_rec_Load(EOS(STATIC_50), i5, i5, i10) :|: TRUE f50_0_rec_Load(EOS(STATIC_50), i5, i5, i10) -> f52_0_rec_ConstantStackPush(EOS(STATIC_52), i5, i5, i10, i10) :|: TRUE f52_0_rec_ConstantStackPush(EOS(STATIC_52), i5, i5, i10, i10) -> f55_0_rec_GE(EOS(STATIC_55), i5, i5, i10, i10, 100) :|: TRUE f55_0_rec_GE(EOS(STATIC_55), i5, i5, i12, i12, matching1) -> f60_0_rec_GE(EOS(STATIC_60), i5, i5, i12, i12, 100) :|: TRUE && matching1 = 100 f55_0_rec_GE(EOS(STATIC_55), i5, i5, i13, i13, matching1) -> f61_0_rec_GE(EOS(STATIC_61), i5, i5, i13, i13, 100) :|: TRUE && matching1 = 100 f60_0_rec_GE(EOS(STATIC_60), i5, i5, i12, i12, matching1) -> f65_0_rec_Load(EOS(STATIC_65), i5, i5, i12) :|: i12 < 100 && matching1 = 100 f65_0_rec_Load(EOS(STATIC_65), i5, i5, i12) -> f69_0_rec_InvokeMethod(EOS(STATIC_69), i5, i5, i12, i12) :|: TRUE f69_0_rec_InvokeMethod(EOS(STATIC_69), i5, i5, i12, i12) -> f72_0_test_Load(EOS(STATIC_72), i5, i5, i12, i12) :|: TRUE f72_0_test_Load(EOS(STATIC_72), i5, i5, i12, i12) -> f75_0_test_InvokeMethod(EOS(STATIC_75), i5, i5, i12, i12, i12) :|: TRUE f75_0_test_InvokeMethod(EOS(STATIC_75), i5, i5, i12, i12, i12) -> f77_0_descend_Load(EOS(STATIC_77), i12, i12) :|: i12 >= 1 f75_0_test_InvokeMethod(EOS(STATIC_75), i5, i5, i12, i12, i12) -> f77_1_descend_Load(EOS(STATIC_77), i5, i5, i12, i12, i12) :|: i12 >= 1 f77_0_descend_Load(EOS(STATIC_77), i12, i12) -> f2837_0_descend_Load(EOS(STATIC_2837), i12, i12) :|: TRUE f676_0_descend_Return(EOS(STATIC_676), i5, i5, i124, i124) -> f682_0_test_Load(EOS(STATIC_682), i5, i5, i124, i124) :|: TRUE f682_0_test_Load(EOS(STATIC_682), i5, i5, i124, i124) -> f684_0_test_InvokeMethod(EOS(STATIC_684), i5, i5, i124, i124, i124) :|: TRUE f684_0_test_InvokeMethod(EOS(STATIC_684), i5, i5, i124, i124, i124) -> f686_0_descend_Load(EOS(STATIC_686), i124, i124) :|: i124 >= 1 f684_0_test_InvokeMethod(EOS(STATIC_684), i5, i5, i124, i124, i124) -> f686_1_descend_Load(EOS(STATIC_686), i5, i5, i124, i124, i124) :|: i124 >= 1 f686_0_descend_Load(EOS(STATIC_686), i124, i124) -> f2854_0_descend_Load(EOS(STATIC_2854), i124, i124) :|: TRUE f956_0_descend_Return(EOS(STATIC_956), i5, i5, i136, i136) -> f959_0_test_Load(EOS(STATIC_959), i5, i5, i136, i136) :|: TRUE f959_0_test_Load(EOS(STATIC_959), i5, i5, i136, i136) -> f960_0_test_InvokeMethod(EOS(STATIC_960), i5, i5, i136, i136, i136) :|: TRUE f960_0_test_InvokeMethod(EOS(STATIC_960), i5, i5, i136, i136, i136) -> f961_0_descend_Load(EOS(STATIC_961), i136, i136) :|: i136 >= 1 f960_0_test_InvokeMethod(EOS(STATIC_960), i5, i5, i136, i136, i136) -> f961_1_descend_Load(EOS(STATIC_961), i5, i5, i136, i136, i136) :|: i136 >= 1 f961_0_descend_Load(EOS(STATIC_961), i136, i136) -> f2870_0_descend_Load(EOS(STATIC_2870), i136, i136) :|: TRUE f1764_0_descend_Return(EOS(STATIC_1764), i5, i5, i184, i184) -> f1765_0_test_Load(EOS(STATIC_1765), i5, i5, i184, i184) :|: TRUE f1765_0_test_Load(EOS(STATIC_1765), i5, i5, i184, i184) -> f1766_0_test_InvokeMethod(EOS(STATIC_1766), i5, i5, i184, i184, i184) :|: TRUE f1766_0_test_InvokeMethod(EOS(STATIC_1766), i5, i5, i184, i184, i184) -> f1767_0_descend_Load(EOS(STATIC_1767), i184, i184) :|: i184 >= 1 f1766_0_test_InvokeMethod(EOS(STATIC_1766), i5, i5, i184, i184, i184) -> f1767_1_descend_Load(EOS(STATIC_1767), i5, i5, i184, i184, i184) :|: i184 >= 1 f1767_0_descend_Load(EOS(STATIC_1767), i184, i184) -> f2886_0_descend_Load(EOS(STATIC_2886), i184, i184) :|: TRUE f2568_0_descend_Return(EOS(STATIC_2568), i5, i5, i301, i301) -> f2570_0_test_Load(EOS(STATIC_2570), i5, i5, i301, i301) :|: TRUE f2570_0_test_Load(EOS(STATIC_2570), i5, i5, i301, i301) -> f2571_0_test_InvokeMethod(EOS(STATIC_2571), i5, i5, i301, i301, i301) :|: TRUE f2571_0_test_InvokeMethod(EOS(STATIC_2571), i5, i5, i301, i301, i301) -> f2574_0_descend_Load(EOS(STATIC_2574), i301, i301) :|: i301 >= 1 f2571_0_test_InvokeMethod(EOS(STATIC_2571), i5, i5, i301, i301, i301) -> f2574_1_descend_Load(EOS(STATIC_2574), i5, i5, i301, i301, i301) :|: i301 >= 1 f2574_0_descend_Load(EOS(STATIC_2574), i301, i301) -> f2902_0_descend_Load(EOS(STATIC_2902), i301, i301) :|: TRUE f2598_0_descend_Return(EOS(STATIC_2598), i5, i5, i422, i422) -> f2600_0_test_Load(EOS(STATIC_2600), i5, i5, i422, i422) :|: TRUE f2600_0_test_Load(EOS(STATIC_2600), i5, i5, i422, i422) -> f2603_0_test_InvokeMethod(EOS(STATIC_2603), i5, i5, i422, i422, i422) :|: TRUE f2603_0_test_InvokeMethod(EOS(STATIC_2603), i5, i5, i422, i422, i422) -> f2605_0_descend_Load(EOS(STATIC_2605), i422, i422) :|: i422 >= 1 f2603_0_test_InvokeMethod(EOS(STATIC_2603), i5, i5, i422, i422, i422) -> f2605_1_descend_Load(EOS(STATIC_2605), i5, i5, i422, i422, i422) :|: i422 >= 1 f2605_0_descend_Load(EOS(STATIC_2605), i422, i422) -> f2918_0_descend_Load(EOS(STATIC_2918), i422, i422) :|: TRUE f2625_0_descend_Return(EOS(STATIC_2625), i5, i5, i433, i433) -> f2628_0_test_Load(EOS(STATIC_2628), i5, i5, i433, i433) :|: TRUE f2628_0_test_Load(EOS(STATIC_2628), i5, i5, i433, i433) -> f2630_0_test_InvokeMethod(EOS(STATIC_2630), i5, i5, i433, i433, i433) :|: TRUE f2630_0_test_InvokeMethod(EOS(STATIC_2630), i5, i5, i433, i433, i433) -> f2631_0_descend_Load(EOS(STATIC_2631), i433, i433) :|: i433 >= 1 f2630_0_test_InvokeMethod(EOS(STATIC_2630), i5, i5, i433, i433, i433) -> f2631_1_descend_Load(EOS(STATIC_2631), i5, i5, i433, i433, i433) :|: i433 >= 1 f2631_0_descend_Load(EOS(STATIC_2631), i433, i433) -> f2934_0_descend_Load(EOS(STATIC_2934), i433, i433) :|: TRUE f2640_0_descend_Return(EOS(STATIC_2640), i5, i5, i440, i440) -> f2641_0_test_Load(EOS(STATIC_2641), i5, i5, i440, i440) :|: TRUE f2641_0_test_Load(EOS(STATIC_2641), i5, i5, i440, i440) -> f2642_0_test_InvokeMethod(EOS(STATIC_2642), i5, i5, i440, i440) :|: TRUE f2642_0_test_InvokeMethod(EOS(STATIC_2642), i5, i5, i440, i440) -> f2643_0_descend_Load(EOS(STATIC_2643), i440, i440) :|: i440 >= 1 f2642_0_test_InvokeMethod(EOS(STATIC_2642), i5, i5, i440, i440) -> f2643_1_descend_Load(EOS(STATIC_2643), i5, i5, i440, i440) :|: i440 >= 1 f2643_0_descend_Load(EOS(STATIC_2643), i440, i440) -> f2951_0_descend_Load(EOS(STATIC_2951), i440, i440) :|: TRUE f2646_0_descend_Return(EOS(STATIC_2646), i5, i5, i445) -> f2647_0_test_Return(EOS(STATIC_2647), i5, i5, i445) :|: TRUE f2647_0_test_Return(EOS(STATIC_2647), i5, i5, i445) -> f2648_0_rec_Inc(EOS(STATIC_2648), i5, i5, i445) :|: TRUE f2648_0_rec_Inc(EOS(STATIC_2648), i5, i5, i445) -> f2649_0_rec_JMP(EOS(STATIC_2649), i5, i5, i445 + 1) :|: TRUE f2649_0_rec_JMP(EOS(STATIC_2649), i5, i5, i446) -> f2688_0_rec_Load(EOS(STATIC_2688), i5, i5, i446) :|: TRUE f2688_0_rec_Load(EOS(STATIC_2688), i5, i5, i446) -> f50_0_rec_Load(EOS(STATIC_50), i5, i5, i446) :|: TRUE f61_0_rec_GE(EOS(STATIC_61), i5, i5, i13, i13, matching1) -> f66_0_rec_Load(EOS(STATIC_66), i5, i5) :|: i13 >= 100 && matching1 = 100 f66_0_rec_Load(EOS(STATIC_66), i5, i5) -> f71_0_rec_ConstantStackPush(EOS(STATIC_71), i5, i5) :|: TRUE f71_0_rec_ConstantStackPush(EOS(STATIC_71), i5, i5) -> f73_0_rec_IntArithmetic(EOS(STATIC_73), i5, i5, 1) :|: TRUE f73_0_rec_IntArithmetic(EOS(STATIC_73), i5, i5, matching1) -> f74_0_rec_InvokeMethod(EOS(STATIC_74), i5, i5 - 1) :|: i5 > 0 && matching1 = 1 f74_0_rec_InvokeMethod(EOS(STATIC_74), i5, i15) -> f76_0_rec_Load(EOS(STATIC_76), i15, i15) :|: i15 < i5 f74_0_rec_InvokeMethod(EOS(STATIC_74), i5, i15) -> f76_1_rec_Load(EOS(STATIC_76), i5, i15) :|: i15 < i5 f76_0_rec_Load(EOS(STATIC_76), i15, i15) -> f78_0_rec_Load(EOS(STATIC_78), i15, i15) :|: TRUE f78_0_rec_Load(EOS(STATIC_78), i15, i15) -> f16_0_rec_Load(EOS(STATIC_16), i15, i15) :|: TRUE f16_0_rec_Load(EOS(STATIC_16), i4, i4) -> f17_0_rec_ConstantStackPush(EOS(STATIC_17), i4, i4, i4) :|: TRUE f77_1_descend_Load(EOS(STATIC_77), i5, i5, i124, i124, i124) -> f676_0_descend_Return(EOS(STATIC_676), i5, i5, i124, i124) :|: TRUE f686_1_descend_Load(EOS(STATIC_686), i5, i5, i136, i136, i136) -> f956_0_descend_Return(EOS(STATIC_956), i5, i5, i136, i136) :|: TRUE f961_1_descend_Load(EOS(STATIC_961), i5, i5, i184, i184, i184) -> f1764_0_descend_Return(EOS(STATIC_1764), i5, i5, i184, i184) :|: TRUE f1767_1_descend_Load(EOS(STATIC_1767), i5, i5, i301, i301, i301) -> f2568_0_descend_Return(EOS(STATIC_2568), i5, i5, i301, i301) :|: TRUE f2574_1_descend_Load(EOS(STATIC_2574), i5, i5, i422, i422, i422) -> f2598_0_descend_Return(EOS(STATIC_2598), i5, i5, i422, i422) :|: TRUE f2605_1_descend_Load(EOS(STATIC_2605), i5, i5, i433, i433, i433) -> f2625_0_descend_Return(EOS(STATIC_2625), i5, i5, i433, i433) :|: TRUE f2631_1_descend_Load(EOS(STATIC_2631), i5, i5, i440, i440, i440) -> f2640_0_descend_Return(EOS(STATIC_2640), i5, i5, i440, i440) :|: TRUE f2643_1_descend_Load(EOS(STATIC_2643), i5, i5, i445, i445) -> f2646_0_descend_Return(EOS(STATIC_2646), i5, i5, i445) :|: TRUE Combined rules. Obtained 11 IRulesP rules: f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i13:0, i13:0, 100) -> f55_0_rec_GE(EOS(STATIC_55), i5:0 - 1, i5:0 - 1, i5:0 - 1, i5:0 - 1, 100) :|: i13:0 > 99 && i5:0 - 1 < i5:0 && i5:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0 + 1, i12:0 + 1, 100) :|: i12:0 < 100 && i12:0 > 0 Removed following non-SCC rules: f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i13:0, i13:0, 100) -> f76_1_rec_Load(EOS(STATIC_76), i5:0, i5:0 - 1) :|: i13:0 > 99 && i5:0 - 1 < i5:0 && i5:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2837_0_descend_Load(EOS(STATIC_2837), i12:0, i12:0) :|: i12:0 > 0 && i12:0 < 100 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2934_0_descend_Load(EOS(STATIC_2934), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2870_0_descend_Load(EOS(STATIC_2870), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2886_0_descend_Load(EOS(STATIC_2886), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2951_0_descend_Load(EOS(STATIC_2951), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2902_0_descend_Load(EOS(STATIC_2902), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2854_0_descend_Load(EOS(STATIC_2854), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 f55_0_rec_GE(EOS(STATIC_55), i5:0, i5:0, i12:0, i12:0, 100) -> f2918_0_descend_Load(EOS(STATIC_2918), i12:0, i12:0) :|: i12:0 < 100 && i12:0 > 0 Filtered constant ground arguments: f55_0_rec_GE(x1, x2, x3, x4, x5, x6) -> f55_0_rec_GE(x2, x3, x4, x5) EOS(x1) -> EOS Filtered duplicate arguments: f55_0_rec_GE(x1, x2, x3, x4) -> f55_0_rec_GE(x2, x4) Finished conversion. Obtained 2 rules.P rules: f55_0_rec_GE(i5:0, i13:0) -> f55_0_rec_GE(i5:0 - 1, i5:0 - 1) :|: i5:0 - 1 < i5:0 && i5:0 > 0 && i13:0 > 99 f55_0_rec_GE(i5:0, i12:0) -> f55_0_rec_GE(i5:0, i12:0 + 1) :|: i12:0 < 100 && i12:0 > 0 ---------------------------------------- (22) Obligation: Rules: f55_0_rec_GE(i5:0, i13:0) -> f55_0_rec_GE(i5:0 - 1, i5:0 - 1) :|: i5:0 - 1 < i5:0 && i5:0 > 0 && i13:0 > 99 f55_0_rec_GE(x, x1) -> f55_0_rec_GE(x, x1 + 1) :|: x1 < 100 && x1 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f55_0_rec_GE(i5:0, i13:0) -> f55_0_rec_GE(arith, arith) :|: i5:0 - 1 < i5:0 && i5:0 > 0 && i13:0 > 99 && arith = i5:0 - 1 && arith = i5:0 - 1 f55_0_rec_GE(x2, x3) -> f55_0_rec_GE(x2, x4) :|: x3 < 100 && x3 > 0 && x4 = x3 + 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f55_0_rec_GE(i5:0, i13:0) -> f55_0_rec_GE(arith, arith) :|: i5:0 - 1 < i5:0 && i5:0 > 0 && i13:0 > 99 && arith = i5:0 - 1 && arith = i5:0 - 1 (2) f55_0_rec_GE(x2, x3) -> f55_0_rec_GE(x2, x4) :|: x3 < 100 && x3 > 0 && x4 = x3 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f55_0_rec_GE(i5:0, i13:0) -> f55_0_rec_GE(arith, arith) :|: i5:0 - 1 < i5:0 && i5:0 > 0 && i13:0 > 99 && arith = i5:0 - 1 && arith = i5:0 - 1 (2) f55_0_rec_GE(x2, x3) -> f55_0_rec_GE(x2, x4) :|: x3 < 100 && x3 > 0 && x4 = x3 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f55_0_rec_GE(i5:0:0, i13:0:0) -> f55_0_rec_GE(i5:0:0 - 1, i5:0:0 - 1) :|: i5:0:0 - 1 < i5:0:0 && i5:0:0 > 0 && i13:0:0 > 99 f55_0_rec_GE(x2:0, x3:0) -> f55_0_rec_GE(x2:0, x3:0 + 1) :|: x3:0 < 100 && x3:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f55_0_rec_GE(VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f55_0_rec_GE(i5:0:0, i13:0:0) -> f55_0_rec_GE(c, c1) :|: c1 = i5:0:0 - 1 && c = i5:0:0 - 1 && (i5:0:0 - 1 < i5:0:0 && i5:0:0 > 0 && i13:0:0 > 99) f55_0_rec_GE(x2:0, x3:0) -> f55_0_rec_GE(x2:0, c2) :|: c2 = x3:0 + 1 && (x3:0 < 100 && x3:0 > 0) ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f55_0_rec_GE(x, x1)] = -1 + x The following rules are decreasing: f55_0_rec_GE(i5:0:0, i13:0:0) -> f55_0_rec_GE(c, c1) :|: c1 = i5:0:0 - 1 && c = i5:0:0 - 1 && (i5:0:0 - 1 < i5:0:0 && i5:0:0 > 0 && i13:0:0 > 99) The following rules are bounded: f55_0_rec_GE(i5:0:0, i13:0:0) -> f55_0_rec_GE(c, c1) :|: c1 = i5:0:0 - 1 && c = i5:0:0 - 1 && (i5:0:0 - 1 < i5:0:0 && i5:0:0 > 0 && i13:0:0 > 99) ---------------------------------------- (32) Obligation: Rules: f55_0_rec_GE(x2:0, x3:0) -> f55_0_rec_GE(x2:0, c2) :|: c2 = x3:0 + 1 && (x3:0 < 100 && x3:0 > 0) ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f55_0_rec_GE ] = -1*f55_0_rec_GE_2 The following rules are decreasing: f55_0_rec_GE(x2:0, x3:0) -> f55_0_rec_GE(x2:0, c2) :|: c2 = x3:0 + 1 && (x3:0 < 100 && x3:0 > 0) The following rules are bounded: f55_0_rec_GE(x2:0, x3:0) -> f55_0_rec_GE(x2:0, c2) :|: c2 = x3:0 + 1 && (x3:0 < 100 && x3:0 > 0) ---------------------------------------- (34) YES