/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could not be shown: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1013 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 72 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 15 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 23 ms] (17) IRSwT (18) IRSwTToQDPProof [SOUND, 0 ms] (19) QDP (20) QDPSizeChangeProof [EQUIVALENT, 0 ms] (21) YES (22) JBCTerminationSCC (23) SCCToIRSProof [SOUND, 65 ms] (24) IRSwT (25) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (26) IRSwT (27) IRSwTTerminationDigraphProof [EQUIVALENT, 6 ms] (28) IRSwT (29) IntTRSCompressionProof [EQUIVALENT, 0 ms] (30) IRSwT (31) TempFilterProof [SOUND, 35 ms] (32) IntTRS (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 46 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 25 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) IRSwTChainingProof [EQUIVALENT, 0 ms] (45) IRSwT (46) IRSwTTerminationDigraphProof [EQUIVALENT, 69 ms] (47) IRSwT (48) IntTRSCompressionProof [EQUIVALENT, 0 ms] (49) IRSwT (50) IRSwTChainingProof [EQUIVALENT, 0 ms] (51) IRSwT (52) IRSwTTerminationDigraphProof [EQUIVALENT, 170 ms] (53) AND (54) IRSwT (55) IntTRSCompressionProof [EQUIVALENT, 0 ms] (56) IRSwT (57) TempFilterProof [SOUND, 965 ms] (58) IRSwT (59) IRSwTTerminationDigraphProof [EQUIVALENT, 119 ms] (60) IRSwT (61) IntTRSCompressionProof [EQUIVALENT, 0 ms] (62) IRSwT (63) IRSwT (64) IntTRSCompressionProof [EQUIVALENT, 0 ms] (65) IRSwT (66) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (67) IRSwT (68) TempFilterProof [SOUND, 10 ms] (69) IntTRS (70) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (71) YES ---------------------------------------- (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 SortCount{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); l = IntList.sort(0,l); } } 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(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } public static boolean member(int n, IntList l) { while (l != null) { if (l.value == n) return true; else l =l.next; } return false; } public static int max(IntList l) { int m = 0; while (l !=null) { if (l.value > m) m = l.value; l = l.next; } return m; } public static IntList sort(int n, IntList l) { IntList res =null; while (max(l) >= n) { if (member(n,l)) res = new IntList(n,res); n++; } 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 SortCount{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); l = IntList.sort(0,l); } } 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(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } public static boolean member(int n, IntList l) { while (l != null) { if (l.value == n) return true; else l =l.next; } return false; } public static int max(IntList l) { int m = 0; while (l !=null) { if (l.value > m) m = l.value; l = l.next; } return m; } public static IntList sort(int n, IntList l) { IntList res =null; while (max(l) >= n) { if (member(n,l)) res = new IntList(n,res); n++; } return res; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: SortCount.main([Ljava/lang/String;)V: Graph of 116 nodes with 1 SCC. IntList.createIntList()LIntList;: Graph of 277 nodes with 1 SCC. IntList.member(ILIntList;)Z: Graph of 23 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.member(ILIntList;)Z 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: *IntList.value != i531 (Introduced counter i861) *IntList.value != i554 (Introduced counter i862) ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 14 IRulesP rules: f4801_0_member_NULL(EOS(STATIC_4801), i531, i531, java.lang.Object(o638sub), java.lang.Object(o638sub), i861, i862) -> f4803_0_member_NULL(EOS(STATIC_4803), i531, i531, java.lang.Object(o638sub), java.lang.Object(o638sub), i861, i862) :|: TRUE f4803_0_member_NULL(EOS(STATIC_4803), i531, i531, java.lang.Object(o638sub), java.lang.Object(o638sub), i861, i862) -> f4807_0_member_Load(EOS(STATIC_4807), i531, i531, java.lang.Object(o638sub), i861, i862) :|: TRUE f4807_0_member_Load(EOS(STATIC_4807), i531, i531, java.lang.Object(o638sub), i861, i862) -> f4811_0_member_FieldAccess(EOS(STATIC_4811), i531, i531, java.lang.Object(o638sub), java.lang.Object(o638sub), i861, i862) :|: TRUE f4811_0_member_FieldAccess(EOS(STATIC_4811), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), java.lang.Object(IntList(EOC, i554, o644)), i861, i862) -> f4815_0_member_FieldAccess(EOS(STATIC_4815), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), java.lang.Object(IntList(EOC, i554, o644)), i861, i862) :|: TRUE f4815_0_member_FieldAccess(EOS(STATIC_4815), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), java.lang.Object(IntList(EOC, i554, o644)), i861, i862) -> f4819_0_member_Load(EOS(STATIC_4819), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i861, i862) :|: TRUE f4819_0_member_Load(EOS(STATIC_4819), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i861, i862) -> f4822_0_member_NE(EOS(STATIC_4822), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i531, i861, i862) :|: TRUE f4822_0_member_NE(EOS(STATIC_4822), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i531, i861, i862) -> f4826_0_member_NE(EOS(STATIC_4826), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i531, i861, i862) :|: !(i554 = i531) f4826_0_member_NE(EOS(STATIC_4826), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i554, i531, i861, i862) -> f4829_0_member_Load(EOS(STATIC_4829), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i861, i862) :|: !(i554 = i531) f4829_0_member_Load(EOS(STATIC_4829), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i861, i862) -> f4833_0_member_FieldAccess(EOS(STATIC_4833), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i861, i862) :|: TRUE f4833_0_member_FieldAccess(EOS(STATIC_4833), i531, i531, java.lang.Object(IntList(EOC, i554, o644)), i861, i862) -> f4837_0_member_Store(EOS(STATIC_4837), i531, i531, o644, i861, i862) :|: TRUE f4837_0_member_Store(EOS(STATIC_4837), i531, i531, o644, i861, i862) -> f4841_0_member_JMP(EOS(STATIC_4841), i531, i531, o644, i861, i862) :|: TRUE f4841_0_member_JMP(EOS(STATIC_4841), i531, i531, o644, i861, i862) -> f4843_0_member_Load(EOS(STATIC_4843), i531, i531, o644, i861, i862) :|: TRUE f4843_0_member_Load(EOS(STATIC_4843), i531, i531, o644, i861, i862) -> f4798_0_member_Load(EOS(STATIC_4798), i531, i531, o644, i861, i862) :|: TRUE f4798_0_member_Load(EOS(STATIC_4798), i531, i531, o628, i861, i862) -> f4801_0_member_NULL(EOS(STATIC_4801), i531, i531, o628, o628, i861, i862) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4801_0_member_NULL(EOS(STATIC_4801), i531:0, i531:0, java.lang.Object(IntList(EOC, i554:0, o644:0)), java.lang.Object(IntList(EOC, i554:0, o644:0)), i861:0, i862:0) -> f4801_0_member_NULL(EOS(STATIC_4801), i531:0, i531:0, o644:0, o644:0, i861:0, i862:0) :|: i554:0 < i531:0 f4801_0_member_NULL(EOS(STATIC_4801), i531:0, i531:0, java.lang.Object(IntList(EOC, i554:0, o644:0)), java.lang.Object(IntList(EOC, i554:0, o644:0)), i861:0, i862:0) -> f4801_0_member_NULL(EOS(STATIC_4801), i531:0, i531:0, o644:0, o644:0, i861:0, i862:0) :|: i554:0 > i531:0 Filtered constant ground arguments: f4801_0_member_NULL(x1, x2, x3, x4, x5, x6, x7) -> f4801_0_member_NULL(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS IntList(x1, x2, x3) -> IntList(x2, x3) Filtered duplicate arguments: f4801_0_member_NULL(x1, x2, x3, x4, x5, x6) -> f4801_0_member_NULL(x2, x4, x5, x6) Filtered unneeded arguments: f4801_0_member_NULL(x1, x2, x3, x4) -> f4801_0_member_NULL(x1, x2) Finished conversion. Obtained 2 rules.P rules: f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 < i531:0 f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 > i531:0 ---------------------------------------- (9) Obligation: Rules: f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 < i531:0 f4801_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4801_0_member_NULL(x, x2) :|: x1 > x ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 < i531:0 f4801_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4801_0_member_NULL(x, x2) :|: x1 > x ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 < i531:0 (2) f4801_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4801_0_member_NULL(x, x2) :|: x1 > x Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f4801_0_member_NULL(i531:0, java.lang.Object(IntList(i554:0, o644:0))) -> f4801_0_member_NULL(i531:0, o644:0) :|: i554:0 < i531:0 (2) f4801_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4801_0_member_NULL(x, x2) :|: x1 > x Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f4801_0_member_NULL(x:0, java.lang.Object(IntList(x1:0, x2:0))) -> f4801_0_member_NULL(x:0, x2:0) :|: x:0 < x1:0 f4801_0_member_NULL(i531:0:0, java.lang.Object(IntList(i554:0:0, o644:0:0))) -> f4801_0_member_NULL(i531:0:0, o644:0:0) :|: i554:0:0 < i531:0:0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4801_0_member_NULL(INTEGER, VARIABLE) java.lang.Object(VARIABLE) IntList(INTEGER, VARIABLE) Removed predefined arithmetic. ---------------------------------------- (17) Obligation: Rules: f4801_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4801_0_member_NULL(x2:0) ---------------------------------------- (18) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (19) Obligation: Q DP problem: The TRS P consists of the following rules: f4801_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4801_0_member_NULL(x2:0) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (20) 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: *f4801_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4801_0_member_NULL(x2:0) The graph contains the following edges 1 > 1 ---------------------------------------- (21) YES ---------------------------------------- (22) 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: ---------------------------------------- (23) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 39 IRulesP rules: f2233_0_createIntList_LE(EOS(STATIC_2233(java.lang.Object(ARRAY(i6)))), i328, i328) -> f2255_0_createIntList_LE(EOS(STATIC_2255(java.lang.Object(ARRAY(i6)))), i328, i328) :|: TRUE f2255_0_createIntList_LE(EOS(STATIC_2255(java.lang.Object(ARRAY(i6)))), i328, i328) -> f2264_0_createIntList_New(EOS(STATIC_2264(java.lang.Object(ARRAY(i6)))), i328) :|: i328 > 0 f2264_0_createIntList_New(EOS(STATIC_2264(java.lang.Object(ARRAY(i6)))), i328) -> f2269_0_createIntList_Duplicate(EOS(STATIC_2269(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2269_0_createIntList_Duplicate(EOS(STATIC_2269(java.lang.Object(ARRAY(i6)))), i328) -> f2276_0_createIntList_InvokeMethod(EOS(STATIC_2276(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2276_0_createIntList_InvokeMethod(EOS(STATIC_2276(java.lang.Object(ARRAY(i6)))), i328) -> f2287_0_random_FieldAccess(EOS(STATIC_2287(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2287_0_random_FieldAccess(EOS(STATIC_2287(java.lang.Object(ARRAY(i6)))), i328) -> f2309_0_random_FieldAccess(EOS(STATIC_2309(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) :|: TRUE f2309_0_random_FieldAccess(EOS(STATIC_2309(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) -> f2317_0_random_ArrayAccess(EOS(STATIC_2317(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) :|: TRUE f2317_0_random_ArrayAccess(EOS(STATIC_2317(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) -> f2331_0_random_ArrayAccess(EOS(STATIC_2331(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) :|: TRUE f2331_0_random_ArrayAccess(EOS(STATIC_2331(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(ARRAY(i6))) -> f2339_0_random_Store(EOS(STATIC_2339(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2339_0_random_Store(EOS(STATIC_2339(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2344_0_random_FieldAccess(EOS(STATIC_2344(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2344_0_random_FieldAccess(EOS(STATIC_2344(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2356_0_random_ConstantStackPush(EOS(STATIC_2356(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2356_0_random_ConstantStackPush(EOS(STATIC_2356(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2370_0_random_IntArithmetic(EOS(STATIC_2370(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2370_0_random_IntArithmetic(EOS(STATIC_2370(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2385_0_random_FieldAccess(EOS(STATIC_2385(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2385_0_random_FieldAccess(EOS(STATIC_2385(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2397_0_random_Load(EOS(STATIC_2397(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2397_0_random_Load(EOS(STATIC_2397(java.lang.Object(ARRAY(i6)))), i328, o319) -> f2416_0_random_InvokeMethod(EOS(STATIC_2416(java.lang.Object(ARRAY(i6)))), i328, o319) :|: TRUE f2416_0_random_InvokeMethod(EOS(STATIC_2416(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o324sub)) -> f2422_0_random_InvokeMethod(EOS(STATIC_2422(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o324sub)) :|: TRUE f2422_0_random_InvokeMethod(EOS(STATIC_2422(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) -> f2446_0_random_InvokeMethod(EOS(STATIC_2446(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) :|: TRUE f2446_0_random_InvokeMethod(EOS(STATIC_2446(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) -> f2453_0_length_Load(EOS(STATIC_2453(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) :|: TRUE f2453_0_length_Load(EOS(STATIC_2453(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) -> f2481_0_length_FieldAccess(EOS(STATIC_2481(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(o341sub)) :|: TRUE f2481_0_length_FieldAccess(EOS(STATIC_2481(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(java.lang.String(EOC, i377))) -> f2705_0_length_FieldAccess(EOS(STATIC_2705(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(java.lang.String(EOC, i377))) :|: TRUE f2705_0_length_FieldAccess(EOS(STATIC_2705(java.lang.Object(ARRAY(i6)))), i328, java.lang.Object(java.lang.String(EOC, i377))) -> f2721_0_length_Return(EOS(STATIC_2721(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2721_0_length_Return(EOS(STATIC_2721(java.lang.Object(ARRAY(i6)))), i328) -> f2748_0_random_Return(EOS(STATIC_2748(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2748_0_random_Return(EOS(STATIC_2748(java.lang.Object(ARRAY(i6)))), i328) -> f2783_0_createIntList_Load(EOS(STATIC_2783(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2783_0_createIntList_Load(EOS(STATIC_2783(java.lang.Object(ARRAY(i6)))), i328) -> f2799_0_createIntList_InvokeMethod(EOS(STATIC_2799(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2799_0_createIntList_InvokeMethod(EOS(STATIC_2799(java.lang.Object(ARRAY(i6)))), i328) -> f2846_0__init__Load(EOS(STATIC_2846(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2846_0__init__Load(EOS(STATIC_2846(java.lang.Object(ARRAY(i6)))), i328) -> f2977_0__init__InvokeMethod(EOS(STATIC_2977(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2977_0__init__InvokeMethod(EOS(STATIC_2977(java.lang.Object(ARRAY(i6)))), i328) -> f2997_0__init__Load(EOS(STATIC_2997(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f2997_0__init__Load(EOS(STATIC_2997(java.lang.Object(ARRAY(i6)))), i328) -> f3039_0__init__Load(EOS(STATIC_3039(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3039_0__init__Load(EOS(STATIC_3039(java.lang.Object(ARRAY(i6)))), i328) -> f3048_0__init__FieldAccess(EOS(STATIC_3048(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3048_0__init__FieldAccess(EOS(STATIC_3048(java.lang.Object(ARRAY(i6)))), i328) -> f3059_0__init__Load(EOS(STATIC_3059(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3059_0__init__Load(EOS(STATIC_3059(java.lang.Object(ARRAY(i6)))), i328) -> f3070_0__init__Load(EOS(STATIC_3070(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3070_0__init__Load(EOS(STATIC_3070(java.lang.Object(ARRAY(i6)))), i328) -> f3074_0__init__FieldAccess(EOS(STATIC_3074(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3074_0__init__FieldAccess(EOS(STATIC_3074(java.lang.Object(ARRAY(i6)))), i328) -> f3079_0__init__Return(EOS(STATIC_3079(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3079_0__init__Return(EOS(STATIC_3079(java.lang.Object(ARRAY(i6)))), i328) -> f3102_0_createIntList_Store(EOS(STATIC_3102(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3102_0_createIntList_Store(EOS(STATIC_3102(java.lang.Object(ARRAY(i6)))), i328) -> f3108_0_createIntList_Inc(EOS(STATIC_3108(java.lang.Object(ARRAY(i6)))), i328) :|: TRUE f3108_0_createIntList_Inc(EOS(STATIC_3108(java.lang.Object(ARRAY(i6)))), i328) -> f3113_0_createIntList_JMP(EOS(STATIC_3113(java.lang.Object(ARRAY(i6)))), i328 + -1) :|: TRUE f3113_0_createIntList_JMP(EOS(STATIC_3113(java.lang.Object(ARRAY(i6)))), i409) -> f3117_0_createIntList_Load(EOS(STATIC_3117(java.lang.Object(ARRAY(i6)))), i409) :|: TRUE f3117_0_createIntList_Load(EOS(STATIC_3117(java.lang.Object(ARRAY(i6)))), i409) -> f2150_0_createIntList_Load(EOS(STATIC_2150(java.lang.Object(ARRAY(i6)))), i409) :|: TRUE f2150_0_createIntList_Load(EOS(STATIC_2150(java.lang.Object(ARRAY(i6)))), i302) -> f2233_0_createIntList_LE(EOS(STATIC_2233(java.lang.Object(ARRAY(i6)))), i302, i302) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2233_0_createIntList_LE(EOS(STATIC_2233(java.lang.Object(ARRAY(i6:0)))), i328:0, i328:0) -> f2233_0_createIntList_LE(EOS(STATIC_2233(java.lang.Object(ARRAY(i6:0)))), i328:0 - 1, i328:0 - 1) :|: i328:0 > 0 Filtered duplicate arguments: f2233_0_createIntList_LE(x1, x2, x3) -> f2233_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f2233_0_createIntList_LE(x1, x2) -> f2233_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2233_0_createIntList_LE(i328:0) -> f2233_0_createIntList_LE(i328:0 - 1) :|: i328:0 > 0 ---------------------------------------- (24) Obligation: Rules: f2233_0_createIntList_LE(i328:0) -> f2233_0_createIntList_LE(i328:0 - 1) :|: i328:0 > 0 ---------------------------------------- (25) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (26) Obligation: Rules: f2233_0_createIntList_LE(i328:0) -> f2233_0_createIntList_LE(arith) :|: i328:0 > 0 && arith = i328:0 - 1 ---------------------------------------- (27) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2233_0_createIntList_LE(i328:0) -> f2233_0_createIntList_LE(arith) :|: i328:0 > 0 && arith = i328:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (28) Obligation: Termination digraph: Nodes: (1) f2233_0_createIntList_LE(i328:0) -> f2233_0_createIntList_LE(arith) :|: i328:0 > 0 && arith = i328:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (29) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (30) Obligation: Rules: f2233_0_createIntList_LE(i328:0:0) -> f2233_0_createIntList_LE(i328:0:0 - 1) :|: i328:0:0 > 0 ---------------------------------------- (31) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2233_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (32) Obligation: Rules: f2233_0_createIntList_LE(i328:0:0) -> f2233_0_createIntList_LE(c) :|: c = i328:0:0 - 1 && i328:0:0 > 0 ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2233_0_createIntList_LE(x)] = x The following rules are decreasing: f2233_0_createIntList_LE(i328:0:0) -> f2233_0_createIntList_LE(c) :|: c = i328:0:0 - 1 && i328:0:0 > 0 The following rules are bounded: f2233_0_createIntList_LE(i328:0:0) -> f2233_0_createIntList_LE(c) :|: c = i328:0:0 - 1 && i328:0:0 > 0 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: SortCount.main([Ljava/lang/String;)V SCC calls the following helper methods: IntList.member(ILIntList;)Z 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: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 68 IRulesP rules: f5130_0_max_NULL(EOS(STATIC_5130), i814, o942, o943, java.lang.Object(o953sub), i813, java.lang.Object(o953sub)) -> f5131_0_max_NULL(EOS(STATIC_5131), i814, o942, o943, java.lang.Object(o953sub), i813, java.lang.Object(o953sub)) :|: TRUE f5130_0_max_NULL(EOS(STATIC_5130), i814, o942, o943, NULL, i813, NULL) -> f5132_0_max_NULL(EOS(STATIC_5132), i814, o942, o943, NULL, i813, NULL) :|: TRUE f5131_0_max_NULL(EOS(STATIC_5131), i814, o942, o943, java.lang.Object(o953sub), i813, java.lang.Object(o953sub)) -> f5133_0_max_Load(EOS(STATIC_5133), i814, o942, o943, java.lang.Object(o953sub), i813) :|: TRUE f5133_0_max_Load(EOS(STATIC_5133), i814, o942, o943, java.lang.Object(o953sub), i813) -> f5135_0_max_FieldAccess(EOS(STATIC_5135), i814, o942, o943, java.lang.Object(o953sub), i813, java.lang.Object(o953sub)) :|: TRUE f5135_0_max_FieldAccess(EOS(STATIC_5135), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, java.lang.Object(IntList(EOC, i824, o955))) -> f5137_0_max_FieldAccess(EOS(STATIC_5137), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, java.lang.Object(IntList(EOC, i824, o955))) :|: TRUE f5137_0_max_FieldAccess(EOS(STATIC_5137), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, java.lang.Object(IntList(EOC, i824, o955))) -> f5139_0_max_Load(EOS(STATIC_5139), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824) :|: TRUE f5139_0_max_Load(EOS(STATIC_5139), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824) -> f5141_0_max_LE(EOS(STATIC_5141), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) :|: TRUE f5141_0_max_LE(EOS(STATIC_5141), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) -> f5144_0_max_LE(EOS(STATIC_5144), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) :|: i824 <= i813 f5141_0_max_LE(EOS(STATIC_5141), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) -> f5145_0_max_LE(EOS(STATIC_5145), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) :|: i824 > i813 f5144_0_max_LE(EOS(STATIC_5144), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) -> f5148_0_max_Load(EOS(STATIC_5148), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813) :|: i824 <= i813 f5148_0_max_Load(EOS(STATIC_5148), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813) -> f5152_0_max_FieldAccess(EOS(STATIC_5152), i814, o942, o943, i813, java.lang.Object(IntList(EOC, i824, o955))) :|: TRUE f5152_0_max_FieldAccess(EOS(STATIC_5152), i814, o942, o943, i813, java.lang.Object(IntList(EOC, i824, o955))) -> f5156_0_max_Store(EOS(STATIC_5156), i814, o942, o943, i813, o955) :|: TRUE f5156_0_max_Store(EOS(STATIC_5156), i814, o942, o943, i813, o955) -> f5160_0_max_JMP(EOS(STATIC_5160), i814, o942, o943, o955, i813) :|: TRUE f5160_0_max_JMP(EOS(STATIC_5160), i814, o942, o943, o955, i813) -> f5164_0_max_Load(EOS(STATIC_5164), i814, o942, o943, o955, i813) :|: TRUE f5164_0_max_Load(EOS(STATIC_5164), i814, o942, o943, o955, i813) -> f5129_0_max_Load(EOS(STATIC_5129), i814, o942, o943, o955, i813) :|: TRUE f5129_0_max_Load(EOS(STATIC_5129), i814, o942, o943, o941, i813) -> f5130_0_max_NULL(EOS(STATIC_5130), i814, o942, o943, o941, i813, o941) :|: TRUE f5145_0_max_LE(EOS(STATIC_5145), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i813, i824, i813) -> f5149_0_max_Load(EOS(STATIC_5149), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955))) :|: i824 > i813 f5149_0_max_Load(EOS(STATIC_5149), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955))) -> f5153_0_max_FieldAccess(EOS(STATIC_5153), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), java.lang.Object(IntList(EOC, i824, o955))) :|: TRUE f5153_0_max_FieldAccess(EOS(STATIC_5153), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), java.lang.Object(IntList(EOC, i824, o955))) -> f5157_0_max_Store(EOS(STATIC_5157), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i824) :|: TRUE f5157_0_max_Store(EOS(STATIC_5157), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i824) -> f5161_0_max_Load(EOS(STATIC_5161), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i824) :|: TRUE f5161_0_max_Load(EOS(STATIC_5161), i814, o942, o943, java.lang.Object(IntList(EOC, i824, o955)), i824) -> f5165_0_max_FieldAccess(EOS(STATIC_5165), i814, o942, o943, i824, java.lang.Object(IntList(EOC, i824, o955))) :|: TRUE f5165_0_max_FieldAccess(EOS(STATIC_5165), i814, o942, o943, i824, java.lang.Object(IntList(EOC, i824, o955))) -> f5167_0_max_Store(EOS(STATIC_5167), i814, o942, o943, i824, o955) :|: TRUE f5167_0_max_Store(EOS(STATIC_5167), i814, o942, o943, i824, o955) -> f5169_0_max_JMP(EOS(STATIC_5169), i814, o942, o943, o955, i824) :|: TRUE f5169_0_max_JMP(EOS(STATIC_5169), i814, o942, o943, o955, i824) -> f5170_0_max_Load(EOS(STATIC_5170), i814, o942, o943, o955, i824) :|: TRUE f5170_0_max_Load(EOS(STATIC_5170), i814, o942, o943, o955, i824) -> f5129_0_max_Load(EOS(STATIC_5129), i814, o942, o943, o955, i824) :|: TRUE f5132_0_max_NULL(EOS(STATIC_5132), i814, o942, o943, NULL, i813, NULL) -> f5134_0_max_Load(EOS(STATIC_5134), i814, o942, o943, i813) :|: TRUE f5134_0_max_Load(EOS(STATIC_5134), i814, o942, o943, i813) -> f5136_0_max_Return(EOS(STATIC_5136), i814, o942, o943, i813) :|: TRUE f5136_0_max_Return(EOS(STATIC_5136), i814, o942, o943, i813) -> f5138_0_sort_Load(EOS(STATIC_5138), i814, o942, o943, i813) :|: TRUE f5138_0_sort_Load(EOS(STATIC_5138), i814, o942, o943, i813) -> f5140_0_sort_LT(EOS(STATIC_5140), i814, o942, o943, i813, i814) :|: TRUE f5140_0_sort_LT(EOS(STATIC_5140), i814, o942, o943, i813, i814) -> f5143_0_sort_LT(EOS(STATIC_5143), i814, o942, o943, i813, i814) :|: i813 >= i814 f5143_0_sort_LT(EOS(STATIC_5143), i814, o942, o943, i813, i814) -> f5147_0_sort_Load(EOS(STATIC_5147), i814, o942, o943) :|: i813 >= i814 f5147_0_sort_Load(EOS(STATIC_5147), i814, o942, o943) -> f5151_0_sort_Load(EOS(STATIC_5151), i814, o942, o943, i814) :|: TRUE f5151_0_sort_Load(EOS(STATIC_5151), i814, o942, o943, i814) -> f5155_0_sort_InvokeMethod(EOS(STATIC_5155), i814, o942, o943, i814, o942) :|: TRUE f5155_0_sort_InvokeMethod(EOS(STATIC_5155), i814, o942, o943, i814, o942) -> f5159_0_member_Load(EOS(STATIC_5159), i814, o942, i814, o942) :|: i812 >= 1 f5155_0_sort_InvokeMethod(EOS(STATIC_5155), i814, o942, o943, i814, o942) -> f5159_1_member_Load(EOS(STATIC_5159), i814, o942, o943, i814, o942) :|: i812 >= 1 f5159_0_member_Load(EOS(STATIC_5159), i814, o942, i814, o942) -> f5377_0_member_Load(EOS(STATIC_5377), i814, o942, i814, o942) :|: TRUE f5172_0_member_Return(EOS(STATIC_5172), i834, o976, o943, matching1) -> f5174_0_sort_EQ(EOS(STATIC_5174), i834, o976, o943, 0) :|: TRUE && matching1 = 0 f5174_0_sort_EQ(EOS(STATIC_5174), i834, o976, o943, matching1) -> f5176_0_sort_Inc(EOS(STATIC_5176), i834, o976, o943) :|: TRUE && matching1 = 0 f5176_0_sort_Inc(EOS(STATIC_5176), i834, o976, o943) -> f5178_0_sort_JMP(EOS(STATIC_5178), i834 + 1, o976, o943) :|: TRUE f5178_0_sort_JMP(EOS(STATIC_5178), i844, o976, o943) -> f5180_0_sort_Load(EOS(STATIC_5180), i844, o976, o943) :|: TRUE f5180_0_sort_Load(EOS(STATIC_5180), i844, o976, o943) -> f5182_0_sort_InvokeMethod(EOS(STATIC_5182), i844, o976, o943, o976) :|: TRUE f5182_0_sort_InvokeMethod(EOS(STATIC_5182), i844, o976, o943, o976) -> f5184_0_max_ConstantStackPush(EOS(STATIC_5184), i844, o976, o943, o976) :|: TRUE f5184_0_max_ConstantStackPush(EOS(STATIC_5184), i844, o976, o943, o976) -> f5187_0_max_Store(EOS(STATIC_5187), i844, o976, o943, o976, 0) :|: TRUE f5187_0_max_Store(EOS(STATIC_5187), i844, o976, o943, o976, matching1) -> f5188_0_max_Load(EOS(STATIC_5188), i844, o976, o943, o976, 0) :|: TRUE && matching1 = 0 f5188_0_max_Load(EOS(STATIC_5188), i844, o976, o943, o976, matching1) -> f5190_0_max_NULL(EOS(STATIC_5190), i844, o976, o943, o976, 0, o976) :|: TRUE && matching1 = 0 f5190_0_max_NULL(EOS(STATIC_5190), i844, o976, o943, o976, matching1, o976) -> f5130_0_max_NULL(EOS(STATIC_5130), i844, o976, o943, o976, 0, o976) :|: TRUE && matching1 = 0 f5173_0_member_Return(EOS(STATIC_5173), i840, o981, o943, matching1) -> f5175_0_sort_EQ(EOS(STATIC_5175), i840, o981, o943, 1) :|: TRUE && matching1 = 1 f5175_0_sort_EQ(EOS(STATIC_5175), i840, o981, o943, matching1) -> f5177_0_sort_New(EOS(STATIC_5177), i840, o981, o943) :|: 1 > 0 && matching1 = 1 f5177_0_sort_New(EOS(STATIC_5177), i840, o981, o943) -> f5179_0_sort_Duplicate(EOS(STATIC_5179), i840, o981, o943, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE f5179_0_sort_Duplicate(EOS(STATIC_5179), i840, o981, o943, java.lang.Object(IntList(EOC, matching1, NULL))) -> f5181_0_sort_Load(EOS(STATIC_5181), i840, o981, o943, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 f5181_0_sort_Load(EOS(STATIC_5181), i840, o981, o943, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f5183_0_sort_Load(EOS(STATIC_5183), i840, o981, o943, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840) :|: TRUE && matching1 = 0 && matching2 = 0 f5183_0_sort_Load(EOS(STATIC_5183), i840, o981, o943, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840) -> f5185_0_sort_InvokeMethod(EOS(STATIC_5185), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840, o943) :|: TRUE && matching1 = 0 && matching2 = 0 f5185_0_sort_InvokeMethod(EOS(STATIC_5185), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840, o943) -> f5186_0__init__Load(EOS(STATIC_5186), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840, o943) :|: TRUE && matching1 = 0 && matching2 = 0 f5186_0__init__Load(EOS(STATIC_5186), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840, o943) -> f5189_0__init__InvokeMethod(EOS(STATIC_5189), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840, o943, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f5189_0__init__InvokeMethod(EOS(STATIC_5189), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840, o943, java.lang.Object(IntList(EOC, matching3, NULL))) -> f5191_0__init__Load(EOS(STATIC_5191), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840, o943) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f5191_0__init__Load(EOS(STATIC_5191), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840, o943) -> f5192_0__init__Load(EOS(STATIC_5192), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i840, o943, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 f5192_0__init__Load(EOS(STATIC_5192), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i840, o943, java.lang.Object(IntList(EOC, matching3, NULL))) -> f5193_0__init__FieldAccess(EOS(STATIC_5193), i840, o981, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), o943, java.lang.Object(IntList(EOC, 0, NULL)), i840) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f5193_0__init__FieldAccess(EOS(STATIC_5193), i840, o981, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), o943, java.lang.Object(IntList(EOC, matching3, NULL)), i840) -> f5194_0__init__Load(EOS(STATIC_5194), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), java.lang.Object(IntList(EOC, i840, NULL)), o943) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f5194_0__init__Load(EOS(STATIC_5194), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), java.lang.Object(IntList(EOC, i840, NULL)), o943) -> f5195_0__init__Load(EOS(STATIC_5195), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), o943, java.lang.Object(IntList(EOC, i840, NULL))) :|: TRUE f5195_0__init__Load(EOS(STATIC_5195), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), o943, java.lang.Object(IntList(EOC, i840, NULL))) -> f5196_0__init__FieldAccess(EOS(STATIC_5196), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), java.lang.Object(IntList(EOC, i840, NULL)), o943) :|: TRUE f5196_0__init__FieldAccess(EOS(STATIC_5196), i840, o981, java.lang.Object(IntList(EOC, i840, NULL)), java.lang.Object(IntList(EOC, i840, NULL)), o943) -> f5197_0__init__Return(EOS(STATIC_5197), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5197_0__init__Return(EOS(STATIC_5197), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) -> f5198_0_sort_Store(EOS(STATIC_5198), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5198_0_sort_Store(EOS(STATIC_5198), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) -> f5199_0_sort_Inc(EOS(STATIC_5199), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5199_0_sort_Inc(EOS(STATIC_5199), i840, o981, java.lang.Object(IntList(EOC, i840, o943))) -> f5200_0_sort_JMP(EOS(STATIC_5200), i840 + 1, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5200_0_sort_JMP(EOS(STATIC_5200), i854, o981, java.lang.Object(IntList(EOC, i840, o943))) -> f5201_0_sort_Load(EOS(STATIC_5201), i854, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5201_0_sort_Load(EOS(STATIC_5201), i854, o981, java.lang.Object(IntList(EOC, i840, o943))) -> f5180_0_sort_Load(EOS(STATIC_5180), i854, o981, java.lang.Object(IntList(EOC, i840, o943))) :|: TRUE f5159_1_member_Load(EOS(STATIC_5159), i834, o976, o943, i834, o976) -> f5172_0_member_Return(EOS(STATIC_5172), i834, o976, o943, 0) :|: TRUE f5159_1_member_Load(EOS(STATIC_5159), i840, o981, o943, i840, o981) -> f5173_0_member_Return(EOS(STATIC_5173), i840, o981, o943, 1) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, NULL, i813:0, NULL) -> f5130_0_max_NULL(EOS(STATIC_5130), i814:0 + 1, o942:0, o943:0, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, NULL, i813:0, NULL) -> f5130_0_max_NULL(EOS(STATIC_5130), i814:0 + 1, o942:0, java.lang.Object(IntList(EOC, i814:0, o943:0)), o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, java.lang.Object(IntList(EOC, i824:0, o955:0)), i813:0, java.lang.Object(IntList(EOC, i824:0, o955:0))) -> f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, o955:0, i813:0, o955:0) :|: i824:0 <= i813:0 f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, java.lang.Object(IntList(EOC, i824:0, o955:0)), i813:0, java.lang.Object(IntList(EOC, i824:0, o955:0))) -> f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, o955:0, i824:0, o955:0) :|: i824:0 > i813:0 Removed following non-SCC rules: f5130_0_max_NULL(EOS(STATIC_5130), i814:0, o942:0, o943:0, NULL, i813:0, NULL) -> f5377_0_member_Load(EOS(STATIC_5377), i814:0, o942:0, i814:0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 Filtered constant ground arguments: f5130_0_max_NULL(x1, x2, x3, x4, x5, x6, x7) -> f5130_0_max_NULL(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS IntList(x1, x2, x3) -> IntList(x2, x3) Filtered duplicate arguments: f5130_0_max_NULL(x1, x2, x3, x4, x5, x6) -> f5130_0_max_NULL(x1, x2, x3, x5, x6) Filtered unneeded arguments: f5130_0_max_NULL(x1, x2, x3, x4, x5) -> f5130_0_max_NULL(x1, x2, x4, x5) Finished conversion. Obtained 3 rules.P rules: f5130_0_max_NULL(i814:0, o942:0, i813:0, NULL) -> f5130_0_max_NULL(i814:0 + 1, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 f5130_0_max_NULL(i814:0, o942:0, i813:0, java.lang.Object(IntList(i824:0, o955:0))) -> f5130_0_max_NULL(i814:0, o942:0, i813:0, o955:0) :|: i824:0 <= i813:0 f5130_0_max_NULL(i814:0, o942:0, i813:0, java.lang.Object(IntList(i824:0, o955:0))) -> f5130_0_max_NULL(i814:0, o942:0, i824:0, o955:0) :|: i824:0 > i813:0 ---------------------------------------- (37) Obligation: Rules: f5130_0_max_NULL(i814:0, o942:0, i813:0, NULL) -> f5130_0_max_NULL(i814:0 + 1, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5130_0_max_NULL(x, x1, x2, x4) :|: x3 <= x2 f5130_0_max_NULL(x5, x6, x7, java.lang.Object(IntList(x8, x9))) -> f5130_0_max_NULL(x5, x6, x8, x9) :|: x8 > x7 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f5130_0_max_NULL(i814:0, o942:0, i813:0, NULL) -> f5130_0_max_NULL(arith, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 && arith = i814:0 + 1 f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5130_0_max_NULL(x, x1, x2, x4) :|: x3 <= x2 f5130_0_max_NULL(x5, x6, x7, java.lang.Object(IntList(x8, x9))) -> f5130_0_max_NULL(x5, x6, x8, x9) :|: x8 > x7 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5130_0_max_NULL(i814:0, o942:0, i813:0, NULL) -> f5130_0_max_NULL(arith, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 && arith = i814:0 + 1 (2) f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5130_0_max_NULL(x, x1, x2, x4) :|: x3 <= x2 (3) f5130_0_max_NULL(x5, x6, x7, java.lang.Object(IntList(x8, x9))) -> f5130_0_max_NULL(x5, x6, x8, x9) :|: x8 > x7 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f5130_0_max_NULL(i814:0, o942:0, i813:0, NULL) -> f5130_0_max_NULL(arith, o942:0, 0, o942:0) :|: i814:0 <= i813:0 && i812:0 > 0 && arith = i814:0 + 1 (2) f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5130_0_max_NULL(x, x1, x2, x4) :|: x3 <= x2 (3) f5130_0_max_NULL(x5, x6, x7, java.lang.Object(IntList(x8, x9))) -> f5130_0_max_NULL(x5, x6, x8, x9) :|: x8 > x7 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f5130_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, x4:0))) -> f5130_0_max_NULL(x:0, x1:0, x2:0, x4:0) :|: x3:0 <= x2:0 f5130_0_max_NULL(i814:0:0, o942:0:0, i813:0:0, NULL) -> f5130_0_max_NULL(i814:0:0 + 1, o942:0:0, 0, o942:0:0) :|: i814:0:0 <= i813:0:0 && i812:0:0 > 0 f5130_0_max_NULL(x5:0, x6:0, x7:0, java.lang.Object(IntList(x8:0, x9:0))) -> f5130_0_max_NULL(x5:0, x6:0, x8:0, x9:0) :|: x8:0 > x7:0 ---------------------------------------- (44) IRSwTChainingProof (EQUIVALENT) Chaining! ---------------------------------------- (45) Obligation: Rules: f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5130_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 f5130_0_max_NULL(i814:0:0, o942:0:0, i813:0:0, NULL) -> f5130_0_max_NULL(i814:0:0 + 1, o942:0:0, 0, o942:0:0) :|: i814:0:0 <= i813:0:0 && i812:0:0 > 0 f5130_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, NULL))) -> f5130_0_max_NULL(x10 + 1, x11, 0, x11) :|: TRUE && x13 + -1 * x12 <= 0 && x10 + -1 * x12 <= 0 && x18 >= 1 f5130_0_max_NULL(x5:0, x6:0, x7:0, java.lang.Object(IntList(x8:0, x9:0))) -> f5130_0_max_NULL(x5:0, x6:0, x8:0, x9:0) :|: x8:0 > x7:0 f5130_0_max_NULL(x19, x20, x21, java.lang.Object(IntList(x22, java.lang.Object(IntList(x27, x28))))) -> f5130_0_max_NULL(x19, x20, x27, x28) :|: TRUE && x22 + -1 * x21 <= 0 && x27 + -1 * x21 >= 1 ---------------------------------------- (46) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5130_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 (2) f5130_0_max_NULL(i814:0:0, o942:0:0, i813:0:0, NULL) -> f5130_0_max_NULL(i814:0:0 + 1, o942:0:0, 0, o942:0:0) :|: i814:0:0 <= i813:0:0 && i812:0:0 > 0 (3) f5130_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, NULL))) -> f5130_0_max_NULL(x10 + 1, x11, 0, x11) :|: TRUE && x13 + -1 * x12 <= 0 && x10 + -1 * x12 <= 0 && x18 >= 1 (4) f5130_0_max_NULL(x5:0, x6:0, x7:0, java.lang.Object(IntList(x8:0, x9:0))) -> f5130_0_max_NULL(x5:0, x6:0, x8:0, x9:0) :|: x8:0 > x7:0 (5) f5130_0_max_NULL(x19, x20, x21, java.lang.Object(IntList(x22, java.lang.Object(IntList(x27, x28))))) -> f5130_0_max_NULL(x19, x20, x27, x28) :|: TRUE && x22 + -1 * x21 <= 0 && x27 + -1 * x21 >= 1 Arcs: (1) -> (1), (2), (3), (4), (5) (2) -> (1), (2), (3), (4), (5) (3) -> (1), (2), (3), (4), (5) (4) -> (1), (2), (3), (4), (5) (5) -> (1), (2), (3), (4), (5) This digraph is fully evaluated! ---------------------------------------- (47) Obligation: Termination digraph: Nodes: (1) f5130_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5130_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 (2) f5130_0_max_NULL(i814:0:0, o942:0:0, i813:0:0, NULL) -> f5130_0_max_NULL(i814:0:0 + 1, o942:0:0, 0, o942:0:0) :|: i814:0:0 <= i813:0:0 && i812:0:0 > 0 (3) f5130_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, NULL))) -> f5130_0_max_NULL(x10 + 1, x11, 0, x11) :|: TRUE && x13 + -1 * x12 <= 0 && x10 + -1 * x12 <= 0 && x18 >= 1 (4) f5130_0_max_NULL(x5:0, x6:0, x7:0, java.lang.Object(IntList(x8:0, x9:0))) -> f5130_0_max_NULL(x5:0, x6:0, x8:0, x9:0) :|: x8:0 > x7:0 (5) f5130_0_max_NULL(x19, x20, x21, java.lang.Object(IntList(x22, java.lang.Object(IntList(x27, x28))))) -> f5130_0_max_NULL(x19, x20, x27, x28) :|: TRUE && x22 + -1 * x21 <= 0 && x27 + -1 * x21 >= 1 Arcs: (1) -> (1), (2), (3), (4), (5) (2) -> (1), (2), (3), (4), (5) (3) -> (1), (2), (3), (4), (5) (4) -> (1), (2), (3), (4), (5) (5) -> (1), (2), (3), (4), (5) This digraph is fully evaluated! ---------------------------------------- (48) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (49) Obligation: Rules: f5130_0_max_NULL(i814:0:0:0, o942:0:0:0, i813:0:0:0, NULL) -> f5130_0_max_NULL(i814:0:0:0 + 1, o942:0:0:0, 0, o942:0:0:0) :|: i814:0:0:0 <= i813:0:0:0 && i812:0:0:0 > 0 f5130_0_max_NULL(x5:0:0, x6:0:0, x7:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))) -> f5130_0_max_NULL(x5:0:0, x6:0:0, x8:0:0, x9:0:0) :|: x8:0:0 > x7:0:0 f5130_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, NULL))) -> f5130_0_max_NULL(x10:0 + 1, x11:0, 0, x11:0) :|: x10:0 + -1 * x12:0 <= 0 && x13:0 + -1 * x12:0 <= 0 && x18:0 > 0 f5130_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5130_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 f5130_0_max_NULL(x19:0, x20:0, x21:0, java.lang.Object(IntList(x22:0, java.lang.Object(IntList(x27:0, x28:0))))) -> f5130_0_max_NULL(x19:0, x20:0, x27:0, x28:0) :|: x27:0 + -1 * x21:0 >= 1 && x22:0 + -1 * x21:0 <= 0 ---------------------------------------- (50) IRSwTChainingProof (EQUIVALENT) Chaining! ---------------------------------------- (51) Obligation: Rules: f5130_0_max_NULL(x, NULL, x2, NULL) -> f5130_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x + -1 * x2 <= 0 && x3 >= 1 && x <= -1 && x7 >= 1 f5130_0_max_NULL(x5:0:0, x6:0:0, x7:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))) -> f5130_0_max_NULL(x5:0:0, x6:0:0, x8:0:0, x9:0:0) :|: x8:0:0 > x7:0:0 f5130_0_max_NULL(x8, java.lang.Object(IntList(x15, x16)), x10, NULL) -> f5130_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, x16)), x15, x16) :|: TRUE && x8 + -1 * x10 <= 0 && x11 >= 1 && x15 >= 1 f5130_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, NULL))) -> f5130_0_max_NULL(x10:0 + 1, x11:0, 0, x11:0) :|: x10:0 + -1 * x12:0 <= 0 && x13:0 + -1 * x12:0 <= 0 && x18:0 > 0 f5130_0_max_NULL(x17, java.lang.Object(IntList(x24, NULL)), x19, NULL) -> f5130_0_max_NULL(x17 + 2, java.lang.Object(IntList(x24, NULL)), 0, java.lang.Object(IntList(x24, NULL))) :|: TRUE && x17 + -1 * x19 <= 0 && x20 >= 1 && x17 <= -1 && x24 <= 0 && x25 >= 1 f5130_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5130_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 f5130_0_max_NULL(x26, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), x28, NULL) -> f5130_0_max_NULL(x26 + 1, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), 0, x35) :|: TRUE && x26 + -1 * x28 <= 0 && x29 >= 1 && x34 <= 0 && x33 <= 0 f5130_0_max_NULL(x19:0, x20:0, x21:0, java.lang.Object(IntList(x22:0, java.lang.Object(IntList(x27:0, x28:0))))) -> f5130_0_max_NULL(x19:0, x20:0, x27:0, x28:0) :|: x27:0 + -1 * x21:0 >= 1 && x22:0 + -1 * x21:0 <= 0 f5130_0_max_NULL(x36, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x38, NULL) -> f5130_0_max_NULL(x36 + 1, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x44, x45) :|: TRUE && x36 + -1 * x38 <= 0 && x39 >= 1 && x44 >= 1 && x43 <= 0 ---------------------------------------- (52) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5130_0_max_NULL(x, NULL, x2, NULL) -> f5130_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x + -1 * x2 <= 0 && x3 >= 1 && x <= -1 && x7 >= 1 (2) f5130_0_max_NULL(x5:0:0, x6:0:0, x7:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))) -> f5130_0_max_NULL(x5:0:0, x6:0:0, x8:0:0, x9:0:0) :|: x8:0:0 > x7:0:0 (3) f5130_0_max_NULL(x8, java.lang.Object(IntList(x15, x16)), x10, NULL) -> f5130_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, x16)), x15, x16) :|: TRUE && x8 + -1 * x10 <= 0 && x11 >= 1 && x15 >= 1 (4) f5130_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, NULL))) -> f5130_0_max_NULL(x10:0 + 1, x11:0, 0, x11:0) :|: x10:0 + -1 * x12:0 <= 0 && x13:0 + -1 * x12:0 <= 0 && x18:0 > 0 (5) f5130_0_max_NULL(x17, java.lang.Object(IntList(x24, NULL)), x19, NULL) -> f5130_0_max_NULL(x17 + 2, java.lang.Object(IntList(x24, NULL)), 0, java.lang.Object(IntList(x24, NULL))) :|: TRUE && x17 + -1 * x19 <= 0 && x20 >= 1 && x17 <= -1 && x24 <= 0 && x25 >= 1 (6) f5130_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5130_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 (7) f5130_0_max_NULL(x26, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), x28, NULL) -> f5130_0_max_NULL(x26 + 1, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), 0, x35) :|: TRUE && x26 + -1 * x28 <= 0 && x29 >= 1 && x34 <= 0 && x33 <= 0 (8) f5130_0_max_NULL(x19:0, x20:0, x21:0, java.lang.Object(IntList(x22:0, java.lang.Object(IntList(x27:0, x28:0))))) -> f5130_0_max_NULL(x19:0, x20:0, x27:0, x28:0) :|: x27:0 + -1 * x21:0 >= 1 && x22:0 + -1 * x21:0 <= 0 (9) f5130_0_max_NULL(x36, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x38, NULL) -> f5130_0_max_NULL(x36 + 1, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x44, x45) :|: TRUE && x36 + -1 * x38 <= 0 && x39 >= 1 && x44 >= 1 && x43 <= 0 Arcs: (1) -> (1) (2) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) (3) -> (2), (3), (4), (6), (8) (4) -> (1), (2), (4), (6), (8) (5) -> (4) (6) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) (7) -> (2), (4), (6), (7), (8) (8) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) (9) -> (2), (4), (6), (8), (9) This digraph is fully evaluated! ---------------------------------------- (53) Complex Obligation (AND) ---------------------------------------- (54) Obligation: Termination digraph: Nodes: (1) f5130_0_max_NULL(x5:0:0, x6:0:0, x7:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))) -> f5130_0_max_NULL(x5:0:0, x6:0:0, x8:0:0, x9:0:0) :|: x8:0:0 > x7:0:0 (2) f5130_0_max_NULL(x8, java.lang.Object(IntList(x15, x16)), x10, NULL) -> f5130_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, x16)), x15, x16) :|: TRUE && x8 + -1 * x10 <= 0 && x11 >= 1 && x15 >= 1 (3) f5130_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5130_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 (4) f5130_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, NULL))) -> f5130_0_max_NULL(x10:0 + 1, x11:0, 0, x11:0) :|: x10:0 + -1 * x12:0 <= 0 && x13:0 + -1 * x12:0 <= 0 && x18:0 > 0 (5) f5130_0_max_NULL(x17, java.lang.Object(IntList(x24, NULL)), x19, NULL) -> f5130_0_max_NULL(x17 + 2, java.lang.Object(IntList(x24, NULL)), 0, java.lang.Object(IntList(x24, NULL))) :|: TRUE && x17 + -1 * x19 <= 0 && x20 >= 1 && x17 <= -1 && x24 <= 0 && x25 >= 1 (6) f5130_0_max_NULL(x19:0, x20:0, x21:0, java.lang.Object(IntList(x22:0, java.lang.Object(IntList(x27:0, x28:0))))) -> f5130_0_max_NULL(x19:0, x20:0, x27:0, x28:0) :|: x27:0 + -1 * x21:0 >= 1 && x22:0 + -1 * x21:0 <= 0 (7) f5130_0_max_NULL(x36, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x38, NULL) -> f5130_0_max_NULL(x36 + 1, java.lang.Object(IntList(x43, java.lang.Object(IntList(x44, x45)))), x44, x45) :|: TRUE && x36 + -1 * x38 <= 0 && x39 >= 1 && x44 >= 1 && x43 <= 0 (8) f5130_0_max_NULL(x26, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), x28, NULL) -> f5130_0_max_NULL(x26 + 1, java.lang.Object(IntList(x33, java.lang.Object(IntList(x34, x35)))), 0, x35) :|: TRUE && x26 + -1 * x28 <= 0 && x29 >= 1 && x34 <= 0 && x33 <= 0 Arcs: (1) -> (1), (2), (3), (4), (5), (6), (7), (8) (2) -> (1), (2), (3), (4), (6) (3) -> (1), (2), (3), (4), (5), (6), (7), (8) (4) -> (1), (3), (4), (6) (5) -> (4) (6) -> (1), (2), (3), (4), (5), (6), (7), (8) (7) -> (1), (3), (4), (6), (7) (8) -> (1), (3), (4), (6), (8) This digraph is fully evaluated! ---------------------------------------- (55) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (56) Obligation: Rules: f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))))) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0 f5130_0_max_NULL(x17:0, java.lang.Object(IntList(x24:0, NULL)), x19:0, NULL) -> f5130_0_max_NULL(x17:0 + 2, java.lang.Object(IntList(x24:0, NULL)), 0, java.lang.Object(IntList(x24:0, NULL))) :|: x24:0 < 1 && x25:0 > 0 && x17:0 < 0 && x17:0 + -1 * x19:0 <= 0 && x20:0 > 0 f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, java.lang.Object(IntList(x8:0:0:0, x9:0:0:0))) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: x8:0:0:0 > x7:0:0:0 f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, NULL))) -> f5130_0_max_NULL(x10:0:0 + 1, x11:0:0, 0, x11:0:0) :|: x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0 f5130_0_max_NULL(x26:0, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), x28:0, NULL) -> f5130_0_max_NULL(x26:0 + 1, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), 0, x35:0) :|: x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0 f5130_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, x16:0)), x10:0, NULL) -> f5130_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, x16:0)), x15:0, x16:0) :|: x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0 f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, java.lang.Object(IntList(x22:0:0, java.lang.Object(IntList(x27:0:0, x28:0:0))))) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0 f5130_0_max_NULL(x36:0, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x38:0, NULL) -> f5130_0_max_NULL(x36:0 + 1, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x44:0, x45:0) :|: x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0 ---------------------------------------- (57) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5130_0_max_NULL(VARIABLE, VARIABLE, VARIABLE, VARIABLE) java.lang.Object(VARIABLE) IntList(INTEGER, VARIABLE) NULL() Replaced non-predefined constructor symbols by 0.The following proof was generated: # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given IntTRS could not be shown: - IntTRS - RankingReductionPairProof Rules: f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, c) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: c = 0 && (x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0) f5130_0_max_NULL(x17:0, c1, x19:0, c2) -> f5130_0_max_NULL(c3, c4, c5, c6) :|: c6 = 0 && (c5 = 0 && (c4 = 0 && (c3 = x17:0 + 2 && (c2 = 0 && c1 = 0)))) && (x24:0 < 1 && x25:0 > 0 && x17:0 < 0 && x17:0 + -1 * x19:0 <= 0 && x20:0 > 0) f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, c7) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: c7 = 0 && x8:0:0:0 > x7:0:0:0 f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, c8) -> f5130_0_max_NULL(c9, x11:0:0, c10, x11:0:0) :|: c10 = 0 && (c9 = x10:0:0 + 1 && c8 = 0) && (x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0) f5130_0_max_NULL(x26:0, c11, x28:0, c12) -> f5130_0_max_NULL(c13, c14, c15, x35:0) :|: c15 = 0 && (c14 = 0 && (c13 = x26:0 + 1 && (c12 = 0 && c11 = 0))) && (x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0) f5130_0_max_NULL(x8:0, c16, x10:0, c17) -> f5130_0_max_NULL(c18, c19, x15:0, x16:0) :|: c19 = 0 && (c18 = x8:0 + 1 && (c17 = 0 && c16 = 0)) && (x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0) f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, c20) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: c20 = 0 && (x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0) f5130_0_max_NULL(x36:0, c21, x38:0, c22) -> f5130_0_max_NULL(c23, c24, x44:0, x45:0) :|: c24 = 0 && (c23 = x36:0 + 1 && (c22 = 0 && c21 = 0)) && (x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0) Interpretation: [ f5130_0_max_NULL ] = -3*f5130_0_max_NULL_1 + 3*f5130_0_max_NULL_2 The following rules are decreasing: f5130_0_max_NULL(x17:0, c1, x19:0, c2) -> f5130_0_max_NULL(c3, c4, c5, c6) :|: c6 = 0 && (c5 = 0 && (c4 = 0 && (c3 = x17:0 + 2 && (c2 = 0 && c1 = 0)))) && (x24:0 < 1 && x25:0 > 0 && x17:0 < 0 && x17:0 + -1 * x19:0 <= 0 && x20:0 > 0) f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, c8) -> f5130_0_max_NULL(c9, x11:0:0, c10, x11:0:0) :|: c10 = 0 && (c9 = x10:0:0 + 1 && c8 = 0) && (x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0) f5130_0_max_NULL(x26:0, c11, x28:0, c12) -> f5130_0_max_NULL(c13, c14, c15, x35:0) :|: c15 = 0 && (c14 = 0 && (c13 = x26:0 + 1 && (c12 = 0 && c11 = 0))) && (x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0) f5130_0_max_NULL(x8:0, c16, x10:0, c17) -> f5130_0_max_NULL(c18, c19, x15:0, x16:0) :|: c19 = 0 && (c18 = x8:0 + 1 && (c17 = 0 && c16 = 0)) && (x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0) f5130_0_max_NULL(x36:0, c21, x38:0, c22) -> f5130_0_max_NULL(c23, c24, x44:0, x45:0) :|: c24 = 0 && (c23 = x36:0 + 1 && (c22 = 0 && c21 = 0)) && (x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0) The following rules are bounded: f5130_0_max_NULL(x17:0, c1, x19:0, c2) -> f5130_0_max_NULL(c3, c4, c5, c6) :|: c6 = 0 && (c5 = 0 && (c4 = 0 && (c3 = x17:0 + 2 && (c2 = 0 && c1 = 0)))) && (x24:0 < 1 && x25:0 > 0 && x17:0 < 0 && x17:0 + -1 * x19:0 <= 0 && x20:0 > 0) - IntTRS - RankingReductionPairProof - IntTRS Rules: f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, c) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: c = 0 && (x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0) f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, c7) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: c7 = 0 && x8:0:0:0 > x7:0:0:0 f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, c8) -> f5130_0_max_NULL(c9, x11:0:0, c10, x11:0:0) :|: c10 = 0 && (c9 = x10:0:0 + 1 && c8 = 0) && (x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0) f5130_0_max_NULL(x26:0, c11, x28:0, c12) -> f5130_0_max_NULL(c13, c14, c15, x35:0) :|: c15 = 0 && (c14 = 0 && (c13 = x26:0 + 1 && (c12 = 0 && c11 = 0))) && (x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0) f5130_0_max_NULL(x8:0, c16, x10:0, c17) -> f5130_0_max_NULL(c18, c19, x15:0, x16:0) :|: c19 = 0 && (c18 = x8:0 + 1 && (c17 = 0 && c16 = 0)) && (x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0) f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, c20) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: c20 = 0 && (x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0) f5130_0_max_NULL(x36:0, c21, x38:0, c22) -> f5130_0_max_NULL(c23, c24, x44:0, x45:0) :|: c24 = 0 && (c23 = x36:0 + 1 && (c22 = 0 && c21 = 0)) && (x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0) ---------------------------------------- (58) Obligation: Rules: f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))))) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0 f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, java.lang.Object(IntList(x8:0:0:0, x9:0:0:0))) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: x8:0:0:0 > x7:0:0:0 f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, NULL))) -> f5130_0_max_NULL(x10:0:0 + 1, x11:0:0, 0, x11:0:0) :|: x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0 f5130_0_max_NULL(x26:0, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), x28:0, NULL) -> f5130_0_max_NULL(x26:0 + 1, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), 0, x35:0) :|: x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0 f5130_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, x16:0)), x10:0, NULL) -> f5130_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, x16:0)), x15:0, x16:0) :|: x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0 f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, java.lang.Object(IntList(x22:0:0, java.lang.Object(IntList(x27:0:0, x28:0:0))))) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0 f5130_0_max_NULL(x36:0, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x38:0, NULL) -> f5130_0_max_NULL(x36:0 + 1, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x44:0, x45:0) :|: x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0 ---------------------------------------- (59) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))))) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0 (2) f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, java.lang.Object(IntList(x8:0:0:0, x9:0:0:0))) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: x8:0:0:0 > x7:0:0:0 (3) f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, NULL))) -> f5130_0_max_NULL(x10:0:0 + 1, x11:0:0, 0, x11:0:0) :|: x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0 (4) f5130_0_max_NULL(x26:0, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), x28:0, NULL) -> f5130_0_max_NULL(x26:0 + 1, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), 0, x35:0) :|: x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0 (5) f5130_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, x16:0)), x10:0, NULL) -> f5130_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, x16:0)), x15:0, x16:0) :|: x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0 (6) f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, java.lang.Object(IntList(x22:0:0, java.lang.Object(IntList(x27:0:0, x28:0:0))))) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0 (7) f5130_0_max_NULL(x36:0, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x38:0, NULL) -> f5130_0_max_NULL(x36:0 + 1, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x44:0, x45:0) :|: x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0 Arcs: (1) -> (1), (2), (3), (4), (5), (6), (7) (2) -> (1), (2), (3), (4), (5), (6), (7) (3) -> (1), (2), (3), (6) (4) -> (1), (2), (3), (4), (6) (5) -> (1), (2), (3), (5), (6) (6) -> (1), (2), (3), (4), (5), (6), (7) (7) -> (1), (2), (3), (6), (7) This digraph is fully evaluated! ---------------------------------------- (60) Obligation: Termination digraph: Nodes: (1) f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, java.lang.Object(IntList(x8:0:0, x9:0:0))))) -> f5130_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0 (2) f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x7:0:0:0, java.lang.Object(IntList(x8:0:0:0, x9:0:0:0))) -> f5130_0_max_NULL(x5:0:0:0, x6:0:0:0, x8:0:0:0, x9:0:0:0) :|: x8:0:0:0 > x7:0:0:0 (3) f5130_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, NULL))) -> f5130_0_max_NULL(x10:0:0 + 1, x11:0:0, 0, x11:0:0) :|: x10:0:0 + -1 * x12:0:0 <= 0 && x13:0:0 + -1 * x12:0:0 <= 0 && x18:0:0 > 0 (4) f5130_0_max_NULL(x26:0, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), x28:0, NULL) -> f5130_0_max_NULL(x26:0 + 1, java.lang.Object(IntList(x33:0, java.lang.Object(IntList(x34:0, x35:0)))), 0, x35:0) :|: x34:0 < 1 && x33:0 < 1 && x26:0 + -1 * x28:0 <= 0 && x29:0 > 0 (5) f5130_0_max_NULL(x19:0:0, x20:0:0, x21:0:0, java.lang.Object(IntList(x22:0:0, java.lang.Object(IntList(x27:0:0, x28:0:0))))) -> f5130_0_max_NULL(x19:0:0, x20:0:0, x27:0:0, x28:0:0) :|: x27:0:0 + -1 * x21:0:0 >= 1 && x22:0:0 + -1 * x21:0:0 <= 0 (6) f5130_0_max_NULL(x36:0, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x38:0, NULL) -> f5130_0_max_NULL(x36:0 + 1, java.lang.Object(IntList(x43:0, java.lang.Object(IntList(x44:0, x45:0)))), x44:0, x45:0) :|: x44:0 > 0 && x43:0 < 1 && x36:0 + -1 * x38:0 <= 0 && x39:0 > 0 (7) f5130_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, x16:0)), x10:0, NULL) -> f5130_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, x16:0)), x15:0, x16:0) :|: x11:0 > 0 && x8:0 + -1 * x10:0 <= 0 && x15:0 > 0 Arcs: (1) -> (1), (2), (3), (4), (5), (6), (7) (2) -> (1), (2), (3), (4), (5), (6), (7) (3) -> (1), (2), (3), (5) (4) -> (1), (2), (3), (4), (5) (5) -> (1), (2), (3), (4), (5), (6), (7) (6) -> (1), (2), (3), (5), (6) (7) -> (1), (2), (3), (5), (7) This digraph is fully evaluated! ---------------------------------------- (61) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (62) Obligation: Rules: f5130_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, java.lang.Object(IntList(x3:0:0:0, java.lang.Object(IntList(x8:0:0:0, x9:0:0:0))))) -> f5130_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, x9:0:0:0) :|: x8:0:0:0 + -1 * x2:0:0:0 <= 0 && x3:0:0:0 + -1 * x2:0:0:0 <= 0 f5130_0_max_NULL(x5:0:0:0:0, x6:0:0:0:0, x7:0:0:0:0, java.lang.Object(IntList(x8:0:0:0:0, x9:0:0:0:0))) -> f5130_0_max_NULL(x5:0:0:0:0, x6:0:0:0:0, x8:0:0:0:0, x9:0:0:0:0) :|: x8:0:0:0:0 > x7:0:0:0:0 f5130_0_max_NULL(x36:0:0, java.lang.Object(IntList(x43:0:0, java.lang.Object(IntList(x44:0:0, x45:0:0)))), x38:0:0, NULL) -> f5130_0_max_NULL(x36:0:0 + 1, java.lang.Object(IntList(x43:0:0, java.lang.Object(IntList(x44:0:0, x45:0:0)))), x44:0:0, x45:0:0) :|: x36:0:0 + -1 * x38:0:0 <= 0 && x39:0:0 > 0 && x43:0:0 < 1 && x44:0:0 > 0 f5130_0_max_NULL(x10:0:0:0, x11:0:0:0, x12:0:0:0, java.lang.Object(IntList(x13:0:0:0, NULL))) -> f5130_0_max_NULL(x10:0:0:0 + 1, x11:0:0:0, 0, x11:0:0:0) :|: x10:0:0:0 + -1 * x12:0:0:0 <= 0 && x13:0:0:0 + -1 * x12:0:0:0 <= 0 && x18:0:0:0 > 0 f5130_0_max_NULL(x26:0:0, java.lang.Object(IntList(x33:0:0, java.lang.Object(IntList(x34:0:0, x35:0:0)))), x28:0:0, NULL) -> f5130_0_max_NULL(x26:0:0 + 1, java.lang.Object(IntList(x33:0:0, java.lang.Object(IntList(x34:0:0, x35:0:0)))), 0, x35:0:0) :|: x26:0:0 + -1 * x28:0:0 <= 0 && x29:0:0 > 0 && x33:0:0 < 1 && x34:0:0 < 1 f5130_0_max_NULL(x19:0:0:0, x20:0:0:0, x21:0:0:0, java.lang.Object(IntList(x22:0:0:0, java.lang.Object(IntList(x27:0:0:0, x28:0:0:0))))) -> f5130_0_max_NULL(x19:0:0:0, x20:0:0:0, x27:0:0:0, x28:0:0:0) :|: x27:0:0:0 + -1 * x21:0:0:0 >= 1 && x22:0:0:0 + -1 * x21:0:0:0 <= 0 f5130_0_max_NULL(x8:0:0, java.lang.Object(IntList(x15:0:0, x16:0:0)), x10:0:0, NULL) -> f5130_0_max_NULL(x8:0:0 + 1, java.lang.Object(IntList(x15:0:0, x16:0:0)), x15:0:0, x16:0:0) :|: x11:0:0 > 0 && x8:0:0 + -1 * x10:0:0 <= 0 && x15:0:0 > 0 ---------------------------------------- (63) Obligation: Termination digraph: Nodes: (1) f5130_0_max_NULL(x, NULL, x2, NULL) -> f5130_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x + -1 * x2 <= 0 && x3 >= 1 && x <= -1 && x7 >= 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (64) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (65) Obligation: Rules: f5130_0_max_NULL(x:0, NULL, x2:0, NULL) -> f5130_0_max_NULL(x:0 + 2, NULL, 0, NULL) :|: x:0 < 0 && x7:0 > 0 && x:0 + -1 * x2:0 <= 0 && x3:0 > 0 ---------------------------------------- (66) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f5130_0_max_NULL(x1, x2, x3, x4) -> f5130_0_max_NULL(x1, x3) ---------------------------------------- (67) Obligation: Rules: f5130_0_max_NULL(x:0, x2:0) -> f5130_0_max_NULL(x:0 + 2, 0) :|: x:0 < 0 && x7:0 > 0 && x:0 + -1 * x2:0 <= 0 && x3:0 > 0 ---------------------------------------- (68) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5130_0_max_NULL(INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (69) Obligation: Rules: f5130_0_max_NULL(x:0, x2:0) -> f5130_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (x:0 < 0 && x7:0 > 0 && x:0 + -1 * x2:0 <= 0 && x3:0 > 0) ---------------------------------------- (70) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f5130_0_max_NULL(x, x1)] = -1 - x The following rules are decreasing: f5130_0_max_NULL(x:0, x2:0) -> f5130_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (x:0 < 0 && x7:0 > 0 && x:0 + -1 * x2:0 <= 0 && x3:0 > 0) The following rules are bounded: f5130_0_max_NULL(x:0, x2:0) -> f5130_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (x:0 < 0 && x7:0 > 0 && x:0 + -1 * x2:0 <= 0 && x3:0 > 0) ---------------------------------------- (71) YES