15.34/6.97 YES 15.34/6.98 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 15.34/6.98 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 15.34/6.98 15.34/6.98 15.34/6.98 termination of the given Bare JBC problem could be proven: 15.34/6.98 15.34/6.98 (0) Bare JBC problem 15.34/6.98 (1) BareJBCToJBCProof [EQUIVALENT, 94 ms] 15.34/6.98 (2) JBC problem 15.34/6.98 (3) JBCToGraph [EQUIVALENT, 1052 ms] 15.34/6.98 (4) JBCTerminationGraph 15.34/6.98 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 15.34/6.98 (6) AND 15.34/6.98 (7) JBCTerminationSCC 15.34/6.98 (8) SCCToQDPProof [SOUND, 82 ms] 15.34/6.98 (9) QDP 15.34/6.98 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 15.34/6.98 (11) YES 15.34/6.98 (12) JBCTerminationSCC 15.34/6.98 (13) SCCToIRSProof [SOUND, 0 ms] 15.34/6.98 (14) IRSwT 15.34/6.98 (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.34/6.98 (16) IRSwT 15.34/6.98 (17) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] 15.34/6.98 (18) IRSwT 15.34/6.98 (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.34/6.98 (20) IRSwT 15.34/6.98 (21) TempFilterProof [SOUND, 32 ms] 15.34/6.98 (22) IntTRS 15.34/6.98 (23) PolynomialOrderProcessor [EQUIVALENT, 12 ms] 15.34/6.98 (24) YES 15.34/6.98 (25) JBCTerminationSCC 15.34/6.98 (26) SCCToIRSProof [SOUND, 356 ms] 15.34/6.98 (27) IRSwT 15.34/6.98 (28) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.34/6.98 (29) IRSwT 15.34/6.98 (30) IRSwTTerminationDigraphProof [EQUIVALENT, 46 ms] 15.34/6.98 (31) IRSwT 15.34/6.98 (32) TempFilterProof [SOUND, 6 ms] 15.34/6.98 (33) IRSwT 15.34/6.98 (34) IRSwTToQDPProof [SOUND, 0 ms] 15.34/6.98 (35) QDP 15.34/6.98 (36) QDPSizeChangeProof [EQUIVALENT, 0 ms] 15.34/6.98 (37) YES 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (0) 15.34/6.98 Obligation: 15.34/6.98 need to prove termination of the following program: 15.34/6.98 public class Test3 { 15.34/6.98 public static void main(String[] args) { 15.34/6.98 List l1 = List.mk(args.length); 15.34/6.98 List l2 = List.mk(args.length); 15.34/6.98 List l3 = (args.length % 2 == 0) ? 15.34/6.98 List.mk(args.length * args.length) : l2; 15.34/6.98 15.34/6.98 while (length(l1) + length(l2) + length(l3) * 5 > 0) 15.34/6.98 if (length(l1) % 2 == 1) 15.34/6.98 l1 = l1.getTail(); 15.34/6.98 else if (length(l2) > length(l3)) 15.34/6.98 l2 = l2.getTail(); 15.34/6.98 else if (l3 == null) 15.34/6.98 break; 15.34/6.98 else { 15.34/6.98 l1 = new List(new Object(), l1); 15.34/6.98 l2 = new List(new Object(), l2); 15.34/6.98 l3 = l3.getTail(); 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 private static int length(List list) { 15.34/6.98 int len = 0; 15.34/6.98 15.34/6.98 while (list != null) { 15.34/6.98 list = list.getTail(); 15.34/6.98 len++; 15.34/6.98 } 15.34/6.98 15.34/6.98 return len; 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 15.34/6.98 public class List { 15.34/6.98 public Object head; 15.34/6.98 private List tail; 15.34/6.98 15.34/6.98 public List(Object head, List tail) { 15.34/6.98 this.head = head; 15.34/6.98 this.tail = tail; 15.34/6.98 } 15.34/6.98 15.34/6.98 public List getTail() { 15.34/6.98 return tail; 15.34/6.98 } 15.34/6.98 15.34/6.98 public static List mk(int len) { 15.34/6.98 List result = null; 15.34/6.98 15.34/6.98 while (len-- > 0) 15.34/6.98 result = new List(new Object(), result); 15.34/6.98 15.34/6.98 return result; 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (1) BareJBCToJBCProof (EQUIVALENT) 15.34/6.98 initialized classpath 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (2) 15.34/6.98 Obligation: 15.34/6.98 need to prove termination of the following program: 15.34/6.98 public class Test3 { 15.34/6.98 public static void main(String[] args) { 15.34/6.98 List l1 = List.mk(args.length); 15.34/6.98 List l2 = List.mk(args.length); 15.34/6.98 List l3 = (args.length % 2 == 0) ? 15.34/6.98 List.mk(args.length * args.length) : l2; 15.34/6.98 15.34/6.98 while (length(l1) + length(l2) + length(l3) * 5 > 0) 15.34/6.98 if (length(l1) % 2 == 1) 15.34/6.98 l1 = l1.getTail(); 15.34/6.98 else if (length(l2) > length(l3)) 15.34/6.98 l2 = l2.getTail(); 15.34/6.98 else if (l3 == null) 15.34/6.98 break; 15.34/6.98 else { 15.34/6.98 l1 = new List(new Object(), l1); 15.34/6.98 l2 = new List(new Object(), l2); 15.34/6.98 l3 = l3.getTail(); 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 private static int length(List list) { 15.34/6.98 int len = 0; 15.34/6.98 15.34/6.98 while (list != null) { 15.34/6.98 list = list.getTail(); 15.34/6.98 len++; 15.34/6.98 } 15.34/6.98 15.34/6.98 return len; 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 15.34/6.98 public class List { 15.34/6.98 public Object head; 15.34/6.98 private List tail; 15.34/6.98 15.34/6.98 public List(Object head, List tail) { 15.34/6.98 this.head = head; 15.34/6.98 this.tail = tail; 15.34/6.98 } 15.34/6.98 15.34/6.98 public List getTail() { 15.34/6.98 return tail; 15.34/6.98 } 15.34/6.98 15.34/6.98 public static List mk(int len) { 15.34/6.98 List result = null; 15.34/6.98 15.34/6.98 while (len-- > 0) 15.34/6.98 result = new List(new Object(), result); 15.34/6.98 15.34/6.98 return result; 15.34/6.98 } 15.34/6.98 } 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (3) JBCToGraph (EQUIVALENT) 15.34/6.98 Constructed TerminationGraph. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (4) 15.34/6.98 Obligation: 15.34/6.98 Termination Graph based on JBC Program: 15.34/6.98 Test3.main([Ljava/lang/String;)V: Graph of 212 nodes with 1 SCC. 15.34/6.98 15.34/6.98 15.34/6.98 15.34/6.98 List.mk(I)LList;: Graph of 58 nodes with 1 SCC. 15.34/6.98 15.34/6.98 15.34/6.98 15.34/6.98 Test3.length(LList;)I: Graph of 22 nodes with 1 SCC. 15.34/6.98 15.34/6.98 15.34/6.98 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (5) TerminationGraphToSCCProof (SOUND) 15.34/6.98 Splitted TerminationGraph to 3 SCCss. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (6) 15.34/6.98 Complex Obligation (AND) 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (7) 15.34/6.98 Obligation: 15.34/6.98 SCC of termination graph based on JBC Program. 15.34/6.98 SCC contains nodes from the following methods: Test3.length(LList;)I 15.34/6.98 SCC calls the following helper methods: 15.34/6.98 Performed SCC analyses: 15.34/6.98 *Used field analysis yielded the following read fields: 15.34/6.98 *List: [tail] 15.34/6.98 *Marker field analysis yielded the following relations that could be markers: 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (8) SCCToQDPProof (SOUND) 15.34/6.98 Transformed TerminationGraph SCC to QDP. Log: 15.34/6.98 Generated 13 rules for P and 0 rules for R.P rules: 15.34/6.98 f6986_0_length_NULL(EOS(STATIC_6986), java.lang.Object(o2447sub), java.lang.Object(o2447sub)) -> f6987_0_length_NULL(EOS(STATIC_6987), java.lang.Object(o2447sub), java.lang.Object(o2447sub)) :|: TRUE 15.34/6.98 f6987_0_length_NULL(EOS(STATIC_6987), java.lang.Object(o2447sub), java.lang.Object(o2447sub)) -> f6989_0_length_Load(EOS(STATIC_6989), java.lang.Object(o2447sub)) :|: TRUE 15.34/6.98 f6989_0_length_Load(EOS(STATIC_6989), java.lang.Object(o2447sub)) -> f6992_0_length_InvokeMethod(EOS(STATIC_6992), java.lang.Object(o2447sub)) :|: TRUE 15.34/6.98 f6992_0_length_InvokeMethod(EOS(STATIC_6992), java.lang.Object(o2447sub)) -> f6994_0_getTail_Load(EOS(STATIC_6994), java.lang.Object(o2447sub)) :|: TRUE 15.34/6.98 f6994_0_getTail_Load(EOS(STATIC_6994), java.lang.Object(o2447sub)) -> f6996_0_getTail_FieldAccess(EOS(STATIC_6996), java.lang.Object(o2447sub)) :|: TRUE 15.34/6.98 f6996_0_getTail_FieldAccess(EOS(STATIC_6996), java.lang.Object(List(EOC, o2473))) -> f7000_0_getTail_FieldAccess(EOS(STATIC_7000), java.lang.Object(List(EOC, o2473))) :|: TRUE 15.34/6.98 f7000_0_getTail_FieldAccess(EOS(STATIC_7000), java.lang.Object(List(EOC, o2473))) -> f7002_0_getTail_Return(EOS(STATIC_7002), o2473) :|: TRUE 15.34/6.98 f7002_0_getTail_Return(EOS(STATIC_7002), o2473) -> f7004_0_length_Store(EOS(STATIC_7004), o2473) :|: TRUE 15.34/6.98 f7004_0_length_Store(EOS(STATIC_7004), o2473) -> f7006_0_length_Inc(EOS(STATIC_7006), o2473) :|: TRUE 15.34/6.98 f7006_0_length_Inc(EOS(STATIC_7006), o2473) -> f7008_0_length_JMP(EOS(STATIC_7008), o2473) :|: TRUE 15.34/6.98 f7008_0_length_JMP(EOS(STATIC_7008), o2473) -> f7011_0_length_Load(EOS(STATIC_7011), o2473) :|: TRUE 15.34/6.98 f7011_0_length_Load(EOS(STATIC_7011), o2473) -> f6985_0_length_Load(EOS(STATIC_6985), o2473) :|: TRUE 15.34/6.98 f6985_0_length_Load(EOS(STATIC_6985), o2434) -> f6986_0_length_NULL(EOS(STATIC_6986), o2434, o2434) :|: TRUE 15.34/6.98 R rules: 15.34/6.98 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 15.34/6.98 f6986_0_length_NULL(EOS(STATIC_6986), java.lang.Object(List(EOC, o2473:0)), java.lang.Object(List(EOC, o2473:0))) -> f6986_0_length_NULL(EOS(STATIC_6986), o2473:0, o2473:0) :|: TRUE 15.34/6.98 R rules: 15.34/6.98 Filtered ground terms: 15.34/6.98 f6986_0_length_NULL(x1, x2, x3) -> f6986_0_length_NULL(x2, x3) 15.34/6.98 EOS(x1) -> EOS 15.34/6.98 List(x1, x2) -> List(x2) 15.34/6.98 Filtered duplicate args: 15.34/6.98 f6986_0_length_NULL(x1, x2) -> f6986_0_length_NULL(x2) 15.34/6.98 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 15.34/6.98 F6986_0_LENGTH_NULL(java.lang.Object(List(o2473:0:0))) -> F6986_0_LENGTH_NULL(o2473:0:0) :|: TRUE 15.34/6.98 R rules: 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (9) 15.34/6.98 Obligation: 15.34/6.98 Q DP problem: 15.34/6.98 The TRS P consists of the following rules: 15.34/6.98 15.34/6.98 F6986_0_LENGTH_NULL(java.lang.Object(List(o2473:0:0))) -> F6986_0_LENGTH_NULL(o2473:0:0) 15.34/6.98 15.34/6.98 R is empty. 15.34/6.98 Q is empty. 15.34/6.98 We have to consider all minimal (P,Q,R)-chains. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (10) QDPSizeChangeProof (EQUIVALENT) 15.34/6.98 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 15.34/6.98 15.34/6.98 From the DPs we obtained the following set of size-change graphs: 15.34/6.98 *F6986_0_LENGTH_NULL(java.lang.Object(List(o2473:0:0))) -> F6986_0_LENGTH_NULL(o2473:0:0) 15.34/6.98 The graph contains the following edges 1 > 1 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (11) 15.34/6.98 YES 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (12) 15.34/6.98 Obligation: 15.34/6.98 SCC of termination graph based on JBC Program. 15.34/6.98 SCC contains nodes from the following methods: List.mk(I)LList; 15.34/6.98 SCC calls the following helper methods: 15.34/6.98 Performed SCC analyses: 15.34/6.98 *Used field analysis yielded the following read fields: 15.34/6.98 15.34/6.98 *Marker field analysis yielded the following relations that could be markers: 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (13) SCCToIRSProof (SOUND) 15.34/6.98 Transformed FIGraph SCCs to intTRSs. Log: 15.34/6.98 Generated rules. Obtained 23 IRulesP rules: 15.34/6.98 f3140_0_mk_Inc(EOS(STATIC_3140), i273, i273) -> f3155_0_mk_LE(EOS(STATIC_3155), i273 + -1, i273) :|: TRUE 15.34/6.98 f3155_0_mk_LE(EOS(STATIC_3155), i329, i342) -> f3184_0_mk_LE(EOS(STATIC_3184), i329, i342) :|: TRUE 15.34/6.98 f3184_0_mk_LE(EOS(STATIC_3184), i329, i342) -> f3203_0_mk_New(EOS(STATIC_3203), i329) :|: i342 > 0 15.34/6.98 f3203_0_mk_New(EOS(STATIC_3203), i329) -> f3213_0_mk_Duplicate(EOS(STATIC_3213), i329) :|: TRUE 15.34/6.98 f3213_0_mk_Duplicate(EOS(STATIC_3213), i329) -> f3222_0_mk_New(EOS(STATIC_3222), i329) :|: TRUE 15.34/6.98 f3222_0_mk_New(EOS(STATIC_3222), i329) -> f3268_0_mk_Duplicate(EOS(STATIC_3268), i329) :|: TRUE 15.34/6.98 f3268_0_mk_Duplicate(EOS(STATIC_3268), i329) -> f3306_0_mk_InvokeMethod(EOS(STATIC_3306), i329) :|: TRUE 15.34/6.98 f3306_0_mk_InvokeMethod(EOS(STATIC_3306), i329) -> f3308_0_mk_Load(EOS(STATIC_3308), i329) :|: TRUE 15.34/6.98 f3308_0_mk_Load(EOS(STATIC_3308), i329) -> f3344_0_mk_InvokeMethod(EOS(STATIC_3344), i329) :|: TRUE 15.34/6.98 f3344_0_mk_InvokeMethod(EOS(STATIC_3344), i329) -> f3354_0__init__Load(EOS(STATIC_3354), i329) :|: TRUE 15.34/6.98 f3354_0__init__Load(EOS(STATIC_3354), i329) -> f3373_0__init__InvokeMethod(EOS(STATIC_3373), i329) :|: TRUE 15.34/6.98 f3373_0__init__InvokeMethod(EOS(STATIC_3373), i329) -> f3386_0__init__Load(EOS(STATIC_3386), i329) :|: TRUE 15.34/6.98 f3386_0__init__Load(EOS(STATIC_3386), i329) -> f3392_0__init__Load(EOS(STATIC_3392), i329) :|: TRUE 15.34/6.98 f3392_0__init__Load(EOS(STATIC_3392), i329) -> f3413_0__init__FieldAccess(EOS(STATIC_3413), i329) :|: TRUE 15.34/6.98 f3413_0__init__FieldAccess(EOS(STATIC_3413), i329) -> f3419_0__init__Load(EOS(STATIC_3419), i329) :|: TRUE 15.34/6.98 f3419_0__init__Load(EOS(STATIC_3419), i329) -> f3422_0__init__Load(EOS(STATIC_3422), i329) :|: TRUE 15.34/6.98 f3422_0__init__Load(EOS(STATIC_3422), i329) -> f3425_0__init__FieldAccess(EOS(STATIC_3425), i329) :|: TRUE 15.34/6.98 f3425_0__init__FieldAccess(EOS(STATIC_3425), i329) -> f3428_0__init__Return(EOS(STATIC_3428), i329) :|: TRUE 15.34/6.98 f3428_0__init__Return(EOS(STATIC_3428), i329) -> f3431_0_mk_Store(EOS(STATIC_3431), i329) :|: TRUE 15.34/6.98 f3431_0_mk_Store(EOS(STATIC_3431), i329) -> f3432_0_mk_JMP(EOS(STATIC_3432), i329) :|: TRUE 15.34/6.98 f3432_0_mk_JMP(EOS(STATIC_3432), i329) -> f3475_0_mk_Load(EOS(STATIC_3475), i329) :|: TRUE 15.34/6.98 f3475_0_mk_Load(EOS(STATIC_3475), i329) -> f2694_0_mk_Load(EOS(STATIC_2694), i329) :|: TRUE 15.34/6.98 f2694_0_mk_Load(EOS(STATIC_2694), i273) -> f3140_0_mk_Inc(EOS(STATIC_3140), i273, i273) :|: TRUE 15.34/6.98 Combined rules. Obtained 1 IRulesP rules: 15.34/6.98 f3140_0_mk_Inc(EOS(STATIC_3140), i273:0, i273:0) -> f3140_0_mk_Inc(EOS(STATIC_3140), i273:0 - 1, i273:0 - 1) :|: i273:0 > 0 15.34/6.98 Filtered constant ground arguments: 15.34/6.98 f3140_0_mk_Inc(x1, x2, x3) -> f3140_0_mk_Inc(x2, x3) 15.34/6.98 EOS(x1) -> EOS 15.34/6.98 Filtered duplicate arguments: 15.34/6.98 f3140_0_mk_Inc(x1, x2) -> f3140_0_mk_Inc(x2) 15.34/6.98 Finished conversion. Obtained 1 rules.P rules: 15.34/6.98 f3140_0_mk_Inc(i273:0) -> f3140_0_mk_Inc(i273:0 - 1) :|: i273:0 > 0 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (14) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f3140_0_mk_Inc(i273:0) -> f3140_0_mk_Inc(i273:0 - 1) :|: i273:0 > 0 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (15) IRSFormatTransformerProof (EQUIVALENT) 15.34/6.98 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (16) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f3140_0_mk_Inc(i273:0) -> f3140_0_mk_Inc(arith) :|: i273:0 > 0 && arith = i273:0 - 1 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (17) IRSwTTerminationDigraphProof (EQUIVALENT) 15.34/6.98 Constructed termination digraph! 15.34/6.98 Nodes: 15.34/6.98 (1) f3140_0_mk_Inc(i273:0) -> f3140_0_mk_Inc(arith) :|: i273:0 > 0 && arith = i273:0 - 1 15.34/6.98 15.34/6.98 Arcs: 15.34/6.98 (1) -> (1) 15.34/6.98 15.34/6.98 This digraph is fully evaluated! 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (18) 15.34/6.98 Obligation: 15.34/6.98 15.34/6.98 Termination digraph: 15.34/6.98 Nodes: 15.34/6.98 (1) f3140_0_mk_Inc(i273:0) -> f3140_0_mk_Inc(arith) :|: i273:0 > 0 && arith = i273:0 - 1 15.34/6.98 15.34/6.98 Arcs: 15.34/6.98 (1) -> (1) 15.34/6.98 15.34/6.98 This digraph is fully evaluated! 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (19) IntTRSCompressionProof (EQUIVALENT) 15.34/6.98 Compressed rules. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (20) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f3140_0_mk_Inc(i273:0:0) -> f3140_0_mk_Inc(i273:0:0 - 1) :|: i273:0:0 > 0 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (21) TempFilterProof (SOUND) 15.34/6.98 Used the following sort dictionary for filtering: 15.34/6.98 f3140_0_mk_Inc(INTEGER) 15.34/6.98 Replaced non-predefined constructor symbols by 0. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (22) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f3140_0_mk_Inc(i273:0:0) -> f3140_0_mk_Inc(c) :|: c = i273:0:0 - 1 && i273:0:0 > 0 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (23) PolynomialOrderProcessor (EQUIVALENT) 15.34/6.98 Found the following polynomial interpretation: 15.34/6.98 [f3140_0_mk_Inc(x)] = x 15.34/6.98 15.34/6.98 The following rules are decreasing: 15.34/6.98 f3140_0_mk_Inc(i273:0:0) -> f3140_0_mk_Inc(c) :|: c = i273:0:0 - 1 && i273:0:0 > 0 15.34/6.98 The following rules are bounded: 15.34/6.98 f3140_0_mk_Inc(i273:0:0) -> f3140_0_mk_Inc(c) :|: c = i273:0:0 - 1 && i273:0:0 > 0 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (24) 15.34/6.98 YES 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (25) 15.34/6.98 Obligation: 15.34/6.98 SCC of termination graph based on JBC Program. 15.34/6.98 SCC contains nodes from the following methods: Test3.main([Ljava/lang/String;)V 15.34/6.98 SCC calls the following helper methods: Test3.length(LList;)I 15.34/6.98 Performed SCC analyses: 15.34/6.98 *Used field analysis yielded the following read fields: 15.34/6.98 *List: [tail] 15.34/6.98 *Marker field analysis yielded the following relations that could be markers: 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (26) SCCToIRSProof (SOUND) 15.34/6.98 Transformed FIGraph SCCs to intTRSs. Log: 15.34/6.98 Generated rules. Obtained 121 IRulesP rules: 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247, o2248, o2249, o2247) -> f6877_0_length_ConstantStackPush(EOS(STATIC_6877), o2247, o2247) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247, o2248, o2249, o2247) -> f6877_1_length_ConstantStackPush(EOS(STATIC_6877), o2247, o2248, o2249, o2247) :|: TRUE 15.34/6.98 f6877_0_length_ConstantStackPush(EOS(STATIC_6877), o2247, o2247) -> f7227_0_length_ConstantStackPush(EOS(STATIC_7227), o2247, o2247) :|: TRUE 15.34/6.98 f6997_0_length_Return(EOS(STATIC_6997), o2456, o2248, o2249, i913) -> f6895_0_length_Return(EOS(STATIC_6895), o2456, o2248, o2249, i913) :|: TRUE 15.34/6.98 f6895_0_length_Return(EOS(STATIC_6895), o2295, o2248, o2249, i887) -> f6897_0_main_Load(EOS(STATIC_6897), o2295, o2248, o2249, i887) :|: TRUE 15.34/6.98 f6897_0_main_Load(EOS(STATIC_6897), o2295, o2248, o2249, i887) -> f6899_0_main_InvokeMethod(EOS(STATIC_6899), o2295, o2248, o2249, i887, o2248) :|: TRUE 15.34/6.98 f6899_0_main_InvokeMethod(EOS(STATIC_6899), o2295, o2248, o2249, i887, o2248) -> f6901_0_length_ConstantStackPush(EOS(STATIC_6901), o2248, o2249, o2248) :|: TRUE 15.34/6.98 f6899_0_main_InvokeMethod(EOS(STATIC_6899), o2295, o2248, o2249, i887, o2248) -> f6901_1_length_ConstantStackPush(EOS(STATIC_6901), o2295, o2248, o2249, i887, o2248) :|: TRUE 15.34/6.98 f6901_0_length_ConstantStackPush(EOS(STATIC_6901), o2248, o2249, o2248) -> f7247_0_length_ConstantStackPush(EOS(STATIC_7247), o2248, o2249, o2248) :|: TRUE 15.34/6.98 f6998_0_length_Return(EOS(STATIC_6998), o2295, o2460, o2249, i887, i914) -> f6973_0_length_Return(EOS(STATIC_6973), o2295, o2460, o2249, i887, i914) :|: TRUE 15.34/6.98 f6973_0_length_Return(EOS(STATIC_6973), o2414, o2415, o2416, i887, i906) -> f6975_0_main_IntArithmetic(EOS(STATIC_6975), o2414, o2415, o2416, i887, i906) :|: TRUE 15.34/6.98 f6975_0_main_IntArithmetic(EOS(STATIC_6975), o2414, o2415, o2416, i887, i906) -> f6977_0_main_Load(EOS(STATIC_6977), o2414, o2415, o2416, i887 + i906) :|: i887 >= 0 && i906 >= 0 15.34/6.98 f6977_0_main_Load(EOS(STATIC_6977), o2414, o2415, o2416, i909) -> f6979_0_main_InvokeMethod(EOS(STATIC_6979), o2414, o2415, o2416, i909, o2416) :|: TRUE 15.34/6.98 f6979_0_main_InvokeMethod(EOS(STATIC_6979), o2414, o2415, o2416, i909, o2416) -> f6981_0_length_ConstantStackPush(EOS(STATIC_6981), o2416, o2415, o2416) :|: TRUE 15.34/6.98 f6979_0_main_InvokeMethod(EOS(STATIC_6979), o2414, o2415, o2416, i909, o2416) -> f6981_1_length_ConstantStackPush(EOS(STATIC_6981), o2414, o2415, o2416, i909, o2416) :|: TRUE 15.34/6.98 f6981_0_length_ConstantStackPush(EOS(STATIC_6981), o2416, o2415, o2416) -> f7269_0_length_ConstantStackPush(EOS(STATIC_7269), o2416, o2415, o2416) :|: TRUE 15.34/6.98 f6999_0_length_Return(EOS(STATIC_6999), o2414, o2415, o2464, i909, i915) -> f7001_0_main_ConstantStackPush(EOS(STATIC_7001), o2414, o2415, o2464, i909, i915) :|: TRUE 15.34/6.98 f7001_0_main_ConstantStackPush(EOS(STATIC_7001), o2414, o2415, o2464, i909, i915) -> f7003_0_main_IntArithmetic(EOS(STATIC_7003), o2414, o2415, o2464, i909, i915, 5) :|: TRUE 15.34/6.98 f7003_0_main_IntArithmetic(EOS(STATIC_7003), o2414, o2415, o2464, i909, i915, matching1) -> f7005_0_main_IntArithmetic(EOS(STATIC_7005), o2414, o2415, o2464, i909, i915 * 5) :|: TRUE && matching1 = 5 15.34/6.98 f7005_0_main_IntArithmetic(EOS(STATIC_7005), o2414, o2415, o2464, i909, i918) -> f7007_0_main_LE(EOS(STATIC_7007), o2414, o2415, o2464, i909 + i918) :|: i909 >= 0 && i918 >= 0 15.34/6.98 f7007_0_main_LE(EOS(STATIC_7007), o2414, o2415, o2464, i921) -> f7010_0_main_LE(EOS(STATIC_7010), o2414, o2415, o2464, i921) :|: TRUE 15.34/6.98 f7010_0_main_LE(EOS(STATIC_7010), o2414, o2415, o2464, i921) -> f7013_0_main_Load(EOS(STATIC_7013), o2414, o2415, o2464) :|: i921 > 0 15.34/6.98 f7013_0_main_Load(EOS(STATIC_7013), o2414, o2415, o2464) -> f7015_0_main_InvokeMethod(EOS(STATIC_7015), o2414, o2415, o2464, o2414) :|: TRUE 15.34/6.98 f7015_0_main_InvokeMethod(EOS(STATIC_7015), o2414, o2415, o2464, o2414) -> f7016_0_length_ConstantStackPush(EOS(STATIC_7016), o2414, o2414) :|: TRUE 15.34/6.98 f7015_0_main_InvokeMethod(EOS(STATIC_7015), o2414, o2415, o2464, o2414) -> f7016_1_length_ConstantStackPush(EOS(STATIC_7016), o2414, o2415, o2464, o2414) :|: TRUE 15.34/6.98 f7016_0_length_ConstantStackPush(EOS(STATIC_7016), o2414, o2414) -> f7297_0_length_ConstantStackPush(EOS(STATIC_7297), o2414, o2414) :|: TRUE 15.34/6.98 f7019_0_length_Return(EOS(STATIC_7019), o2488, o2415, o2464, i923) -> f7020_0_main_ConstantStackPush(EOS(STATIC_7020), o2488, o2415, o2464, i923) :|: TRUE 15.34/6.98 f7020_0_main_ConstantStackPush(EOS(STATIC_7020), o2488, o2415, o2464, i923) -> f7021_0_main_IntArithmetic(EOS(STATIC_7021), o2488, o2415, o2464, i923, 2) :|: TRUE 15.34/6.98 f7021_0_main_IntArithmetic(EOS(STATIC_7021), o2488, o2415, o2464, i923, matching1) -> f7022_0_main_ConstantStackPush(EOS(STATIC_7022), o2488, o2415, o2464, i923 % 2) :|: TRUE && matching1 = 2 15.34/6.98 f7022_0_main_ConstantStackPush(EOS(STATIC_7022), o2488, o2415, o2464, i924) -> f7023_0_main_NE(EOS(STATIC_7023), o2488, o2415, o2464, i924, 1) :|: TRUE 15.34/6.98 f7023_0_main_NE(EOS(STATIC_7023), o2488, o2415, o2464, matching1, matching2) -> f7024_0_main_NE(EOS(STATIC_7024), o2488, o2415, o2464, 0, 1) :|: i924 = 0 && matching1 = 0 && matching2 = 1 15.34/6.98 f7023_0_main_NE(EOS(STATIC_7023), o2488, o2415, o2464, matching1, matching2) -> f7025_0_main_NE(EOS(STATIC_7025), o2488, o2415, o2464, 1, 1) :|: i924 = 1 && matching1 = 1 && matching2 = 1 15.34/6.98 f7024_0_main_NE(EOS(STATIC_7024), o2488, o2415, o2464, matching1, matching2) -> f7026_0_main_Load(EOS(STATIC_7026), o2488, o2415, o2464) :|: TRUE && matching1 = 0 && matching2 = 1 15.34/6.98 f7026_0_main_Load(EOS(STATIC_7026), o2488, o2415, o2464) -> f7028_0_main_InvokeMethod(EOS(STATIC_7028), o2488, o2415, o2464, o2415) :|: TRUE 15.34/6.98 f7028_0_main_InvokeMethod(EOS(STATIC_7028), o2488, o2415, o2464, o2415) -> f7030_0_length_ConstantStackPush(EOS(STATIC_7030), o2415, o2464, o2415) :|: TRUE 15.34/6.98 f7028_0_main_InvokeMethod(EOS(STATIC_7028), o2488, o2415, o2464, o2415) -> f7030_1_length_ConstantStackPush(EOS(STATIC_7030), o2488, o2415, o2464, o2415) :|: TRUE 15.34/6.98 f7030_0_length_ConstantStackPush(EOS(STATIC_7030), o2415, o2464, o2415) -> f7327_0_length_ConstantStackPush(EOS(STATIC_7327), o2415, o2464, o2415) :|: TRUE 15.34/6.98 f7041_0_length_Return(EOS(STATIC_7041), o2488, o2500, o2464, i925) -> f7043_0_main_Load(EOS(STATIC_7043), o2488, o2500, o2464, i925) :|: TRUE 15.34/6.98 f7043_0_main_Load(EOS(STATIC_7043), o2488, o2500, o2464, i925) -> f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2488, o2500, o2464, i925, o2464) :|: TRUE 15.34/6.98 f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2488, o2500, o2464, i925, o2464) -> f7049_0_length_ConstantStackPush(EOS(STATIC_7049), o2464, o2500, o2464) :|: TRUE 15.34/6.98 f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2488, o2500, o2464, i925, o2464) -> f7049_1_length_ConstantStackPush(EOS(STATIC_7049), o2488, o2500, o2464, i925, o2464) :|: TRUE 15.34/6.98 f7049_0_length_ConstantStackPush(EOS(STATIC_7049), o2464, o2500, o2464) -> f7345_0_length_ConstantStackPush(EOS(STATIC_7345), o2464, o2500, o2464) :|: TRUE 15.34/6.98 f7056_0_length_Return(EOS(STATIC_7056), o2488, o2500, o2516, i925, i926) -> f7058_0_main_LE(EOS(STATIC_7058), o2488, o2500, o2516, i925, i926) :|: TRUE 15.34/6.98 f7058_0_main_LE(EOS(STATIC_7058), o2488, o2500, o2516, i925, i926) -> f7060_0_main_LE(EOS(STATIC_7060), o2488, o2500, o2516, i925, i926) :|: i925 <= i926 15.34/6.98 f7058_0_main_LE(EOS(STATIC_7058), o2488, o2500, o2516, i925, i926) -> f7061_0_main_LE(EOS(STATIC_7061), o2488, o2500, o2516, i925, i926) :|: i925 > i926 15.34/6.98 f7060_0_main_LE(EOS(STATIC_7060), o2488, o2500, o2516, i925, i926) -> f7063_0_main_Load(EOS(STATIC_7063), o2488, o2500, o2516) :|: i925 <= i926 15.34/6.98 f7063_0_main_Load(EOS(STATIC_7063), o2488, o2500, o2516) -> f7066_0_main_NONNULL(EOS(STATIC_7066), o2488, o2500, o2516, o2516) :|: TRUE 15.34/6.98 f7066_0_main_NONNULL(EOS(STATIC_7066), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(o2517sub)) -> f7069_0_main_NONNULL(EOS(STATIC_7069), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7069_0_main_NONNULL(EOS(STATIC_7069), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(o2517sub)) -> f7074_0_main_New(EOS(STATIC_7074), o2488, o2500, java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7074_0_main_New(EOS(STATIC_7074), o2488, o2500, java.lang.Object(o2517sub)) -> f7079_0_main_Duplicate(EOS(STATIC_7079), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7079_0_main_Duplicate(EOS(STATIC_7079), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL))) -> f7082_0_main_New(EOS(STATIC_7082), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7082_0_main_New(EOS(STATIC_7082), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) -> f7086_0_main_Duplicate(EOS(STATIC_7086), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7086_0_main_Duplicate(EOS(STATIC_7086), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7090_0_main_InvokeMethod(EOS(STATIC_7090), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7090_0_main_InvokeMethod(EOS(STATIC_7090), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) -> f7093_0_main_Load(EOS(STATIC_7093), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7093_0_main_Load(EOS(STATIC_7093), o2488, o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7097_0_main_InvokeMethod(EOS(STATIC_7097), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) :|: TRUE 15.34/6.98 f7097_0_main_InvokeMethod(EOS(STATIC_7097), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) -> f7100_0__init__Load(EOS(STATIC_7100), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) :|: TRUE 15.34/6.98 f7100_0__init__Load(EOS(STATIC_7100), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) -> f7103_0__init__InvokeMethod(EOS(STATIC_7103), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7103_0__init__InvokeMethod(EOS(STATIC_7103), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488, java.lang.Object(List(EOC, NULL))) -> f7105_0__init__Load(EOS(STATIC_7105), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) :|: TRUE 15.34/6.98 f7105_0__init__Load(EOS(STATIC_7105), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488) -> f7106_0__init__Load(EOS(STATIC_7106), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7106_0__init__Load(EOS(STATIC_7106), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2488, java.lang.Object(List(EOC, NULL))) -> f7108_0__init__FieldAccess(EOS(STATIC_7108), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7108_0__init__FieldAccess(EOS(STATIC_7108), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7110_0__init__Load(EOS(STATIC_7110), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488) :|: TRUE 15.34/6.98 f7110_0__init__Load(EOS(STATIC_7110), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488) -> f7112_0__init__Load(EOS(STATIC_7112), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), o2488, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7112_0__init__Load(EOS(STATIC_7112), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), o2488, java.lang.Object(List(EOC, NULL))) -> f7114_0__init__FieldAccess(EOS(STATIC_7114), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488) :|: TRUE 15.34/6.98 f7114_0__init__FieldAccess(EOS(STATIC_7114), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2488) -> f7116_0__init__Return(EOS(STATIC_7116), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2488))) :|: TRUE 15.34/6.98 f7116_0__init__Return(EOS(STATIC_7116), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2488))) -> f7118_0_main_Store(EOS(STATIC_7118), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2488))) :|: TRUE 15.34/6.98 f7118_0_main_Store(EOS(STATIC_7118), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2488))) -> f7120_0_main_New(EOS(STATIC_7120), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7120_0_main_New(EOS(STATIC_7120), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub)) -> f7122_0_main_Duplicate(EOS(STATIC_7122), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7122_0_main_Duplicate(EOS(STATIC_7122), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL))) -> f7124_0_main_New(EOS(STATIC_7124), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7124_0_main_New(EOS(STATIC_7124), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) -> f7126_0_main_Duplicate(EOS(STATIC_7126), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7126_0_main_Duplicate(EOS(STATIC_7126), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7128_0_main_InvokeMethod(EOS(STATIC_7128), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7128_0_main_InvokeMethod(EOS(STATIC_7128), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) -> f7130_0_main_Load(EOS(STATIC_7130), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7130_0_main_Load(EOS(STATIC_7130), java.lang.Object(List(EOC, o2488)), o2500, java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7132_0_main_InvokeMethod(EOS(STATIC_7132), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) :|: TRUE 15.34/6.98 f7132_0_main_InvokeMethod(EOS(STATIC_7132), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) -> f7133_0__init__Load(EOS(STATIC_7133), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) :|: TRUE 15.34/6.98 f7133_0__init__Load(EOS(STATIC_7133), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) -> f7134_0__init__InvokeMethod(EOS(STATIC_7134), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7134_0__init__InvokeMethod(EOS(STATIC_7134), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500, java.lang.Object(List(EOC, NULL))) -> f7135_0__init__Load(EOS(STATIC_7135), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) :|: TRUE 15.34/6.98 f7135_0__init__Load(EOS(STATIC_7135), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500) -> f7136_0__init__Load(EOS(STATIC_7136), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7136_0__init__Load(EOS(STATIC_7136), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2500, java.lang.Object(List(EOC, NULL))) -> f7137_0__init__FieldAccess(EOS(STATIC_7137), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE 15.34/6.98 f7137_0__init__FieldAccess(EOS(STATIC_7137), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7138_0__init__Load(EOS(STATIC_7138), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500) :|: TRUE 15.34/6.98 f7138_0__init__Load(EOS(STATIC_7138), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500) -> f7139_0__init__Load(EOS(STATIC_7139), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), o2500, java.lang.Object(List(EOC, NULL))) :|: TRUE 15.34/6.98 f7139_0__init__Load(EOS(STATIC_7139), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), o2500, java.lang.Object(List(EOC, NULL))) -> f7140_0__init__FieldAccess(EOS(STATIC_7140), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500) :|: TRUE 15.34/6.98 f7140_0__init__FieldAccess(EOS(STATIC_7140), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2500) -> f7141_0__init__Return(EOS(STATIC_7141), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2500))) :|: TRUE 15.34/6.98 f7141_0__init__Return(EOS(STATIC_7141), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2500))) -> f7142_0_main_Store(EOS(STATIC_7142), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2500))) :|: TRUE 15.34/6.98 f7142_0_main_Store(EOS(STATIC_7142), java.lang.Object(List(EOC, o2488)), java.lang.Object(o2517sub), java.lang.Object(List(EOC, o2500))) -> f7143_0_main_Load(EOS(STATIC_7143), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7143_0_main_Load(EOS(STATIC_7143), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) -> f7144_0_main_InvokeMethod(EOS(STATIC_7144), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7144_0_main_InvokeMethod(EOS(STATIC_7144), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) -> f7145_0_getTail_Load(EOS(STATIC_7145), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7145_0_getTail_Load(EOS(STATIC_7145), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) -> f7146_0_getTail_FieldAccess(EOS(STATIC_7146), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(o2517sub)) :|: TRUE 15.34/6.98 f7146_0_getTail_FieldAccess(EOS(STATIC_7146), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(List(EOC, o2579))) -> f7147_0_getTail_FieldAccess(EOS(STATIC_7147), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(List(EOC, o2579))) :|: TRUE 15.34/6.98 f7147_0_getTail_FieldAccess(EOS(STATIC_7147), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), java.lang.Object(List(EOC, o2579))) -> f7148_0_getTail_Return(EOS(STATIC_7148), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) :|: TRUE 15.34/6.98 f7148_0_getTail_Return(EOS(STATIC_7148), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) -> f7149_0_main_Store(EOS(STATIC_7149), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) :|: TRUE 15.34/6.98 f7149_0_main_Store(EOS(STATIC_7149), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) -> f7150_0_main_JMP(EOS(STATIC_7150), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) :|: TRUE 15.34/6.98 f7150_0_main_JMP(EOS(STATIC_7150), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) -> f7151_0_main_Load(EOS(STATIC_7151), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) :|: TRUE 15.34/6.98 f7151_0_main_Load(EOS(STATIC_7151), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) -> f6873_0_main_Load(EOS(STATIC_6873), java.lang.Object(List(EOC, o2488)), java.lang.Object(List(EOC, o2500)), o2579) :|: TRUE 15.34/6.98 f6873_0_main_Load(EOS(STATIC_6873), o2247, o2248, o2249) -> f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247, o2248, o2249, o2247) :|: TRUE 15.34/6.98 f7061_0_main_LE(EOS(STATIC_7061), o2488, o2500, o2516, i925, i926) -> f7064_0_main_Load(EOS(STATIC_7064), o2488, o2500, o2516) :|: i925 > i926 15.34/6.98 f7064_0_main_Load(EOS(STATIC_7064), o2488, o2500, o2516) -> f7067_0_main_InvokeMethod(EOS(STATIC_7067), o2488, o2516, o2500) :|: TRUE 15.34/6.98 f7067_0_main_InvokeMethod(EOS(STATIC_7067), o2488, o2516, java.lang.Object(o2518sub)) -> f7071_0_main_InvokeMethod(EOS(STATIC_7071), o2488, o2516, java.lang.Object(o2518sub)) :|: TRUE 15.34/6.98 f7071_0_main_InvokeMethod(EOS(STATIC_7071), o2488, o2516, java.lang.Object(o2518sub)) -> f7076_0_getTail_Load(EOS(STATIC_7076), o2488, o2516, java.lang.Object(o2518sub)) :|: TRUE 15.34/6.98 f7076_0_getTail_Load(EOS(STATIC_7076), o2488, o2516, java.lang.Object(o2518sub)) -> f7083_0_getTail_FieldAccess(EOS(STATIC_7083), o2488, o2516, java.lang.Object(o2518sub)) :|: TRUE 15.34/6.98 f7083_0_getTail_FieldAccess(EOS(STATIC_7083), o2488, o2516, java.lang.Object(List(EOC, o2531))) -> f7087_0_getTail_FieldAccess(EOS(STATIC_7087), o2488, o2516, java.lang.Object(List(EOC, o2531))) :|: TRUE 15.34/6.98 f7087_0_getTail_FieldAccess(EOS(STATIC_7087), o2488, o2516, java.lang.Object(List(EOC, o2531))) -> f7091_0_getTail_Return(EOS(STATIC_7091), o2488, o2516, o2531) :|: TRUE 15.34/6.98 f7091_0_getTail_Return(EOS(STATIC_7091), o2488, o2516, o2531) -> f7094_0_main_Store(EOS(STATIC_7094), o2488, o2516, o2531) :|: TRUE 15.34/6.98 f7094_0_main_Store(EOS(STATIC_7094), o2488, o2516, o2531) -> f7098_0_main_JMP(EOS(STATIC_7098), o2488, o2531, o2516) :|: TRUE 15.34/6.98 f7098_0_main_JMP(EOS(STATIC_7098), o2488, o2531, o2516) -> f7101_0_main_Load(EOS(STATIC_7101), o2488, o2531, o2516) :|: TRUE 15.34/6.98 f7101_0_main_Load(EOS(STATIC_7101), o2488, o2531, o2516) -> f6873_0_main_Load(EOS(STATIC_6873), o2488, o2531, o2516) :|: TRUE 15.34/6.98 f7025_0_main_NE(EOS(STATIC_7025), o2488, o2415, o2464, matching1, matching2) -> f7027_0_main_Load(EOS(STATIC_7027), o2488, o2415, o2464) :|: TRUE && matching1 = 1 && matching2 = 1 15.34/6.98 f7027_0_main_Load(EOS(STATIC_7027), o2488, o2415, o2464) -> f7029_0_main_InvokeMethod(EOS(STATIC_7029), o2415, o2464, o2488) :|: TRUE 15.34/6.98 f7029_0_main_InvokeMethod(EOS(STATIC_7029), o2415, o2464, java.lang.Object(o2489sub)) -> f7031_0_main_InvokeMethod(EOS(STATIC_7031), o2415, o2464, java.lang.Object(o2489sub)) :|: TRUE 15.34/6.98 f7031_0_main_InvokeMethod(EOS(STATIC_7031), o2415, o2464, java.lang.Object(o2489sub)) -> f7034_0_getTail_Load(EOS(STATIC_7034), o2415, o2464, java.lang.Object(o2489sub)) :|: TRUE 15.34/6.98 f7034_0_getTail_Load(EOS(STATIC_7034), o2415, o2464, java.lang.Object(o2489sub)) -> f7036_0_getTail_FieldAccess(EOS(STATIC_7036), o2415, o2464, java.lang.Object(o2489sub)) :|: TRUE 15.34/6.98 f7036_0_getTail_FieldAccess(EOS(STATIC_7036), o2415, o2464, java.lang.Object(List(EOC, o2503))) -> f7038_0_getTail_FieldAccess(EOS(STATIC_7038), o2415, o2464, java.lang.Object(List(EOC, o2503))) :|: TRUE 15.34/6.98 f7038_0_getTail_FieldAccess(EOS(STATIC_7038), o2415, o2464, java.lang.Object(List(EOC, o2503))) -> f7042_0_getTail_Return(EOS(STATIC_7042), o2415, o2464, o2503) :|: TRUE 15.34/6.98 f7042_0_getTail_Return(EOS(STATIC_7042), o2415, o2464, o2503) -> f7044_0_main_Store(EOS(STATIC_7044), o2415, o2464, o2503) :|: TRUE 15.34/6.98 f7044_0_main_Store(EOS(STATIC_7044), o2415, o2464, o2503) -> f7047_0_main_JMP(EOS(STATIC_7047), o2503, o2415, o2464) :|: TRUE 15.34/6.98 f7047_0_main_JMP(EOS(STATIC_7047), o2503, o2415, o2464) -> f7050_0_main_Load(EOS(STATIC_7050), o2503, o2415, o2464) :|: TRUE 15.34/6.98 f7050_0_main_Load(EOS(STATIC_7050), o2503, o2415, o2464) -> f6873_0_main_Load(EOS(STATIC_6873), o2503, o2415, o2464) :|: TRUE 15.34/6.98 f6877_1_length_ConstantStackPush(EOS(STATIC_6877), o2456, o2248, o2249, o2456) -> f6997_0_length_Return(EOS(STATIC_6997), o2456, o2248, o2249, i913) :|: TRUE 15.34/6.98 f6901_1_length_ConstantStackPush(EOS(STATIC_6901), o2295, o2460, o2249, i887, o2460) -> f6998_0_length_Return(EOS(STATIC_6998), o2295, o2460, o2249, i887, i914) :|: TRUE 15.34/6.98 f6981_1_length_ConstantStackPush(EOS(STATIC_6981), o2414, o2415, o2464, i909, o2464) -> f6999_0_length_Return(EOS(STATIC_6999), o2414, o2415, o2464, i909, i915) :|: TRUE 15.34/6.98 f7016_1_length_ConstantStackPush(EOS(STATIC_7016), o2488, o2415, o2464, o2488) -> f7019_0_length_Return(EOS(STATIC_7019), o2488, o2415, o2464, i923) :|: TRUE 15.34/6.98 f7030_1_length_ConstantStackPush(EOS(STATIC_7030), o2488, o2500, o2464, o2500) -> f7041_0_length_Return(EOS(STATIC_7041), o2488, o2500, o2464, i925) :|: TRUE 15.34/6.98 f7049_1_length_ConstantStackPush(EOS(STATIC_7049), o2488, o2500, o2516, i925, o2516) -> f7056_0_length_Return(EOS(STATIC_7056), o2488, o2500, o2516, i925, i926) :|: TRUE 15.34/6.98 Combined rules. Obtained 13 IRulesP rules: 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), java.lang.Object(List(EOC, o2503:0)), o2248:0, o2249:0, java.lang.Object(List(EOC, o2503:0))) -> f6875_0_main_InvokeMethod'(EOS(STATIC_6875), java.lang.Object(List(EOC, o2503:0)), o2248:0, o2249:0, java.lang.Object(List(EOC, o2503:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(EOS(STATIC_6875), java.lang.Object(List(EOC, o2503:0)), o2248:0, o2249:0, java.lang.Object(List(EOC, o2503:0))) -> f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2503:0, o2248:0, o2249:0, o2503:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, java.lang.Object(List(EOC, o2579:0)), o2247:0) -> f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, o2248:0, java.lang.Object(List(EOC, o2579:0)), o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, o2248:0, java.lang.Object(List(EOC, o2579:0)), o2247:0) -> f6875_0_main_InvokeMethod(EOS(STATIC_6875), java.lang.Object(List(EOC, o2247:0)), java.lang.Object(List(EOC, o2248:0)), o2579:0, java.lang.Object(List(EOC, o2247:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, java.lang.Object(List(EOC, o2531:0)), o2249:0, o2247:0) -> f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, java.lang.Object(List(EOC, o2531:0)), o2249:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, java.lang.Object(List(EOC, o2531:0)), o2249:0, o2247:0) -> f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2531:0, o2249:0, o2247:0) :|: TRUE 15.34/6.98 Removed following non-SCC rules: 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7227_0_length_ConstantStackPush(EOS(STATIC_7227), o2247:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7247_0_length_ConstantStackPush(EOS(STATIC_7247), o2248:0, o2249:0, o2248:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7269_0_length_ConstantStackPush(EOS(STATIC_7269), o2249:0, o2248:0, o2249:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7297_0_length_ConstantStackPush(EOS(STATIC_7297), o2247:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7327_0_length_ConstantStackPush(EOS(STATIC_7327), o2248:0, o2249:0, o2248:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(EOS(STATIC_6875), o2247:0, o2248:0, o2249:0, o2247:0) -> f7345_0_length_ConstantStackPush(EOS(STATIC_7345), o2249:0, o2248:0, o2249:0) :|: TRUE 15.34/6.98 Filtered constant ground arguments: 15.34/6.98 f6875_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f6875_0_main_InvokeMethod(x2, x3, x4, x5) 15.34/6.98 f6875_0_main_InvokeMethod'(x1, x2, x3, x4, x5) -> f6875_0_main_InvokeMethod'(x2, x3, x4, x5) 15.34/6.98 EOS(x1) -> EOS 15.34/6.98 List(x1, x2) -> List(x2) 15.34/6.98 Filtered duplicate arguments: 15.34/6.98 f6875_0_main_InvokeMethod(x1, x2, x3, x4) -> f6875_0_main_InvokeMethod(x2, x3, x4) 15.34/6.98 f6875_0_main_InvokeMethod'(x1, x2, x3, x4) -> f6875_0_main_InvokeMethod'(x2, x3, x4) 15.34/6.98 Finished conversion. Obtained 7 rules.P rules: 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod(o2248:0, o2249:0, o2503:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, o2247:0) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, java.lang.Object(List(o2579:0)), o2247:0) -> f6875_0_main_InvokeMethod'(o2248:0, java.lang.Object(List(o2579:0)), o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(o2248:0, java.lang.Object(List(o2579:0)), o2247:0) -> f6875_0_main_InvokeMethod(java.lang.Object(List(o2248:0)), o2579:0, java.lang.Object(List(o2247:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(java.lang.Object(List(o2531:0)), o2249:0, o2247:0) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(o2531:0)), o2249:0, o2247:0) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(java.lang.Object(List(o2531:0)), o2249:0, o2247:0) -> f6875_0_main_InvokeMethod(o2531:0, o2249:0, o2247:0) :|: TRUE 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (27) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) :|: TRUE 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (28) IRSFormatTransformerProof (EQUIVALENT) 15.34/6.98 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (29) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) :|: TRUE 15.34/6.98 f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) :|: TRUE 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (30) IRSwTTerminationDigraphProof (EQUIVALENT) 15.34/6.98 Constructed termination digraph! 15.34/6.98 Nodes: 15.34/6.98 (1) f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) :|: TRUE 15.34/6.98 (2) f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) :|: TRUE 15.34/6.98 (3) f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) :|: TRUE 15.34/6.98 (4) f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) :|: TRUE 15.34/6.98 (5) f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) :|: TRUE 15.34/6.98 (6) f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) :|: TRUE 15.34/6.98 (7) f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) :|: TRUE 15.34/6.98 15.34/6.98 Arcs: 15.34/6.98 (1) -> (2), (5), (7) 15.34/6.98 (2) -> (1), (3), (4), (6) 15.34/6.98 (3) -> (2), (5), (7) 15.34/6.98 (4) -> (2), (5), (7) 15.34/6.98 (5) -> (1), (3), (4), (6) 15.34/6.98 (6) -> (2), (5), (7) 15.34/6.98 (7) -> (1), (3), (4), (6) 15.34/6.98 15.34/6.98 This digraph is fully evaluated! 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (31) 15.34/6.98 Obligation: 15.34/6.98 15.34/6.98 Termination digraph: 15.34/6.98 Nodes: 15.34/6.98 (1) f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) :|: TRUE 15.34/6.98 (2) f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) :|: TRUE 15.34/6.98 (3) f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) :|: TRUE 15.34/6.98 (4) f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) :|: TRUE 15.34/6.98 (5) f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) :|: TRUE 15.34/6.98 (6) f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) :|: TRUE 15.34/6.98 (7) f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) :|: TRUE 15.34/6.98 15.34/6.98 Arcs: 15.34/6.98 (1) -> (2), (4), (6) 15.34/6.98 (2) -> (1), (3), (5), (7) 15.34/6.98 (3) -> (2), (4), (6) 15.34/6.98 (4) -> (1), (3), (5), (7) 15.34/6.98 (5) -> (2), (4), (6) 15.34/6.98 (6) -> (1), (3), (5), (7) 15.34/6.98 (7) -> (2), (4), (6) 15.34/6.98 15.34/6.98 This digraph is fully evaluated! 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (32) TempFilterProof (SOUND) 15.34/6.98 Used the following sort dictionary for filtering: 15.34/6.98 f6875_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) 15.34/6.98 java.lang.Object(VARIABLE) 15.34/6.98 List(VARIABLE) 15.34/6.98 f6875_0_main_InvokeMethod'(VARIABLE, VARIABLE, VARIABLE) 15.34/6.98 Removed predefined arithmetic. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (33) 15.34/6.98 Obligation: 15.34/6.98 Rules: 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) 15.34/6.98 f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) 15.34/6.98 f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) 15.34/6.98 f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) 15.34/6.98 f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) 15.34/6.98 f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) 15.34/6.98 f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (34) IRSwTToQDPProof (SOUND) 15.34/6.98 Removed the integers and created a QDP-Problem. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (35) 15.34/6.98 Obligation: 15.34/6.98 Q DP problem: 15.34/6.98 The TRS P consists of the following rules: 15.34/6.98 15.34/6.98 f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) 15.34/6.98 f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) 15.34/6.98 f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) 15.34/6.98 f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) 15.34/6.98 f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) 15.34/6.98 f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) 15.34/6.98 f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) 15.34/6.98 15.34/6.98 R is empty. 15.34/6.98 Q is empty. 15.34/6.98 We have to consider all (P,Q,R)-chains. 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (36) QDPSizeChangeProof (EQUIVALENT) 15.34/6.98 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 15.34/6.98 15.34/6.98 From the DPs we obtained the following set of size-change graphs: 15.34/6.98 *f6875_0_main_InvokeMethod'(x, x1, java.lang.Object(List(x2))) -> f6875_0_main_InvokeMethod(x, x1, x2) 15.34/6.98 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) -> f6875_0_main_InvokeMethod(java.lang.Object(List(x9)), x10, java.lang.Object(List(x11))) 15.34/6.98 The graph contains the following edges 2 > 2 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod'(java.lang.Object(List(x15)), x16, x17) -> f6875_0_main_InvokeMethod(x15, x16, x17) 15.34/6.98 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) -> f6875_0_main_InvokeMethod'(o2248:0, o2249:0, java.lang.Object(List(o2503:0))) 15.34/6.98 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod(x3, x4, x5) -> f6875_0_main_InvokeMethod'(x3, x4, x5) 15.34/6.98 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod(x6, java.lang.Object(List(x7)), x8) -> f6875_0_main_InvokeMethod'(x6, java.lang.Object(List(x7)), x8) 15.34/6.98 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 15.34/6.98 15.34/6.98 15.34/6.98 *f6875_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, x14) -> f6875_0_main_InvokeMethod'(java.lang.Object(List(x12)), x13, x14) 15.34/6.98 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 15.34/6.98 15.34/6.98 15.34/6.98 ---------------------------------------- 15.34/6.98 15.34/6.98 (37) 15.34/6.98 YES 15.47/8.73 EOF