/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, 346 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 51 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 37 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToQDPProof [SOUND, 232 ms] (22) QDP (23) MRRProof [EQUIVALENT, 3 ms] (24) QDP (25) PisEmptyProof [EQUIVALENT, 0 ms] (26) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: package AlternatingGrowReduce2; public class AlternatingGrowReduce2 { AlternatingGrowReduce2 next; public static void main(String[] argv) { Random.args = argv; AlternatingGrowReduce2 list = createList(Random.random()); int mode = 0; while (list != null) { if (mode == 0) { list = list.next; } else if (mode == 1) { list = new AlternatingGrowReduce2(list); } else if (mode > 1) { list = list.next; } mode++; if (mode > 2) { mode = 0; } } } public AlternatingGrowReduce2(AlternatingGrowReduce2 old) { this.next = old; } public static AlternatingGrowReduce2 createList(int length) { AlternatingGrowReduce2 res = new AlternatingGrowReduce2(null); while (length > 0) { res = new AlternatingGrowReduce2(res); length--; } return res; } } package AlternatingGrowReduce2; public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: package AlternatingGrowReduce2; public class AlternatingGrowReduce2 { AlternatingGrowReduce2 next; public static void main(String[] argv) { Random.args = argv; AlternatingGrowReduce2 list = createList(Random.random()); int mode = 0; while (list != null) { if (mode == 0) { list = list.next; } else if (mode == 1) { list = new AlternatingGrowReduce2(list); } else if (mode > 1) { list = list.next; } mode++; if (mode > 2) { mode = 0; } } } public AlternatingGrowReduce2(AlternatingGrowReduce2 old) { this.next = old; } public static AlternatingGrowReduce2 createList(int length) { AlternatingGrowReduce2 res = new AlternatingGrowReduce2(null); while (length > 0) { res = new AlternatingGrowReduce2(res); length--; } return res; } } package AlternatingGrowReduce2; public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: AlternatingGrowReduce2.AlternatingGrowReduce2.main([Ljava/lang/String;)V: Graph of 165 nodes with 1 SCC. AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2;: Graph of 34 nodes with 1 SCC. ---------------------------------------- (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: AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2; 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 17 IRulesP rules: f522_0_createList_LE(EOS(STATIC_522), i63, i63) -> f526_0_createList_LE(EOS(STATIC_526), i63, i63) :|: TRUE f526_0_createList_LE(EOS(STATIC_526), i63, i63) -> f530_0_createList_New(EOS(STATIC_530), i63) :|: i63 > 0 f530_0_createList_New(EOS(STATIC_530), i63) -> f533_0_createList_Duplicate(EOS(STATIC_533), i63) :|: TRUE f533_0_createList_Duplicate(EOS(STATIC_533), i63) -> f536_0_createList_Load(EOS(STATIC_536), i63) :|: TRUE f536_0_createList_Load(EOS(STATIC_536), i63) -> f595_0_createList_InvokeMethod(EOS(STATIC_595), i63) :|: TRUE f595_0_createList_InvokeMethod(EOS(STATIC_595), i63) -> f632_0__init__Load(EOS(STATIC_632), i63) :|: TRUE f632_0__init__Load(EOS(STATIC_632), i63) -> f636_0__init__InvokeMethod(EOS(STATIC_636), i63) :|: TRUE f636_0__init__InvokeMethod(EOS(STATIC_636), i63) -> f639_0__init__Load(EOS(STATIC_639), i63) :|: TRUE f639_0__init__Load(EOS(STATIC_639), i63) -> f641_0__init__Load(EOS(STATIC_641), i63) :|: TRUE f641_0__init__Load(EOS(STATIC_641), i63) -> f644_0__init__FieldAccess(EOS(STATIC_644), i63) :|: TRUE f644_0__init__FieldAccess(EOS(STATIC_644), i63) -> f646_0__init__Return(EOS(STATIC_646), i63) :|: TRUE f646_0__init__Return(EOS(STATIC_646), i63) -> f649_0_createList_Store(EOS(STATIC_649), i63) :|: TRUE f649_0_createList_Store(EOS(STATIC_649), i63) -> f653_0_createList_Inc(EOS(STATIC_653), i63) :|: TRUE f653_0_createList_Inc(EOS(STATIC_653), i63) -> f659_0_createList_JMP(EOS(STATIC_659), i63 + -1) :|: TRUE f659_0_createList_JMP(EOS(STATIC_659), i79) -> f689_0_createList_Load(EOS(STATIC_689), i79) :|: TRUE f689_0_createList_Load(EOS(STATIC_689), i79) -> f520_0_createList_Load(EOS(STATIC_520), i79) :|: TRUE f520_0_createList_Load(EOS(STATIC_520), i56) -> f522_0_createList_LE(EOS(STATIC_522), i56, i56) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f522_0_createList_LE(EOS(STATIC_522), i63:0, i63:0) -> f522_0_createList_LE(EOS(STATIC_522), i63:0 - 1, i63:0 - 1) :|: i63:0 > 0 Filtered constant ground arguments: f522_0_createList_LE(x1, x2, x3) -> f522_0_createList_LE(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f522_0_createList_LE(x1, x2) -> f522_0_createList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f522_0_createList_LE(i63:0) -> f522_0_createList_LE(i63:0 - 1) :|: i63:0 > 0 ---------------------------------------- (9) Obligation: Rules: f522_0_createList_LE(i63:0) -> f522_0_createList_LE(i63:0 - 1) :|: i63:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f522_0_createList_LE(i63:0) -> f522_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f522_0_createList_LE(i63:0) -> f522_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f522_0_createList_LE(i63:0) -> f522_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f522_0_createList_LE(i63:0:0) -> f522_0_createList_LE(i63:0:0 - 1) :|: i63:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f522_0_createList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f522_0_createList_LE(i63:0:0) -> f522_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f522_0_createList_LE(x)] = x The following rules are decreasing: f522_0_createList_LE(i63:0:0) -> f522_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 The following rules are bounded: f522_0_createList_LE(i63:0:0) -> f522_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: AlternatingGrowReduce2.AlternatingGrowReduce2.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *AlternatingGrowReduce2.AlternatingGrowReduce2: [next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated rules. Obtained 56 IRulesP rules: f847_0_main_NULL(EOS(STATIC_847), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) -> f850_0_main_NULL(EOS(STATIC_850), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) :|: TRUE f850_0_main_NULL(EOS(STATIC_850), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) -> f853_0_main_Load(EOS(STATIC_853), java.lang.Object(o159sub), i87) :|: TRUE f853_0_main_Load(EOS(STATIC_853), java.lang.Object(o159sub), i87) -> f857_0_main_NE(EOS(STATIC_857), java.lang.Object(o159sub), i87, i87) :|: TRUE f857_0_main_NE(EOS(STATIC_857), java.lang.Object(o159sub), i91, i91) -> f860_0_main_NE(EOS(STATIC_860), java.lang.Object(o159sub), i91, i91) :|: TRUE f857_0_main_NE(EOS(STATIC_857), java.lang.Object(o159sub), matching1, matching2) -> f861_0_main_NE(EOS(STATIC_861), java.lang.Object(o159sub), 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f860_0_main_NE(EOS(STATIC_860), java.lang.Object(o159sub), i91, i91) -> f862_0_main_Load(EOS(STATIC_862), java.lang.Object(o159sub), i91) :|: i91 > 0 f862_0_main_Load(EOS(STATIC_862), java.lang.Object(o159sub), i91) -> f864_0_main_ConstantStackPush(EOS(STATIC_864), java.lang.Object(o159sub), i91, i91) :|: TRUE f864_0_main_ConstantStackPush(EOS(STATIC_864), java.lang.Object(o159sub), i91, i91) -> f867_0_main_NE(EOS(STATIC_867), java.lang.Object(o159sub), i91, i91, 1) :|: TRUE f867_0_main_NE(EOS(STATIC_867), java.lang.Object(o159sub), matching1, matching2, matching3) -> f884_0_main_NE(EOS(STATIC_884), java.lang.Object(o159sub), 1, 1, 1) :|: i91 = 1 && matching1 = 1 && matching2 = 1 && matching3 = 1 f867_0_main_NE(EOS(STATIC_867), java.lang.Object(o159sub), matching1, matching2, matching3) -> f885_0_main_NE(EOS(STATIC_885), java.lang.Object(o159sub), 2, 2, 1) :|: i91 = 2 && matching1 = 2 && matching2 = 2 && matching3 = 1 f884_0_main_NE(EOS(STATIC_884), java.lang.Object(o159sub), matching1, matching2, matching3) -> f900_0_main_New(EOS(STATIC_900), java.lang.Object(o159sub), 1) :|: TRUE && matching1 = 1 && matching2 = 1 && matching3 = 1 f900_0_main_New(EOS(STATIC_900), java.lang.Object(o159sub), matching1) -> f907_0_main_Duplicate(EOS(STATIC_907), java.lang.Object(o159sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 f907_0_main_Duplicate(EOS(STATIC_907), java.lang.Object(o159sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f911_0_main_Load(EOS(STATIC_911), java.lang.Object(o159sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 f911_0_main_Load(EOS(STATIC_911), java.lang.Object(o159sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f919_0_main_InvokeMethod(EOS(STATIC_919), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 f919_0_main_InvokeMethod(EOS(STATIC_919), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f931_0__init__Load(EOS(STATIC_931), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 f931_0__init__Load(EOS(STATIC_931), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f940_0__init__InvokeMethod(EOS(STATIC_940), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 f940_0__init__InvokeMethod(EOS(STATIC_940), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f947_0__init__Load(EOS(STATIC_947), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 f947_0__init__Load(EOS(STATIC_947), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f951_0__init__Load(EOS(STATIC_951), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 f951_0__init__Load(EOS(STATIC_951), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f957_0__init__FieldAccess(EOS(STATIC_957), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 f957_0__init__FieldAccess(EOS(STATIC_957), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f967_0__init__Return(EOS(STATIC_967), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) :|: TRUE && matching1 = 1 f967_0__init__Return(EOS(STATIC_967), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) -> f971_0_main_Store(EOS(STATIC_971), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) :|: TRUE && matching1 = 1 f971_0_main_Store(EOS(STATIC_971), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) -> f980_0_main_JMP(EOS(STATIC_980), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 1) :|: TRUE && matching1 = 1 f980_0_main_JMP(EOS(STATIC_980), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f983_0_main_Inc(EOS(STATIC_983), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 1) :|: TRUE && matching1 = 1 f983_0_main_Inc(EOS(STATIC_983), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f986_0_main_Load(EOS(STATIC_986), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 1 f986_0_main_Load(EOS(STATIC_986), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f1015_0_main_ConstantStackPush(EOS(STATIC_1015), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2, 2) :|: TRUE && matching1 = 2 f1015_0_main_ConstantStackPush(EOS(STATIC_1015), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1, matching2) -> f1021_0_main_LE(EOS(STATIC_1021), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2, 2, 2) :|: TRUE && matching1 = 2 && matching2 = 2 f1021_0_main_LE(EOS(STATIC_1021), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1, matching2, matching3) -> f1030_0_main_Load(EOS(STATIC_1030), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 2 && matching2 = 2 && matching3 = 2 f1030_0_main_Load(EOS(STATIC_1030), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f844_0_main_Load(EOS(STATIC_844), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 2 f844_0_main_Load(EOS(STATIC_844), o155, i87) -> f847_0_main_NULL(EOS(STATIC_847), o155, i87, o155) :|: TRUE f885_0_main_NE(EOS(STATIC_885), java.lang.Object(o159sub), matching1, matching2, matching3) -> f903_0_main_Load(EOS(STATIC_903), java.lang.Object(o159sub), 2) :|: TRUE && matching1 = 2 && matching2 = 2 && matching3 = 1 f903_0_main_Load(EOS(STATIC_903), java.lang.Object(o159sub), matching1) -> f908_0_main_ConstantStackPush(EOS(STATIC_908), java.lang.Object(o159sub), 2, 2) :|: TRUE && matching1 = 2 f908_0_main_ConstantStackPush(EOS(STATIC_908), java.lang.Object(o159sub), matching1, matching2) -> f914_0_main_LE(EOS(STATIC_914), java.lang.Object(o159sub), 2, 2) :|: TRUE && matching1 = 2 && matching2 = 2 f914_0_main_LE(EOS(STATIC_914), java.lang.Object(o159sub), matching1, matching2) -> f928_0_main_Load(EOS(STATIC_928), java.lang.Object(o159sub), 2) :|: TRUE && matching1 = 2 && matching2 = 2 f928_0_main_Load(EOS(STATIC_928), java.lang.Object(o159sub), matching1) -> f932_0_main_FieldAccess(EOS(STATIC_932), 2, java.lang.Object(o159sub)) :|: TRUE && matching1 = 2 f932_0_main_FieldAccess(EOS(STATIC_932), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165))) -> f934_0_main_FieldAccess(EOS(STATIC_934), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165))) :|: TRUE && matching1 = 2 f934_0_main_FieldAccess(EOS(STATIC_934), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165))) -> f944_0_main_Store(EOS(STATIC_944), 2, o165) :|: TRUE && matching1 = 2 f944_0_main_Store(EOS(STATIC_944), matching1, o165) -> f949_0_main_Inc(EOS(STATIC_949), o165, 2) :|: TRUE && matching1 = 2 f949_0_main_Inc(EOS(STATIC_949), o165, matching1) -> f955_0_main_Load(EOS(STATIC_955), o165) :|: TRUE && matching1 = 2 f955_0_main_Load(EOS(STATIC_955), o165) -> f961_0_main_ConstantStackPush(EOS(STATIC_961), o165) :|: TRUE f961_0_main_ConstantStackPush(EOS(STATIC_961), o165) -> f970_0_main_LE(EOS(STATIC_970), o165) :|: TRUE f970_0_main_LE(EOS(STATIC_970), o165) -> f978_0_main_ConstantStackPush(EOS(STATIC_978), o165) :|: TRUE f978_0_main_ConstantStackPush(EOS(STATIC_978), o165) -> f982_0_main_Store(EOS(STATIC_982), o165, 0) :|: TRUE f982_0_main_Store(EOS(STATIC_982), o165, matching1) -> f985_0_main_JMP(EOS(STATIC_985), o165, 0) :|: TRUE && matching1 = 0 f985_0_main_JMP(EOS(STATIC_985), o165, matching1) -> f1010_0_main_Load(EOS(STATIC_1010), o165, 0) :|: TRUE && matching1 = 0 f1010_0_main_Load(EOS(STATIC_1010), o165, matching1) -> f844_0_main_Load(EOS(STATIC_844), o165, 0) :|: TRUE && matching1 = 0 f861_0_main_NE(EOS(STATIC_861), java.lang.Object(o159sub), matching1, matching2) -> f863_0_main_Load(EOS(STATIC_863), java.lang.Object(o159sub), 0) :|: TRUE && matching1 = 0 && matching2 = 0 f863_0_main_Load(EOS(STATIC_863), java.lang.Object(o159sub), matching1) -> f865_0_main_FieldAccess(EOS(STATIC_865), 0, java.lang.Object(o159sub)) :|: TRUE && matching1 = 0 f865_0_main_FieldAccess(EOS(STATIC_865), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) -> f868_0_main_FieldAccess(EOS(STATIC_868), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) :|: TRUE && matching1 = 0 f868_0_main_FieldAccess(EOS(STATIC_868), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) -> f888_0_main_Store(EOS(STATIC_888), 0, o161) :|: TRUE && matching1 = 0 f888_0_main_Store(EOS(STATIC_888), matching1, o161) -> f905_0_main_JMP(EOS(STATIC_905), o161, 0) :|: TRUE && matching1 = 0 f905_0_main_JMP(EOS(STATIC_905), o161, matching1) -> f909_0_main_Inc(EOS(STATIC_909), o161, 0) :|: TRUE && matching1 = 0 f909_0_main_Inc(EOS(STATIC_909), o161, matching1) -> f917_0_main_Load(EOS(STATIC_917), o161, 1) :|: TRUE && matching1 = 0 f917_0_main_Load(EOS(STATIC_917), o161, matching1) -> f930_0_main_ConstantStackPush(EOS(STATIC_930), o161, 1, 1) :|: TRUE && matching1 = 1 f930_0_main_ConstantStackPush(EOS(STATIC_930), o161, matching1, matching2) -> f933_0_main_LE(EOS(STATIC_933), o161, 1, 1) :|: TRUE && matching1 = 1 && matching2 = 1 f933_0_main_LE(EOS(STATIC_933), o161, matching1, matching2) -> f938_0_main_Load(EOS(STATIC_938), o161, 1) :|: TRUE && matching1 = 1 && matching2 = 1 f938_0_main_Load(EOS(STATIC_938), o161, matching1) -> f844_0_main_Load(EOS(STATIC_844), o161, 1) :|: TRUE && matching1 = 1 Combined rules. Obtained 3 IRulesP rules: f847_0_main_NULL(EOS(STATIC_847), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161:0)), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161:0))) -> f847_0_main_NULL(EOS(STATIC_847), o161:0, 1, o161:0) :|: TRUE f847_0_main_NULL(EOS(STATIC_847), java.lang.Object(o159sub:0), 1, java.lang.Object(o159sub:0)) -> f847_0_main_NULL(EOS(STATIC_847), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub:0))), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub:0)))) :|: TRUE f847_0_main_NULL(EOS(STATIC_847), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165:0)), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165:0))) -> f847_0_main_NULL(EOS(STATIC_847), o165:0, 0, o165:0) :|: TRUE Filtered constant ground arguments: f847_0_main_NULL(x1, x2, x3, x4) -> f847_0_main_NULL(x2, x3, x4) EOS(x1) -> EOS AlternatingGrowReduce2.AlternatingGrowReduce2(x1, x2) -> AlternatingGrowReduce2.AlternatingGrowReduce2(x2) Filtered duplicate arguments: f847_0_main_NULL(x1, x2, x3) -> f847_0_main_NULL(x2, x3) ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: f847_0_main_NULL(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o161:0))) -> f847_0_main_NULL(1, o161:0) f847_0_main_NULL(1, java.lang.Object(o159sub:0)) -> f847_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(o159sub:0)))) f847_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o165:0))) -> f847_0_main_NULL(0, o165:0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: f847_0_main_NULL(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o161:0))) -> f847_0_main_NULL(1, o161:0) f847_0_main_NULL(1, java.lang.Object(o159sub:0)) -> f847_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(o159sub:0)))) f847_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o165:0))) -> f847_0_main_NULL(0, o165:0) Used ordering: Knuth-Bendix order [KBO] with precedence:2 > 0 > 1 > java.lang.Object_1 > f847_0_main_NULL_2 > AlternatingGrowReduce2.AlternatingGrowReduce2_1 and weight map: 0=2 1=3 2=1 java.lang.Object_1=1 AlternatingGrowReduce2.AlternatingGrowReduce2_1=1 f847_0_main_NULL_2=0 The variable weight is 1 ---------------------------------------- (24) Obligation: Q DP problem: P is empty. R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (25) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (26) YES