/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 666 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 127 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToIRSProof [SOUND, 95 ms] (14) IRSwT (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (18) IRSwT (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 36 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (24) YES (25) JBCTerminationSCC (26) SCCToQDPProof [SOUND, 250 ms] (27) QDP (28) DependencyGraphProof [EQUIVALENT, 0 ms] (29) TRUE ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } public class Shuffle{ // adapted from [Walther, 94] public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); IntList res = null; while (l != null) { res = new IntList(l.value, res); l = l.next; if (l != null) l = l.reverse(); } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); int j; IntList l = null; while (i > 0) { j = Random.random(); l = new IntList(j, l); i--; } return l; } public IntList reverse() { IntList res = null; IntList l = this; while (l != null) { res = new IntList(l.value, res); l = l.next; } return res; } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } public class Shuffle{ // adapted from [Walther, 94] public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); IntList res = null; while (l != null) { res = new IntList(l.value, res); l = l.next; if (l != null) l = l.reverse(); } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); int j; IntList l = null; while (i > 0) { j = Random.random(); l = new IntList(j, l); i--; } return l; } public IntList reverse() { IntList res = null; IntList l = this; while (l != null) { res = new IntList(l.value, res); l = l.next; } return res; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Shuffle.main([Ljava/lang/String;)V: Graph of 108 nodes with 1 SCC. IntList.createIntList()LIntList;: Graph of 189 nodes with 1 SCC. IntList.reverse()LIntList;: Graph of 58 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: IntList.reverse()LIntList; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [value, next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 25 rules for P and 0 rules for R.P rules: f2986_0_reverse_NULL(EOS(STATIC_2986), java.lang.Object(o617sub), java.lang.Object(o617sub)) -> f2992_0_reverse_NULL(EOS(STATIC_2992), java.lang.Object(o617sub), java.lang.Object(o617sub)) :|: TRUE f2992_0_reverse_NULL(EOS(STATIC_2992), java.lang.Object(o617sub), java.lang.Object(o617sub)) -> f3006_0_reverse_New(EOS(STATIC_3006), java.lang.Object(o617sub)) :|: TRUE f3006_0_reverse_New(EOS(STATIC_3006), java.lang.Object(o617sub)) -> f3009_0_reverse_Duplicate(EOS(STATIC_3009), java.lang.Object(o617sub)) :|: TRUE f3009_0_reverse_Duplicate(EOS(STATIC_3009), java.lang.Object(o617sub)) -> f3012_0_reverse_Load(EOS(STATIC_3012), java.lang.Object(o617sub)) :|: TRUE f3012_0_reverse_Load(EOS(STATIC_3012), java.lang.Object(o617sub)) -> f3021_0_reverse_FieldAccess(EOS(STATIC_3021), java.lang.Object(o617sub), java.lang.Object(o617sub)) :|: TRUE f3021_0_reverse_FieldAccess(EOS(STATIC_3021), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, o663))) -> f3045_0_reverse_FieldAccess(EOS(STATIC_3045), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3045_0_reverse_FieldAccess(EOS(STATIC_3045), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, o663))) -> f3073_0_reverse_Load(EOS(STATIC_3073), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3073_0_reverse_Load(EOS(STATIC_3073), java.lang.Object(IntList(EOC, i405, o663))) -> f3079_0_reverse_InvokeMethod(EOS(STATIC_3079), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3079_0_reverse_InvokeMethod(EOS(STATIC_3079), java.lang.Object(IntList(EOC, i405, o663))) -> f3082_0__init__Load(EOS(STATIC_3082), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3082_0__init__Load(EOS(STATIC_3082), java.lang.Object(IntList(EOC, i405, o663))) -> f3093_0__init__InvokeMethod(EOS(STATIC_3093), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3093_0__init__InvokeMethod(EOS(STATIC_3093), java.lang.Object(IntList(EOC, i405, o663))) -> f3099_0__init__Load(EOS(STATIC_3099), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3099_0__init__Load(EOS(STATIC_3099), java.lang.Object(IntList(EOC, i405, o663))) -> f3102_0__init__Load(EOS(STATIC_3102), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3102_0__init__Load(EOS(STATIC_3102), java.lang.Object(IntList(EOC, i405, o663))) -> f3108_0__init__FieldAccess(EOS(STATIC_3108), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3108_0__init__FieldAccess(EOS(STATIC_3108), java.lang.Object(IntList(EOC, i405, o663))) -> f3117_0__init__Load(EOS(STATIC_3117), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3117_0__init__Load(EOS(STATIC_3117), java.lang.Object(IntList(EOC, i405, o663))) -> f3125_0__init__Load(EOS(STATIC_3125), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3125_0__init__Load(EOS(STATIC_3125), java.lang.Object(IntList(EOC, i405, o663))) -> f3132_0__init__FieldAccess(EOS(STATIC_3132), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3132_0__init__FieldAccess(EOS(STATIC_3132), java.lang.Object(IntList(EOC, i405, o663))) -> f3137_0__init__Return(EOS(STATIC_3137), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3137_0__init__Return(EOS(STATIC_3137), java.lang.Object(IntList(EOC, i405, o663))) -> f3141_0_reverse_Store(EOS(STATIC_3141), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3141_0_reverse_Store(EOS(STATIC_3141), java.lang.Object(IntList(EOC, i405, o663))) -> f3147_0_reverse_Load(EOS(STATIC_3147), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3147_0_reverse_Load(EOS(STATIC_3147), java.lang.Object(IntList(EOC, i405, o663))) -> f3154_0_reverse_FieldAccess(EOS(STATIC_3154), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3154_0_reverse_FieldAccess(EOS(STATIC_3154), java.lang.Object(IntList(EOC, i405, o663))) -> f3162_0_reverse_Store(EOS(STATIC_3162), o663) :|: TRUE f3162_0_reverse_Store(EOS(STATIC_3162), o663) -> f3168_0_reverse_JMP(EOS(STATIC_3168), o663) :|: TRUE f3168_0_reverse_JMP(EOS(STATIC_3168), o663) -> f3178_0_reverse_Load(EOS(STATIC_3178), o663) :|: TRUE f3178_0_reverse_Load(EOS(STATIC_3178), o663) -> f2976_0_reverse_Load(EOS(STATIC_2976), o663) :|: TRUE f2976_0_reverse_Load(EOS(STATIC_2976), o587) -> f2986_0_reverse_NULL(EOS(STATIC_2986), o587, o587) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f2986_0_reverse_NULL(EOS(STATIC_2986), java.lang.Object(IntList(EOC, i405:0, o663:0)), java.lang.Object(IntList(EOC, i405:0, o663:0))) -> f2986_0_reverse_NULL(EOS(STATIC_2986), o663:0, o663:0) :|: TRUE R rules: Filtered ground terms: f2986_0_reverse_NULL(x1, x2, x3) -> f2986_0_reverse_NULL(x2, x3) EOS(x1) -> EOS IntList(x1, x2, x3) -> IntList(x2, x3) Filtered unneeded arguments: IntList(x1, x2) -> IntList(x2) Filtered duplicate args: f2986_0_reverse_NULL(x1, x2) -> f2986_0_reverse_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F2986_0_REVERSE_NULL(java.lang.Object(IntList(o663:0:0))) -> F2986_0_REVERSE_NULL(o663:0:0) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F2986_0_REVERSE_NULL(java.lang.Object(IntList(o663:0:0))) -> F2986_0_REVERSE_NULL(o663: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: *F2986_0_REVERSE_NULL(java.lang.Object(IntList(o663:0:0))) -> F2986_0_REVERSE_NULL(o663: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: IntList.createIntList()LIntList; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (13) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 41 IRulesP rules: f1977_0_createIntList_LE(EOS(STATIC_1977(java.lang.Object(ARRAY(i6)))), i219, i219) -> f1980_0_createIntList_LE(EOS(STATIC_1980(java.lang.Object(ARRAY(i6)))), i219, i219) :|: TRUE f1980_0_createIntList_LE(EOS(STATIC_1980(java.lang.Object(ARRAY(i6)))), i219, i219) -> f1983_0_createIntList_InvokeMethod(EOS(STATIC_1983(java.lang.Object(ARRAY(i6)))), i219) :|: i219 > 0 f1983_0_createIntList_InvokeMethod(EOS(STATIC_1983(java.lang.Object(ARRAY(i6)))), i219) -> f1985_0_random_FieldAccess(EOS(STATIC_1985(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f1985_0_random_FieldAccess(EOS(STATIC_1985(java.lang.Object(ARRAY(i6)))), i219) -> f2017_0_random_FieldAccess(EOS(STATIC_2017(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) :|: TRUE f2017_0_random_FieldAccess(EOS(STATIC_2017(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) -> f2042_0_random_ArrayAccess(EOS(STATIC_2042(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) :|: TRUE f2042_0_random_ArrayAccess(EOS(STATIC_2042(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) -> f2044_0_random_ArrayAccess(EOS(STATIC_2044(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) :|: TRUE f2044_0_random_ArrayAccess(EOS(STATIC_2044(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(ARRAY(i6))) -> f2047_0_random_Store(EOS(STATIC_2047(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2047_0_random_Store(EOS(STATIC_2047(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2050_0_random_FieldAccess(EOS(STATIC_2050(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2050_0_random_FieldAccess(EOS(STATIC_2050(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2052_0_random_ConstantStackPush(EOS(STATIC_2052(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2052_0_random_ConstantStackPush(EOS(STATIC_2052(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2055_0_random_IntArithmetic(EOS(STATIC_2055(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2055_0_random_IntArithmetic(EOS(STATIC_2055(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2059_0_random_FieldAccess(EOS(STATIC_2059(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2059_0_random_FieldAccess(EOS(STATIC_2059(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2062_0_random_Load(EOS(STATIC_2062(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2062_0_random_Load(EOS(STATIC_2062(java.lang.Object(ARRAY(i6)))), i219, o217) -> f2066_0_random_InvokeMethod(EOS(STATIC_2066(java.lang.Object(ARRAY(i6)))), i219, o217) :|: TRUE f2066_0_random_InvokeMethod(EOS(STATIC_2066(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o225sub)) -> f2129_0_random_InvokeMethod(EOS(STATIC_2129(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o225sub)) :|: TRUE f2129_0_random_InvokeMethod(EOS(STATIC_2129(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) -> f2132_0_random_InvokeMethod(EOS(STATIC_2132(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) :|: TRUE f2132_0_random_InvokeMethod(EOS(STATIC_2132(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) -> f2158_0_length_Load(EOS(STATIC_2158(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) :|: TRUE f2158_0_length_Load(EOS(STATIC_2158(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) -> f2163_0_length_FieldAccess(EOS(STATIC_2163(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(o226sub)) :|: TRUE f2163_0_length_FieldAccess(EOS(STATIC_2163(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(java.lang.String(EOC, i253))) -> f2167_0_length_FieldAccess(EOS(STATIC_2167(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(java.lang.String(EOC, i253))) :|: TRUE f2167_0_length_FieldAccess(EOS(STATIC_2167(java.lang.Object(ARRAY(i6)))), i219, java.lang.Object(java.lang.String(EOC, i253))) -> f2169_0_length_Return(EOS(STATIC_2169(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2169_0_length_Return(EOS(STATIC_2169(java.lang.Object(ARRAY(i6)))), i219) -> f2172_0_random_Return(EOS(STATIC_2172(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2172_0_random_Return(EOS(STATIC_2172(java.lang.Object(ARRAY(i6)))), i219) -> f2176_0_createIntList_Store(EOS(STATIC_2176(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2176_0_createIntList_Store(EOS(STATIC_2176(java.lang.Object(ARRAY(i6)))), i219) -> f2179_0_createIntList_New(EOS(STATIC_2179(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2179_0_createIntList_New(EOS(STATIC_2179(java.lang.Object(ARRAY(i6)))), i219) -> f2183_0_createIntList_Duplicate(EOS(STATIC_2183(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2183_0_createIntList_Duplicate(EOS(STATIC_2183(java.lang.Object(ARRAY(i6)))), i219) -> f2187_0_createIntList_Load(EOS(STATIC_2187(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2187_0_createIntList_Load(EOS(STATIC_2187(java.lang.Object(ARRAY(i6)))), i219) -> f2238_0_createIntList_Load(EOS(STATIC_2238(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2238_0_createIntList_Load(EOS(STATIC_2238(java.lang.Object(ARRAY(i6)))), i219) -> f2251_0_createIntList_InvokeMethod(EOS(STATIC_2251(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2251_0_createIntList_InvokeMethod(EOS(STATIC_2251(java.lang.Object(ARRAY(i6)))), i219) -> f2265_0__init__Load(EOS(STATIC_2265(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2265_0__init__Load(EOS(STATIC_2265(java.lang.Object(ARRAY(i6)))), i219) -> f2290_0__init__InvokeMethod(EOS(STATIC_2290(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2290_0__init__InvokeMethod(EOS(STATIC_2290(java.lang.Object(ARRAY(i6)))), i219) -> f2308_0__init__Load(EOS(STATIC_2308(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2308_0__init__Load(EOS(STATIC_2308(java.lang.Object(ARRAY(i6)))), i219) -> f2342_0__init__Load(EOS(STATIC_2342(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2342_0__init__Load(EOS(STATIC_2342(java.lang.Object(ARRAY(i6)))), i219) -> f2355_0__init__FieldAccess(EOS(STATIC_2355(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2355_0__init__FieldAccess(EOS(STATIC_2355(java.lang.Object(ARRAY(i6)))), i219) -> f2364_0__init__Load(EOS(STATIC_2364(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2364_0__init__Load(EOS(STATIC_2364(java.lang.Object(ARRAY(i6)))), i219) -> f2408_0__init__Load(EOS(STATIC_2408(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2408_0__init__Load(EOS(STATIC_2408(java.lang.Object(ARRAY(i6)))), i219) -> f2419_0__init__FieldAccess(EOS(STATIC_2419(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2419_0__init__FieldAccess(EOS(STATIC_2419(java.lang.Object(ARRAY(i6)))), i219) -> f2471_0__init__Return(EOS(STATIC_2471(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2471_0__init__Return(EOS(STATIC_2471(java.lang.Object(ARRAY(i6)))), i219) -> f2551_0_createIntList_Store(EOS(STATIC_2551(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2551_0_createIntList_Store(EOS(STATIC_2551(java.lang.Object(ARRAY(i6)))), i219) -> f2564_0_createIntList_Inc(EOS(STATIC_2564(java.lang.Object(ARRAY(i6)))), i219) :|: TRUE f2564_0_createIntList_Inc(EOS(STATIC_2564(java.lang.Object(ARRAY(i6)))), i219) -> f2577_0_createIntList_JMP(EOS(STATIC_2577(java.lang.Object(ARRAY(i6)))), i219 + -1) :|: TRUE f2577_0_createIntList_JMP(EOS(STATIC_2577(java.lang.Object(ARRAY(i6)))), i289) -> f2579_0_createIntList_Load(EOS(STATIC_2579(java.lang.Object(ARRAY(i6)))), i289) :|: TRUE f2579_0_createIntList_Load(EOS(STATIC_2579(java.lang.Object(ARRAY(i6)))), i289) -> f1971_0_createIntList_Load(EOS(STATIC_1971(java.lang.Object(ARRAY(i6)))), i289) :|: TRUE f1971_0_createIntList_Load(EOS(STATIC_1971(java.lang.Object(ARRAY(i6)))), i207) -> f1977_0_createIntList_LE(EOS(STATIC_1977(java.lang.Object(ARRAY(i6)))), i207, i207) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1977_0_createIntList_LE(EOS(STATIC_1977(java.lang.Object(ARRAY(i6:0)))), i219:0, i219:0) -> f1977_0_createIntList_LE(EOS(STATIC_1977(java.lang.Object(ARRAY(i6:0)))), i219:0 - 1, i219:0 - 1) :|: i219:0 > 0 Filtered duplicate arguments: f1977_0_createIntList_LE(x1, x2, x3) -> f1977_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f1977_0_createIntList_LE(x1, x2) -> f1977_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f1977_0_createIntList_LE(i219:0) -> f1977_0_createIntList_LE(i219:0 - 1) :|: i219:0 > 0 ---------------------------------------- (14) Obligation: Rules: f1977_0_createIntList_LE(i219:0) -> f1977_0_createIntList_LE(i219:0 - 1) :|: i219:0 > 0 ---------------------------------------- (15) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (16) Obligation: Rules: f1977_0_createIntList_LE(i219:0) -> f1977_0_createIntList_LE(arith) :|: i219:0 > 0 && arith = i219:0 - 1 ---------------------------------------- (17) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1977_0_createIntList_LE(i219:0) -> f1977_0_createIntList_LE(arith) :|: i219:0 > 0 && arith = i219:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (18) Obligation: Termination digraph: Nodes: (1) f1977_0_createIntList_LE(i219:0) -> f1977_0_createIntList_LE(arith) :|: i219:0 > 0 && arith = i219:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f1977_0_createIntList_LE(i219:0:0) -> f1977_0_createIntList_LE(i219:0:0 - 1) :|: i219:0:0 > 0 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1977_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f1977_0_createIntList_LE(i219:0:0) -> f1977_0_createIntList_LE(c) :|: c = i219:0:0 - 1 && i219:0:0 > 0 ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1977_0_createIntList_LE(x)] = x The following rules are decreasing: f1977_0_createIntList_LE(i219:0:0) -> f1977_0_createIntList_LE(c) :|: c = i219:0:0 - 1 && i219:0:0 > 0 The following rules are bounded: f1977_0_createIntList_LE(i219:0:0) -> f1977_0_createIntList_LE(c) :|: c = i219:0:0 - 1 && i219:0:0 > 0 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Shuffle.main([Ljava/lang/String;)V SCC calls the following helper methods: IntList.reverse()LIntList; Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [value, next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (26) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 32 rules for P and 62 rules for R.P rules: f6280_0_main_NULL(EOS(STATIC_6280), java.lang.Object(o1177sub), java.lang.Object(o1177sub)) -> f6282_0_main_Load(EOS(STATIC_6282), java.lang.Object(o1177sub)) :|: TRUE f6282_0_main_Load(EOS(STATIC_6282), java.lang.Object(o1177sub)) -> f6284_0_main_InvokeMethod(EOS(STATIC_6284), java.lang.Object(o1177sub)) :|: TRUE f6284_0_main_InvokeMethod(EOS(STATIC_6284), java.lang.Object(o1177sub)) -> f6286_1_main_InvokeMethod(f6286_0_reverse_ConstantStackPush(EOS(STATIC_6286), java.lang.Object(o1177sub))) :|: TRUE f6286_0_reverse_ConstantStackPush(EOS(STATIC_6286), java.lang.Object(o1177sub)) -> f6435_0_reverse_ConstantStackPush(EOS(STATIC_6435), java.lang.Object(o1177sub)) :|: TRUE f6292_0_reverse_Return(EOS(STATIC_6292), java.lang.Object(IntList(EOC, i657, o1204))) -> f6293_0_main_Store(EOS(STATIC_6293), java.lang.Object(IntList(EOC, i657, o1204))) :|: TRUE f6293_0_main_Store(EOS(STATIC_6293), java.lang.Object(IntList(EOC, i657, o1204))) -> f6294_0_main_JMP(EOS(STATIC_6294), java.lang.Object(IntList(EOC, i657, o1204))) :|: TRUE f6294_0_main_JMP(EOS(STATIC_6294), java.lang.Object(IntList(EOC, i657, o1204))) -> f6295_0_main_Load(EOS(STATIC_6295), java.lang.Object(IntList(EOC, i657, o1204))) :|: TRUE f6295_0_main_Load(EOS(STATIC_6295), java.lang.Object(IntList(EOC, i657, o1204))) -> f6257_0_main_Load(EOS(STATIC_6257), java.lang.Object(IntList(EOC, i657, o1204))) :|: TRUE f6257_0_main_Load(EOS(STATIC_6257), java.lang.Object(IntList(EOC, i603, o1113))) -> f6258_0_main_NULL(EOS(STATIC_6258), java.lang.Object(IntList(EOC, i603, o1113)), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6258_0_main_NULL(EOS(STATIC_6258), java.lang.Object(IntList(EOC, i603, o1113)), java.lang.Object(IntList(EOC, i603, o1113))) -> f6259_0_main_New(EOS(STATIC_6259), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6259_0_main_New(EOS(STATIC_6259), java.lang.Object(IntList(EOC, i603, o1113))) -> f6260_0_main_Duplicate(EOS(STATIC_6260), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6260_0_main_Duplicate(EOS(STATIC_6260), java.lang.Object(IntList(EOC, i603, o1113))) -> f6261_0_main_Load(EOS(STATIC_6261), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6261_0_main_Load(EOS(STATIC_6261), java.lang.Object(IntList(EOC, i603, o1113))) -> f6262_0_main_FieldAccess(EOS(STATIC_6262), java.lang.Object(IntList(EOC, i603, o1113)), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6262_0_main_FieldAccess(EOS(STATIC_6262), java.lang.Object(IntList(EOC, i603, o1113)), java.lang.Object(IntList(EOC, i603, o1113))) -> f6263_0_main_Load(EOS(STATIC_6263), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6263_0_main_Load(EOS(STATIC_6263), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6264_0_main_InvokeMethod(EOS(STATIC_6264), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6264_0_main_InvokeMethod(EOS(STATIC_6264), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6265_0__init__Load(EOS(STATIC_6265), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6265_0__init__Load(EOS(STATIC_6265), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6266_0__init__InvokeMethod(EOS(STATIC_6266), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6266_0__init__InvokeMethod(EOS(STATIC_6266), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6267_0__init__Load(EOS(STATIC_6267), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6267_0__init__Load(EOS(STATIC_6267), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6268_0__init__Load(EOS(STATIC_6268), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6268_0__init__Load(EOS(STATIC_6268), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6269_0__init__FieldAccess(EOS(STATIC_6269), java.lang.Object(IntList(EOC, i603, o1113)), i603) :|: TRUE f6269_0__init__FieldAccess(EOS(STATIC_6269), java.lang.Object(IntList(EOC, i603, o1113)), i603) -> f6270_0__init__Load(EOS(STATIC_6270), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6270_0__init__Load(EOS(STATIC_6270), java.lang.Object(IntList(EOC, i603, o1113))) -> f6271_0__init__Load(EOS(STATIC_6271), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6271_0__init__Load(EOS(STATIC_6271), java.lang.Object(IntList(EOC, i603, o1113))) -> f6272_0__init__FieldAccess(EOS(STATIC_6272), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6272_0__init__FieldAccess(EOS(STATIC_6272), java.lang.Object(IntList(EOC, i603, o1113))) -> f6273_0__init__Return(EOS(STATIC_6273), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6273_0__init__Return(EOS(STATIC_6273), java.lang.Object(IntList(EOC, i603, o1113))) -> f6274_0_main_Store(EOS(STATIC_6274), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6274_0_main_Store(EOS(STATIC_6274), java.lang.Object(IntList(EOC, i603, o1113))) -> f6275_0_main_Load(EOS(STATIC_6275), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6275_0_main_Load(EOS(STATIC_6275), java.lang.Object(IntList(EOC, i603, o1113))) -> f6276_0_main_FieldAccess(EOS(STATIC_6276), java.lang.Object(IntList(EOC, i603, o1113))) :|: TRUE f6276_0_main_FieldAccess(EOS(STATIC_6276), java.lang.Object(IntList(EOC, i603, o1113))) -> f6277_0_main_Store(EOS(STATIC_6277), o1113) :|: TRUE f6277_0_main_Store(EOS(STATIC_6277), o1113) -> f6278_0_main_Load(EOS(STATIC_6278), o1113) :|: TRUE f6278_0_main_Load(EOS(STATIC_6278), o1113) -> f6279_0_main_NULL(EOS(STATIC_6279), o1113, o1113) :|: TRUE f6279_0_main_NULL(EOS(STATIC_6279), java.lang.Object(o1177sub), java.lang.Object(o1177sub)) -> f6280_0_main_NULL(EOS(STATIC_6280), java.lang.Object(o1177sub), java.lang.Object(o1177sub)) :|: TRUE f6286_1_main_InvokeMethod(f3010_0_reverse_Return(EOS(STATIC_3010), java.lang.Object(IntList(EOC, i657, o1204)))) -> f6292_0_reverse_Return(EOS(STATIC_6292), java.lang.Object(IntList(EOC, i657, o1204))) :|: TRUE R rules: f6286_0_reverse_ConstantStackPush(EOS(STATIC_6286), java.lang.Object(o1177sub)) -> f6288_0_reverse_ConstantStackPush(EOS(STATIC_6288), java.lang.Object(o1177sub)) :|: TRUE f6288_0_reverse_ConstantStackPush(EOS(STATIC_6288), java.lang.Object(o1177sub)) -> f6289_0_reverse_ConstantStackPush(EOS(STATIC_6289), java.lang.Object(o1177sub)) :|: TRUE f6289_0_reverse_ConstantStackPush(EOS(STATIC_6289), java.lang.Object(o1193sub)) -> f6290_0_reverse_ConstantStackPush(EOS(STATIC_6290), java.lang.Object(o1193sub)) :|: TRUE f6290_0_reverse_ConstantStackPush(EOS(STATIC_6290), java.lang.Object(o1193sub)) -> f6291_0_reverse_ConstantStackPush(EOS(STATIC_6291), java.lang.Object(o1193sub)) :|: TRUE f6291_0_reverse_ConstantStackPush(EOS(STATIC_6291), java.lang.Object(o1193sub)) -> f2584_0_reverse_ConstantStackPush(EOS(STATIC_2584), java.lang.Object(o1193sub)) :|: TRUE f2584_0_reverse_ConstantStackPush(EOS(STATIC_2584), java.lang.Object(o273sub)) -> f2585_0_reverse_Store(EOS(STATIC_2585), java.lang.Object(o273sub), NULL) :|: TRUE f2585_0_reverse_Store(EOS(STATIC_2585), java.lang.Object(o273sub), NULL) -> f2586_0_reverse_Load(EOS(STATIC_2586), java.lang.Object(o273sub), NULL) :|: TRUE f2586_0_reverse_Load(EOS(STATIC_2586), java.lang.Object(o273sub), NULL) -> f2587_0_reverse_Store(EOS(STATIC_2587), NULL, java.lang.Object(o273sub)) :|: TRUE f2587_0_reverse_Store(EOS(STATIC_2587), NULL, java.lang.Object(o273sub)) -> f2588_0_reverse_Load(EOS(STATIC_2588), NULL, java.lang.Object(o273sub)) :|: TRUE f2588_0_reverse_Load(EOS(STATIC_2588), NULL, java.lang.Object(o273sub)) -> f2589_0_reverse_NULL(EOS(STATIC_2589), NULL, java.lang.Object(o273sub), java.lang.Object(o273sub)) :|: TRUE f2589_0_reverse_NULL(EOS(STATIC_2589), NULL, java.lang.Object(o273sub), java.lang.Object(o273sub)) -> f2591_0_reverse_New(EOS(STATIC_2591), NULL, java.lang.Object(o273sub)) :|: TRUE f2591_0_reverse_New(EOS(STATIC_2591), NULL, java.lang.Object(o273sub)) -> f2593_0_reverse_Duplicate(EOS(STATIC_2593), NULL, java.lang.Object(o273sub), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE f2593_0_reverse_Duplicate(EOS(STATIC_2593), NULL, java.lang.Object(o273sub), java.lang.Object(IntList(EOC, matching1, NULL))) -> f2594_0_reverse_Load(EOS(STATIC_2594), NULL, java.lang.Object(o273sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 f2594_0_reverse_Load(EOS(STATIC_2594), NULL, java.lang.Object(o273sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f2596_0_reverse_FieldAccess(EOS(STATIC_2596), NULL, java.lang.Object(o273sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o273sub)) :|: TRUE && matching1 = 0 && matching2 = 0 f2596_0_reverse_FieldAccess(EOS(STATIC_2596), NULL, java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i298, o284))) -> f2601_0_reverse_FieldAccess(EOS(STATIC_2601), NULL, java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i298, o284))) :|: TRUE && matching1 = 0 && matching2 = 0 f2601_0_reverse_FieldAccess(EOS(STATIC_2601), NULL, java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i298, o284))) -> f2603_0_reverse_Load(EOS(STATIC_2603), NULL, java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298) :|: TRUE && matching1 = 0 && matching2 = 0 f2603_0_reverse_Load(EOS(STATIC_2603), NULL, java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298) -> f2605_0_reverse_InvokeMethod(EOS(STATIC_2605), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 f2605_0_reverse_InvokeMethod(EOS(STATIC_2605), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298, NULL) -> f2608_0__init__Load(EOS(STATIC_2608), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 f2608_0__init__Load(EOS(STATIC_2608), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298, NULL) -> f2609_0__init__InvokeMethod(EOS(STATIC_2609), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298, NULL, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f2609_0__init__InvokeMethod(EOS(STATIC_2609), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298, NULL, java.lang.Object(IntList(EOC, matching3, NULL))) -> f2610_0__init__Load(EOS(STATIC_2610), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2610_0__init__Load(EOS(STATIC_2610), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298, NULL) -> f2611_0__init__Load(EOS(STATIC_2611), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i298, NULL, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f2611_0__init__Load(EOS(STATIC_2611), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i298, NULL, java.lang.Object(IntList(EOC, matching3, NULL))) -> f2612_0__init__FieldAccess(EOS(STATIC_2612), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), NULL, java.lang.Object(IntList(EOC, 0, NULL)), i298) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2612_0__init__FieldAccess(EOS(STATIC_2612), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), NULL, java.lang.Object(IntList(EOC, matching3, NULL)), i298) -> f2613_0__init__Load(EOS(STATIC_2613), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, NULL)), NULL) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2613_0__init__Load(EOS(STATIC_2613), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, NULL)), NULL) -> f2614_0__init__Load(EOS(STATIC_2614), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), NULL, java.lang.Object(IntList(EOC, i298, NULL))) :|: TRUE f2614_0__init__Load(EOS(STATIC_2614), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), NULL, java.lang.Object(IntList(EOC, i298, NULL))) -> f2615_0__init__FieldAccess(EOS(STATIC_2615), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, NULL)), NULL) :|: TRUE f2615_0__init__FieldAccess(EOS(STATIC_2615), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, NULL)), NULL) -> f2616_0__init__Return(EOS(STATIC_2616), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL))) :|: TRUE f2616_0__init__Return(EOS(STATIC_2616), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL))) -> f2617_0_reverse_Store(EOS(STATIC_2617), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL))) :|: TRUE f2617_0_reverse_Store(EOS(STATIC_2617), java.lang.Object(IntList(EOC, i298, o284)), java.lang.Object(IntList(EOC, i298, NULL))) -> f2618_0_reverse_Load(EOS(STATIC_2618), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, o284))) :|: TRUE f2618_0_reverse_Load(EOS(STATIC_2618), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, o284))) -> f2619_0_reverse_FieldAccess(EOS(STATIC_2619), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, o284))) :|: TRUE f2619_0_reverse_FieldAccess(EOS(STATIC_2619), java.lang.Object(IntList(EOC, i298, NULL)), java.lang.Object(IntList(EOC, i298, o284))) -> f2620_0_reverse_Store(EOS(STATIC_2620), java.lang.Object(IntList(EOC, i298, NULL)), o284) :|: TRUE f2620_0_reverse_Store(EOS(STATIC_2620), java.lang.Object(IntList(EOC, i298, NULL)), o284) -> f2621_0_reverse_JMP(EOS(STATIC_2621), java.lang.Object(IntList(EOC, i298, NULL)), o284) :|: TRUE f2621_0_reverse_JMP(EOS(STATIC_2621), java.lang.Object(IntList(EOC, i298, NULL)), o284) -> f2622_0_reverse_Load(EOS(STATIC_2622), java.lang.Object(IntList(EOC, i298, NULL)), o284) :|: TRUE f2622_0_reverse_Load(EOS(STATIC_2622), java.lang.Object(IntList(EOC, i298, NULL)), o284) -> f2839_0_reverse_Load(EOS(STATIC_2839), java.lang.Object(IntList(EOC, i298, NULL)), o284) :|: TRUE f2839_0_reverse_Load(EOS(STATIC_2839), java.lang.Object(IntList(EOC, i334, o421)), o422) -> f2976_0_reverse_Load(EOS(STATIC_2976), java.lang.Object(IntList(EOC, i334, o421)), o422) :|: TRUE f2976_0_reverse_Load(EOS(STATIC_2976), java.lang.Object(IntList(EOC, i387, o586)), o587) -> f2986_0_reverse_NULL(EOS(STATIC_2986), java.lang.Object(IntList(EOC, i387, o586)), o587, o587) :|: TRUE f2986_0_reverse_NULL(EOS(STATIC_2986), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(o617sub)) -> f2992_0_reverse_NULL(EOS(STATIC_2992), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(o617sub)) :|: TRUE f2986_0_reverse_NULL(EOS(STATIC_2986), java.lang.Object(IntList(EOC, i387, o586)), NULL, NULL) -> f2993_0_reverse_NULL(EOS(STATIC_2993), java.lang.Object(IntList(EOC, i387, o586)), NULL, NULL) :|: TRUE f2992_0_reverse_NULL(EOS(STATIC_2992), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(o617sub)) -> f3006_0_reverse_New(EOS(STATIC_3006), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub)) :|: TRUE f2993_0_reverse_NULL(EOS(STATIC_2993), java.lang.Object(IntList(EOC, i387, o586)), NULL, NULL) -> f3007_0_reverse_Load(EOS(STATIC_3007), java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE f3006_0_reverse_New(EOS(STATIC_3006), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub)) -> f3009_0_reverse_Duplicate(EOS(STATIC_3009), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE f3007_0_reverse_Load(EOS(STATIC_3007), java.lang.Object(IntList(EOC, i387, o586))) -> f3010_0_reverse_Return(EOS(STATIC_3010), java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE f3009_0_reverse_Duplicate(EOS(STATIC_3009), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(IntList(EOC, matching1, NULL))) -> f3012_0_reverse_Load(EOS(STATIC_3012), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 f3012_0_reverse_Load(EOS(STATIC_3012), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f3021_0_reverse_FieldAccess(EOS(STATIC_3021), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(o617sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o617sub)) :|: TRUE && matching1 = 0 && matching2 = 0 f3021_0_reverse_FieldAccess(EOS(STATIC_3021), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i405, o663))) -> f3045_0_reverse_FieldAccess(EOS(STATIC_3045), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE && matching1 = 0 && matching2 = 0 f3045_0_reverse_FieldAccess(EOS(STATIC_3045), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i405, o663))) -> f3073_0_reverse_Load(EOS(STATIC_3073), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405) :|: TRUE && matching1 = 0 && matching2 = 0 f3073_0_reverse_Load(EOS(STATIC_3073), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405) -> f3079_0_reverse_InvokeMethod(EOS(STATIC_3079), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE && matching1 = 0 && matching2 = 0 f3079_0_reverse_InvokeMethod(EOS(STATIC_3079), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) -> f3082_0__init__Load(EOS(STATIC_3082), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE && matching1 = 0 && matching2 = 0 f3082_0__init__Load(EOS(STATIC_3082), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) -> f3093_0__init__InvokeMethod(EOS(STATIC_3093), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f3093_0__init__InvokeMethod(EOS(STATIC_3093), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, matching3, NULL))) -> f3099_0__init__Load(EOS(STATIC_3099), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f3099_0__init__Load(EOS(STATIC_3099), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586))) -> f3102_0__init__Load(EOS(STATIC_3102), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f3102_0__init__Load(EOS(STATIC_3102), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i405, java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, matching3, NULL))) -> f3108_0__init__FieldAccess(EOS(STATIC_3108), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, 0, NULL)), i405) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f3108_0__init__FieldAccess(EOS(STATIC_3108), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, matching3, NULL)), i405) -> f3117_0__init__Load(EOS(STATIC_3117), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f3117_0__init__Load(EOS(STATIC_3117), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586))) -> f3125_0__init__Load(EOS(STATIC_3125), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, NULL))) :|: TRUE f3125_0__init__Load(EOS(STATIC_3125), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586)), java.lang.Object(IntList(EOC, i405, NULL))) -> f3132_0__init__FieldAccess(EOS(STATIC_3132), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586))) :|: TRUE f3132_0__init__FieldAccess(EOS(STATIC_3132), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i405, NULL)), java.lang.Object(IntList(EOC, i387, o586))) -> f3137_0__init__Return(EOS(STATIC_3137), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586))))) :|: TRUE f3137_0__init__Return(EOS(STATIC_3137), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586))))) -> f3141_0_reverse_Store(EOS(STATIC_3141), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586))))) :|: TRUE f3141_0_reverse_Store(EOS(STATIC_3141), java.lang.Object(IntList(EOC, i405, o663)), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586))))) -> f3147_0_reverse_Load(EOS(STATIC_3147), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3147_0_reverse_Load(EOS(STATIC_3147), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), java.lang.Object(IntList(EOC, i405, o663))) -> f3154_0_reverse_FieldAccess(EOS(STATIC_3154), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), java.lang.Object(IntList(EOC, i405, o663))) :|: TRUE f3154_0_reverse_FieldAccess(EOS(STATIC_3154), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), java.lang.Object(IntList(EOC, i405, o663))) -> f3162_0_reverse_Store(EOS(STATIC_3162), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) :|: TRUE f3162_0_reverse_Store(EOS(STATIC_3162), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) -> f3168_0_reverse_JMP(EOS(STATIC_3168), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) :|: TRUE f3168_0_reverse_JMP(EOS(STATIC_3168), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) -> f3178_0_reverse_Load(EOS(STATIC_3178), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) :|: TRUE f3178_0_reverse_Load(EOS(STATIC_3178), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) -> f2976_0_reverse_Load(EOS(STATIC_2976), java.lang.Object(IntList(EOC, i405, java.lang.Object(IntList(EOC, i387, o586)))), o663) :|: TRUE Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f6286_1_main_InvokeMethod(f3010_0_reverse_Return(EOS(STATIC_3010), java.lang.Object(IntList(EOC, i657:0, java.lang.Object(o1177sub:0))))) -> f6286_1_main_InvokeMethod(f6435_0_reverse_ConstantStackPush(EOS(STATIC_6435), java.lang.Object(o1177sub:0))) :|: TRUE R rules: Filtered ground terms: f3010_0_reverse_Return(x1, x2) -> f3010_0_reverse_Return(x2) f6435_0_reverse_ConstantStackPush(x1, x2) -> f6435_0_reverse_ConstantStackPush(x2) IntList(x1, x2, x3) -> IntList(x2, x3) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F6286_1_MAIN_INVOKEMETHOD(f3010_0_reverse_Return(java.lang.Object(IntList(i657:0:0, java.lang.Object(o1177sub:0:0))))) -> F6286_1_MAIN_INVOKEMETHOD(f6435_0_reverse_ConstantStackPush(java.lang.Object(o1177sub:0:0))) :|: TRUE R rules: ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: F6286_1_MAIN_INVOKEMETHOD(f3010_0_reverse_Return(java.lang.Object(IntList(i657:0:0, java.lang.Object(o1177sub:0:0))))) -> F6286_1_MAIN_INVOKEMETHOD(f6435_0_reverse_ConstantStackPush(java.lang.Object(o1177sub:0:0))) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (29) TRUE