/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1010 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 10 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 104 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToIRSProof [SOUND, 9 ms] (14) IRSwT (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IRSwTTerminationDigraphProof [EQUIVALENT, 13 ms] (18) IRSwT (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 15 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (24) YES (25) JBCTerminationSCC (26) SCCToIRSProof [SOUND, 373 ms] (27) IRSwT (28) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (29) IRSwT (30) IRSwTTerminationDigraphProof [EQUIVALENT, 43 ms] (31) IRSwT (32) TempFilterProof [SOUND, 6 ms] (33) IRSwT (34) IRSwTToQDPProof [SOUND, 0 ms] (35) QDP (36) QDPSizeChangeProof [EQUIVALENT, 0 ms] (37) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Test3 { public static void main(String[] args) { List l1 = List.mk(args.length); List l2 = List.mk(args.length); List l3 = (args.length % 2 == 0) ? List.mk(args.length * args.length) : l2; while (length(l1) + length(l2) + length(l3) * 5 > 0) if (length(l1) % 2 == 1) l1 = l1.getTail(); else if (length(l2) > length(l3)) l2 = l2.getTail(); else if (l3 == null) break; else { l1 = new List(new Object(), l1); l2 = new List(new Object(), l2); l3 = l3.getTail(); } } private static int length(List list) { int len = 0; while (list != null) { list = list.getTail(); len++; } return len; } } public class List { public Object head; private List tail; public List(Object head, List tail) { this.head = head; this.tail = tail; } public List getTail() { return tail; } public static List mk(int len) { List result = null; while (len-- > 0) result = new List(new Object(), result); return result; } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Test3 { public static void main(String[] args) { List l1 = List.mk(args.length); List l2 = List.mk(args.length); List l3 = (args.length % 2 == 0) ? List.mk(args.length * args.length) : l2; while (length(l1) + length(l2) + length(l3) * 5 > 0) if (length(l1) % 2 == 1) l1 = l1.getTail(); else if (length(l2) > length(l3)) l2 = l2.getTail(); else if (l3 == null) break; else { l1 = new List(new Object(), l1); l2 = new List(new Object(), l2); l3 = l3.getTail(); } } private static int length(List list) { int len = 0; while (list != null) { list = list.getTail(); len++; } return len; } } public class List { public Object head; private List tail; public List(Object head, List tail) { this.head = head; this.tail = tail; } public List getTail() { return tail; } public static List mk(int len) { List result = null; while (len-- > 0) result = new List(new Object(), result); return result; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Test3.main([Ljava/lang/String;)V: Graph of 212 nodes with 1 SCC. List.mk(I)LList;: Graph of 58 nodes with 1 SCC. Test3.length(LList;)I: Graph of 22 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test3.length(LList;)I SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [tail] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 13 rules for P and 0 rules for R.P rules: f7053_0_length_NULL(EOS(STATIC_7053), java.lang.Object(o2449sub), java.lang.Object(o2449sub)) -> f7054_0_length_NULL(EOS(STATIC_7054), java.lang.Object(o2449sub), java.lang.Object(o2449sub)) :|: TRUE f7054_0_length_NULL(EOS(STATIC_7054), java.lang.Object(o2449sub), java.lang.Object(o2449sub)) -> f7056_0_length_Load(EOS(STATIC_7056), java.lang.Object(o2449sub)) :|: TRUE f7056_0_length_Load(EOS(STATIC_7056), java.lang.Object(o2449sub)) -> f7059_0_length_InvokeMethod(EOS(STATIC_7059), java.lang.Object(o2449sub)) :|: TRUE f7059_0_length_InvokeMethod(EOS(STATIC_7059), java.lang.Object(o2449sub)) -> f7061_0_getTail_Load(EOS(STATIC_7061), java.lang.Object(o2449sub)) :|: TRUE f7061_0_getTail_Load(EOS(STATIC_7061), java.lang.Object(o2449sub)) -> f7063_0_getTail_FieldAccess(EOS(STATIC_7063), java.lang.Object(o2449sub)) :|: TRUE f7063_0_getTail_FieldAccess(EOS(STATIC_7063), java.lang.Object(List(EOC, o2475))) -> f7067_0_getTail_FieldAccess(EOS(STATIC_7067), java.lang.Object(List(EOC, o2475))) :|: TRUE f7067_0_getTail_FieldAccess(EOS(STATIC_7067), java.lang.Object(List(EOC, o2475))) -> f7069_0_getTail_Return(EOS(STATIC_7069), o2475) :|: TRUE f7069_0_getTail_Return(EOS(STATIC_7069), o2475) -> f7071_0_length_Store(EOS(STATIC_7071), o2475) :|: TRUE f7071_0_length_Store(EOS(STATIC_7071), o2475) -> f7073_0_length_Inc(EOS(STATIC_7073), o2475) :|: TRUE f7073_0_length_Inc(EOS(STATIC_7073), o2475) -> f7075_0_length_JMP(EOS(STATIC_7075), o2475) :|: TRUE f7075_0_length_JMP(EOS(STATIC_7075), o2475) -> f7078_0_length_Load(EOS(STATIC_7078), o2475) :|: TRUE f7078_0_length_Load(EOS(STATIC_7078), o2475) -> f7052_0_length_Load(EOS(STATIC_7052), o2475) :|: TRUE f7052_0_length_Load(EOS(STATIC_7052), o2436) -> f7053_0_length_NULL(EOS(STATIC_7053), o2436, o2436) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f7053_0_length_NULL(EOS(STATIC_7053), java.lang.Object(List(EOC, o2475:0)), java.lang.Object(List(EOC, o2475:0))) -> f7053_0_length_NULL(EOS(STATIC_7053), o2475:0, o2475:0) :|: TRUE R rules: Filtered ground terms: f7053_0_length_NULL(x1, x2, x3) -> f7053_0_length_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate args: f7053_0_length_NULL(x1, x2) -> f7053_0_length_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F7053_0_LENGTH_NULL(java.lang.Object(List(o2475:0:0))) -> F7053_0_LENGTH_NULL(o2475:0:0) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F7053_0_LENGTH_NULL(java.lang.Object(List(o2475:0:0))) -> F7053_0_LENGTH_NULL(o2475:0:0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *F7053_0_LENGTH_NULL(java.lang.Object(List(o2475:0:0))) -> F7053_0_LENGTH_NULL(o2475:0:0) The graph contains the following edges 1 > 1 ---------------------------------------- (11) YES ---------------------------------------- (12) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: List.mk(I)LList; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (13) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 23 IRulesP rules: f3138_0_mk_Inc(EOS(STATIC_3138), i278, i278) -> f3153_0_mk_LE(EOS(STATIC_3153), i278 + -1, i278) :|: TRUE f3153_0_mk_LE(EOS(STATIC_3153), i329, i342) -> f3185_0_mk_LE(EOS(STATIC_3185), i329, i342) :|: TRUE f3185_0_mk_LE(EOS(STATIC_3185), i329, i342) -> f3204_0_mk_New(EOS(STATIC_3204), i329) :|: i342 > 0 f3204_0_mk_New(EOS(STATIC_3204), i329) -> f3218_0_mk_Duplicate(EOS(STATIC_3218), i329) :|: TRUE f3218_0_mk_Duplicate(EOS(STATIC_3218), i329) -> f3227_0_mk_New(EOS(STATIC_3227), i329) :|: TRUE f3227_0_mk_New(EOS(STATIC_3227), i329) -> f3315_0_mk_Duplicate(EOS(STATIC_3315), i329) :|: TRUE f3315_0_mk_Duplicate(EOS(STATIC_3315), i329) -> f3398_0_mk_InvokeMethod(EOS(STATIC_3398), i329) :|: TRUE f3398_0_mk_InvokeMethod(EOS(STATIC_3398), i329) -> f3423_0_mk_Load(EOS(STATIC_3423), i329) :|: TRUE f3423_0_mk_Load(EOS(STATIC_3423), i329) -> f3517_0_mk_InvokeMethod(EOS(STATIC_3517), i329) :|: TRUE f3517_0_mk_InvokeMethod(EOS(STATIC_3517), i329) -> f3527_0__init__Load(EOS(STATIC_3527), i329) :|: TRUE f3527_0__init__Load(EOS(STATIC_3527), i329) -> f3544_0__init__InvokeMethod(EOS(STATIC_3544), i329) :|: TRUE f3544_0__init__InvokeMethod(EOS(STATIC_3544), i329) -> f3555_0__init__Load(EOS(STATIC_3555), i329) :|: TRUE f3555_0__init__Load(EOS(STATIC_3555), i329) -> f3564_0__init__Load(EOS(STATIC_3564), i329) :|: TRUE f3564_0__init__Load(EOS(STATIC_3564), i329) -> f3584_0__init__FieldAccess(EOS(STATIC_3584), i329) :|: TRUE f3584_0__init__FieldAccess(EOS(STATIC_3584), i329) -> f3601_0__init__Load(EOS(STATIC_3601), i329) :|: TRUE f3601_0__init__Load(EOS(STATIC_3601), i329) -> f3607_0__init__Load(EOS(STATIC_3607), i329) :|: TRUE f3607_0__init__Load(EOS(STATIC_3607), i329) -> f3612_0__init__FieldAccess(EOS(STATIC_3612), i329) :|: TRUE f3612_0__init__FieldAccess(EOS(STATIC_3612), i329) -> f3622_0__init__Return(EOS(STATIC_3622), i329) :|: TRUE f3622_0__init__Return(EOS(STATIC_3622), i329) -> f3629_0_mk_Store(EOS(STATIC_3629), i329) :|: TRUE f3629_0_mk_Store(EOS(STATIC_3629), i329) -> f3641_0_mk_JMP(EOS(STATIC_3641), i329) :|: TRUE f3641_0_mk_JMP(EOS(STATIC_3641), i329) -> f3676_0_mk_Load(EOS(STATIC_3676), i329) :|: TRUE f3676_0_mk_Load(EOS(STATIC_3676), i329) -> f2788_0_mk_Load(EOS(STATIC_2788), i329) :|: TRUE f2788_0_mk_Load(EOS(STATIC_2788), i278) -> f3138_0_mk_Inc(EOS(STATIC_3138), i278, i278) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f3138_0_mk_Inc(EOS(STATIC_3138), i278:0, i278:0) -> f3138_0_mk_Inc(EOS(STATIC_3138), i278:0 - 1, i278:0 - 1) :|: i278:0 > 0 Filtered constant ground arguments: f3138_0_mk_Inc(x1, x2, x3) -> f3138_0_mk_Inc(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f3138_0_mk_Inc(x1, x2) -> f3138_0_mk_Inc(x2) Finished conversion. Obtained 1 rules.P rules: f3138_0_mk_Inc(i278:0) -> f3138_0_mk_Inc(i278:0 - 1) :|: i278:0 > 0 ---------------------------------------- (14) Obligation: Rules: f3138_0_mk_Inc(i278:0) -> f3138_0_mk_Inc(i278:0 - 1) :|: i278:0 > 0 ---------------------------------------- (15) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (16) Obligation: Rules: f3138_0_mk_Inc(i278:0) -> f3138_0_mk_Inc(arith) :|: i278:0 > 0 && arith = i278:0 - 1 ---------------------------------------- (17) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f3138_0_mk_Inc(i278:0) -> f3138_0_mk_Inc(arith) :|: i278:0 > 0 && arith = i278:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (18) Obligation: Termination digraph: Nodes: (1) f3138_0_mk_Inc(i278:0) -> f3138_0_mk_Inc(arith) :|: i278:0 > 0 && arith = i278:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f3138_0_mk_Inc(i278:0:0) -> f3138_0_mk_Inc(i278:0:0 - 1) :|: i278:0:0 > 0 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f3138_0_mk_Inc(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f3138_0_mk_Inc(i278:0:0) -> f3138_0_mk_Inc(c) :|: c = i278:0:0 - 1 && i278:0:0 > 0 ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f3138_0_mk_Inc(x)] = x The following rules are decreasing: f3138_0_mk_Inc(i278:0:0) -> f3138_0_mk_Inc(c) :|: c = i278:0:0 - 1 && i278:0:0 > 0 The following rules are bounded: f3138_0_mk_Inc(i278:0:0) -> f3138_0_mk_Inc(c) :|: c = i278:0:0 - 1 && i278:0:0 > 0 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test3.main([Ljava/lang/String;)V SCC calls the following helper methods: Test3.length(LList;)I Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [tail] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (26) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 121 IRulesP rules: f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246, o2247, o2248, o2246) -> f6944_0_length_ConstantStackPush(EOS(STATIC_6944), o2246, o2246) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246, o2247, o2248, o2246) -> f6944_1_length_ConstantStackPush(EOS(STATIC_6944), o2246, o2247, o2248, o2246) :|: TRUE f6944_0_length_ConstantStackPush(EOS(STATIC_6944), o2246, o2246) -> f7294_0_length_ConstantStackPush(EOS(STATIC_7294), o2246, o2246) :|: TRUE f7064_0_length_Return(EOS(STATIC_7064), o2458, o2247, o2248, i914) -> f6962_0_length_Return(EOS(STATIC_6962), o2458, o2247, o2248, i914) :|: TRUE f6962_0_length_Return(EOS(STATIC_6962), o2297, o2247, o2248, i888) -> f6964_0_main_Load(EOS(STATIC_6964), o2297, o2247, o2248, i888) :|: TRUE f6964_0_main_Load(EOS(STATIC_6964), o2297, o2247, o2248, i888) -> f6966_0_main_InvokeMethod(EOS(STATIC_6966), o2297, o2247, o2248, i888, o2247) :|: TRUE f6966_0_main_InvokeMethod(EOS(STATIC_6966), o2297, o2247, o2248, i888, o2247) -> f6968_0_length_ConstantStackPush(EOS(STATIC_6968), o2247, o2248, o2247) :|: TRUE f6966_0_main_InvokeMethod(EOS(STATIC_6966), o2297, o2247, o2248, i888, o2247) -> f6968_1_length_ConstantStackPush(EOS(STATIC_6968), o2297, o2247, o2248, i888, o2247) :|: TRUE f6968_0_length_ConstantStackPush(EOS(STATIC_6968), o2247, o2248, o2247) -> f7314_0_length_ConstantStackPush(EOS(STATIC_7314), o2247, o2248, o2247) :|: TRUE f7065_0_length_Return(EOS(STATIC_7065), o2297, o2462, o2248, i888, i915) -> f7040_0_length_Return(EOS(STATIC_7040), o2297, o2462, o2248, i888, i915) :|: TRUE f7040_0_length_Return(EOS(STATIC_7040), o2416, o2417, o2418, i888, i907) -> f7042_0_main_IntArithmetic(EOS(STATIC_7042), o2416, o2417, o2418, i888, i907) :|: TRUE f7042_0_main_IntArithmetic(EOS(STATIC_7042), o2416, o2417, o2418, i888, i907) -> f7044_0_main_Load(EOS(STATIC_7044), o2416, o2417, o2418, i888 + i907) :|: i888 >= 0 && i907 >= 0 f7044_0_main_Load(EOS(STATIC_7044), o2416, o2417, o2418, i910) -> f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2416, o2417, o2418, i910, o2418) :|: TRUE f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2416, o2417, o2418, i910, o2418) -> f7048_0_length_ConstantStackPush(EOS(STATIC_7048), o2418, o2417, o2418) :|: TRUE f7046_0_main_InvokeMethod(EOS(STATIC_7046), o2416, o2417, o2418, i910, o2418) -> f7048_1_length_ConstantStackPush(EOS(STATIC_7048), o2416, o2417, o2418, i910, o2418) :|: TRUE f7048_0_length_ConstantStackPush(EOS(STATIC_7048), o2418, o2417, o2418) -> f7336_0_length_ConstantStackPush(EOS(STATIC_7336), o2418, o2417, o2418) :|: TRUE f7066_0_length_Return(EOS(STATIC_7066), o2416, o2417, o2466, i910, i916) -> f7068_0_main_ConstantStackPush(EOS(STATIC_7068), o2416, o2417, o2466, i910, i916) :|: TRUE f7068_0_main_ConstantStackPush(EOS(STATIC_7068), o2416, o2417, o2466, i910, i916) -> f7070_0_main_IntArithmetic(EOS(STATIC_7070), o2416, o2417, o2466, i910, i916, 5) :|: TRUE f7070_0_main_IntArithmetic(EOS(STATIC_7070), o2416, o2417, o2466, i910, i916, matching1) -> f7072_0_main_IntArithmetic(EOS(STATIC_7072), o2416, o2417, o2466, i910, i916 * 5) :|: TRUE && matching1 = 5 f7072_0_main_IntArithmetic(EOS(STATIC_7072), o2416, o2417, o2466, i910, i919) -> f7074_0_main_LE(EOS(STATIC_7074), o2416, o2417, o2466, i910 + i919) :|: i910 >= 0 && i919 >= 0 f7074_0_main_LE(EOS(STATIC_7074), o2416, o2417, o2466, i922) -> f7077_0_main_LE(EOS(STATIC_7077), o2416, o2417, o2466, i922) :|: TRUE f7077_0_main_LE(EOS(STATIC_7077), o2416, o2417, o2466, i922) -> f7080_0_main_Load(EOS(STATIC_7080), o2416, o2417, o2466) :|: i922 > 0 f7080_0_main_Load(EOS(STATIC_7080), o2416, o2417, o2466) -> f7082_0_main_InvokeMethod(EOS(STATIC_7082), o2416, o2417, o2466, o2416) :|: TRUE f7082_0_main_InvokeMethod(EOS(STATIC_7082), o2416, o2417, o2466, o2416) -> f7083_0_length_ConstantStackPush(EOS(STATIC_7083), o2416, o2416) :|: TRUE f7082_0_main_InvokeMethod(EOS(STATIC_7082), o2416, o2417, o2466, o2416) -> f7083_1_length_ConstantStackPush(EOS(STATIC_7083), o2416, o2417, o2466, o2416) :|: TRUE f7083_0_length_ConstantStackPush(EOS(STATIC_7083), o2416, o2416) -> f7364_0_length_ConstantStackPush(EOS(STATIC_7364), o2416, o2416) :|: TRUE f7086_0_length_Return(EOS(STATIC_7086), o2490, o2417, o2466, i924) -> f7087_0_main_ConstantStackPush(EOS(STATIC_7087), o2490, o2417, o2466, i924) :|: TRUE f7087_0_main_ConstantStackPush(EOS(STATIC_7087), o2490, o2417, o2466, i924) -> f7088_0_main_IntArithmetic(EOS(STATIC_7088), o2490, o2417, o2466, i924, 2) :|: TRUE f7088_0_main_IntArithmetic(EOS(STATIC_7088), o2490, o2417, o2466, i924, matching1) -> f7089_0_main_ConstantStackPush(EOS(STATIC_7089), o2490, o2417, o2466, i924 % 2) :|: TRUE && matching1 = 2 f7089_0_main_ConstantStackPush(EOS(STATIC_7089), o2490, o2417, o2466, i925) -> f7090_0_main_NE(EOS(STATIC_7090), o2490, o2417, o2466, i925, 1) :|: TRUE f7090_0_main_NE(EOS(STATIC_7090), o2490, o2417, o2466, matching1, matching2) -> f7091_0_main_NE(EOS(STATIC_7091), o2490, o2417, o2466, 0, 1) :|: i925 = 0 && matching1 = 0 && matching2 = 1 f7090_0_main_NE(EOS(STATIC_7090), o2490, o2417, o2466, matching1, matching2) -> f7092_0_main_NE(EOS(STATIC_7092), o2490, o2417, o2466, 1, 1) :|: i925 = 1 && matching1 = 1 && matching2 = 1 f7091_0_main_NE(EOS(STATIC_7091), o2490, o2417, o2466, matching1, matching2) -> f7093_0_main_Load(EOS(STATIC_7093), o2490, o2417, o2466) :|: TRUE && matching1 = 0 && matching2 = 1 f7093_0_main_Load(EOS(STATIC_7093), o2490, o2417, o2466) -> f7095_0_main_InvokeMethod(EOS(STATIC_7095), o2490, o2417, o2466, o2417) :|: TRUE f7095_0_main_InvokeMethod(EOS(STATIC_7095), o2490, o2417, o2466, o2417) -> f7097_0_length_ConstantStackPush(EOS(STATIC_7097), o2417, o2466, o2417) :|: TRUE f7095_0_main_InvokeMethod(EOS(STATIC_7095), o2490, o2417, o2466, o2417) -> f7097_1_length_ConstantStackPush(EOS(STATIC_7097), o2490, o2417, o2466, o2417) :|: TRUE f7097_0_length_ConstantStackPush(EOS(STATIC_7097), o2417, o2466, o2417) -> f7394_0_length_ConstantStackPush(EOS(STATIC_7394), o2417, o2466, o2417) :|: TRUE f7108_0_length_Return(EOS(STATIC_7108), o2490, o2502, o2466, i926) -> f7110_0_main_Load(EOS(STATIC_7110), o2490, o2502, o2466, i926) :|: TRUE f7110_0_main_Load(EOS(STATIC_7110), o2490, o2502, o2466, i926) -> f7113_0_main_InvokeMethod(EOS(STATIC_7113), o2490, o2502, o2466, i926, o2466) :|: TRUE f7113_0_main_InvokeMethod(EOS(STATIC_7113), o2490, o2502, o2466, i926, o2466) -> f7116_0_length_ConstantStackPush(EOS(STATIC_7116), o2466, o2502, o2466) :|: TRUE f7113_0_main_InvokeMethod(EOS(STATIC_7113), o2490, o2502, o2466, i926, o2466) -> f7116_1_length_ConstantStackPush(EOS(STATIC_7116), o2490, o2502, o2466, i926, o2466) :|: TRUE f7116_0_length_ConstantStackPush(EOS(STATIC_7116), o2466, o2502, o2466) -> f7412_0_length_ConstantStackPush(EOS(STATIC_7412), o2466, o2502, o2466) :|: TRUE f7123_0_length_Return(EOS(STATIC_7123), o2490, o2502, o2518, i926, i927) -> f7125_0_main_LE(EOS(STATIC_7125), o2490, o2502, o2518, i926, i927) :|: TRUE f7125_0_main_LE(EOS(STATIC_7125), o2490, o2502, o2518, i926, i927) -> f7127_0_main_LE(EOS(STATIC_7127), o2490, o2502, o2518, i926, i927) :|: i926 <= i927 f7125_0_main_LE(EOS(STATIC_7125), o2490, o2502, o2518, i926, i927) -> f7128_0_main_LE(EOS(STATIC_7128), o2490, o2502, o2518, i926, i927) :|: i926 > i927 f7127_0_main_LE(EOS(STATIC_7127), o2490, o2502, o2518, i926, i927) -> f7130_0_main_Load(EOS(STATIC_7130), o2490, o2502, o2518) :|: i926 <= i927 f7130_0_main_Load(EOS(STATIC_7130), o2490, o2502, o2518) -> f7133_0_main_NONNULL(EOS(STATIC_7133), o2490, o2502, o2518, o2518) :|: TRUE f7133_0_main_NONNULL(EOS(STATIC_7133), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(o2519sub)) -> f7136_0_main_NONNULL(EOS(STATIC_7136), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(o2519sub)) :|: TRUE f7136_0_main_NONNULL(EOS(STATIC_7136), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(o2519sub)) -> f7141_0_main_New(EOS(STATIC_7141), o2490, o2502, java.lang.Object(o2519sub)) :|: TRUE f7141_0_main_New(EOS(STATIC_7141), o2490, o2502, java.lang.Object(o2519sub)) -> f7146_0_main_Duplicate(EOS(STATIC_7146), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL))) :|: TRUE f7146_0_main_Duplicate(EOS(STATIC_7146), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL))) -> f7149_0_main_New(EOS(STATIC_7149), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) :|: TRUE f7149_0_main_New(EOS(STATIC_7149), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) -> f7153_0_main_Duplicate(EOS(STATIC_7153), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7153_0_main_Duplicate(EOS(STATIC_7153), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7157_0_main_InvokeMethod(EOS(STATIC_7157), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) :|: TRUE f7157_0_main_InvokeMethod(EOS(STATIC_7157), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) -> f7160_0_main_Load(EOS(STATIC_7160), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7160_0_main_Load(EOS(STATIC_7160), o2490, o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7164_0_main_InvokeMethod(EOS(STATIC_7164), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) :|: TRUE f7164_0_main_InvokeMethod(EOS(STATIC_7164), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) -> f7167_0__init__Load(EOS(STATIC_7167), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) :|: TRUE f7167_0__init__Load(EOS(STATIC_7167), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) -> f7170_0__init__InvokeMethod(EOS(STATIC_7170), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490, java.lang.Object(List(EOC, NULL))) :|: TRUE f7170_0__init__InvokeMethod(EOS(STATIC_7170), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490, java.lang.Object(List(EOC, NULL))) -> f7172_0__init__Load(EOS(STATIC_7172), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) :|: TRUE f7172_0__init__Load(EOS(STATIC_7172), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490) -> f7173_0__init__Load(EOS(STATIC_7173), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490, java.lang.Object(List(EOC, NULL))) :|: TRUE f7173_0__init__Load(EOS(STATIC_7173), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2490, java.lang.Object(List(EOC, NULL))) -> f7175_0__init__FieldAccess(EOS(STATIC_7175), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7175_0__init__FieldAccess(EOS(STATIC_7175), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7177_0__init__Load(EOS(STATIC_7177), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490) :|: TRUE f7177_0__init__Load(EOS(STATIC_7177), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490) -> f7179_0__init__Load(EOS(STATIC_7179), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), o2490, java.lang.Object(List(EOC, NULL))) :|: TRUE f7179_0__init__Load(EOS(STATIC_7179), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), o2490, java.lang.Object(List(EOC, NULL))) -> f7181_0__init__FieldAccess(EOS(STATIC_7181), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490) :|: TRUE f7181_0__init__FieldAccess(EOS(STATIC_7181), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2490) -> f7183_0__init__Return(EOS(STATIC_7183), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2490))) :|: TRUE f7183_0__init__Return(EOS(STATIC_7183), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2490))) -> f7185_0_main_Store(EOS(STATIC_7185), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2490))) :|: TRUE f7185_0_main_Store(EOS(STATIC_7185), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2490))) -> f7187_0_main_New(EOS(STATIC_7187), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub)) :|: TRUE f7187_0_main_New(EOS(STATIC_7187), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub)) -> f7189_0_main_Duplicate(EOS(STATIC_7189), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL))) :|: TRUE f7189_0_main_Duplicate(EOS(STATIC_7189), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL))) -> f7191_0_main_New(EOS(STATIC_7191), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) :|: TRUE f7191_0_main_New(EOS(STATIC_7191), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL))) -> f7193_0_main_Duplicate(EOS(STATIC_7193), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7193_0_main_Duplicate(EOS(STATIC_7193), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7195_0_main_InvokeMethod(EOS(STATIC_7195), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) :|: TRUE f7195_0_main_InvokeMethod(EOS(STATIC_7195), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), java.lang.Object(EOC)) -> f7197_0_main_Load(EOS(STATIC_7197), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7197_0_main_Load(EOS(STATIC_7197), java.lang.Object(List(EOC, o2490)), o2502, java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7199_0_main_InvokeMethod(EOS(STATIC_7199), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) :|: TRUE f7199_0_main_InvokeMethod(EOS(STATIC_7199), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) -> f7200_0__init__Load(EOS(STATIC_7200), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) :|: TRUE f7200_0__init__Load(EOS(STATIC_7200), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) -> f7201_0__init__InvokeMethod(EOS(STATIC_7201), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502, java.lang.Object(List(EOC, NULL))) :|: TRUE f7201_0__init__InvokeMethod(EOS(STATIC_7201), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502, java.lang.Object(List(EOC, NULL))) -> f7202_0__init__Load(EOS(STATIC_7202), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) :|: TRUE f7202_0__init__Load(EOS(STATIC_7202), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502) -> f7203_0__init__Load(EOS(STATIC_7203), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502, java.lang.Object(List(EOC, NULL))) :|: TRUE f7203_0__init__Load(EOS(STATIC_7203), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC), o2502, java.lang.Object(List(EOC, NULL))) -> f7204_0__init__FieldAccess(EOS(STATIC_7204), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) :|: TRUE f7204_0__init__FieldAccess(EOS(STATIC_7204), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502, java.lang.Object(List(EOC, NULL)), java.lang.Object(EOC)) -> f7205_0__init__Load(EOS(STATIC_7205), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502) :|: TRUE f7205_0__init__Load(EOS(STATIC_7205), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502) -> f7206_0__init__Load(EOS(STATIC_7206), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), o2502, java.lang.Object(List(EOC, NULL))) :|: TRUE f7206_0__init__Load(EOS(STATIC_7206), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), o2502, java.lang.Object(List(EOC, NULL))) -> f7207_0__init__FieldAccess(EOS(STATIC_7207), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502) :|: TRUE f7207_0__init__FieldAccess(EOS(STATIC_7207), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, NULL)), java.lang.Object(List(EOC, NULL)), o2502) -> f7208_0__init__Return(EOS(STATIC_7208), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2502))) :|: TRUE f7208_0__init__Return(EOS(STATIC_7208), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2502))) -> f7209_0_main_Store(EOS(STATIC_7209), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2502))) :|: TRUE f7209_0_main_Store(EOS(STATIC_7209), java.lang.Object(List(EOC, o2490)), java.lang.Object(o2519sub), java.lang.Object(List(EOC, o2502))) -> f7210_0_main_Load(EOS(STATIC_7210), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) :|: TRUE f7210_0_main_Load(EOS(STATIC_7210), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) -> f7211_0_main_InvokeMethod(EOS(STATIC_7211), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) :|: TRUE f7211_0_main_InvokeMethod(EOS(STATIC_7211), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) -> f7212_0_getTail_Load(EOS(STATIC_7212), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) :|: TRUE f7212_0_getTail_Load(EOS(STATIC_7212), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) -> f7213_0_getTail_FieldAccess(EOS(STATIC_7213), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(o2519sub)) :|: TRUE f7213_0_getTail_FieldAccess(EOS(STATIC_7213), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(List(EOC, o2581))) -> f7214_0_getTail_FieldAccess(EOS(STATIC_7214), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(List(EOC, o2581))) :|: TRUE f7214_0_getTail_FieldAccess(EOS(STATIC_7214), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), java.lang.Object(List(EOC, o2581))) -> f7215_0_getTail_Return(EOS(STATIC_7215), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) :|: TRUE f7215_0_getTail_Return(EOS(STATIC_7215), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) -> f7216_0_main_Store(EOS(STATIC_7216), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) :|: TRUE f7216_0_main_Store(EOS(STATIC_7216), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) -> f7217_0_main_JMP(EOS(STATIC_7217), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) :|: TRUE f7217_0_main_JMP(EOS(STATIC_7217), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) -> f7218_0_main_Load(EOS(STATIC_7218), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) :|: TRUE f7218_0_main_Load(EOS(STATIC_7218), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) -> f6940_0_main_Load(EOS(STATIC_6940), java.lang.Object(List(EOC, o2490)), java.lang.Object(List(EOC, o2502)), o2581) :|: TRUE f6940_0_main_Load(EOS(STATIC_6940), o2246, o2247, o2248) -> f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246, o2247, o2248, o2246) :|: TRUE f7128_0_main_LE(EOS(STATIC_7128), o2490, o2502, o2518, i926, i927) -> f7131_0_main_Load(EOS(STATIC_7131), o2490, o2502, o2518) :|: i926 > i927 f7131_0_main_Load(EOS(STATIC_7131), o2490, o2502, o2518) -> f7134_0_main_InvokeMethod(EOS(STATIC_7134), o2490, o2518, o2502) :|: TRUE f7134_0_main_InvokeMethod(EOS(STATIC_7134), o2490, o2518, java.lang.Object(o2520sub)) -> f7138_0_main_InvokeMethod(EOS(STATIC_7138), o2490, o2518, java.lang.Object(o2520sub)) :|: TRUE f7138_0_main_InvokeMethod(EOS(STATIC_7138), o2490, o2518, java.lang.Object(o2520sub)) -> f7143_0_getTail_Load(EOS(STATIC_7143), o2490, o2518, java.lang.Object(o2520sub)) :|: TRUE f7143_0_getTail_Load(EOS(STATIC_7143), o2490, o2518, java.lang.Object(o2520sub)) -> f7150_0_getTail_FieldAccess(EOS(STATIC_7150), o2490, o2518, java.lang.Object(o2520sub)) :|: TRUE f7150_0_getTail_FieldAccess(EOS(STATIC_7150), o2490, o2518, java.lang.Object(List(EOC, o2533))) -> f7154_0_getTail_FieldAccess(EOS(STATIC_7154), o2490, o2518, java.lang.Object(List(EOC, o2533))) :|: TRUE f7154_0_getTail_FieldAccess(EOS(STATIC_7154), o2490, o2518, java.lang.Object(List(EOC, o2533))) -> f7158_0_getTail_Return(EOS(STATIC_7158), o2490, o2518, o2533) :|: TRUE f7158_0_getTail_Return(EOS(STATIC_7158), o2490, o2518, o2533) -> f7161_0_main_Store(EOS(STATIC_7161), o2490, o2518, o2533) :|: TRUE f7161_0_main_Store(EOS(STATIC_7161), o2490, o2518, o2533) -> f7165_0_main_JMP(EOS(STATIC_7165), o2490, o2533, o2518) :|: TRUE f7165_0_main_JMP(EOS(STATIC_7165), o2490, o2533, o2518) -> f7168_0_main_Load(EOS(STATIC_7168), o2490, o2533, o2518) :|: TRUE f7168_0_main_Load(EOS(STATIC_7168), o2490, o2533, o2518) -> f6940_0_main_Load(EOS(STATIC_6940), o2490, o2533, o2518) :|: TRUE f7092_0_main_NE(EOS(STATIC_7092), o2490, o2417, o2466, matching1, matching2) -> f7094_0_main_Load(EOS(STATIC_7094), o2490, o2417, o2466) :|: TRUE && matching1 = 1 && matching2 = 1 f7094_0_main_Load(EOS(STATIC_7094), o2490, o2417, o2466) -> f7096_0_main_InvokeMethod(EOS(STATIC_7096), o2417, o2466, o2490) :|: TRUE f7096_0_main_InvokeMethod(EOS(STATIC_7096), o2417, o2466, java.lang.Object(o2491sub)) -> f7098_0_main_InvokeMethod(EOS(STATIC_7098), o2417, o2466, java.lang.Object(o2491sub)) :|: TRUE f7098_0_main_InvokeMethod(EOS(STATIC_7098), o2417, o2466, java.lang.Object(o2491sub)) -> f7101_0_getTail_Load(EOS(STATIC_7101), o2417, o2466, java.lang.Object(o2491sub)) :|: TRUE f7101_0_getTail_Load(EOS(STATIC_7101), o2417, o2466, java.lang.Object(o2491sub)) -> f7103_0_getTail_FieldAccess(EOS(STATIC_7103), o2417, o2466, java.lang.Object(o2491sub)) :|: TRUE f7103_0_getTail_FieldAccess(EOS(STATIC_7103), o2417, o2466, java.lang.Object(List(EOC, o2505))) -> f7105_0_getTail_FieldAccess(EOS(STATIC_7105), o2417, o2466, java.lang.Object(List(EOC, o2505))) :|: TRUE f7105_0_getTail_FieldAccess(EOS(STATIC_7105), o2417, o2466, java.lang.Object(List(EOC, o2505))) -> f7109_0_getTail_Return(EOS(STATIC_7109), o2417, o2466, o2505) :|: TRUE f7109_0_getTail_Return(EOS(STATIC_7109), o2417, o2466, o2505) -> f7111_0_main_Store(EOS(STATIC_7111), o2417, o2466, o2505) :|: TRUE f7111_0_main_Store(EOS(STATIC_7111), o2417, o2466, o2505) -> f7114_0_main_JMP(EOS(STATIC_7114), o2505, o2417, o2466) :|: TRUE f7114_0_main_JMP(EOS(STATIC_7114), o2505, o2417, o2466) -> f7117_0_main_Load(EOS(STATIC_7117), o2505, o2417, o2466) :|: TRUE f7117_0_main_Load(EOS(STATIC_7117), o2505, o2417, o2466) -> f6940_0_main_Load(EOS(STATIC_6940), o2505, o2417, o2466) :|: TRUE f6944_1_length_ConstantStackPush(EOS(STATIC_6944), o2458, o2247, o2248, o2458) -> f7064_0_length_Return(EOS(STATIC_7064), o2458, o2247, o2248, i914) :|: TRUE f6968_1_length_ConstantStackPush(EOS(STATIC_6968), o2297, o2462, o2248, i888, o2462) -> f7065_0_length_Return(EOS(STATIC_7065), o2297, o2462, o2248, i888, i915) :|: TRUE f7048_1_length_ConstantStackPush(EOS(STATIC_7048), o2416, o2417, o2466, i910, o2466) -> f7066_0_length_Return(EOS(STATIC_7066), o2416, o2417, o2466, i910, i916) :|: TRUE f7083_1_length_ConstantStackPush(EOS(STATIC_7083), o2490, o2417, o2466, o2490) -> f7086_0_length_Return(EOS(STATIC_7086), o2490, o2417, o2466, i924) :|: TRUE f7097_1_length_ConstantStackPush(EOS(STATIC_7097), o2490, o2502, o2466, o2502) -> f7108_0_length_Return(EOS(STATIC_7108), o2490, o2502, o2466, i926) :|: TRUE f7116_1_length_ConstantStackPush(EOS(STATIC_7116), o2490, o2502, o2518, i926, o2518) -> f7123_0_length_Return(EOS(STATIC_7123), o2490, o2502, o2518, i926, i927) :|: TRUE Combined rules. Obtained 13 IRulesP rules: f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, java.lang.Object(List(EOC, o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, java.lang.Object(List(EOC, o2533:0)), o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, java.lang.Object(List(EOC, o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2533:0, o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), java.lang.Object(List(EOC, o2505:0)), o2247:0, o2248:0, java.lang.Object(List(EOC, o2505:0))) -> f6942_0_main_InvokeMethod'(EOS(STATIC_6942), java.lang.Object(List(EOC, o2505:0)), o2247:0, o2248:0, java.lang.Object(List(EOC, o2505:0))) :|: TRUE f6942_0_main_InvokeMethod'(EOS(STATIC_6942), java.lang.Object(List(EOC, o2505:0)), o2247:0, o2248:0, java.lang.Object(List(EOC, o2505:0))) -> f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2505:0, o2247:0, o2248:0, o2505:0) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, java.lang.Object(List(EOC, o2581:0)), o2246:0) -> f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, o2247:0, java.lang.Object(List(EOC, o2581:0)), o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, o2247:0, java.lang.Object(List(EOC, o2581:0)), o2246:0) -> f6942_0_main_InvokeMethod(EOS(STATIC_6942), java.lang.Object(List(EOC, o2246:0)), java.lang.Object(List(EOC, o2247:0)), o2581:0, java.lang.Object(List(EOC, o2246:0))) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) :|: TRUE Removed following non-SCC rules: f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7364_0_length_ConstantStackPush(EOS(STATIC_7364), o2246:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7314_0_length_ConstantStackPush(EOS(STATIC_7314), o2247:0, o2248:0, o2247:0) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7336_0_length_ConstantStackPush(EOS(STATIC_7336), o2248:0, o2247:0, o2248:0) :|: TRUE f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7394_0_length_ConstantStackPush(EOS(STATIC_7394), o2247:0, o2248:0, o2247:0) :|: TRUE f6942_0_main_InvokeMethod'(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7412_0_length_ConstantStackPush(EOS(STATIC_7412), o2248:0, o2247:0, o2248:0) :|: TRUE f6942_0_main_InvokeMethod(EOS(STATIC_6942), o2246:0, o2247:0, o2248:0, o2246:0) -> f7294_0_length_ConstantStackPush(EOS(STATIC_7294), o2246:0, o2246:0) :|: TRUE Filtered constant ground arguments: f6942_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f6942_0_main_InvokeMethod(x2, x3, x4, x5) f6942_0_main_InvokeMethod'(x1, x2, x3, x4, x5) -> f6942_0_main_InvokeMethod'(x2, x3, x4, x5) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate arguments: f6942_0_main_InvokeMethod(x1, x2, x3, x4) -> f6942_0_main_InvokeMethod(x2, x3, x4) f6942_0_main_InvokeMethod'(x1, x2, x3, x4) -> f6942_0_main_InvokeMethod'(x2, x3, x4) Finished conversion. Obtained 7 rules.P rules: f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod(o2533:0, o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod(o2247:0, o2248:0, java.lang.Object(List(o2505:0))) -> f6942_0_main_InvokeMethod'(o2247:0, o2248:0, java.lang.Object(List(o2505:0))) :|: TRUE f6942_0_main_InvokeMethod'(o2247:0, o2248:0, java.lang.Object(List(o2505:0))) -> f6942_0_main_InvokeMethod(o2247:0, o2248:0, o2505:0) :|: TRUE f6942_0_main_InvokeMethod(o2247:0, java.lang.Object(List(o2581:0)), o2246:0) -> f6942_0_main_InvokeMethod'(o2247:0, java.lang.Object(List(o2581:0)), o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(o2247:0, java.lang.Object(List(o2581:0)), o2246:0) -> f6942_0_main_InvokeMethod(java.lang.Object(List(o2247:0)), o2581:0, java.lang.Object(List(o2246:0))) :|: TRUE f6942_0_main_InvokeMethod(o2247:0, o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(o2247:0, o2248:0, o2246:0) :|: TRUE ---------------------------------------- (27) Obligation: Rules: f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) :|: TRUE f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) :|: TRUE f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) :|: TRUE f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) :|: TRUE f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) :|: TRUE f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) :|: TRUE ---------------------------------------- (28) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (29) Obligation: Rules: f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) :|: TRUE f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) :|: TRUE f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) :|: TRUE f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) :|: TRUE f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) :|: TRUE f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) :|: TRUE f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) :|: TRUE ---------------------------------------- (30) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) :|: TRUE (2) f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) :|: TRUE (3) f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) :|: TRUE (4) f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) :|: TRUE (5) f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) :|: TRUE (6) f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) :|: TRUE (7) f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) :|: TRUE Arcs: (1) -> (2), (4), (6) (2) -> (1), (3), (5), (7) (3) -> (2), (4), (6) (4) -> (1), (3), (5), (7) (5) -> (2), (4), (6) (6) -> (1), (3), (5), (7) (7) -> (2), (4), (6) This digraph is fully evaluated! ---------------------------------------- (31) Obligation: Termination digraph: Nodes: (1) f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) :|: TRUE (2) f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) :|: TRUE (3) f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) :|: TRUE (4) f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) :|: TRUE (5) f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) :|: TRUE (6) f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) :|: TRUE (7) f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) :|: TRUE Arcs: (1) -> (2), (4), (6) (2) -> (1), (3), (5), (7) (3) -> (2), (4), (6) (4) -> (1), (3), (5), (7) (5) -> (2), (4), (6) (6) -> (1), (3), (5), (7) (7) -> (2), (4), (6) This digraph is fully evaluated! ---------------------------------------- (32) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6942_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) java.lang.Object(VARIABLE) List(VARIABLE) f6942_0_main_InvokeMethod'(VARIABLE, VARIABLE, VARIABLE) Removed predefined arithmetic. ---------------------------------------- (33) Obligation: Rules: f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) ---------------------------------------- (34) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (36) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *f6942_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) -> f6942_0_main_InvokeMethod(x, x1, x2) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *f6942_0_main_InvokeMethod'(x6, x7, java.lang.Object(List(x8))) -> f6942_0_main_InvokeMethod(x6, x7, x8) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *f6942_0_main_InvokeMethod'(x12, java.lang.Object(List(x13)), x14) -> f6942_0_main_InvokeMethod(java.lang.Object(List(x12)), x13, java.lang.Object(List(x14))) The graph contains the following edges 2 > 2 *f6942_0_main_InvokeMethod(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) -> f6942_0_main_InvokeMethod'(java.lang.Object(List(o2533:0)), o2248:0, o2246:0) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f6942_0_main_InvokeMethod(x3, x4, java.lang.Object(List(x5))) -> f6942_0_main_InvokeMethod'(x3, x4, java.lang.Object(List(x5))) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f6942_0_main_InvokeMethod(x9, java.lang.Object(List(x10)), x11) -> f6942_0_main_InvokeMethod'(x9, java.lang.Object(List(x10)), x11) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f6942_0_main_InvokeMethod(x15, x16, x17) -> f6942_0_main_InvokeMethod'(x15, x16, x17) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 ---------------------------------------- (37) YES