7.37/2.94 YES 7.37/2.96 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 7.37/2.96 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.37/2.96 7.37/2.96 7.37/2.96 termination of the given Bare JBC problem could be proven: 7.37/2.96 7.37/2.96 (0) Bare JBC problem 7.37/2.96 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 7.37/2.96 (2) JBC problem 7.37/2.96 (3) JBCToGraph [EQUIVALENT, 322 ms] 7.37/2.96 (4) JBCTerminationGraph 7.37/2.96 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 7.37/2.96 (6) AND 7.37/2.96 (7) JBCTerminationSCC 7.37/2.96 (8) SCCToIRSProof [SOUND, 85 ms] 7.37/2.96 (9) IRSwT 7.37/2.96 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 7.37/2.96 (11) IRSwT 7.37/2.96 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 19 ms] 7.37/2.96 (13) IRSwT 7.37/2.96 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.37/2.96 (15) IRSwT 7.37/2.96 (16) TempFilterProof [SOUND, 36 ms] 7.37/2.96 (17) IntTRS 7.37/2.96 (18) RankingReductionPairProof [EQUIVALENT, 19 ms] 7.37/2.96 (19) YES 7.37/2.96 (20) JBCTerminationSCC 7.37/2.96 (21) SCCToQDPProof [SOUND, 250 ms] 7.37/2.96 (22) QDP 7.37/2.96 (23) MRRProof [EQUIVALENT, 8 ms] 7.37/2.96 (24) QDP 7.37/2.96 (25) PisEmptyProof [EQUIVALENT, 0 ms] 7.37/2.96 (26) YES 7.37/2.96 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (0) 7.37/2.96 Obligation: 7.37/2.96 need to prove termination of the following program: 7.37/2.96 package AlternatingGrowReduce2; 7.37/2.96 7.37/2.96 public class AlternatingGrowReduce2 { 7.37/2.96 AlternatingGrowReduce2 next; 7.37/2.96 7.37/2.96 public static void main(String[] argv) { 7.37/2.96 Random.args = argv; 7.37/2.96 AlternatingGrowReduce2 list = createList(Random.random()); 7.37/2.96 7.37/2.96 int mode = 0; 7.37/2.96 while (list != null) { 7.37/2.96 if (mode == 0) { 7.37/2.96 list = list.next; 7.37/2.96 } else if (mode == 1) { 7.37/2.96 list = new AlternatingGrowReduce2(list); 7.37/2.96 } else if (mode > 1) { 7.37/2.96 list = list.next; 7.37/2.96 } 7.37/2.96 7.37/2.96 mode++; 7.37/2.96 if (mode > 2) { 7.37/2.96 mode = 0; 7.37/2.96 } 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 public AlternatingGrowReduce2(AlternatingGrowReduce2 old) { 7.37/2.96 this.next = old; 7.37/2.96 } 7.37/2.96 7.37/2.96 public static AlternatingGrowReduce2 createList(int length) { 7.37/2.96 AlternatingGrowReduce2 res = new AlternatingGrowReduce2(null); 7.37/2.96 while (length > 0) { 7.37/2.96 res = new AlternatingGrowReduce2(res); 7.37/2.96 length--; 7.37/2.96 } 7.37/2.96 return res; 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 7.37/2.96 package AlternatingGrowReduce2; 7.37/2.96 7.37/2.96 public class Random { 7.37/2.96 static String[] args; 7.37/2.96 static int index = 0; 7.37/2.96 7.37/2.96 public static int random() { 7.37/2.96 String string = args[index]; 7.37/2.96 index++; 7.37/2.96 return string.length(); 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (1) BareJBCToJBCProof (EQUIVALENT) 7.37/2.96 initialized classpath 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (2) 7.37/2.96 Obligation: 7.37/2.96 need to prove termination of the following program: 7.37/2.96 package AlternatingGrowReduce2; 7.37/2.96 7.37/2.96 public class AlternatingGrowReduce2 { 7.37/2.96 AlternatingGrowReduce2 next; 7.37/2.96 7.37/2.96 public static void main(String[] argv) { 7.37/2.96 Random.args = argv; 7.37/2.96 AlternatingGrowReduce2 list = createList(Random.random()); 7.37/2.96 7.37/2.96 int mode = 0; 7.37/2.96 while (list != null) { 7.37/2.96 if (mode == 0) { 7.37/2.96 list = list.next; 7.37/2.96 } else if (mode == 1) { 7.37/2.96 list = new AlternatingGrowReduce2(list); 7.37/2.96 } else if (mode > 1) { 7.37/2.96 list = list.next; 7.37/2.96 } 7.37/2.96 7.37/2.96 mode++; 7.37/2.96 if (mode > 2) { 7.37/2.96 mode = 0; 7.37/2.96 } 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 public AlternatingGrowReduce2(AlternatingGrowReduce2 old) { 7.37/2.96 this.next = old; 7.37/2.96 } 7.37/2.96 7.37/2.96 public static AlternatingGrowReduce2 createList(int length) { 7.37/2.96 AlternatingGrowReduce2 res = new AlternatingGrowReduce2(null); 7.37/2.96 while (length > 0) { 7.37/2.96 res = new AlternatingGrowReduce2(res); 7.37/2.96 length--; 7.37/2.96 } 7.37/2.96 return res; 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 7.37/2.96 package AlternatingGrowReduce2; 7.37/2.96 7.37/2.96 public class Random { 7.37/2.96 static String[] args; 7.37/2.96 static int index = 0; 7.37/2.96 7.37/2.96 public static int random() { 7.37/2.96 String string = args[index]; 7.37/2.96 index++; 7.37/2.96 return string.length(); 7.37/2.96 } 7.37/2.96 } 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (3) JBCToGraph (EQUIVALENT) 7.37/2.96 Constructed TerminationGraph. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (4) 7.37/2.96 Obligation: 7.37/2.96 Termination Graph based on JBC Program: 7.37/2.96 AlternatingGrowReduce2.AlternatingGrowReduce2.main([Ljava/lang/String;)V: Graph of 165 nodes with 1 SCC. 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2;: Graph of 34 nodes with 1 SCC. 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (5) TerminationGraphToSCCProof (SOUND) 7.37/2.96 Splitted TerminationGraph to 2 SCCss. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (6) 7.37/2.96 Complex Obligation (AND) 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (7) 7.37/2.96 Obligation: 7.37/2.96 SCC of termination graph based on JBC Program. 7.37/2.96 SCC contains nodes from the following methods: AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2; 7.37/2.96 SCC calls the following helper methods: 7.37/2.96 Performed SCC analyses: 7.37/2.96 *Used field analysis yielded the following read fields: 7.37/2.96 7.37/2.96 *Marker field analysis yielded the following relations that could be markers: 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (8) SCCToIRSProof (SOUND) 7.37/2.96 Transformed FIGraph SCCs to intTRSs. Log: 7.37/2.96 Generated rules. Obtained 17 IRulesP rules: 7.37/2.96 f505_0_createList_LE(EOS(STATIC_505), i63, i63) -> f512_0_createList_LE(EOS(STATIC_512), i63, i63) :|: TRUE 7.37/2.96 f512_0_createList_LE(EOS(STATIC_512), i63, i63) -> f519_0_createList_New(EOS(STATIC_519), i63) :|: i63 > 0 7.37/2.96 f519_0_createList_New(EOS(STATIC_519), i63) -> f526_0_createList_Duplicate(EOS(STATIC_526), i63) :|: TRUE 7.37/2.96 f526_0_createList_Duplicate(EOS(STATIC_526), i63) -> f532_0_createList_Load(EOS(STATIC_532), i63) :|: TRUE 7.37/2.96 f532_0_createList_Load(EOS(STATIC_532), i63) -> f573_0_createList_InvokeMethod(EOS(STATIC_573), i63) :|: TRUE 7.37/2.96 f573_0_createList_InvokeMethod(EOS(STATIC_573), i63) -> f593_0__init__Load(EOS(STATIC_593), i63) :|: TRUE 7.37/2.96 f593_0__init__Load(EOS(STATIC_593), i63) -> f602_0__init__InvokeMethod(EOS(STATIC_602), i63) :|: TRUE 7.37/2.96 f602_0__init__InvokeMethod(EOS(STATIC_602), i63) -> f608_0__init__Load(EOS(STATIC_608), i63) :|: TRUE 7.37/2.96 f608_0__init__Load(EOS(STATIC_608), i63) -> f614_0__init__Load(EOS(STATIC_614), i63) :|: TRUE 7.37/2.96 f614_0__init__Load(EOS(STATIC_614), i63) -> f621_0__init__FieldAccess(EOS(STATIC_621), i63) :|: TRUE 7.37/2.96 f621_0__init__FieldAccess(EOS(STATIC_621), i63) -> f631_0__init__Return(EOS(STATIC_631), i63) :|: TRUE 7.37/2.96 f631_0__init__Return(EOS(STATIC_631), i63) -> f635_0_createList_Store(EOS(STATIC_635), i63) :|: TRUE 7.37/2.96 f635_0_createList_Store(EOS(STATIC_635), i63) -> f640_0_createList_Inc(EOS(STATIC_640), i63) :|: TRUE 7.37/2.96 f640_0_createList_Inc(EOS(STATIC_640), i63) -> f645_0_createList_JMP(EOS(STATIC_645), i63 + -1) :|: TRUE 7.37/2.96 f645_0_createList_JMP(EOS(STATIC_645), i79) -> f658_0_createList_Load(EOS(STATIC_658), i79) :|: TRUE 7.37/2.96 f658_0_createList_Load(EOS(STATIC_658), i79) -> f502_0_createList_Load(EOS(STATIC_502), i79) :|: TRUE 7.37/2.96 f502_0_createList_Load(EOS(STATIC_502), i58) -> f505_0_createList_LE(EOS(STATIC_505), i58, i58) :|: TRUE 7.37/2.96 Combined rules. Obtained 1 IRulesP rules: 7.37/2.96 f505_0_createList_LE(EOS(STATIC_505), i63:0, i63:0) -> f505_0_createList_LE(EOS(STATIC_505), i63:0 - 1, i63:0 - 1) :|: i63:0 > 0 7.37/2.96 Filtered constant ground arguments: 7.37/2.96 f505_0_createList_LE(x1, x2, x3) -> f505_0_createList_LE(x2, x3) 7.37/2.96 EOS(x1) -> EOS 7.37/2.96 Filtered duplicate arguments: 7.37/2.96 f505_0_createList_LE(x1, x2) -> f505_0_createList_LE(x2) 7.37/2.96 Finished conversion. Obtained 1 rules.P rules: 7.37/2.96 f505_0_createList_LE(i63:0) -> f505_0_createList_LE(i63:0 - 1) :|: i63:0 > 0 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (9) 7.37/2.96 Obligation: 7.37/2.96 Rules: 7.37/2.96 f505_0_createList_LE(i63:0) -> f505_0_createList_LE(i63:0 - 1) :|: i63:0 > 0 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (10) IRSFormatTransformerProof (EQUIVALENT) 7.37/2.96 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (11) 7.37/2.96 Obligation: 7.37/2.96 Rules: 7.37/2.96 f505_0_createList_LE(i63:0) -> f505_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 7.37/2.96 Constructed termination digraph! 7.37/2.96 Nodes: 7.37/2.96 (1) f505_0_createList_LE(i63:0) -> f505_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 7.37/2.96 7.37/2.96 Arcs: 7.37/2.96 (1) -> (1) 7.37/2.96 7.37/2.96 This digraph is fully evaluated! 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (13) 7.37/2.96 Obligation: 7.37/2.96 7.37/2.96 Termination digraph: 7.37/2.96 Nodes: 7.37/2.96 (1) f505_0_createList_LE(i63:0) -> f505_0_createList_LE(arith) :|: i63:0 > 0 && arith = i63:0 - 1 7.37/2.96 7.37/2.96 Arcs: 7.37/2.96 (1) -> (1) 7.37/2.96 7.37/2.96 This digraph is fully evaluated! 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (14) IntTRSCompressionProof (EQUIVALENT) 7.37/2.96 Compressed rules. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (15) 7.37/2.96 Obligation: 7.37/2.96 Rules: 7.37/2.96 f505_0_createList_LE(i63:0:0) -> f505_0_createList_LE(i63:0:0 - 1) :|: i63:0:0 > 0 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (16) TempFilterProof (SOUND) 7.37/2.96 Used the following sort dictionary for filtering: 7.37/2.96 f505_0_createList_LE(INTEGER) 7.37/2.96 Replaced non-predefined constructor symbols by 0. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (17) 7.37/2.96 Obligation: 7.37/2.96 Rules: 7.37/2.96 f505_0_createList_LE(i63:0:0) -> f505_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (18) RankingReductionPairProof (EQUIVALENT) 7.37/2.96 Interpretation: 7.37/2.96 [ f505_0_createList_LE ] = f505_0_createList_LE_1 7.37/2.96 7.37/2.96 The following rules are decreasing: 7.37/2.96 f505_0_createList_LE(i63:0:0) -> f505_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 7.37/2.96 7.37/2.96 The following rules are bounded: 7.37/2.96 f505_0_createList_LE(i63:0:0) -> f505_0_createList_LE(c) :|: c = i63:0:0 - 1 && i63:0:0 > 0 7.37/2.96 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (19) 7.37/2.96 YES 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (20) 7.37/2.96 Obligation: 7.37/2.96 SCC of termination graph based on JBC Program. 7.37/2.96 SCC contains nodes from the following methods: AlternatingGrowReduce2.AlternatingGrowReduce2.main([Ljava/lang/String;)V 7.37/2.96 SCC calls the following helper methods: 7.37/2.96 Performed SCC analyses: 7.37/2.96 *Used field analysis yielded the following read fields: 7.37/2.96 *AlternatingGrowReduce2.AlternatingGrowReduce2: [next] 7.37/2.96 *Marker field analysis yielded the following relations that could be markers: 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (21) SCCToQDPProof (SOUND) 7.37/2.96 Transformed TerminationGraph SCC to QDP. Log: 7.37/2.96 Generated rules. Obtained 56 IRulesP rules: 7.37/2.96 f838_0_main_NULL(EOS(STATIC_838), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) -> f841_0_main_NULL(EOS(STATIC_841), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) :|: TRUE 7.37/2.96 f841_0_main_NULL(EOS(STATIC_841), java.lang.Object(o159sub), i87, java.lang.Object(o159sub)) -> f844_0_main_Load(EOS(STATIC_844), java.lang.Object(o159sub), i87) :|: TRUE 7.37/2.96 f844_0_main_Load(EOS(STATIC_844), java.lang.Object(o159sub), i87) -> f849_0_main_NE(EOS(STATIC_849), java.lang.Object(o159sub), i87, i87) :|: TRUE 7.37/2.96 f849_0_main_NE(EOS(STATIC_849), java.lang.Object(o159sub), i90, i90) -> f853_0_main_NE(EOS(STATIC_853), java.lang.Object(o159sub), i90, i90) :|: TRUE 7.37/2.96 f849_0_main_NE(EOS(STATIC_849), java.lang.Object(o159sub), matching1, matching2) -> f855_0_main_NE(EOS(STATIC_855), java.lang.Object(o159sub), 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 7.37/2.96 f853_0_main_NE(EOS(STATIC_853), java.lang.Object(o159sub), i90, i90) -> f857_0_main_Load(EOS(STATIC_857), java.lang.Object(o159sub), i90) :|: i90 > 0 7.37/2.96 f857_0_main_Load(EOS(STATIC_857), java.lang.Object(o159sub), i90) -> f861_0_main_ConstantStackPush(EOS(STATIC_861), java.lang.Object(o159sub), i90, i90) :|: TRUE 7.37/2.96 f861_0_main_ConstantStackPush(EOS(STATIC_861), java.lang.Object(o159sub), i90, i90) -> f866_0_main_NE(EOS(STATIC_866), java.lang.Object(o159sub), i90, i90, 1) :|: TRUE 7.37/2.96 f866_0_main_NE(EOS(STATIC_866), java.lang.Object(o159sub), matching1, matching2, matching3) -> f873_0_main_NE(EOS(STATIC_873), java.lang.Object(o159sub), 1, 1, 1) :|: i90 = 1 && matching1 = 1 && matching2 = 1 && matching3 = 1 7.37/2.96 f866_0_main_NE(EOS(STATIC_866), java.lang.Object(o159sub), matching1, matching2, matching3) -> f874_0_main_NE(EOS(STATIC_874), java.lang.Object(o159sub), 2, 2, 1) :|: i90 = 2 && matching1 = 2 && matching2 = 2 && matching3 = 1 7.37/2.96 f873_0_main_NE(EOS(STATIC_873), java.lang.Object(o159sub), matching1, matching2, matching3) -> f895_0_main_New(EOS(STATIC_895), java.lang.Object(o159sub), 1) :|: TRUE && matching1 = 1 && matching2 = 1 && matching3 = 1 7.37/2.96 f895_0_main_New(EOS(STATIC_895), java.lang.Object(o159sub), matching1) -> f904_0_main_Duplicate(EOS(STATIC_904), java.lang.Object(o159sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 7.37/2.96 f904_0_main_Duplicate(EOS(STATIC_904), java.lang.Object(o159sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f910_0_main_Load(EOS(STATIC_910), java.lang.Object(o159sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 7.37/2.96 f910_0_main_Load(EOS(STATIC_910), java.lang.Object(o159sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f914_0_main_InvokeMethod(EOS(STATIC_914), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 7.37/2.96 f914_0_main_InvokeMethod(EOS(STATIC_914), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f927_0__init__Load(EOS(STATIC_927), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 7.37/2.96 f927_0__init__Load(EOS(STATIC_927), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f938_0__init__InvokeMethod(EOS(STATIC_938), 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 7.37/2.96 f938_0__init__InvokeMethod(EOS(STATIC_938), 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))) -> f943_0__init__Load(EOS(STATIC_943), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 7.37/2.96 f943_0__init__Load(EOS(STATIC_943), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f949_0__init__Load(EOS(STATIC_949), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) :|: TRUE && matching1 = 1 7.37/2.96 f949_0__init__Load(EOS(STATIC_949), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) -> f955_0__init__FieldAccess(EOS(STATIC_955), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) :|: TRUE && matching1 = 1 7.37/2.96 f955_0__init__FieldAccess(EOS(STATIC_955), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o159sub)) -> f965_0__init__Return(EOS(STATIC_965), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) :|: TRUE && matching1 = 1 7.37/2.96 f965_0__init__Return(EOS(STATIC_965), 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 7.37/2.96 f971_0_main_Store(EOS(STATIC_971), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub)))) -> f981_0_main_JMP(EOS(STATIC_981), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 1) :|: TRUE && matching1 = 1 7.37/2.96 f981_0_main_JMP(EOS(STATIC_981), 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 7.37/2.96 f983_0_main_Inc(EOS(STATIC_983), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f985_0_main_Load(EOS(STATIC_985), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 1 7.37/2.96 f985_0_main_Load(EOS(STATIC_985), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f1008_0_main_ConstantStackPush(EOS(STATIC_1008), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2, 2) :|: TRUE && matching1 = 2 7.37/2.96 f1008_0_main_ConstantStackPush(EOS(STATIC_1008), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1, matching2) -> f1016_0_main_LE(EOS(STATIC_1016), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2, 2, 2) :|: TRUE && matching1 = 2 && matching2 = 2 7.37/2.96 f1016_0_main_LE(EOS(STATIC_1016), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1, matching2, matching3) -> f1027_0_main_Load(EOS(STATIC_1027), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 2 && matching2 = 2 && matching3 = 2 7.37/2.96 f1027_0_main_Load(EOS(STATIC_1027), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), matching1) -> f833_0_main_Load(EOS(STATIC_833), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub))), 2) :|: TRUE && matching1 = 2 7.37/2.96 f833_0_main_Load(EOS(STATIC_833), o155, i87) -> f838_0_main_NULL(EOS(STATIC_838), o155, i87, o155) :|: TRUE 7.37/2.96 f874_0_main_NE(EOS(STATIC_874), java.lang.Object(o159sub), matching1, matching2, matching3) -> f899_0_main_Load(EOS(STATIC_899), java.lang.Object(o159sub), 2) :|: TRUE && matching1 = 2 && matching2 = 2 && matching3 = 1 7.37/2.96 f899_0_main_Load(EOS(STATIC_899), java.lang.Object(o159sub), matching1) -> f906_0_main_ConstantStackPush(EOS(STATIC_906), java.lang.Object(o159sub), 2, 2) :|: TRUE && matching1 = 2 7.37/2.96 f906_0_main_ConstantStackPush(EOS(STATIC_906), java.lang.Object(o159sub), matching1, matching2) -> f911_0_main_LE(EOS(STATIC_911), java.lang.Object(o159sub), 2, 2) :|: TRUE && matching1 = 2 && matching2 = 2 7.37/2.96 f911_0_main_LE(EOS(STATIC_911), java.lang.Object(o159sub), matching1, matching2) -> f923_0_main_Load(EOS(STATIC_923), java.lang.Object(o159sub), 2) :|: TRUE && matching1 = 2 && matching2 = 2 7.37/2.96 f923_0_main_Load(EOS(STATIC_923), java.lang.Object(o159sub), matching1) -> f929_0_main_FieldAccess(EOS(STATIC_929), 2, java.lang.Object(o159sub)) :|: TRUE && matching1 = 2 7.37/2.96 f929_0_main_FieldAccess(EOS(STATIC_929), 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 7.37/2.96 f934_0_main_FieldAccess(EOS(STATIC_934), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165))) -> f939_0_main_Store(EOS(STATIC_939), 2, o165) :|: TRUE && matching1 = 2 7.37/2.96 f939_0_main_Store(EOS(STATIC_939), matching1, o165) -> f947_0_main_Inc(EOS(STATIC_947), o165, 2) :|: TRUE && matching1 = 2 7.37/2.96 f947_0_main_Inc(EOS(STATIC_947), o165, matching1) -> f953_0_main_Load(EOS(STATIC_953), o165) :|: TRUE && matching1 = 2 7.37/2.96 f953_0_main_Load(EOS(STATIC_953), o165) -> f959_0_main_ConstantStackPush(EOS(STATIC_959), o165) :|: TRUE 7.37/2.96 f959_0_main_ConstantStackPush(EOS(STATIC_959), o165) -> f969_0_main_LE(EOS(STATIC_969), o165) :|: TRUE 7.37/2.96 f969_0_main_LE(EOS(STATIC_969), o165) -> f978_0_main_ConstantStackPush(EOS(STATIC_978), o165) :|: TRUE 7.37/2.96 f978_0_main_ConstantStackPush(EOS(STATIC_978), o165) -> f982_0_main_Store(EOS(STATIC_982), o165, 0) :|: TRUE 7.37/2.96 f982_0_main_Store(EOS(STATIC_982), o165, matching1) -> f984_0_main_JMP(EOS(STATIC_984), o165, 0) :|: TRUE && matching1 = 0 7.37/2.96 f984_0_main_JMP(EOS(STATIC_984), o165, matching1) -> f1003_0_main_Load(EOS(STATIC_1003), o165, 0) :|: TRUE && matching1 = 0 7.37/2.96 f1003_0_main_Load(EOS(STATIC_1003), o165, matching1) -> f833_0_main_Load(EOS(STATIC_833), o165, 0) :|: TRUE && matching1 = 0 7.37/2.96 f855_0_main_NE(EOS(STATIC_855), java.lang.Object(o159sub), matching1, matching2) -> f860_0_main_Load(EOS(STATIC_860), java.lang.Object(o159sub), 0) :|: TRUE && matching1 = 0 && matching2 = 0 7.37/2.96 f860_0_main_Load(EOS(STATIC_860), java.lang.Object(o159sub), matching1) -> f864_0_main_FieldAccess(EOS(STATIC_864), 0, java.lang.Object(o159sub)) :|: TRUE && matching1 = 0 7.37/2.96 f864_0_main_FieldAccess(EOS(STATIC_864), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) -> f867_0_main_FieldAccess(EOS(STATIC_867), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) :|: TRUE && matching1 = 0 7.37/2.96 f867_0_main_FieldAccess(EOS(STATIC_867), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161))) -> f877_0_main_Store(EOS(STATIC_877), 0, o161) :|: TRUE && matching1 = 0 7.37/2.96 f877_0_main_Store(EOS(STATIC_877), matching1, o161) -> f901_0_main_JMP(EOS(STATIC_901), o161, 0) :|: TRUE && matching1 = 0 7.37/2.96 f901_0_main_JMP(EOS(STATIC_901), o161, matching1) -> f908_0_main_Inc(EOS(STATIC_908), o161, 0) :|: TRUE && matching1 = 0 7.37/2.96 f908_0_main_Inc(EOS(STATIC_908), o161, matching1) -> f912_0_main_Load(EOS(STATIC_912), o161, 1) :|: TRUE && matching1 = 0 7.37/2.96 f912_0_main_Load(EOS(STATIC_912), o161, matching1) -> f925_0_main_ConstantStackPush(EOS(STATIC_925), o161, 1, 1) :|: TRUE && matching1 = 1 7.37/2.96 f925_0_main_ConstantStackPush(EOS(STATIC_925), o161, matching1, matching2) -> f932_0_main_LE(EOS(STATIC_932), o161, 1, 1) :|: TRUE && matching1 = 1 && matching2 = 1 7.37/2.96 f932_0_main_LE(EOS(STATIC_932), o161, matching1, matching2) -> f937_0_main_Load(EOS(STATIC_937), o161, 1) :|: TRUE && matching1 = 1 && matching2 = 1 7.37/2.96 f937_0_main_Load(EOS(STATIC_937), o161, matching1) -> f833_0_main_Load(EOS(STATIC_833), o161, 1) :|: TRUE && matching1 = 1 7.37/2.96 Combined rules. Obtained 3 IRulesP rules: 7.37/2.96 f838_0_main_NULL(EOS(STATIC_838), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165:0)), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o165:0))) -> f838_0_main_NULL(EOS(STATIC_838), o165:0, 0, o165:0) :|: TRUE 7.37/2.96 f838_0_main_NULL(EOS(STATIC_838), java.lang.Object(o159sub:0), 1, java.lang.Object(o159sub:0)) -> f838_0_main_NULL(EOS(STATIC_838), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub:0))), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o159sub:0)))) :|: TRUE 7.37/2.96 f838_0_main_NULL(EOS(STATIC_838), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161:0)), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o161:0))) -> f838_0_main_NULL(EOS(STATIC_838), o161:0, 1, o161:0) :|: TRUE 7.37/2.96 Filtered constant ground arguments: 7.37/2.96 f838_0_main_NULL(x1, x2, x3, x4) -> f838_0_main_NULL(x2, x3, x4) 7.37/2.96 EOS(x1) -> EOS 7.37/2.96 AlternatingGrowReduce2.AlternatingGrowReduce2(x1, x2) -> AlternatingGrowReduce2.AlternatingGrowReduce2(x2) 7.37/2.96 Filtered duplicate arguments: 7.37/2.96 f838_0_main_NULL(x1, x2, x3) -> f838_0_main_NULL(x2, x3) 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (22) 7.37/2.96 Obligation: 7.37/2.96 Q DP problem: 7.37/2.96 The TRS P consists of the following rules: 7.37/2.96 7.37/2.96 f838_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o165:0))) -> f838_0_main_NULL(0, o165:0) 7.37/2.96 f838_0_main_NULL(1, java.lang.Object(o159sub:0)) -> f838_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(o159sub:0)))) 7.37/2.96 f838_0_main_NULL(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o161:0))) -> f838_0_main_NULL(1, o161:0) 7.37/2.96 7.37/2.96 R is empty. 7.37/2.96 Q is empty. 7.37/2.96 We have to consider all minimal (P,Q,R)-chains. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (23) MRRProof (EQUIVALENT) 7.37/2.96 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. 7.37/2.96 7.37/2.96 Strictly oriented dependency pairs: 7.37/2.96 7.37/2.96 f838_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o165:0))) -> f838_0_main_NULL(0, o165:0) 7.37/2.96 f838_0_main_NULL(1, java.lang.Object(o159sub:0)) -> f838_0_main_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(o159sub:0)))) 7.37/2.96 f838_0_main_NULL(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(o161:0))) -> f838_0_main_NULL(1, o161:0) 7.37/2.96 7.37/2.96 7.37/2.96 Used ordering: Knuth-Bendix order [KBO] with precedence:2 > f838_0_main_NULL_2 > AlternatingGrowReduce2.AlternatingGrowReduce2_1 > 0 > 1 > java.lang.Object_1 7.37/2.96 7.37/2.96 and weight map: 7.37/2.96 7.37/2.96 2=1 7.37/2.96 0=2 7.37/2.96 1=3 7.37/2.96 java.lang.Object_1=1 7.37/2.96 AlternatingGrowReduce2.AlternatingGrowReduce2_1=1 7.37/2.96 f838_0_main_NULL_2=0 7.37/2.96 7.37/2.96 The variable weight is 1 7.37/2.96 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (24) 7.37/2.96 Obligation: 7.37/2.96 Q DP problem: 7.37/2.96 P is empty. 7.37/2.96 R is empty. 7.37/2.96 Q is empty. 7.37/2.96 We have to consider all minimal (P,Q,R)-chains. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (25) PisEmptyProof (EQUIVALENT) 7.37/2.96 The TRS P is empty. Hence, there is no (P,Q,R) chain. 7.37/2.96 ---------------------------------------- 7.37/2.96 7.37/2.96 (26) 7.37/2.96 YES 7.68/3.03 EOF