/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: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 699 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 94 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToIRSProof [SOUND, 53 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, 13 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (24) YES (25) JBCTerminationSCC (26) SCCToQDPProof [SOUND, 204 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 113 nodes with 1 SCC. IntList.createIntList()LIntList;: Graph of 281 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: f3892_0_reverse_NULL(EOS(STATIC_3892), java.lang.Object(o790sub), java.lang.Object(o790sub)) -> f3898_0_reverse_NULL(EOS(STATIC_3898), java.lang.Object(o790sub), java.lang.Object(o790sub)) :|: TRUE f3898_0_reverse_NULL(EOS(STATIC_3898), java.lang.Object(o790sub), java.lang.Object(o790sub)) -> f3911_0_reverse_New(EOS(STATIC_3911), java.lang.Object(o790sub)) :|: TRUE f3911_0_reverse_New(EOS(STATIC_3911), java.lang.Object(o790sub)) -> f3916_0_reverse_Duplicate(EOS(STATIC_3916), java.lang.Object(o790sub)) :|: TRUE f3916_0_reverse_Duplicate(EOS(STATIC_3916), java.lang.Object(o790sub)) -> f3922_0_reverse_Load(EOS(STATIC_3922), java.lang.Object(o790sub)) :|: TRUE f3922_0_reverse_Load(EOS(STATIC_3922), java.lang.Object(o790sub)) -> f3954_0_reverse_FieldAccess(EOS(STATIC_3954), java.lang.Object(o790sub), java.lang.Object(o790sub)) :|: TRUE f3954_0_reverse_FieldAccess(EOS(STATIC_3954), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, o835))) -> f3978_0_reverse_FieldAccess(EOS(STATIC_3978), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f3978_0_reverse_FieldAccess(EOS(STATIC_3978), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, o835))) -> f3998_0_reverse_Load(EOS(STATIC_3998), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f3998_0_reverse_Load(EOS(STATIC_3998), java.lang.Object(IntList(EOC, i541, o835))) -> f4004_0_reverse_InvokeMethod(EOS(STATIC_4004), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4004_0_reverse_InvokeMethod(EOS(STATIC_4004), java.lang.Object(IntList(EOC, i541, o835))) -> f4008_0__init__Load(EOS(STATIC_4008), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4008_0__init__Load(EOS(STATIC_4008), java.lang.Object(IntList(EOC, i541, o835))) -> f4023_0__init__InvokeMethod(EOS(STATIC_4023), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4023_0__init__InvokeMethod(EOS(STATIC_4023), java.lang.Object(IntList(EOC, i541, o835))) -> f4028_0__init__Load(EOS(STATIC_4028), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4028_0__init__Load(EOS(STATIC_4028), java.lang.Object(IntList(EOC, i541, o835))) -> f4033_0__init__Load(EOS(STATIC_4033), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4033_0__init__Load(EOS(STATIC_4033), java.lang.Object(IntList(EOC, i541, o835))) -> f4036_0__init__FieldAccess(EOS(STATIC_4036), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4036_0__init__FieldAccess(EOS(STATIC_4036), java.lang.Object(IntList(EOC, i541, o835))) -> f4065_0__init__Load(EOS(STATIC_4065), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4065_0__init__Load(EOS(STATIC_4065), java.lang.Object(IntList(EOC, i541, o835))) -> f4071_0__init__Load(EOS(STATIC_4071), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4071_0__init__Load(EOS(STATIC_4071), java.lang.Object(IntList(EOC, i541, o835))) -> f4079_0__init__FieldAccess(EOS(STATIC_4079), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4079_0__init__FieldAccess(EOS(STATIC_4079), java.lang.Object(IntList(EOC, i541, o835))) -> f4096_0__init__Return(EOS(STATIC_4096), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4096_0__init__Return(EOS(STATIC_4096), java.lang.Object(IntList(EOC, i541, o835))) -> f4099_0_reverse_Store(EOS(STATIC_4099), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4099_0_reverse_Store(EOS(STATIC_4099), java.lang.Object(IntList(EOC, i541, o835))) -> f4103_0_reverse_Load(EOS(STATIC_4103), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4103_0_reverse_Load(EOS(STATIC_4103), java.lang.Object(IntList(EOC, i541, o835))) -> f4110_0_reverse_FieldAccess(EOS(STATIC_4110), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4110_0_reverse_FieldAccess(EOS(STATIC_4110), java.lang.Object(IntList(EOC, i541, o835))) -> f4118_0_reverse_Store(EOS(STATIC_4118), o835) :|: TRUE f4118_0_reverse_Store(EOS(STATIC_4118), o835) -> f4126_0_reverse_JMP(EOS(STATIC_4126), o835) :|: TRUE f4126_0_reverse_JMP(EOS(STATIC_4126), o835) -> f4139_0_reverse_Load(EOS(STATIC_4139), o835) :|: TRUE f4139_0_reverse_Load(EOS(STATIC_4139), o835) -> f3880_0_reverse_Load(EOS(STATIC_3880), o835) :|: TRUE f3880_0_reverse_Load(EOS(STATIC_3880), o759) -> f3892_0_reverse_NULL(EOS(STATIC_3892), o759, o759) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f3892_0_reverse_NULL(EOS(STATIC_3892), java.lang.Object(IntList(EOC, i541:0, o835:0)), java.lang.Object(IntList(EOC, i541:0, o835:0))) -> f3892_0_reverse_NULL(EOS(STATIC_3892), o835:0, o835:0) :|: TRUE R rules: Filtered ground terms: f3892_0_reverse_NULL(x1, x2, x3) -> f3892_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: f3892_0_reverse_NULL(x1, x2) -> f3892_0_reverse_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F3892_0_REVERSE_NULL(java.lang.Object(IntList(o835:0:0))) -> F3892_0_REVERSE_NULL(o835:0:0) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F3892_0_REVERSE_NULL(java.lang.Object(IntList(o835:0:0))) -> F3892_0_REVERSE_NULL(o835: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: *F3892_0_REVERSE_NULL(java.lang.Object(IntList(o835:0:0))) -> F3892_0_REVERSE_NULL(o835: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: f2692_0_createIntList_LE(EOS(STATIC_2692(java.lang.Object(ARRAY(i6)))), i353, i353) -> f2695_0_createIntList_LE(EOS(STATIC_2695(java.lang.Object(ARRAY(i6)))), i353, i353) :|: TRUE f2695_0_createIntList_LE(EOS(STATIC_2695(java.lang.Object(ARRAY(i6)))), i353, i353) -> f2698_0_createIntList_InvokeMethod(EOS(STATIC_2698(java.lang.Object(ARRAY(i6)))), i353) :|: i353 > 0 f2698_0_createIntList_InvokeMethod(EOS(STATIC_2698(java.lang.Object(ARRAY(i6)))), i353) -> f2701_0_random_FieldAccess(EOS(STATIC_2701(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2701_0_random_FieldAccess(EOS(STATIC_2701(java.lang.Object(ARRAY(i6)))), i353) -> f2720_0_random_FieldAccess(EOS(STATIC_2720(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) :|: TRUE f2720_0_random_FieldAccess(EOS(STATIC_2720(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) -> f2736_0_random_ArrayAccess(EOS(STATIC_2736(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) :|: TRUE f2736_0_random_ArrayAccess(EOS(STATIC_2736(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) -> f2740_0_random_ArrayAccess(EOS(STATIC_2740(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) :|: TRUE f2740_0_random_ArrayAccess(EOS(STATIC_2740(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(ARRAY(i6))) -> f2748_0_random_Store(EOS(STATIC_2748(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2748_0_random_Store(EOS(STATIC_2748(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2755_0_random_FieldAccess(EOS(STATIC_2755(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2755_0_random_FieldAccess(EOS(STATIC_2755(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2762_0_random_ConstantStackPush(EOS(STATIC_2762(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2762_0_random_ConstantStackPush(EOS(STATIC_2762(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2769_0_random_IntArithmetic(EOS(STATIC_2769(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2769_0_random_IntArithmetic(EOS(STATIC_2769(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2821_0_random_FieldAccess(EOS(STATIC_2821(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2821_0_random_FieldAccess(EOS(STATIC_2821(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2828_0_random_Load(EOS(STATIC_2828(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2828_0_random_Load(EOS(STATIC_2828(java.lang.Object(ARRAY(i6)))), i353, o376) -> f2837_0_random_InvokeMethod(EOS(STATIC_2837(java.lang.Object(ARRAY(i6)))), i353, o376) :|: TRUE f2837_0_random_InvokeMethod(EOS(STATIC_2837(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o393sub)) -> f2844_0_random_InvokeMethod(EOS(STATIC_2844(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o393sub)) :|: TRUE f2844_0_random_InvokeMethod(EOS(STATIC_2844(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) -> f2850_0_random_InvokeMethod(EOS(STATIC_2850(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) :|: TRUE f2850_0_random_InvokeMethod(EOS(STATIC_2850(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) -> f2862_0_length_Load(EOS(STATIC_2862(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) :|: TRUE f2862_0_length_Load(EOS(STATIC_2862(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) -> f2876_0_length_FieldAccess(EOS(STATIC_2876(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(o394sub)) :|: TRUE f2876_0_length_FieldAccess(EOS(STATIC_2876(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(java.lang.String(EOC, i395))) -> f2888_0_length_FieldAccess(EOS(STATIC_2888(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(java.lang.String(EOC, i395))) :|: TRUE f2888_0_length_FieldAccess(EOS(STATIC_2888(java.lang.Object(ARRAY(i6)))), i353, java.lang.Object(java.lang.String(EOC, i395))) -> f2897_0_length_Return(EOS(STATIC_2897(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2897_0_length_Return(EOS(STATIC_2897(java.lang.Object(ARRAY(i6)))), i353) -> f2957_0_random_Return(EOS(STATIC_2957(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2957_0_random_Return(EOS(STATIC_2957(java.lang.Object(ARRAY(i6)))), i353) -> f2965_0_createIntList_Store(EOS(STATIC_2965(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2965_0_createIntList_Store(EOS(STATIC_2965(java.lang.Object(ARRAY(i6)))), i353) -> f2975_0_createIntList_New(EOS(STATIC_2975(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2975_0_createIntList_New(EOS(STATIC_2975(java.lang.Object(ARRAY(i6)))), i353) -> f2988_0_createIntList_Duplicate(EOS(STATIC_2988(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2988_0_createIntList_Duplicate(EOS(STATIC_2988(java.lang.Object(ARRAY(i6)))), i353) -> f2996_0_createIntList_Load(EOS(STATIC_2996(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f2996_0_createIntList_Load(EOS(STATIC_2996(java.lang.Object(ARRAY(i6)))), i353) -> f3009_0_createIntList_Load(EOS(STATIC_3009(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3009_0_createIntList_Load(EOS(STATIC_3009(java.lang.Object(ARRAY(i6)))), i353) -> f3075_0_createIntList_InvokeMethod(EOS(STATIC_3075(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3075_0_createIntList_InvokeMethod(EOS(STATIC_3075(java.lang.Object(ARRAY(i6)))), i353) -> f3091_0__init__Load(EOS(STATIC_3091(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3091_0__init__Load(EOS(STATIC_3091(java.lang.Object(ARRAY(i6)))), i353) -> f3117_0__init__InvokeMethod(EOS(STATIC_3117(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3117_0__init__InvokeMethod(EOS(STATIC_3117(java.lang.Object(ARRAY(i6)))), i353) -> f3135_0__init__Load(EOS(STATIC_3135(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3135_0__init__Load(EOS(STATIC_3135(java.lang.Object(ARRAY(i6)))), i353) -> f3211_0__init__Load(EOS(STATIC_3211(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3211_0__init__Load(EOS(STATIC_3211(java.lang.Object(ARRAY(i6)))), i353) -> f3241_0__init__FieldAccess(EOS(STATIC_3241(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3241_0__init__FieldAccess(EOS(STATIC_3241(java.lang.Object(ARRAY(i6)))), i353) -> f3257_0__init__Load(EOS(STATIC_3257(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3257_0__init__Load(EOS(STATIC_3257(java.lang.Object(ARRAY(i6)))), i353) -> f3315_0__init__Load(EOS(STATIC_3315(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3315_0__init__Load(EOS(STATIC_3315(java.lang.Object(ARRAY(i6)))), i353) -> f3331_0__init__FieldAccess(EOS(STATIC_3331(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3331_0__init__FieldAccess(EOS(STATIC_3331(java.lang.Object(ARRAY(i6)))), i353) -> f3424_0__init__Return(EOS(STATIC_3424(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3424_0__init__Return(EOS(STATIC_3424(java.lang.Object(ARRAY(i6)))), i353) -> f3441_0_createIntList_Store(EOS(STATIC_3441(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3441_0_createIntList_Store(EOS(STATIC_3441(java.lang.Object(ARRAY(i6)))), i353) -> f3449_0_createIntList_Inc(EOS(STATIC_3449(java.lang.Object(ARRAY(i6)))), i353) :|: TRUE f3449_0_createIntList_Inc(EOS(STATIC_3449(java.lang.Object(ARRAY(i6)))), i353) -> f3457_0_createIntList_JMP(EOS(STATIC_3457(java.lang.Object(ARRAY(i6)))), i353 + -1) :|: TRUE f3457_0_createIntList_JMP(EOS(STATIC_3457(java.lang.Object(ARRAY(i6)))), i439) -> f3491_0_createIntList_Load(EOS(STATIC_3491(java.lang.Object(ARRAY(i6)))), i439) :|: TRUE f3491_0_createIntList_Load(EOS(STATIC_3491(java.lang.Object(ARRAY(i6)))), i439) -> f2689_0_createIntList_Load(EOS(STATIC_2689(java.lang.Object(ARRAY(i6)))), i439) :|: TRUE f2689_0_createIntList_Load(EOS(STATIC_2689(java.lang.Object(ARRAY(i6)))), i335) -> f2692_0_createIntList_LE(EOS(STATIC_2692(java.lang.Object(ARRAY(i6)))), i335, i335) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2692_0_createIntList_LE(EOS(STATIC_2692(java.lang.Object(ARRAY(i6:0)))), i353:0, i353:0) -> f2692_0_createIntList_LE(EOS(STATIC_2692(java.lang.Object(ARRAY(i6:0)))), i353:0 - 1, i353:0 - 1) :|: i353:0 > 0 Filtered duplicate arguments: f2692_0_createIntList_LE(x1, x2, x3) -> f2692_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f2692_0_createIntList_LE(x1, x2) -> f2692_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2692_0_createIntList_LE(i353:0) -> f2692_0_createIntList_LE(i353:0 - 1) :|: i353:0 > 0 ---------------------------------------- (14) Obligation: Rules: f2692_0_createIntList_LE(i353:0) -> f2692_0_createIntList_LE(i353:0 - 1) :|: i353:0 > 0 ---------------------------------------- (15) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (16) Obligation: Rules: f2692_0_createIntList_LE(i353:0) -> f2692_0_createIntList_LE(arith) :|: i353:0 > 0 && arith = i353:0 - 1 ---------------------------------------- (17) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2692_0_createIntList_LE(i353:0) -> f2692_0_createIntList_LE(arith) :|: i353:0 > 0 && arith = i353:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (18) Obligation: Termination digraph: Nodes: (1) f2692_0_createIntList_LE(i353:0) -> f2692_0_createIntList_LE(arith) :|: i353:0 > 0 && arith = i353:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f2692_0_createIntList_LE(i353:0:0) -> f2692_0_createIntList_LE(i353:0:0 - 1) :|: i353:0:0 > 0 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2692_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f2692_0_createIntList_LE(i353:0:0) -> f2692_0_createIntList_LE(c) :|: c = i353:0:0 - 1 && i353:0:0 > 0 ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2692_0_createIntList_LE(x)] = x The following rules are decreasing: f2692_0_createIntList_LE(i353:0:0) -> f2692_0_createIntList_LE(c) :|: c = i353:0:0 - 1 && i353:0:0 > 0 The following rules are bounded: f2692_0_createIntList_LE(i353:0:0) -> f2692_0_createIntList_LE(c) :|: c = i353:0:0 - 1 && i353: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: f6339_0_main_NULL(EOS(STATIC_6339), java.lang.Object(o1456sub), java.lang.Object(o1456sub)) -> f6342_0_main_Load(EOS(STATIC_6342), java.lang.Object(o1456sub)) :|: TRUE f6342_0_main_Load(EOS(STATIC_6342), java.lang.Object(o1456sub)) -> f6352_0_main_InvokeMethod(EOS(STATIC_6352), java.lang.Object(o1456sub)) :|: TRUE f6352_0_main_InvokeMethod(EOS(STATIC_6352), java.lang.Object(o1456sub)) -> f6358_1_main_InvokeMethod(f6358_0_reverse_ConstantStackPush(EOS(STATIC_6358), java.lang.Object(o1456sub))) :|: TRUE f6358_0_reverse_ConstantStackPush(EOS(STATIC_6358), java.lang.Object(o1456sub)) -> f6692_0_reverse_ConstantStackPush(EOS(STATIC_6692), java.lang.Object(o1456sub)) :|: TRUE f6549_0_reverse_Return(EOS(STATIC_6549), java.lang.Object(IntList(EOC, i839, o1486))) -> f6550_0_main_Store(EOS(STATIC_6550), java.lang.Object(IntList(EOC, i839, o1486))) :|: TRUE f6550_0_main_Store(EOS(STATIC_6550), java.lang.Object(IntList(EOC, i839, o1486))) -> f6551_0_main_JMP(EOS(STATIC_6551), java.lang.Object(IntList(EOC, i839, o1486))) :|: TRUE f6551_0_main_JMP(EOS(STATIC_6551), java.lang.Object(IntList(EOC, i839, o1486))) -> f6552_0_main_Load(EOS(STATIC_6552), java.lang.Object(IntList(EOC, i839, o1486))) :|: TRUE f6552_0_main_Load(EOS(STATIC_6552), java.lang.Object(IntList(EOC, i839, o1486))) -> f6192_0_main_Load(EOS(STATIC_6192), java.lang.Object(IntList(EOC, i839, o1486))) :|: TRUE f6192_0_main_Load(EOS(STATIC_6192), java.lang.Object(IntList(EOC, i785, o1382))) -> f6204_0_main_NULL(EOS(STATIC_6204), java.lang.Object(IntList(EOC, i785, o1382)), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6204_0_main_NULL(EOS(STATIC_6204), java.lang.Object(IntList(EOC, i785, o1382)), java.lang.Object(IntList(EOC, i785, o1382))) -> f6207_0_main_New(EOS(STATIC_6207), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6207_0_main_New(EOS(STATIC_6207), java.lang.Object(IntList(EOC, i785, o1382))) -> f6209_0_main_Duplicate(EOS(STATIC_6209), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6209_0_main_Duplicate(EOS(STATIC_6209), java.lang.Object(IntList(EOC, i785, o1382))) -> f6212_0_main_Load(EOS(STATIC_6212), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6212_0_main_Load(EOS(STATIC_6212), java.lang.Object(IntList(EOC, i785, o1382))) -> f6215_0_main_FieldAccess(EOS(STATIC_6215), java.lang.Object(IntList(EOC, i785, o1382)), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6215_0_main_FieldAccess(EOS(STATIC_6215), java.lang.Object(IntList(EOC, i785, o1382)), java.lang.Object(IntList(EOC, i785, o1382))) -> f6218_0_main_Load(EOS(STATIC_6218), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6218_0_main_Load(EOS(STATIC_6218), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6221_0_main_InvokeMethod(EOS(STATIC_6221), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6221_0_main_InvokeMethod(EOS(STATIC_6221), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6222_0__init__Load(EOS(STATIC_6222), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6222_0__init__Load(EOS(STATIC_6222), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6223_0__init__InvokeMethod(EOS(STATIC_6223), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6223_0__init__InvokeMethod(EOS(STATIC_6223), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6256_0__init__Load(EOS(STATIC_6256), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6256_0__init__Load(EOS(STATIC_6256), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6260_0__init__Load(EOS(STATIC_6260), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6260_0__init__Load(EOS(STATIC_6260), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6297_0__init__FieldAccess(EOS(STATIC_6297), java.lang.Object(IntList(EOC, i785, o1382)), i785) :|: TRUE f6297_0__init__FieldAccess(EOS(STATIC_6297), java.lang.Object(IntList(EOC, i785, o1382)), i785) -> f6302_0__init__Load(EOS(STATIC_6302), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6302_0__init__Load(EOS(STATIC_6302), java.lang.Object(IntList(EOC, i785, o1382))) -> f6305_0__init__Load(EOS(STATIC_6305), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6305_0__init__Load(EOS(STATIC_6305), java.lang.Object(IntList(EOC, i785, o1382))) -> f6308_0__init__FieldAccess(EOS(STATIC_6308), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6308_0__init__FieldAccess(EOS(STATIC_6308), java.lang.Object(IntList(EOC, i785, o1382))) -> f6315_0__init__Return(EOS(STATIC_6315), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6315_0__init__Return(EOS(STATIC_6315), java.lang.Object(IntList(EOC, i785, o1382))) -> f6319_0_main_Store(EOS(STATIC_6319), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6319_0_main_Store(EOS(STATIC_6319), java.lang.Object(IntList(EOC, i785, o1382))) -> f6323_0_main_Load(EOS(STATIC_6323), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6323_0_main_Load(EOS(STATIC_6323), java.lang.Object(IntList(EOC, i785, o1382))) -> f6326_0_main_FieldAccess(EOS(STATIC_6326), java.lang.Object(IntList(EOC, i785, o1382))) :|: TRUE f6326_0_main_FieldAccess(EOS(STATIC_6326), java.lang.Object(IntList(EOC, i785, o1382))) -> f6329_0_main_Store(EOS(STATIC_6329), o1382) :|: TRUE f6329_0_main_Store(EOS(STATIC_6329), o1382) -> f6332_0_main_Load(EOS(STATIC_6332), o1382) :|: TRUE f6332_0_main_Load(EOS(STATIC_6332), o1382) -> f6338_0_main_NULL(EOS(STATIC_6338), o1382, o1382) :|: TRUE f6338_0_main_NULL(EOS(STATIC_6338), java.lang.Object(o1456sub), java.lang.Object(o1456sub)) -> f6339_0_main_NULL(EOS(STATIC_6339), java.lang.Object(o1456sub), java.lang.Object(o1456sub)) :|: TRUE f6358_1_main_InvokeMethod(f3918_0_reverse_Return(EOS(STATIC_3918), java.lang.Object(IntList(EOC, i839, o1486)))) -> f6549_0_reverse_Return(EOS(STATIC_6549), java.lang.Object(IntList(EOC, i839, o1486))) :|: TRUE R rules: f6358_0_reverse_ConstantStackPush(EOS(STATIC_6358), java.lang.Object(o1456sub)) -> f6365_0_reverse_ConstantStackPush(EOS(STATIC_6365), java.lang.Object(o1456sub)) :|: TRUE f6365_0_reverse_ConstantStackPush(EOS(STATIC_6365), java.lang.Object(o1456sub)) -> f6372_0_reverse_ConstantStackPush(EOS(STATIC_6372), java.lang.Object(o1456sub)) :|: TRUE f6372_0_reverse_ConstantStackPush(EOS(STATIC_6372), java.lang.Object(o1475sub)) -> f6375_0_reverse_ConstantStackPush(EOS(STATIC_6375), java.lang.Object(o1475sub)) :|: TRUE f6375_0_reverse_ConstantStackPush(EOS(STATIC_6375), java.lang.Object(o1475sub)) -> f6425_0_reverse_ConstantStackPush(EOS(STATIC_6425), java.lang.Object(o1475sub)) :|: TRUE f6425_0_reverse_ConstantStackPush(EOS(STATIC_6425), java.lang.Object(o1475sub)) -> f2691_0_reverse_ConstantStackPush(EOS(STATIC_2691), java.lang.Object(o1475sub)) :|: TRUE f2691_0_reverse_ConstantStackPush(EOS(STATIC_2691), java.lang.Object(o334sub)) -> f2693_0_reverse_Store(EOS(STATIC_2693), java.lang.Object(o334sub), NULL) :|: TRUE f2693_0_reverse_Store(EOS(STATIC_2693), java.lang.Object(o334sub), NULL) -> f2696_0_reverse_Load(EOS(STATIC_2696), java.lang.Object(o334sub), NULL) :|: TRUE f2696_0_reverse_Load(EOS(STATIC_2696), java.lang.Object(o334sub), NULL) -> f2699_0_reverse_Store(EOS(STATIC_2699), NULL, java.lang.Object(o334sub)) :|: TRUE f2699_0_reverse_Store(EOS(STATIC_2699), NULL, java.lang.Object(o334sub)) -> f2702_0_reverse_Load(EOS(STATIC_2702), NULL, java.lang.Object(o334sub)) :|: TRUE f2702_0_reverse_Load(EOS(STATIC_2702), NULL, java.lang.Object(o334sub)) -> f2706_0_reverse_NULL(EOS(STATIC_2706), NULL, java.lang.Object(o334sub), java.lang.Object(o334sub)) :|: TRUE f2706_0_reverse_NULL(EOS(STATIC_2706), NULL, java.lang.Object(o334sub), java.lang.Object(o334sub)) -> f2722_0_reverse_New(EOS(STATIC_2722), NULL, java.lang.Object(o334sub)) :|: TRUE f2722_0_reverse_New(EOS(STATIC_2722), NULL, java.lang.Object(o334sub)) -> f2738_0_reverse_Duplicate(EOS(STATIC_2738), NULL, java.lang.Object(o334sub), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE f2738_0_reverse_Duplicate(EOS(STATIC_2738), NULL, java.lang.Object(o334sub), java.lang.Object(IntList(EOC, matching1, NULL))) -> f2743_0_reverse_Load(EOS(STATIC_2743), NULL, java.lang.Object(o334sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 f2743_0_reverse_Load(EOS(STATIC_2743), NULL, java.lang.Object(o334sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f2752_0_reverse_FieldAccess(EOS(STATIC_2752), NULL, java.lang.Object(o334sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o334sub)) :|: TRUE && matching1 = 0 && matching2 = 0 f2752_0_reverse_FieldAccess(EOS(STATIC_2752), NULL, java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i365, o380))) -> f2759_0_reverse_FieldAccess(EOS(STATIC_2759), NULL, java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i365, o380))) :|: TRUE && matching1 = 0 && matching2 = 0 f2759_0_reverse_FieldAccess(EOS(STATIC_2759), NULL, java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i365, o380))) -> f2767_0_reverse_Load(EOS(STATIC_2767), NULL, java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365) :|: TRUE && matching1 = 0 && matching2 = 0 f2767_0_reverse_Load(EOS(STATIC_2767), NULL, java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365) -> f2773_0_reverse_InvokeMethod(EOS(STATIC_2773), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 f2773_0_reverse_InvokeMethod(EOS(STATIC_2773), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365, NULL) -> f2823_0__init__Load(EOS(STATIC_2823), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 f2823_0__init__Load(EOS(STATIC_2823), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365, NULL) -> f2841_0__init__InvokeMethod(EOS(STATIC_2841), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365, NULL, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f2841_0__init__InvokeMethod(EOS(STATIC_2841), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365, NULL, java.lang.Object(IntList(EOC, matching3, NULL))) -> f2848_0__init__Load(EOS(STATIC_2848), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365, NULL) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2848_0__init__Load(EOS(STATIC_2848), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365, NULL) -> f2860_0__init__Load(EOS(STATIC_2860), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i365, NULL, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f2860_0__init__Load(EOS(STATIC_2860), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i365, NULL, java.lang.Object(IntList(EOC, matching3, NULL))) -> f2865_0__init__FieldAccess(EOS(STATIC_2865), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), NULL, java.lang.Object(IntList(EOC, 0, NULL)), i365) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2865_0__init__FieldAccess(EOS(STATIC_2865), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), NULL, java.lang.Object(IntList(EOC, matching3, NULL)), i365) -> f2871_0__init__Load(EOS(STATIC_2871), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, NULL)), NULL) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2871_0__init__Load(EOS(STATIC_2871), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, NULL)), NULL) -> f2885_0__init__Load(EOS(STATIC_2885), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), NULL, java.lang.Object(IntList(EOC, i365, NULL))) :|: TRUE f2885_0__init__Load(EOS(STATIC_2885), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), NULL, java.lang.Object(IntList(EOC, i365, NULL))) -> f2893_0__init__FieldAccess(EOS(STATIC_2893), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, NULL)), NULL) :|: TRUE f2893_0__init__FieldAccess(EOS(STATIC_2893), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, NULL)), NULL) -> f2954_0__init__Return(EOS(STATIC_2954), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL))) :|: TRUE f2954_0__init__Return(EOS(STATIC_2954), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL))) -> f2963_0_reverse_Store(EOS(STATIC_2963), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL))) :|: TRUE f2963_0_reverse_Store(EOS(STATIC_2963), java.lang.Object(IntList(EOC, i365, o380)), java.lang.Object(IntList(EOC, i365, NULL))) -> f2972_0_reverse_Load(EOS(STATIC_2972), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, o380))) :|: TRUE f2972_0_reverse_Load(EOS(STATIC_2972), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, o380))) -> f2985_0_reverse_FieldAccess(EOS(STATIC_2985), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, o380))) :|: TRUE f2985_0_reverse_FieldAccess(EOS(STATIC_2985), java.lang.Object(IntList(EOC, i365, NULL)), java.lang.Object(IntList(EOC, i365, o380))) -> f2994_0_reverse_Store(EOS(STATIC_2994), java.lang.Object(IntList(EOC, i365, NULL)), o380) :|: TRUE f2994_0_reverse_Store(EOS(STATIC_2994), java.lang.Object(IntList(EOC, i365, NULL)), o380) -> f3007_0_reverse_JMP(EOS(STATIC_3007), java.lang.Object(IntList(EOC, i365, NULL)), o380) :|: TRUE f3007_0_reverse_JMP(EOS(STATIC_3007), java.lang.Object(IntList(EOC, i365, NULL)), o380) -> f3074_0_reverse_Load(EOS(STATIC_3074), java.lang.Object(IntList(EOC, i365, NULL)), o380) :|: TRUE f3074_0_reverse_Load(EOS(STATIC_3074), java.lang.Object(IntList(EOC, i365, NULL)), o380) -> f3594_0_reverse_Load(EOS(STATIC_3594), java.lang.Object(IntList(EOC, i365, NULL)), o380) :|: TRUE f3594_0_reverse_Load(EOS(STATIC_3594), java.lang.Object(IntList(EOC, i469, o581)), o582) -> f3880_0_reverse_Load(EOS(STATIC_3880), java.lang.Object(IntList(EOC, i469, o581)), o582) :|: TRUE f3880_0_reverse_Load(EOS(STATIC_3880), java.lang.Object(IntList(EOC, i523, o758)), o759) -> f3892_0_reverse_NULL(EOS(STATIC_3892), java.lang.Object(IntList(EOC, i523, o758)), o759, o759) :|: TRUE f3892_0_reverse_NULL(EOS(STATIC_3892), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(o790sub)) -> f3898_0_reverse_NULL(EOS(STATIC_3898), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(o790sub)) :|: TRUE f3892_0_reverse_NULL(EOS(STATIC_3892), java.lang.Object(IntList(EOC, i523, o758)), NULL, NULL) -> f3899_0_reverse_NULL(EOS(STATIC_3899), java.lang.Object(IntList(EOC, i523, o758)), NULL, NULL) :|: TRUE f3898_0_reverse_NULL(EOS(STATIC_3898), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(o790sub)) -> f3911_0_reverse_New(EOS(STATIC_3911), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub)) :|: TRUE f3899_0_reverse_NULL(EOS(STATIC_3899), java.lang.Object(IntList(EOC, i523, o758)), NULL, NULL) -> f3912_0_reverse_Load(EOS(STATIC_3912), java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE f3911_0_reverse_New(EOS(STATIC_3911), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub)) -> f3916_0_reverse_Duplicate(EOS(STATIC_3916), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE f3912_0_reverse_Load(EOS(STATIC_3912), java.lang.Object(IntList(EOC, i523, o758))) -> f3918_0_reverse_Return(EOS(STATIC_3918), java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE f3916_0_reverse_Duplicate(EOS(STATIC_3916), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(IntList(EOC, matching1, NULL))) -> f3922_0_reverse_Load(EOS(STATIC_3922), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 f3922_0_reverse_Load(EOS(STATIC_3922), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f3954_0_reverse_FieldAccess(EOS(STATIC_3954), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(o790sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o790sub)) :|: TRUE && matching1 = 0 && matching2 = 0 f3954_0_reverse_FieldAccess(EOS(STATIC_3954), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i541, o835))) -> f3978_0_reverse_FieldAccess(EOS(STATIC_3978), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE && matching1 = 0 && matching2 = 0 f3978_0_reverse_FieldAccess(EOS(STATIC_3978), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i541, o835))) -> f3998_0_reverse_Load(EOS(STATIC_3998), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541) :|: TRUE && matching1 = 0 && matching2 = 0 f3998_0_reverse_Load(EOS(STATIC_3998), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541) -> f4004_0_reverse_InvokeMethod(EOS(STATIC_4004), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE && matching1 = 0 && matching2 = 0 f4004_0_reverse_InvokeMethod(EOS(STATIC_4004), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) -> f4008_0__init__Load(EOS(STATIC_4008), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE && matching1 = 0 && matching2 = 0 f4008_0__init__Load(EOS(STATIC_4008), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) -> f4023_0__init__InvokeMethod(EOS(STATIC_4023), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f4023_0__init__InvokeMethod(EOS(STATIC_4023), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, matching3, NULL))) -> f4028_0__init__Load(EOS(STATIC_4028), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4028_0__init__Load(EOS(STATIC_4028), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758))) -> f4033_0__init__Load(EOS(STATIC_4033), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f4033_0__init__Load(EOS(STATIC_4033), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i541, java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, matching3, NULL))) -> f4036_0__init__FieldAccess(EOS(STATIC_4036), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, 0, NULL)), i541) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4036_0__init__FieldAccess(EOS(STATIC_4036), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, matching3, NULL)), i541) -> f4065_0__init__Load(EOS(STATIC_4065), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4065_0__init__Load(EOS(STATIC_4065), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758))) -> f4071_0__init__Load(EOS(STATIC_4071), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, NULL))) :|: TRUE f4071_0__init__Load(EOS(STATIC_4071), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758)), java.lang.Object(IntList(EOC, i541, NULL))) -> f4079_0__init__FieldAccess(EOS(STATIC_4079), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758))) :|: TRUE f4079_0__init__FieldAccess(EOS(STATIC_4079), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i541, NULL)), java.lang.Object(IntList(EOC, i523, o758))) -> f4096_0__init__Return(EOS(STATIC_4096), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758))))) :|: TRUE f4096_0__init__Return(EOS(STATIC_4096), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758))))) -> f4099_0_reverse_Store(EOS(STATIC_4099), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758))))) :|: TRUE f4099_0_reverse_Store(EOS(STATIC_4099), java.lang.Object(IntList(EOC, i541, o835)), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758))))) -> f4103_0_reverse_Load(EOS(STATIC_4103), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4103_0_reverse_Load(EOS(STATIC_4103), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), java.lang.Object(IntList(EOC, i541, o835))) -> f4110_0_reverse_FieldAccess(EOS(STATIC_4110), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), java.lang.Object(IntList(EOC, i541, o835))) :|: TRUE f4110_0_reverse_FieldAccess(EOS(STATIC_4110), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), java.lang.Object(IntList(EOC, i541, o835))) -> f4118_0_reverse_Store(EOS(STATIC_4118), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) :|: TRUE f4118_0_reverse_Store(EOS(STATIC_4118), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) -> f4126_0_reverse_JMP(EOS(STATIC_4126), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) :|: TRUE f4126_0_reverse_JMP(EOS(STATIC_4126), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) -> f4139_0_reverse_Load(EOS(STATIC_4139), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) :|: TRUE f4139_0_reverse_Load(EOS(STATIC_4139), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) -> f3880_0_reverse_Load(EOS(STATIC_3880), java.lang.Object(IntList(EOC, i541, java.lang.Object(IntList(EOC, i523, o758)))), o835) :|: TRUE Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f6358_1_main_InvokeMethod(f3918_0_reverse_Return(EOS(STATIC_3918), java.lang.Object(IntList(EOC, i839:0, java.lang.Object(o1456sub:0))))) -> f6358_1_main_InvokeMethod(f6692_0_reverse_ConstantStackPush(EOS(STATIC_6692), java.lang.Object(o1456sub:0))) :|: TRUE R rules: Filtered ground terms: f3918_0_reverse_Return(x1, x2) -> f3918_0_reverse_Return(x2) f6692_0_reverse_ConstantStackPush(x1, x2) -> f6692_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: F6358_1_MAIN_INVOKEMETHOD(f3918_0_reverse_Return(java.lang.Object(IntList(i839:0:0, java.lang.Object(o1456sub:0:0))))) -> F6358_1_MAIN_INVOKEMETHOD(f6692_0_reverse_ConstantStackPush(java.lang.Object(o1456sub:0:0))) :|: TRUE R rules: ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: F6358_1_MAIN_INVOKEMETHOD(f3918_0_reverse_Return(java.lang.Object(IntList(i839:0:0, java.lang.Object(o1456sub:0:0))))) -> F6358_1_MAIN_INVOKEMETHOD(f6692_0_reverse_ConstantStackPush(java.lang.Object(o1456sub: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