25.52/14.33 MAYBE 25.52/14.34 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 25.52/14.34 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 25.52/14.34 25.52/14.34 25.52/14.34 termination of the given Bare JBC problem could not be shown: 25.52/14.34 25.52/14.34 (0) Bare JBC problem 25.52/14.34 (1) BareJBCToJBCProof [EQUIVALENT, 94 ms] 25.52/14.34 (2) JBC problem 25.52/14.34 (3) JBCToGraph [EQUIVALENT, 927 ms] 25.52/14.34 (4) JBCTerminationGraph 25.52/14.34 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 25.52/14.34 (6) AND 25.52/14.34 (7) JBCTerminationSCC 25.52/14.34 (8) SCCToIRSProof [SOUND, 8 ms] 25.52/14.34 (9) IRSwT 25.52/14.34 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 25.52/14.34 (11) IRSwT 25.52/14.34 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 17 ms] 25.52/14.34 (13) IRSwT 25.52/14.34 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (15) IRSwT 25.52/14.34 (16) TempFilterProof [SOUND, 23 ms] 25.52/14.34 (17) IRSwT 25.52/14.34 (18) IRSwTToQDPProof [SOUND, 0 ms] 25.52/14.34 (19) QDP 25.52/14.34 (20) QDPSizeChangeProof [EQUIVALENT, 0 ms] 25.52/14.34 (21) YES 25.52/14.34 (22) JBCTerminationSCC 25.52/14.34 (23) SCCToIRSProof [SOUND, 32 ms] 25.52/14.34 (24) IRSwT 25.52/14.34 (25) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 25.52/14.34 (26) IRSwT 25.52/14.34 (27) IRSwTTerminationDigraphProof [EQUIVALENT, 3 ms] 25.52/14.34 (28) IRSwT 25.52/14.34 (29) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (30) IRSwT 25.52/14.34 (31) TempFilterProof [SOUND, 39 ms] 25.52/14.34 (32) IntTRS 25.52/14.34 (33) RankingReductionPairProof [EQUIVALENT, 0 ms] 25.52/14.34 (34) YES 25.52/14.34 (35) JBCTerminationSCC 25.52/14.34 (36) SCCToIRSProof [SOUND, 89 ms] 25.52/14.34 (37) IRSwT 25.52/14.34 (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 25.52/14.34 (39) IRSwT 25.52/14.34 (40) IRSwTTerminationDigraphProof [EQUIVALENT, 35 ms] 25.52/14.34 (41) IRSwT 25.52/14.34 (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (43) IRSwT 25.52/14.34 (44) IRSwTChainingProof [EQUIVALENT, 0 ms] 25.52/14.34 (45) IRSwT 25.52/14.34 (46) IRSwTTerminationDigraphProof [EQUIVALENT, 66 ms] 25.52/14.34 (47) IRSwT 25.52/14.34 (48) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (49) IRSwT 25.52/14.34 (50) IRSwTChainingProof [EQUIVALENT, 0 ms] 25.52/14.34 (51) IRSwT 25.52/14.34 (52) IRSwTTerminationDigraphProof [EQUIVALENT, 148 ms] 25.52/14.34 (53) AND 25.52/14.34 (54) IRSwT 25.52/14.34 (55) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (56) IRSwT 25.52/14.34 (57) TempFilterProof [SOUND, 998 ms] 25.52/14.34 (58) IRSwT 25.52/14.34 (59) IRSwTTerminationDigraphProof [EQUIVALENT, 99 ms] 25.52/14.34 (60) IRSwT 25.52/14.34 (61) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (62) IRSwT 25.52/14.34 (63) IRSwT 25.52/14.34 (64) IntTRSCompressionProof [EQUIVALENT, 0 ms] 25.52/14.34 (65) IRSwT 25.52/14.34 (66) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 25.52/14.34 (67) IRSwT 25.52/14.34 (68) TempFilterProof [SOUND, 7 ms] 25.52/14.34 (69) IntTRS 25.52/14.34 (70) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 25.52/14.34 (71) YES 25.52/14.34 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (0) 25.52/14.34 Obligation: 25.52/14.34 need to prove termination of the following program: 25.52/14.34 public class Random { 25.52/14.34 static String[] args; 25.52/14.34 static int index = 0; 25.52/14.34 25.52/14.34 public static int random() { 25.52/14.34 String string = args[index]; 25.52/14.34 index++; 25.52/14.34 return string.length(); 25.52/14.34 } 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 public class SortCount{ 25.52/14.34 25.52/14.34 public static void main(String[] args) { 25.52/14.34 Random.args = args; 25.52/14.34 IntList l = IntList.createIntList(); 25.52/14.34 25.52/14.34 l = IntList.sort(0,l); 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 class IntList { 25.52/14.34 int value; 25.52/14.34 IntList next; 25.52/14.34 25.52/14.34 public IntList(int value, IntList next) { 25.52/14.34 this.value = value; 25.52/14.34 this.next = next; 25.52/14.34 } 25.52/14.34 25.52/14.34 public static IntList createIntList() { 25.52/14.34 25.52/14.34 int i = Random.random(); 25.52/14.34 IntList l = null; 25.52/14.34 25.52/14.34 while (i > 0) { 25.52/14.34 l = new IntList(Random.random(), l); 25.52/14.34 i--; 25.52/14.34 } 25.52/14.34 25.52/14.34 return l; 25.52/14.34 } 25.52/14.34 25.52/14.34 public static boolean member(int n, IntList l) { 25.52/14.34 while (l != null) { 25.52/14.34 if (l.value == n) return true; 25.52/14.34 else l =l.next; 25.52/14.34 } 25.52/14.34 25.52/14.34 return false; 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 public static int max(IntList l) { 25.52/14.34 int m = 0; 25.52/14.34 while (l !=null) { 25.52/14.34 if (l.value > m) m = l.value; 25.52/14.34 l = l.next; 25.52/14.34 } 25.52/14.34 return m; 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 public static IntList sort(int n, IntList l) { 25.52/14.34 IntList res =null; 25.52/14.34 while (max(l) >= n) { 25.52/14.34 if (member(n,l)) res = new IntList(n,res); 25.52/14.34 n++; 25.52/14.34 } 25.52/14.34 return res; 25.52/14.34 } 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (1) BareJBCToJBCProof (EQUIVALENT) 25.52/14.34 initialized classpath 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (2) 25.52/14.34 Obligation: 25.52/14.34 need to prove termination of the following program: 25.52/14.34 public class Random { 25.52/14.34 static String[] args; 25.52/14.34 static int index = 0; 25.52/14.34 25.52/14.34 public static int random() { 25.52/14.34 String string = args[index]; 25.52/14.34 index++; 25.52/14.34 return string.length(); 25.52/14.34 } 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 public class SortCount{ 25.52/14.34 25.52/14.34 public static void main(String[] args) { 25.52/14.34 Random.args = args; 25.52/14.34 IntList l = IntList.createIntList(); 25.52/14.34 25.52/14.34 l = IntList.sort(0,l); 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 class IntList { 25.52/14.34 int value; 25.52/14.34 IntList next; 25.52/14.34 25.52/14.34 public IntList(int value, IntList next) { 25.52/14.34 this.value = value; 25.52/14.34 this.next = next; 25.52/14.34 } 25.52/14.34 25.52/14.34 public static IntList createIntList() { 25.52/14.34 25.52/14.34 int i = Random.random(); 25.52/14.34 IntList l = null; 25.52/14.34 25.52/14.34 while (i > 0) { 25.52/14.34 l = new IntList(Random.random(), l); 25.52/14.34 i--; 25.52/14.34 } 25.52/14.34 25.52/14.34 return l; 25.52/14.34 } 25.52/14.34 25.52/14.34 public static boolean member(int n, IntList l) { 25.52/14.34 while (l != null) { 25.52/14.34 if (l.value == n) return true; 25.52/14.34 else l =l.next; 25.52/14.34 } 25.52/14.34 25.52/14.34 return false; 25.52/14.34 25.52/14.34 } 25.52/14.34 25.52/14.34 public static int max(IntList l) { 25.52/14.34 int m = 0; 25.52/14.34 while (l !=null) { 25.52/14.34 if (l.value > m) m = l.value; 25.52/14.34 l = l.next; 25.52/14.34 } 25.52/14.34 return m; 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 public static IntList sort(int n, IntList l) { 25.52/14.34 IntList res =null; 25.52/14.34 while (max(l) >= n) { 25.52/14.34 if (member(n,l)) res = new IntList(n,res); 25.52/14.34 n++; 25.52/14.34 } 25.52/14.34 return res; 25.52/14.34 } 25.52/14.34 } 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (3) JBCToGraph (EQUIVALENT) 25.52/14.34 Constructed TerminationGraph. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (4) 25.52/14.34 Obligation: 25.52/14.34 Termination Graph based on JBC Program: 25.52/14.34 SortCount.main([Ljava/lang/String;)V: Graph of 111 nodes with 1 SCC. 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 IntList.createIntList()LIntList;: Graph of 187 nodes with 1 SCC. 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 IntList.member(ILIntList;)Z: Graph of 23 nodes with 1 SCC. 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (5) TerminationGraphToSCCProof (SOUND) 25.52/14.34 Splitted TerminationGraph to 3 SCCss. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (6) 25.52/14.34 Complex Obligation (AND) 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (7) 25.52/14.34 Obligation: 25.52/14.34 SCC of termination graph based on JBC Program. 25.52/14.34 SCC contains nodes from the following methods: IntList.member(ILIntList;)Z 25.52/14.34 SCC calls the following helper methods: 25.52/14.34 Performed SCC analyses: 25.52/14.34 *Used field analysis yielded the following read fields: 25.52/14.34 *IntList: [value, next] 25.52/14.34 *Marker field analysis yielded the following relations that could be markers: 25.52/14.34 *IntList.value != i461 (Introduced counter i794) 25.52/14.34 *IntList.value != i486 (Introduced counter i795) 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (8) SCCToIRSProof (SOUND) 25.52/14.34 Transformed FIGraph SCCs to intTRSs. Log: 25.52/14.34 Generated rules. Obtained 14 IRulesP rules: 25.52/14.34 f4784_0_member_NULL(EOS(STATIC_4784), i461, i461, java.lang.Object(o620sub), java.lang.Object(o620sub), i794, i795) -> f4786_0_member_NULL(EOS(STATIC_4786), i461, i461, java.lang.Object(o620sub), java.lang.Object(o620sub), i794, i795) :|: TRUE 25.52/14.34 f4786_0_member_NULL(EOS(STATIC_4786), i461, i461, java.lang.Object(o620sub), java.lang.Object(o620sub), i794, i795) -> f4792_0_member_Load(EOS(STATIC_4792), i461, i461, java.lang.Object(o620sub), i794, i795) :|: TRUE 25.52/14.34 f4792_0_member_Load(EOS(STATIC_4792), i461, i461, java.lang.Object(o620sub), i794, i795) -> f4796_0_member_FieldAccess(EOS(STATIC_4796), i461, i461, java.lang.Object(o620sub), java.lang.Object(o620sub), i794, i795) :|: TRUE 25.52/14.34 f4796_0_member_FieldAccess(EOS(STATIC_4796), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), java.lang.Object(IntList(EOC, i486, o626)), i794, i795) -> f4803_0_member_FieldAccess(EOS(STATIC_4803), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), java.lang.Object(IntList(EOC, i486, o626)), i794, i795) :|: TRUE 25.52/14.34 f4803_0_member_FieldAccess(EOS(STATIC_4803), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), java.lang.Object(IntList(EOC, i486, o626)), i794, i795) -> f4813_0_member_Load(EOS(STATIC_4813), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i794, i795) :|: TRUE 25.52/14.34 f4813_0_member_Load(EOS(STATIC_4813), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i794, i795) -> f4824_0_member_NE(EOS(STATIC_4824), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i461, i794, i795) :|: TRUE 25.52/14.34 f4824_0_member_NE(EOS(STATIC_4824), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i461, i794, i795) -> f4840_0_member_NE(EOS(STATIC_4840), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i461, i794, i795) :|: !(i486 = i461) 25.52/14.34 f4840_0_member_NE(EOS(STATIC_4840), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i486, i461, i794, i795) -> f4845_0_member_Load(EOS(STATIC_4845), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i794, i795) :|: !(i486 = i461) 25.52/14.34 f4845_0_member_Load(EOS(STATIC_4845), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i794, i795) -> f4849_0_member_FieldAccess(EOS(STATIC_4849), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i794, i795) :|: TRUE 25.52/14.34 f4849_0_member_FieldAccess(EOS(STATIC_4849), i461, i461, java.lang.Object(IntList(EOC, i486, o626)), i794, i795) -> f4857_0_member_Store(EOS(STATIC_4857), i461, i461, o626, i794, i795) :|: TRUE 25.52/14.34 f4857_0_member_Store(EOS(STATIC_4857), i461, i461, o626, i794, i795) -> f4874_0_member_JMP(EOS(STATIC_4874), i461, i461, o626, i794, i795) :|: TRUE 25.52/14.34 f4874_0_member_JMP(EOS(STATIC_4874), i461, i461, o626, i794, i795) -> f4880_0_member_Load(EOS(STATIC_4880), i461, i461, o626, i794, i795) :|: TRUE 25.52/14.34 f4880_0_member_Load(EOS(STATIC_4880), i461, i461, o626, i794, i795) -> f4778_0_member_Load(EOS(STATIC_4778), i461, i461, o626, i794, i795) :|: TRUE 25.52/14.34 f4778_0_member_Load(EOS(STATIC_4778), i461, i461, o610, i794, i795) -> f4784_0_member_NULL(EOS(STATIC_4784), i461, i461, o610, o610, i794, i795) :|: TRUE 25.52/14.34 Combined rules. Obtained 2 IRulesP rules: 25.52/14.34 f4784_0_member_NULL(EOS(STATIC_4784), i461:0, i461:0, java.lang.Object(IntList(EOC, i486:0, o626:0)), java.lang.Object(IntList(EOC, i486:0, o626:0)), i794:0, i795:0) -> f4784_0_member_NULL(EOS(STATIC_4784), i461:0, i461:0, o626:0, o626:0, i794:0, i795:0) :|: i486:0 < i461:0 25.52/14.34 f4784_0_member_NULL(EOS(STATIC_4784), i461:0, i461:0, java.lang.Object(IntList(EOC, i486:0, o626:0)), java.lang.Object(IntList(EOC, i486:0, o626:0)), i794:0, i795:0) -> f4784_0_member_NULL(EOS(STATIC_4784), i461:0, i461:0, o626:0, o626:0, i794:0, i795:0) :|: i486:0 > i461:0 25.52/14.34 Filtered constant ground arguments: 25.52/14.34 f4784_0_member_NULL(x1, x2, x3, x4, x5, x6, x7) -> f4784_0_member_NULL(x2, x3, x4, x5, x6, x7) 25.52/14.34 EOS(x1) -> EOS 25.52/14.34 IntList(x1, x2, x3) -> IntList(x2, x3) 25.52/14.34 Filtered duplicate arguments: 25.52/14.34 f4784_0_member_NULL(x1, x2, x3, x4, x5, x6) -> f4784_0_member_NULL(x2, x4, x5, x6) 25.52/14.34 Filtered unneeded arguments: 25.52/14.34 f4784_0_member_NULL(x1, x2, x3, x4) -> f4784_0_member_NULL(x1, x2) 25.52/14.34 Finished conversion. Obtained 2 rules.P rules: 25.52/14.34 f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 < i461:0 25.52/14.34 f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 > i461:0 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (9) 25.52/14.34 Obligation: 25.52/14.34 Rules: 25.52/14.34 f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 < i461:0 25.52/14.34 f4784_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4784_0_member_NULL(x, x2) :|: x1 > x 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (10) IRSFormatTransformerProof (EQUIVALENT) 25.52/14.34 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (11) 25.52/14.34 Obligation: 25.52/14.34 Rules: 25.52/14.34 f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 < i461:0 25.52/14.34 f4784_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4784_0_member_NULL(x, x2) :|: x1 > x 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.34 Constructed termination digraph! 25.52/14.34 Nodes: 25.52/14.34 (1) f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 < i461:0 25.52/14.34 (2) f4784_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4784_0_member_NULL(x, x2) :|: x1 > x 25.52/14.34 25.52/14.34 Arcs: 25.52/14.34 (1) -> (1), (2) 25.52/14.34 (2) -> (1), (2) 25.52/14.34 25.52/14.34 This digraph is fully evaluated! 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (13) 25.52/14.34 Obligation: 25.52/14.34 25.52/14.34 Termination digraph: 25.52/14.34 Nodes: 25.52/14.34 (1) f4784_0_member_NULL(i461:0, java.lang.Object(IntList(i486:0, o626:0))) -> f4784_0_member_NULL(i461:0, o626:0) :|: i486:0 < i461:0 25.52/14.34 (2) f4784_0_member_NULL(x, java.lang.Object(IntList(x1, x2))) -> f4784_0_member_NULL(x, x2) :|: x1 > x 25.52/14.34 25.52/14.34 Arcs: 25.52/14.34 (1) -> (1), (2) 25.52/14.34 (2) -> (1), (2) 25.52/14.34 25.52/14.34 This digraph is fully evaluated! 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (14) IntTRSCompressionProof (EQUIVALENT) 25.52/14.34 Compressed rules. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (15) 25.52/14.34 Obligation: 25.52/14.34 Rules: 25.52/14.34 f4784_0_member_NULL(x:0, java.lang.Object(IntList(x1:0, x2:0))) -> f4784_0_member_NULL(x:0, x2:0) :|: x:0 < x1:0 25.52/14.34 f4784_0_member_NULL(i461:0:0, java.lang.Object(IntList(i486:0:0, o626:0:0))) -> f4784_0_member_NULL(i461:0:0, o626:0:0) :|: i486:0:0 < i461:0:0 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (16) TempFilterProof (SOUND) 25.52/14.34 Used the following sort dictionary for filtering: 25.52/14.34 f4784_0_member_NULL(INTEGER, VARIABLE) 25.52/14.34 java.lang.Object(VARIABLE) 25.52/14.34 IntList(INTEGER, VARIABLE) 25.52/14.34 Removed predefined arithmetic. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (17) 25.52/14.34 Obligation: 25.52/14.34 Rules: 25.52/14.34 f4784_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4784_0_member_NULL(x2:0) 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (18) IRSwTToQDPProof (SOUND) 25.52/14.34 Removed the integers and created a QDP-Problem. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (19) 25.52/14.34 Obligation: 25.52/14.34 Q DP problem: 25.52/14.34 The TRS P consists of the following rules: 25.52/14.34 25.52/14.34 f4784_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4784_0_member_NULL(x2:0) 25.52/14.34 25.52/14.34 R is empty. 25.52/14.34 Q is empty. 25.52/14.34 We have to consider all (P,Q,R)-chains. 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (20) QDPSizeChangeProof (EQUIVALENT) 25.52/14.34 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. 25.52/14.34 25.52/14.34 From the DPs we obtained the following set of size-change graphs: 25.52/14.34 *f4784_0_member_NULL(java.lang.Object(IntList(x2:0))) -> f4784_0_member_NULL(x2:0) 25.52/14.34 The graph contains the following edges 1 > 1 25.52/14.34 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (21) 25.52/14.34 YES 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (22) 25.52/14.34 Obligation: 25.52/14.34 SCC of termination graph based on JBC Program. 25.52/14.34 SCC contains nodes from the following methods: IntList.createIntList()LIntList; 25.52/14.34 SCC calls the following helper methods: 25.52/14.34 Performed SCC analyses: 25.52/14.34 *Used field analysis yielded the following read fields: 25.52/14.34 *java.lang.String: [count] 25.52/14.34 *Marker field analysis yielded the following relations that could be markers: 25.52/14.34 25.52/14.34 ---------------------------------------- 25.52/14.34 25.52/14.34 (23) SCCToIRSProof (SOUND) 25.52/14.34 Transformed FIGraph SCCs to intTRSs. Log: 25.52/14.34 Generated rules. Obtained 39 IRulesP rules: 25.52/14.34 f1572_0_createIntList_LE(EOS(STATIC_1572(java.lang.Object(ARRAY(i6)))), i220, i220) -> f1578_0_createIntList_LE(EOS(STATIC_1578(java.lang.Object(ARRAY(i6)))), i220, i220) :|: TRUE 25.52/14.34 f1578_0_createIntList_LE(EOS(STATIC_1578(java.lang.Object(ARRAY(i6)))), i220, i220) -> f1584_0_createIntList_New(EOS(STATIC_1584(java.lang.Object(ARRAY(i6)))), i220) :|: i220 > 0 25.52/14.35 f1584_0_createIntList_New(EOS(STATIC_1584(java.lang.Object(ARRAY(i6)))), i220) -> f1589_0_createIntList_Duplicate(EOS(STATIC_1589(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1589_0_createIntList_Duplicate(EOS(STATIC_1589(java.lang.Object(ARRAY(i6)))), i220) -> f1600_0_createIntList_InvokeMethod(EOS(STATIC_1600(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1600_0_createIntList_InvokeMethod(EOS(STATIC_1600(java.lang.Object(ARRAY(i6)))), i220) -> f1612_0_random_FieldAccess(EOS(STATIC_1612(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1612_0_random_FieldAccess(EOS(STATIC_1612(java.lang.Object(ARRAY(i6)))), i220) -> f1666_0_random_FieldAccess(EOS(STATIC_1666(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) :|: TRUE 25.52/14.35 f1666_0_random_FieldAccess(EOS(STATIC_1666(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) -> f1678_0_random_ArrayAccess(EOS(STATIC_1678(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) :|: TRUE 25.52/14.35 f1678_0_random_ArrayAccess(EOS(STATIC_1678(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) -> f1683_0_random_ArrayAccess(EOS(STATIC_1683(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) :|: TRUE 25.52/14.35 f1683_0_random_ArrayAccess(EOS(STATIC_1683(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(ARRAY(i6))) -> f1689_0_random_Store(EOS(STATIC_1689(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1689_0_random_Store(EOS(STATIC_1689(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1693_0_random_FieldAccess(EOS(STATIC_1693(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1693_0_random_FieldAccess(EOS(STATIC_1693(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1701_0_random_ConstantStackPush(EOS(STATIC_1701(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1701_0_random_ConstantStackPush(EOS(STATIC_1701(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1716_0_random_IntArithmetic(EOS(STATIC_1716(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1716_0_random_IntArithmetic(EOS(STATIC_1716(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1722_0_random_FieldAccess(EOS(STATIC_1722(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1722_0_random_FieldAccess(EOS(STATIC_1722(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1727_0_random_Load(EOS(STATIC_1727(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1727_0_random_Load(EOS(STATIC_1727(java.lang.Object(ARRAY(i6)))), i220, o237) -> f1731_0_random_InvokeMethod(EOS(STATIC_1731(java.lang.Object(ARRAY(i6)))), i220, o237) :|: TRUE 25.52/14.35 f1731_0_random_InvokeMethod(EOS(STATIC_1731(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o244sub)) -> f1734_0_random_InvokeMethod(EOS(STATIC_1734(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o244sub)) :|: TRUE 25.52/14.35 f1734_0_random_InvokeMethod(EOS(STATIC_1734(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) -> f1738_0_random_InvokeMethod(EOS(STATIC_1738(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) :|: TRUE 25.52/14.35 f1738_0_random_InvokeMethod(EOS(STATIC_1738(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) -> f1743_0_length_Load(EOS(STATIC_1743(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) :|: TRUE 25.52/14.35 f1743_0_length_Load(EOS(STATIC_1743(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) -> f1751_0_length_FieldAccess(EOS(STATIC_1751(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(o247sub)) :|: TRUE 25.52/14.35 f1751_0_length_FieldAccess(EOS(STATIC_1751(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(java.lang.String(EOC, i269))) -> f1756_0_length_FieldAccess(EOS(STATIC_1756(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(java.lang.String(EOC, i269))) :|: TRUE 25.52/14.35 f1756_0_length_FieldAccess(EOS(STATIC_1756(java.lang.Object(ARRAY(i6)))), i220, java.lang.Object(java.lang.String(EOC, i269))) -> f1760_0_length_Return(EOS(STATIC_1760(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1760_0_length_Return(EOS(STATIC_1760(java.lang.Object(ARRAY(i6)))), i220) -> f1764_0_random_Return(EOS(STATIC_1764(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1764_0_random_Return(EOS(STATIC_1764(java.lang.Object(ARRAY(i6)))), i220) -> f1777_0_createIntList_Load(EOS(STATIC_1777(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1777_0_createIntList_Load(EOS(STATIC_1777(java.lang.Object(ARRAY(i6)))), i220) -> f1801_0_createIntList_InvokeMethod(EOS(STATIC_1801(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1801_0_createIntList_InvokeMethod(EOS(STATIC_1801(java.lang.Object(ARRAY(i6)))), i220) -> f1818_0__init__Load(EOS(STATIC_1818(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1818_0__init__Load(EOS(STATIC_1818(java.lang.Object(ARRAY(i6)))), i220) -> f1846_0__init__InvokeMethod(EOS(STATIC_1846(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1846_0__init__InvokeMethod(EOS(STATIC_1846(java.lang.Object(ARRAY(i6)))), i220) -> f1855_0__init__Load(EOS(STATIC_1855(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1855_0__init__Load(EOS(STATIC_1855(java.lang.Object(ARRAY(i6)))), i220) -> f1861_0__init__Load(EOS(STATIC_1861(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1861_0__init__Load(EOS(STATIC_1861(java.lang.Object(ARRAY(i6)))), i220) -> f1866_0__init__FieldAccess(EOS(STATIC_1866(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1866_0__init__FieldAccess(EOS(STATIC_1866(java.lang.Object(ARRAY(i6)))), i220) -> f1870_0__init__Load(EOS(STATIC_1870(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1870_0__init__Load(EOS(STATIC_1870(java.lang.Object(ARRAY(i6)))), i220) -> f1875_0__init__Load(EOS(STATIC_1875(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1875_0__init__Load(EOS(STATIC_1875(java.lang.Object(ARRAY(i6)))), i220) -> f1880_0__init__FieldAccess(EOS(STATIC_1880(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1880_0__init__FieldAccess(EOS(STATIC_1880(java.lang.Object(ARRAY(i6)))), i220) -> f1885_0__init__Return(EOS(STATIC_1885(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1885_0__init__Return(EOS(STATIC_1885(java.lang.Object(ARRAY(i6)))), i220) -> f1890_0_createIntList_Store(EOS(STATIC_1890(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1890_0_createIntList_Store(EOS(STATIC_1890(java.lang.Object(ARRAY(i6)))), i220) -> f1897_0_createIntList_Inc(EOS(STATIC_1897(java.lang.Object(ARRAY(i6)))), i220) :|: TRUE 25.52/14.35 f1897_0_createIntList_Inc(EOS(STATIC_1897(java.lang.Object(ARRAY(i6)))), i220) -> f1917_0_createIntList_JMP(EOS(STATIC_1917(java.lang.Object(ARRAY(i6)))), i220 + -1) :|: TRUE 25.52/14.35 f1917_0_createIntList_JMP(EOS(STATIC_1917(java.lang.Object(ARRAY(i6)))), i285) -> f1948_0_createIntList_Load(EOS(STATIC_1948(java.lang.Object(ARRAY(i6)))), i285) :|: TRUE 25.52/14.35 f1948_0_createIntList_Load(EOS(STATIC_1948(java.lang.Object(ARRAY(i6)))), i285) -> f1567_0_createIntList_Load(EOS(STATIC_1567(java.lang.Object(ARRAY(i6)))), i285) :|: TRUE 25.52/14.35 f1567_0_createIntList_Load(EOS(STATIC_1567(java.lang.Object(ARRAY(i6)))), i196) -> f1572_0_createIntList_LE(EOS(STATIC_1572(java.lang.Object(ARRAY(i6)))), i196, i196) :|: TRUE 25.52/14.35 Combined rules. Obtained 1 IRulesP rules: 25.52/14.35 f1572_0_createIntList_LE(EOS(STATIC_1572(java.lang.Object(ARRAY(i6:0)))), i220:0, i220:0) -> f1572_0_createIntList_LE(EOS(STATIC_1572(java.lang.Object(ARRAY(i6:0)))), i220:0 - 1, i220:0 - 1) :|: i220:0 > 0 25.52/14.35 Filtered duplicate arguments: 25.52/14.35 f1572_0_createIntList_LE(x1, x2, x3) -> f1572_0_createIntList_LE(x1, x3) 25.52/14.35 Filtered unneeded arguments: 25.52/14.35 f1572_0_createIntList_LE(x1, x2) -> f1572_0_createIntList_LE(x2) 25.52/14.35 Finished conversion. Obtained 1 rules.P rules: 25.52/14.35 f1572_0_createIntList_LE(i220:0) -> f1572_0_createIntList_LE(i220:0 - 1) :|: i220:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (24) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f1572_0_createIntList_LE(i220:0) -> f1572_0_createIntList_LE(i220:0 - 1) :|: i220:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (25) IRSFormatTransformerProof (EQUIVALENT) 25.52/14.35 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (26) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f1572_0_createIntList_LE(i220:0) -> f1572_0_createIntList_LE(arith) :|: i220:0 > 0 && arith = i220:0 - 1 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (27) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.35 Constructed termination digraph! 25.52/14.35 Nodes: 25.52/14.35 (1) f1572_0_createIntList_LE(i220:0) -> f1572_0_createIntList_LE(arith) :|: i220:0 > 0 && arith = i220:0 - 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (28) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f1572_0_createIntList_LE(i220:0) -> f1572_0_createIntList_LE(arith) :|: i220:0 > 0 && arith = i220:0 - 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (29) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (30) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f1572_0_createIntList_LE(i220:0:0) -> f1572_0_createIntList_LE(i220:0:0 - 1) :|: i220:0:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (31) TempFilterProof (SOUND) 25.52/14.35 Used the following sort dictionary for filtering: 25.52/14.35 f1572_0_createIntList_LE(INTEGER) 25.52/14.35 Replaced non-predefined constructor symbols by 0. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (32) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f1572_0_createIntList_LE(i220:0:0) -> f1572_0_createIntList_LE(c) :|: c = i220:0:0 - 1 && i220:0:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (33) RankingReductionPairProof (EQUIVALENT) 25.52/14.35 Interpretation: 25.52/14.35 [ f1572_0_createIntList_LE ] = f1572_0_createIntList_LE_1 25.52/14.35 25.52/14.35 The following rules are decreasing: 25.52/14.35 f1572_0_createIntList_LE(i220:0:0) -> f1572_0_createIntList_LE(c) :|: c = i220:0:0 - 1 && i220:0:0 > 0 25.52/14.35 25.52/14.35 The following rules are bounded: 25.52/14.35 f1572_0_createIntList_LE(i220:0:0) -> f1572_0_createIntList_LE(c) :|: c = i220:0:0 - 1 && i220:0:0 > 0 25.52/14.35 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (34) 25.52/14.35 YES 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (35) 25.52/14.35 Obligation: 25.52/14.35 SCC of termination graph based on JBC Program. 25.52/14.35 SCC contains nodes from the following methods: SortCount.main([Ljava/lang/String;)V 25.52/14.35 SCC calls the following helper methods: IntList.member(ILIntList;)Z 25.52/14.35 Performed SCC analyses: 25.52/14.35 *Used field analysis yielded the following read fields: 25.52/14.35 *IntList: [value, next] 25.52/14.35 *Marker field analysis yielded the following relations that could be markers: 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (36) SCCToIRSProof (SOUND) 25.52/14.35 Transformed FIGraph SCCs to intTRSs. Log: 25.52/14.35 Generated rules. Obtained 68 IRulesP rules: 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747, o924, o925, java.lang.Object(o938sub), i746, java.lang.Object(o938sub)) -> f5292_0_max_NULL(EOS(STATIC_5292), i747, o924, o925, java.lang.Object(o938sub), i746, java.lang.Object(o938sub)) :|: TRUE 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747, o924, o925, NULL, i746, NULL) -> f5293_0_max_NULL(EOS(STATIC_5293), i747, o924, o925, NULL, i746, NULL) :|: TRUE 25.52/14.35 f5292_0_max_NULL(EOS(STATIC_5292), i747, o924, o925, java.lang.Object(o938sub), i746, java.lang.Object(o938sub)) -> f5294_0_max_Load(EOS(STATIC_5294), i747, o924, o925, java.lang.Object(o938sub), i746) :|: TRUE 25.52/14.35 f5294_0_max_Load(EOS(STATIC_5294), i747, o924, o925, java.lang.Object(o938sub), i746) -> f5296_0_max_FieldAccess(EOS(STATIC_5296), i747, o924, o925, java.lang.Object(o938sub), i746, java.lang.Object(o938sub)) :|: TRUE 25.52/14.35 f5296_0_max_FieldAccess(EOS(STATIC_5296), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, java.lang.Object(IntList(EOC, i757, o940))) -> f5298_0_max_FieldAccess(EOS(STATIC_5298), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, java.lang.Object(IntList(EOC, i757, o940))) :|: TRUE 25.52/14.35 f5298_0_max_FieldAccess(EOS(STATIC_5298), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, java.lang.Object(IntList(EOC, i757, o940))) -> f5300_0_max_Load(EOS(STATIC_5300), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757) :|: TRUE 25.52/14.35 f5300_0_max_Load(EOS(STATIC_5300), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757) -> f5302_0_max_LE(EOS(STATIC_5302), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) :|: TRUE 25.52/14.35 f5302_0_max_LE(EOS(STATIC_5302), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) -> f5305_0_max_LE(EOS(STATIC_5305), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) :|: i757 <= i746 25.52/14.35 f5302_0_max_LE(EOS(STATIC_5302), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) -> f5306_0_max_LE(EOS(STATIC_5306), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) :|: i757 > i746 25.52/14.35 f5305_0_max_LE(EOS(STATIC_5305), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) -> f5309_0_max_Load(EOS(STATIC_5309), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746) :|: i757 <= i746 25.52/14.35 f5309_0_max_Load(EOS(STATIC_5309), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746) -> f5313_0_max_FieldAccess(EOS(STATIC_5313), i747, o924, o925, i746, java.lang.Object(IntList(EOC, i757, o940))) :|: TRUE 25.52/14.35 f5313_0_max_FieldAccess(EOS(STATIC_5313), i747, o924, o925, i746, java.lang.Object(IntList(EOC, i757, o940))) -> f5317_0_max_Store(EOS(STATIC_5317), i747, o924, o925, i746, o940) :|: TRUE 25.52/14.35 f5317_0_max_Store(EOS(STATIC_5317), i747, o924, o925, i746, o940) -> f5321_0_max_JMP(EOS(STATIC_5321), i747, o924, o925, o940, i746) :|: TRUE 25.52/14.35 f5321_0_max_JMP(EOS(STATIC_5321), i747, o924, o925, o940, i746) -> f5325_0_max_Load(EOS(STATIC_5325), i747, o924, o925, o940, i746) :|: TRUE 25.52/14.35 f5325_0_max_Load(EOS(STATIC_5325), i747, o924, o925, o940, i746) -> f5290_0_max_Load(EOS(STATIC_5290), i747, o924, o925, o940, i746) :|: TRUE 25.52/14.35 f5290_0_max_Load(EOS(STATIC_5290), i747, o924, o925, o923, i746) -> f5291_0_max_NULL(EOS(STATIC_5291), i747, o924, o925, o923, i746, o923) :|: TRUE 25.52/14.35 f5306_0_max_LE(EOS(STATIC_5306), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i746, i757, i746) -> f5310_0_max_Load(EOS(STATIC_5310), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940))) :|: i757 > i746 25.52/14.35 f5310_0_max_Load(EOS(STATIC_5310), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940))) -> f5314_0_max_FieldAccess(EOS(STATIC_5314), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), java.lang.Object(IntList(EOC, i757, o940))) :|: TRUE 25.52/14.35 f5314_0_max_FieldAccess(EOS(STATIC_5314), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), java.lang.Object(IntList(EOC, i757, o940))) -> f5318_0_max_Store(EOS(STATIC_5318), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i757) :|: TRUE 25.52/14.35 f5318_0_max_Store(EOS(STATIC_5318), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i757) -> f5322_0_max_Load(EOS(STATIC_5322), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i757) :|: TRUE 25.52/14.35 f5322_0_max_Load(EOS(STATIC_5322), i747, o924, o925, java.lang.Object(IntList(EOC, i757, o940)), i757) -> f5326_0_max_FieldAccess(EOS(STATIC_5326), i747, o924, o925, i757, java.lang.Object(IntList(EOC, i757, o940))) :|: TRUE 25.52/14.35 f5326_0_max_FieldAccess(EOS(STATIC_5326), i747, o924, o925, i757, java.lang.Object(IntList(EOC, i757, o940))) -> f5328_0_max_Store(EOS(STATIC_5328), i747, o924, o925, i757, o940) :|: TRUE 25.52/14.35 f5328_0_max_Store(EOS(STATIC_5328), i747, o924, o925, i757, o940) -> f5330_0_max_JMP(EOS(STATIC_5330), i747, o924, o925, o940, i757) :|: TRUE 25.52/14.35 f5330_0_max_JMP(EOS(STATIC_5330), i747, o924, o925, o940, i757) -> f5331_0_max_Load(EOS(STATIC_5331), i747, o924, o925, o940, i757) :|: TRUE 25.52/14.35 f5331_0_max_Load(EOS(STATIC_5331), i747, o924, o925, o940, i757) -> f5290_0_max_Load(EOS(STATIC_5290), i747, o924, o925, o940, i757) :|: TRUE 25.52/14.35 f5293_0_max_NULL(EOS(STATIC_5293), i747, o924, o925, NULL, i746, NULL) -> f5295_0_max_Load(EOS(STATIC_5295), i747, o924, o925, i746) :|: TRUE 25.52/14.35 f5295_0_max_Load(EOS(STATIC_5295), i747, o924, o925, i746) -> f5297_0_max_Return(EOS(STATIC_5297), i747, o924, o925, i746) :|: TRUE 25.52/14.35 f5297_0_max_Return(EOS(STATIC_5297), i747, o924, o925, i746) -> f5299_0_sort_Load(EOS(STATIC_5299), i747, o924, o925, i746) :|: TRUE 25.52/14.35 f5299_0_sort_Load(EOS(STATIC_5299), i747, o924, o925, i746) -> f5301_0_sort_LT(EOS(STATIC_5301), i747, o924, o925, i746, i747) :|: TRUE 25.52/14.35 f5301_0_sort_LT(EOS(STATIC_5301), i747, o924, o925, i746, i747) -> f5304_0_sort_LT(EOS(STATIC_5304), i747, o924, o925, i746, i747) :|: i746 >= i747 25.52/14.35 f5304_0_sort_LT(EOS(STATIC_5304), i747, o924, o925, i746, i747) -> f5308_0_sort_Load(EOS(STATIC_5308), i747, o924, o925) :|: i746 >= i747 25.52/14.35 f5308_0_sort_Load(EOS(STATIC_5308), i747, o924, o925) -> f5312_0_sort_Load(EOS(STATIC_5312), i747, o924, o925, i747) :|: TRUE 25.52/14.35 f5312_0_sort_Load(EOS(STATIC_5312), i747, o924, o925, i747) -> f5316_0_sort_InvokeMethod(EOS(STATIC_5316), i747, o924, o925, i747, o924) :|: TRUE 25.52/14.35 f5316_0_sort_InvokeMethod(EOS(STATIC_5316), i747, o924, o925, i747, o924) -> f5320_0_member_Load(EOS(STATIC_5320), i747, o924, i747, o924) :|: i745 >= 1 25.52/14.35 f5316_0_sort_InvokeMethod(EOS(STATIC_5316), i747, o924, o925, i747, o924) -> f5320_1_member_Load(EOS(STATIC_5320), i747, o924, o925, i747, o924) :|: i745 >= 1 25.52/14.35 f5320_0_member_Load(EOS(STATIC_5320), i747, o924, i747, o924) -> f5538_0_member_Load(EOS(STATIC_5538), i747, o924, i747, o924) :|: TRUE 25.52/14.35 f5333_0_member_Return(EOS(STATIC_5333), i767, o961, o925, matching1) -> f5335_0_sort_EQ(EOS(STATIC_5335), i767, o961, o925, 0) :|: TRUE && matching1 = 0 25.52/14.35 f5335_0_sort_EQ(EOS(STATIC_5335), i767, o961, o925, matching1) -> f5337_0_sort_Inc(EOS(STATIC_5337), i767, o961, o925) :|: TRUE && matching1 = 0 25.52/14.35 f5337_0_sort_Inc(EOS(STATIC_5337), i767, o961, o925) -> f5339_0_sort_JMP(EOS(STATIC_5339), i767 + 1, o961, o925) :|: TRUE 25.52/14.35 f5339_0_sort_JMP(EOS(STATIC_5339), i777, o961, o925) -> f5341_0_sort_Load(EOS(STATIC_5341), i777, o961, o925) :|: TRUE 25.52/14.35 f5341_0_sort_Load(EOS(STATIC_5341), i777, o961, o925) -> f5343_0_sort_InvokeMethod(EOS(STATIC_5343), i777, o961, o925, o961) :|: TRUE 25.52/14.35 f5343_0_sort_InvokeMethod(EOS(STATIC_5343), i777, o961, o925, o961) -> f5345_0_max_ConstantStackPush(EOS(STATIC_5345), i777, o961, o925, o961) :|: TRUE 25.52/14.35 f5345_0_max_ConstantStackPush(EOS(STATIC_5345), i777, o961, o925, o961) -> f5348_0_max_Store(EOS(STATIC_5348), i777, o961, o925, o961, 0) :|: TRUE 25.52/14.35 f5348_0_max_Store(EOS(STATIC_5348), i777, o961, o925, o961, matching1) -> f5349_0_max_Load(EOS(STATIC_5349), i777, o961, o925, o961, 0) :|: TRUE && matching1 = 0 25.52/14.35 f5349_0_max_Load(EOS(STATIC_5349), i777, o961, o925, o961, matching1) -> f5351_0_max_NULL(EOS(STATIC_5351), i777, o961, o925, o961, 0, o961) :|: TRUE && matching1 = 0 25.52/14.35 f5351_0_max_NULL(EOS(STATIC_5351), i777, o961, o925, o961, matching1, o961) -> f5291_0_max_NULL(EOS(STATIC_5291), i777, o961, o925, o961, 0, o961) :|: TRUE && matching1 = 0 25.52/14.35 f5334_0_member_Return(EOS(STATIC_5334), i773, o966, o925, matching1) -> f5336_0_sort_EQ(EOS(STATIC_5336), i773, o966, o925, 1) :|: TRUE && matching1 = 1 25.52/14.35 f5336_0_sort_EQ(EOS(STATIC_5336), i773, o966, o925, matching1) -> f5338_0_sort_New(EOS(STATIC_5338), i773, o966, o925) :|: 1 > 0 && matching1 = 1 25.52/14.35 f5338_0_sort_New(EOS(STATIC_5338), i773, o966, o925) -> f5340_0_sort_Duplicate(EOS(STATIC_5340), i773, o966, o925, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE 25.52/14.35 f5340_0_sort_Duplicate(EOS(STATIC_5340), i773, o966, o925, java.lang.Object(IntList(EOC, matching1, NULL))) -> f5342_0_sort_Load(EOS(STATIC_5342), i773, o966, o925, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 25.52/14.35 f5342_0_sort_Load(EOS(STATIC_5342), i773, o966, o925, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) -> f5344_0_sort_Load(EOS(STATIC_5344), i773, o966, o925, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773) :|: TRUE && matching1 = 0 && matching2 = 0 25.52/14.35 f5344_0_sort_Load(EOS(STATIC_5344), i773, o966, o925, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773) -> f5346_0_sort_InvokeMethod(EOS(STATIC_5346), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773, o925) :|: TRUE && matching1 = 0 && matching2 = 0 25.52/14.35 f5346_0_sort_InvokeMethod(EOS(STATIC_5346), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773, o925) -> f5347_0__init__Load(EOS(STATIC_5347), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773, o925) :|: TRUE && matching1 = 0 && matching2 = 0 25.52/14.35 f5347_0__init__Load(EOS(STATIC_5347), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773, o925) -> f5350_0__init__InvokeMethod(EOS(STATIC_5350), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773, o925, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 25.52/14.35 f5350_0__init__InvokeMethod(EOS(STATIC_5350), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773, o925, java.lang.Object(IntList(EOC, matching3, NULL))) -> f5352_0__init__Load(EOS(STATIC_5352), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773, o925) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 25.52/14.35 f5352_0__init__Load(EOS(STATIC_5352), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773, o925) -> f5353_0__init__Load(EOS(STATIC_5353), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i773, o925, java.lang.Object(IntList(EOC, 0, NULL))) :|: TRUE && matching1 = 0 && matching2 = 0 25.52/14.35 f5353_0__init__Load(EOS(STATIC_5353), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i773, o925, java.lang.Object(IntList(EOC, matching3, NULL))) -> f5354_0__init__FieldAccess(EOS(STATIC_5354), i773, o966, java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), o925, java.lang.Object(IntList(EOC, 0, NULL)), i773) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 25.52/14.35 f5354_0__init__FieldAccess(EOS(STATIC_5354), i773, o966, java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), o925, java.lang.Object(IntList(EOC, matching3, NULL)), i773) -> f5355_0__init__Load(EOS(STATIC_5355), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), java.lang.Object(IntList(EOC, i773, NULL)), o925) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 25.52/14.35 f5355_0__init__Load(EOS(STATIC_5355), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), java.lang.Object(IntList(EOC, i773, NULL)), o925) -> f5356_0__init__Load(EOS(STATIC_5356), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), o925, java.lang.Object(IntList(EOC, i773, NULL))) :|: TRUE 25.52/14.35 f5356_0__init__Load(EOS(STATIC_5356), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), o925, java.lang.Object(IntList(EOC, i773, NULL))) -> f5357_0__init__FieldAccess(EOS(STATIC_5357), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), java.lang.Object(IntList(EOC, i773, NULL)), o925) :|: TRUE 25.52/14.35 f5357_0__init__FieldAccess(EOS(STATIC_5357), i773, o966, java.lang.Object(IntList(EOC, i773, NULL)), java.lang.Object(IntList(EOC, i773, NULL)), o925) -> f5358_0__init__Return(EOS(STATIC_5358), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5358_0__init__Return(EOS(STATIC_5358), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) -> f5359_0_sort_Store(EOS(STATIC_5359), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5359_0_sort_Store(EOS(STATIC_5359), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) -> f5360_0_sort_Inc(EOS(STATIC_5360), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5360_0_sort_Inc(EOS(STATIC_5360), i773, o966, java.lang.Object(IntList(EOC, i773, o925))) -> f5361_0_sort_JMP(EOS(STATIC_5361), i773 + 1, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5361_0_sort_JMP(EOS(STATIC_5361), i787, o966, java.lang.Object(IntList(EOC, i773, o925))) -> f5362_0_sort_Load(EOS(STATIC_5362), i787, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5362_0_sort_Load(EOS(STATIC_5362), i787, o966, java.lang.Object(IntList(EOC, i773, o925))) -> f5341_0_sort_Load(EOS(STATIC_5341), i787, o966, java.lang.Object(IntList(EOC, i773, o925))) :|: TRUE 25.52/14.35 f5320_1_member_Load(EOS(STATIC_5320), i767, o961, o925, i767, o961) -> f5333_0_member_Return(EOS(STATIC_5333), i767, o961, o925, 0) :|: TRUE 25.52/14.35 f5320_1_member_Load(EOS(STATIC_5320), i773, o966, o925, i773, o966) -> f5334_0_member_Return(EOS(STATIC_5334), i773, o966, o925, 1) :|: TRUE 25.52/14.35 Combined rules. Obtained 5 IRulesP rules: 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, java.lang.Object(IntList(EOC, i757:0, o940:0)), i746:0, java.lang.Object(IntList(EOC, i757:0, o940:0))) -> f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, o940:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, java.lang.Object(IntList(EOC, i757:0, o940:0)), i746:0, java.lang.Object(IntList(EOC, i757:0, o940:0))) -> f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, o940:0, i757:0, o940:0) :|: i757:0 > i746:0 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, NULL, i746:0, NULL) -> f5291_0_max_NULL(EOS(STATIC_5291), i747:0 + 1, o924:0, o925:0, o924:0, 0, o924:0) :|: i747:0 <= i746:0 && i745:0 > 0 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, NULL, i746:0, NULL) -> f5291_0_max_NULL(EOS(STATIC_5291), i747:0 + 1, o924:0, java.lang.Object(IntList(EOC, i747:0, o925:0)), o924:0, 0, o924:0) :|: i747:0 <= i746:0 && i745:0 > 0 25.52/14.35 Removed following non-SCC rules: 25.52/14.35 f5291_0_max_NULL(EOS(STATIC_5291), i747:0, o924:0, o925:0, NULL, i746:0, NULL) -> f5538_0_member_Load(EOS(STATIC_5538), i747:0, o924:0, i747:0, o924:0) :|: i747:0 <= i746:0 && i745:0 > 0 25.52/14.35 Filtered constant ground arguments: 25.52/14.35 f5291_0_max_NULL(x1, x2, x3, x4, x5, x6, x7) -> f5291_0_max_NULL(x2, x3, x4, x5, x6, x7) 25.52/14.35 EOS(x1) -> EOS 25.52/14.35 IntList(x1, x2, x3) -> IntList(x2, x3) 25.52/14.35 Filtered duplicate arguments: 25.52/14.35 f5291_0_max_NULL(x1, x2, x3, x4, x5, x6) -> f5291_0_max_NULL(x1, x2, x3, x5, x6) 25.52/14.35 Filtered unneeded arguments: 25.52/14.35 f5291_0_max_NULL(x1, x2, x3, x4, x5) -> f5291_0_max_NULL(x1, x2, x4, x5) 25.52/14.35 Finished conversion. Obtained 3 rules.P rules: 25.52/14.35 f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i757:0, o940:0) :|: i757:0 > i746:0 25.52/14.35 f5291_0_max_NULL(i747:0, o924:0, i746:0, NULL) -> f5291_0_max_NULL(i747:0 + 1, o924:0, 0, o924:0) :|: i747:0 <= i746:0 && i745:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (37) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5291_0_max_NULL(x, x1, x3, x4) :|: x3 > x2 25.52/14.35 f5291_0_max_NULL(x5, x6, x7, NULL) -> f5291_0_max_NULL(x5 + 1, x6, 0, x6) :|: x5 <= x7 && x8 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (38) IRSFormatTransformerProof (EQUIVALENT) 25.52/14.35 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (39) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5291_0_max_NULL(x, x1, x3, x4) :|: x3 > x2 25.52/14.35 f5291_0_max_NULL(x5, x6, x7, NULL) -> f5291_0_max_NULL(arith, x6, 0, x6) :|: x5 <= x7 && x8 > 0 && arith = x5 + 1 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (40) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.35 Constructed termination digraph! 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 (2) f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5291_0_max_NULL(x, x1, x3, x4) :|: x3 > x2 25.52/14.35 (3) f5291_0_max_NULL(x5, x6, x7, NULL) -> f5291_0_max_NULL(arith, x6, 0, x6) :|: x5 <= x7 && x8 > 0 && arith = x5 + 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3) 25.52/14.35 (2) -> (1), (2), (3) 25.52/14.35 (3) -> (1), (2), (3) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (41) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(i747:0, o924:0, i746:0, java.lang.Object(IntList(i757:0, o940:0))) -> f5291_0_max_NULL(i747:0, o924:0, i746:0, o940:0) :|: i757:0 <= i746:0 25.52/14.35 (2) f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, x4))) -> f5291_0_max_NULL(x, x1, x3, x4) :|: x3 > x2 25.52/14.35 (3) f5291_0_max_NULL(x5, x6, x7, NULL) -> f5291_0_max_NULL(arith, x6, 0, x6) :|: x5 <= x7 && x8 > 0 && arith = x5 + 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3) 25.52/14.35 (2) -> (1), (2), (3) 25.52/14.35 (3) -> (1), (2), (3) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (42) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (43) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(i747:0:0, o924:0:0, i746:0:0, java.lang.Object(IntList(i757:0:0, o940:0:0))) -> f5291_0_max_NULL(i747:0:0, o924:0:0, i746:0:0, o940:0:0) :|: i757:0:0 <= i746:0:0 25.52/14.35 f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, x4:0))) -> f5291_0_max_NULL(x:0, x1:0, x3:0, x4:0) :|: x3:0 > x2:0 25.52/14.35 f5291_0_max_NULL(x5:0, x6:0, x7:0, NULL) -> f5291_0_max_NULL(x5:0 + 1, x6:0, 0, x6:0) :|: x7:0 >= x5:0 && x8:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (44) IRSwTChainingProof (EQUIVALENT) 25.52/14.35 Chaining! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (45) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5291_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 25.52/14.35 f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, x4:0))) -> f5291_0_max_NULL(x:0, x1:0, x3:0, x4:0) :|: x3:0 > x2:0 25.52/14.35 f5291_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, java.lang.Object(IntList(x18, x19))))) -> f5291_0_max_NULL(x10, x11, x18, x19) :|: TRUE && x13 + -1 * x12 <= 0 && x18 + -1 * x12 >= 1 25.52/14.35 f5291_0_max_NULL(x5:0, x6:0, x7:0, NULL) -> f5291_0_max_NULL(x5:0 + 1, x6:0, 0, x6:0) :|: x7:0 >= x5:0 && x8:0 > 0 25.52/14.35 f5291_0_max_NULL(x20, x21, x22, java.lang.Object(IntList(x23, NULL))) -> f5291_0_max_NULL(x20 + 1, x21, 0, x21) :|: TRUE && x23 + -1 * x22 <= 0 && x22 + -1 * x20 >= 0 && x28 >= 1 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (46) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.35 Constructed termination digraph! 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5291_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 25.52/14.35 (2) f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, x4:0))) -> f5291_0_max_NULL(x:0, x1:0, x3:0, x4:0) :|: x3:0 > x2:0 25.52/14.35 (3) f5291_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, java.lang.Object(IntList(x18, x19))))) -> f5291_0_max_NULL(x10, x11, x18, x19) :|: TRUE && x13 + -1 * x12 <= 0 && x18 + -1 * x12 >= 1 25.52/14.35 (4) f5291_0_max_NULL(x5:0, x6:0, x7:0, NULL) -> f5291_0_max_NULL(x5:0 + 1, x6:0, 0, x6:0) :|: x7:0 >= x5:0 && x8:0 > 0 25.52/14.35 (5) f5291_0_max_NULL(x20, x21, x22, java.lang.Object(IntList(x23, NULL))) -> f5291_0_max_NULL(x20 + 1, x21, 0, x21) :|: TRUE && x23 + -1 * x22 <= 0 && x22 + -1 * x20 >= 0 && x28 >= 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3), (4), (5) 25.52/14.35 (2) -> (1), (2), (3), (4), (5) 25.52/14.35 (3) -> (1), (2), (3), (4), (5) 25.52/14.35 (4) -> (1), (2), (3), (4), (5) 25.52/14.35 (5) -> (1), (2), (3), (4), (5) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (47) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x, x1, x2, java.lang.Object(IntList(x3, java.lang.Object(IntList(x8, x9))))) -> f5291_0_max_NULL(x, x1, x2, x9) :|: TRUE && x3 + -1 * x2 <= 0 && x8 + -1 * x2 <= 0 25.52/14.35 (2) f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, x4:0))) -> f5291_0_max_NULL(x:0, x1:0, x3:0, x4:0) :|: x3:0 > x2:0 25.52/14.35 (3) f5291_0_max_NULL(x10, x11, x12, java.lang.Object(IntList(x13, java.lang.Object(IntList(x18, x19))))) -> f5291_0_max_NULL(x10, x11, x18, x19) :|: TRUE && x13 + -1 * x12 <= 0 && x18 + -1 * x12 >= 1 25.52/14.35 (4) f5291_0_max_NULL(x5:0, x6:0, x7:0, NULL) -> f5291_0_max_NULL(x5:0 + 1, x6:0, 0, x6:0) :|: x7:0 >= x5:0 && x8:0 > 0 25.52/14.35 (5) f5291_0_max_NULL(x20, x21, x22, java.lang.Object(IntList(x23, NULL))) -> f5291_0_max_NULL(x20 + 1, x21, 0, x21) :|: TRUE && x23 + -1 * x22 <= 0 && x22 + -1 * x20 >= 0 && x28 >= 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3), (4), (5) 25.52/14.35 (2) -> (1), (2), (3), (4), (5) 25.52/14.35 (3) -> (1), (2), (3), (4), (5) 25.52/14.35 (4) -> (1), (2), (3), (4), (5) 25.52/14.35 (5) -> (1), (2), (3), (4), (5) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (48) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (49) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x5:0:0, x6:0:0, x7:0:0, NULL) -> f5291_0_max_NULL(x5:0:0 + 1, x6:0:0, 0, x6:0:0) :|: x7:0:0 >= x5:0:0 && x8:0:0 > 0 25.52/14.35 f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5291_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 25.52/14.35 f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, x4:0:0))) -> f5291_0_max_NULL(x:0:0, x1:0:0, x3:0:0, x4:0:0) :|: x3:0:0 > x2:0:0 25.52/14.35 f5291_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, java.lang.Object(IntList(x18:0, x19:0))))) -> f5291_0_max_NULL(x10:0, x11:0, x18:0, x19:0) :|: x18:0 + -1 * x12:0 >= 1 && x13:0 + -1 * x12:0 <= 0 25.52/14.35 f5291_0_max_NULL(x20:0, x21:0, x22:0, java.lang.Object(IntList(x23:0, NULL))) -> f5291_0_max_NULL(x20:0 + 1, x21:0, 0, x21:0) :|: x22:0 + -1 * x20:0 >= 0 && x23:0 + -1 * x22:0 <= 0 && x28:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (50) IRSwTChainingProof (EQUIVALENT) 25.52/14.35 Chaining! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (51) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x, NULL, x2, NULL) -> f5291_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x2 + -1 * x >= 0 && x3 >= 1 && -1 * x >= 1 && x7 >= 1 25.52/14.35 f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5291_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 25.52/14.35 f5291_0_max_NULL(x8, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), x10, NULL) -> f5291_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), 0, x17) :|: TRUE && x10 + -1 * x8 >= 0 && x11 >= 1 && x16 <= 0 && x15 <= 0 25.52/14.35 f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, x4:0:0))) -> f5291_0_max_NULL(x:0:0, x1:0:0, x3:0:0, x4:0:0) :|: x3:0:0 > x2:0:0 25.52/14.35 f5291_0_max_NULL(x18, java.lang.Object(IntList(x25, x26)), x20, NULL) -> f5291_0_max_NULL(x18 + 1, java.lang.Object(IntList(x25, x26)), x25, x26) :|: TRUE && x20 + -1 * x18 >= 0 && x21 >= 1 && x25 >= 1 25.52/14.35 f5291_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, java.lang.Object(IntList(x18:0, x19:0))))) -> f5291_0_max_NULL(x10:0, x11:0, x18:0, x19:0) :|: x18:0 + -1 * x12:0 >= 1 && x13:0 + -1 * x12:0 <= 0 25.52/14.35 f5291_0_max_NULL(x27, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x29, NULL) -> f5291_0_max_NULL(x27 + 1, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x35, x36) :|: TRUE && x29 + -1 * x27 >= 0 && x30 >= 1 && x35 >= 1 && x34 <= 0 25.52/14.35 f5291_0_max_NULL(x20:0, x21:0, x22:0, java.lang.Object(IntList(x23:0, NULL))) -> f5291_0_max_NULL(x20:0 + 1, x21:0, 0, x21:0) :|: x22:0 + -1 * x20:0 >= 0 && x23:0 + -1 * x22:0 <= 0 && x28:0 > 0 25.52/14.35 f5291_0_max_NULL(x37, java.lang.Object(IntList(x44, NULL)), x39, NULL) -> f5291_0_max_NULL(x37 + 2, java.lang.Object(IntList(x44, NULL)), 0, java.lang.Object(IntList(x44, NULL))) :|: TRUE && x39 + -1 * x37 >= 0 && x40 >= 1 && -1 * x37 >= 1 && x44 <= 0 && x45 >= 1 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (52) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.35 Constructed termination digraph! 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x, NULL, x2, NULL) -> f5291_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x2 + -1 * x >= 0 && x3 >= 1 && -1 * x >= 1 && x7 >= 1 25.52/14.35 (2) f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5291_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 25.52/14.35 (3) f5291_0_max_NULL(x8, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), x10, NULL) -> f5291_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), 0, x17) :|: TRUE && x10 + -1 * x8 >= 0 && x11 >= 1 && x16 <= 0 && x15 <= 0 25.52/14.35 (4) f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, x4:0:0))) -> f5291_0_max_NULL(x:0:0, x1:0:0, x3:0:0, x4:0:0) :|: x3:0:0 > x2:0:0 25.52/14.35 (5) f5291_0_max_NULL(x18, java.lang.Object(IntList(x25, x26)), x20, NULL) -> f5291_0_max_NULL(x18 + 1, java.lang.Object(IntList(x25, x26)), x25, x26) :|: TRUE && x20 + -1 * x18 >= 0 && x21 >= 1 && x25 >= 1 25.52/14.35 (6) f5291_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, java.lang.Object(IntList(x18:0, x19:0))))) -> f5291_0_max_NULL(x10:0, x11:0, x18:0, x19:0) :|: x18:0 + -1 * x12:0 >= 1 && x13:0 + -1 * x12:0 <= 0 25.52/14.35 (7) f5291_0_max_NULL(x27, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x29, NULL) -> f5291_0_max_NULL(x27 + 1, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x35, x36) :|: TRUE && x29 + -1 * x27 >= 0 && x30 >= 1 && x35 >= 1 && x34 <= 0 25.52/14.35 (8) f5291_0_max_NULL(x20:0, x21:0, x22:0, java.lang.Object(IntList(x23:0, NULL))) -> f5291_0_max_NULL(x20:0 + 1, x21:0, 0, x21:0) :|: x22:0 + -1 * x20:0 >= 0 && x23:0 + -1 * x22:0 <= 0 && x28:0 > 0 25.52/14.35 (9) f5291_0_max_NULL(x37, java.lang.Object(IntList(x44, NULL)), x39, NULL) -> f5291_0_max_NULL(x37 + 2, java.lang.Object(IntList(x44, NULL)), 0, java.lang.Object(IntList(x44, NULL))) :|: TRUE && x39 + -1 * x37 >= 0 && x40 >= 1 && -1 * x37 >= 1 && x44 <= 0 && x45 >= 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1) 25.52/14.35 (2) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) 25.52/14.35 (3) -> (2), (3), (4), (6), (8) 25.52/14.35 (4) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) 25.52/14.35 (5) -> (2), (4), (5), (6), (8) 25.52/14.35 (6) -> (1), (2), (3), (4), (5), (6), (7), (8), (9) 25.52/14.35 (7) -> (2), (4), (6), (7), (8) 25.52/14.35 (8) -> (1), (2), (4), (6), (8) 25.52/14.35 (9) -> (8) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (53) 25.52/14.35 Complex Obligation (AND) 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (54) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x:0, x1:0, x2:0, java.lang.Object(IntList(x3:0, java.lang.Object(IntList(x8:0, x9:0))))) -> f5291_0_max_NULL(x:0, x1:0, x2:0, x9:0) :|: x8:0 + -1 * x2:0 <= 0 && x3:0 + -1 * x2:0 <= 0 25.52/14.35 (2) f5291_0_max_NULL(x8, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), x10, NULL) -> f5291_0_max_NULL(x8 + 1, java.lang.Object(IntList(x15, java.lang.Object(IntList(x16, x17)))), 0, x17) :|: TRUE && x10 + -1 * x8 >= 0 && x11 >= 1 && x16 <= 0 && x15 <= 0 25.52/14.35 (3) f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, java.lang.Object(IntList(x3:0:0, x4:0:0))) -> f5291_0_max_NULL(x:0:0, x1:0:0, x3:0:0, x4:0:0) :|: x3:0:0 > x2:0:0 25.52/14.35 (4) f5291_0_max_NULL(x18, java.lang.Object(IntList(x25, x26)), x20, NULL) -> f5291_0_max_NULL(x18 + 1, java.lang.Object(IntList(x25, x26)), x25, x26) :|: TRUE && x20 + -1 * x18 >= 0 && x21 >= 1 && x25 >= 1 25.52/14.35 (5) f5291_0_max_NULL(x10:0, x11:0, x12:0, java.lang.Object(IntList(x13:0, java.lang.Object(IntList(x18:0, x19:0))))) -> f5291_0_max_NULL(x10:0, x11:0, x18:0, x19:0) :|: x18:0 + -1 * x12:0 >= 1 && x13:0 + -1 * x12:0 <= 0 25.52/14.35 (6) f5291_0_max_NULL(x20:0, x21:0, x22:0, java.lang.Object(IntList(x23:0, NULL))) -> f5291_0_max_NULL(x20:0 + 1, x21:0, 0, x21:0) :|: x22:0 + -1 * x20:0 >= 0 && x23:0 + -1 * x22:0 <= 0 && x28:0 > 0 25.52/14.35 (7) f5291_0_max_NULL(x37, java.lang.Object(IntList(x44, NULL)), x39, NULL) -> f5291_0_max_NULL(x37 + 2, java.lang.Object(IntList(x44, NULL)), 0, java.lang.Object(IntList(x44, NULL))) :|: TRUE && x39 + -1 * x37 >= 0 && x40 >= 1 && -1 * x37 >= 1 && x44 <= 0 && x45 >= 1 25.52/14.35 (8) f5291_0_max_NULL(x27, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x29, NULL) -> f5291_0_max_NULL(x27 + 1, java.lang.Object(IntList(x34, java.lang.Object(IntList(x35, x36)))), x35, x36) :|: TRUE && x29 + -1 * x27 >= 0 && x30 >= 1 && x35 >= 1 && x34 <= 0 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3), (4), (5), (6), (7), (8) 25.52/14.35 (2) -> (1), (2), (3), (5), (6) 25.52/14.35 (3) -> (1), (2), (3), (4), (5), (6), (7), (8) 25.52/14.35 (4) -> (1), (3), (4), (5), (6) 25.52/14.35 (5) -> (1), (2), (3), (4), (5), (6), (7), (8) 25.52/14.35 (6) -> (1), (3), (5), (6) 25.52/14.35 (7) -> (6) 25.52/14.35 (8) -> (1), (3), (5), (6), (8) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (55) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (56) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, java.lang.Object(IntList(x18:0:0, x19:0:0))))) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0 25.52/14.35 f5291_0_max_NULL(x18:0, java.lang.Object(IntList(x25:0, x26:0)), x20:0, NULL) -> f5291_0_max_NULL(x18:0 + 1, java.lang.Object(IntList(x25:0, x26:0)), x25:0, x26:0) :|: x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0 25.52/14.35 f5291_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), x10:0, NULL) -> f5291_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), 0, x17:0) :|: x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0 25.52/14.35 f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, java.lang.Object(IntList(x3:0:0:0, x4:0:0:0))) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: x3:0:0:0 > x2:0:0:0 25.52/14.35 f5291_0_max_NULL(x37:0, java.lang.Object(IntList(x44:0, NULL)), x39:0, NULL) -> f5291_0_max_NULL(x37:0 + 2, java.lang.Object(IntList(x44:0, NULL)), 0, java.lang.Object(IntList(x44:0, NULL))) :|: x44:0 < 1 && x45:0 > 0 && 1 <= -1 * x37:0 && x39:0 + -1 * x37:0 >= 0 && x40:0 > 0 25.52/14.35 f5291_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))))) -> f5291_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 25.52/14.35 f5291_0_max_NULL(x27:0, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x29:0, NULL) -> f5291_0_max_NULL(x27:0 + 1, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x35:0, x36:0) :|: x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0 25.52/14.35 f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, java.lang.Object(IntList(x23:0:0, NULL))) -> f5291_0_max_NULL(x20:0:0 + 1, x21:0:0, 0, x21:0:0) :|: x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (57) TempFilterProof (SOUND) 25.52/14.35 Used the following sort dictionary for filtering: 25.52/14.35 f5291_0_max_NULL(VARIABLE, VARIABLE, VARIABLE, VARIABLE) 25.52/14.35 java.lang.Object(VARIABLE) 25.52/14.35 IntList(INTEGER, VARIABLE) 25.52/14.35 NULL() 25.52/14.35 Replaced non-predefined constructor symbols by 0.The following proof was generated: 25.52/14.35 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 25.52/14.35 25.52/14.35 25.52/14.35 Termination of the given IntTRS could not be shown: 25.52/14.35 25.52/14.35 25.52/14.35 25.52/14.35 - IntTRS 25.52/14.35 - RankingReductionPairProof 25.52/14.35 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, c) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: c = 0 && (x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0) 25.52/14.35 f5291_0_max_NULL(x18:0, c1, x20:0, c2) -> f5291_0_max_NULL(c3, c4, x25:0, x26:0) :|: c4 = 0 && (c3 = x18:0 + 1 && (c2 = 0 && c1 = 0)) && (x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0) 25.52/14.35 f5291_0_max_NULL(x8:0, c5, x10:0, c6) -> f5291_0_max_NULL(c7, c8, c9, x17:0) :|: c9 = 0 && (c8 = 0 && (c7 = x8:0 + 1 && (c6 = 0 && c5 = 0))) && (x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0) 25.52/14.35 f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, c10) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: c10 = 0 && x3:0:0:0 > x2:0:0:0 25.52/14.35 f5291_0_max_NULL(x37:0, c11, x39:0, c12) -> f5291_0_max_NULL(c13, c14, c15, c16) :|: c16 = 0 && (c15 = 0 && (c14 = 0 && (c13 = x37:0 + 2 && (c12 = 0 && c11 = 0)))) && (x44:0 < 1 && x45:0 > 0 && 1 <= -1 * x37:0 && x39:0 + -1 * x37:0 >= 0 && x40:0 > 0) 25.52/14.35 f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, c17) -> f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: c17 = 0 && (x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0) 25.52/14.35 f5291_0_max_NULL(x27:0, c18, x29:0, c19) -> f5291_0_max_NULL(c20, c21, x35:0, x36:0) :|: c21 = 0 && (c20 = x27:0 + 1 && (c19 = 0 && c18 = 0)) && (x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0) 25.52/14.35 f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, c22) -> f5291_0_max_NULL(c23, x21:0:0, c24, x21:0:0) :|: c24 = 0 && (c23 = x20:0:0 + 1 && c22 = 0) && (x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0) 25.52/14.35 25.52/14.35 Interpretation: 25.52/14.35 [ f5291_0_max_NULL ] = -2*f5291_0_max_NULL_1 + 3*f5291_0_max_NULL_2 25.52/14.35 25.52/14.35 The following rules are decreasing: 25.52/14.35 f5291_0_max_NULL(x18:0, c1, x20:0, c2) -> f5291_0_max_NULL(c3, c4, x25:0, x26:0) :|: c4 = 0 && (c3 = x18:0 + 1 && (c2 = 0 && c1 = 0)) && (x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0) 25.52/14.35 f5291_0_max_NULL(x8:0, c5, x10:0, c6) -> f5291_0_max_NULL(c7, c8, c9, x17:0) :|: c9 = 0 && (c8 = 0 && (c7 = x8:0 + 1 && (c6 = 0 && c5 = 0))) && (x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0) 25.52/14.35 f5291_0_max_NULL(x37:0, c11, x39:0, c12) -> f5291_0_max_NULL(c13, c14, c15, c16) :|: c16 = 0 && (c15 = 0 && (c14 = 0 && (c13 = x37:0 + 2 && (c12 = 0 && c11 = 0)))) && (x44:0 < 1 && x45:0 > 0 && 1 <= -1 * x37:0 && x39:0 + -1 * x37:0 >= 0 && x40:0 > 0) 25.52/14.35 f5291_0_max_NULL(x27:0, c18, x29:0, c19) -> f5291_0_max_NULL(c20, c21, x35:0, x36:0) :|: c21 = 0 && (c20 = x27:0 + 1 && (c19 = 0 && c18 = 0)) && (x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0) 25.52/14.35 f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, c22) -> f5291_0_max_NULL(c23, x21:0:0, c24, x21:0:0) :|: c24 = 0 && (c23 = x20:0:0 + 1 && c22 = 0) && (x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0) 25.52/14.35 25.52/14.35 The following rules are bounded: 25.52/14.35 f5291_0_max_NULL(x37:0, c11, x39:0, c12) -> f5291_0_max_NULL(c13, c14, c15, c16) :|: c16 = 0 && (c15 = 0 && (c14 = 0 && (c13 = x37:0 + 2 && (c12 = 0 && c11 = 0)))) && (x44:0 < 1 && x45:0 > 0 && 1 <= -1 * x37:0 && x39:0 + -1 * x37:0 >= 0 && x40:0 > 0) 25.52/14.35 25.52/14.35 25.52/14.35 25.52/14.35 - IntTRS 25.52/14.35 - RankingReductionPairProof 25.52/14.35 - IntTRS 25.52/14.35 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, c) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: c = 0 && (x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0) 25.52/14.35 f5291_0_max_NULL(x18:0, c1, x20:0, c2) -> f5291_0_max_NULL(c3, c4, x25:0, x26:0) :|: c4 = 0 && (c3 = x18:0 + 1 && (c2 = 0 && c1 = 0)) && (x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0) 25.52/14.35 f5291_0_max_NULL(x8:0, c5, x10:0, c6) -> f5291_0_max_NULL(c7, c8, c9, x17:0) :|: c9 = 0 && (c8 = 0 && (c7 = x8:0 + 1 && (c6 = 0 && c5 = 0))) && (x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0) 25.52/14.35 f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, c10) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: c10 = 0 && x3:0:0:0 > x2:0:0:0 25.52/14.35 f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, c17) -> f5291_0_max_NULL(x:0:0, x1:0:0, x2:0:0, x9:0:0) :|: c17 = 0 && (x8:0:0 + -1 * x2:0:0 <= 0 && x3:0:0 + -1 * x2:0:0 <= 0) 25.52/14.35 f5291_0_max_NULL(x27:0, c18, x29:0, c19) -> f5291_0_max_NULL(c20, c21, x35:0, x36:0) :|: c21 = 0 && (c20 = x27:0 + 1 && (c19 = 0 && c18 = 0)) && (x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0) 25.52/14.35 f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, c22) -> f5291_0_max_NULL(c23, x21:0:0, c24, x21:0:0) :|: c24 = 0 && (c23 = x20:0:0 + 1 && c22 = 0) && (x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0) 25.52/14.35 25.52/14.35 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (58) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, java.lang.Object(IntList(x18:0:0, x19:0:0))))) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0 25.52/14.35 f5291_0_max_NULL(x18:0, java.lang.Object(IntList(x25:0, x26:0)), x20:0, NULL) -> f5291_0_max_NULL(x18:0 + 1, java.lang.Object(IntList(x25:0, x26:0)), x25:0, x26:0) :|: x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0 25.52/14.35 f5291_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), x10:0, NULL) -> f5291_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), 0, x17:0) :|: x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0 25.52/14.35 f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, java.lang.Object(IntList(x3:0:0:0, x4:0:0:0))) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: x3:0:0:0 > x2:0:0:0 25.52/14.35 f5291_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))))) -> f5291_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 25.52/14.35 f5291_0_max_NULL(x27:0, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x29:0, NULL) -> f5291_0_max_NULL(x27:0 + 1, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x35:0, x36:0) :|: x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0 25.52/14.35 f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, java.lang.Object(IntList(x23:0:0, NULL))) -> f5291_0_max_NULL(x20:0:0 + 1, x21:0:0, 0, x21:0:0) :|: x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (59) IRSwTTerminationDigraphProof (EQUIVALENT) 25.52/14.35 Constructed termination digraph! 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, java.lang.Object(IntList(x18:0:0, x19:0:0))))) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0 25.52/14.35 (2) f5291_0_max_NULL(x18:0, java.lang.Object(IntList(x25:0, x26:0)), x20:0, NULL) -> f5291_0_max_NULL(x18:0 + 1, java.lang.Object(IntList(x25:0, x26:0)), x25:0, x26:0) :|: x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0 25.52/14.35 (3) f5291_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), x10:0, NULL) -> f5291_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), 0, x17:0) :|: x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0 25.52/14.35 (4) f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, java.lang.Object(IntList(x3:0:0:0, x4:0:0:0))) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: x3:0:0:0 > x2:0:0:0 25.52/14.35 (5) f5291_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))))) -> f5291_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 25.52/14.35 (6) f5291_0_max_NULL(x27:0, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x29:0, NULL) -> f5291_0_max_NULL(x27:0 + 1, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x35:0, x36:0) :|: x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0 25.52/14.35 (7) f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, java.lang.Object(IntList(x23:0:0, NULL))) -> f5291_0_max_NULL(x20:0:0 + 1, x21:0:0, 0, x21:0:0) :|: x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (2) -> (1), (2), (4), (5), (7) 25.52/14.35 (3) -> (1), (3), (4), (5), (7) 25.52/14.35 (4) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (5) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (6) -> (1), (4), (5), (6), (7) 25.52/14.35 (7) -> (1), (4), (5), (7) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (60) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x10:0:0, x11:0:0, x12:0:0, java.lang.Object(IntList(x13:0:0, java.lang.Object(IntList(x18:0:0, x19:0:0))))) -> f5291_0_max_NULL(x10:0:0, x11:0:0, x18:0:0, x19:0:0) :|: x18:0:0 + -1 * x12:0:0 >= 1 && x13:0:0 + -1 * x12:0:0 <= 0 25.52/14.35 (2) f5291_0_max_NULL(x18:0, java.lang.Object(IntList(x25:0, x26:0)), x20:0, NULL) -> f5291_0_max_NULL(x18:0 + 1, java.lang.Object(IntList(x25:0, x26:0)), x25:0, x26:0) :|: x21:0 > 0 && x20:0 + -1 * x18:0 >= 0 && x25:0 > 0 25.52/14.35 (3) f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x2:0:0:0, java.lang.Object(IntList(x3:0:0:0, x4:0:0:0))) -> f5291_0_max_NULL(x:0:0:0, x1:0:0:0, x3:0:0:0, x4:0:0:0) :|: x3:0:0:0 > x2:0:0:0 25.52/14.35 (4) f5291_0_max_NULL(x8:0, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), x10:0, NULL) -> f5291_0_max_NULL(x8:0 + 1, java.lang.Object(IntList(x15:0, java.lang.Object(IntList(x16:0, x17:0)))), 0, x17:0) :|: x16:0 < 1 && x15:0 < 1 && x10:0 + -1 * x8:0 >= 0 && x11:0 > 0 25.52/14.35 (5) f5291_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))))) -> f5291_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 25.52/14.35 (6) f5291_0_max_NULL(x20:0:0, x21:0:0, x22:0:0, java.lang.Object(IntList(x23:0:0, NULL))) -> f5291_0_max_NULL(x20:0:0 + 1, x21:0:0, 0, x21:0:0) :|: x22:0:0 + -1 * x20:0:0 >= 0 && x23:0:0 + -1 * x22:0:0 <= 0 && x28:0:0 > 0 25.52/14.35 (7) f5291_0_max_NULL(x27:0, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x29:0, NULL) -> f5291_0_max_NULL(x27:0 + 1, java.lang.Object(IntList(x34:0, java.lang.Object(IntList(x35:0, x36:0)))), x35:0, x36:0) :|: x35:0 > 0 && x34:0 < 1 && x29:0 + -1 * x27:0 >= 0 && x30:0 > 0 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (2) -> (1), (2), (3), (5), (6) 25.52/14.35 (3) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (4) -> (1), (3), (4), (5), (6) 25.52/14.35 (5) -> (1), (2), (3), (4), (5), (6), (7) 25.52/14.35 (6) -> (1), (3), (5), (6) 25.52/14.35 (7) -> (1), (3), (5), (6), (7) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (61) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (62) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x10:0:0:0, x11:0:0:0, x12:0:0:0, java.lang.Object(IntList(x13:0:0:0, java.lang.Object(IntList(x18:0:0:0, x19:0:0:0))))) -> f5291_0_max_NULL(x10:0:0:0, x11:0:0:0, x18:0:0:0, x19:0:0:0) :|: x18:0:0:0 + -1 * x12:0:0:0 >= 1 && x13:0:0:0 + -1 * x12:0:0:0 <= 0 25.52/14.35 f5291_0_max_NULL(x8:0:0, java.lang.Object(IntList(x15:0:0, java.lang.Object(IntList(x16:0:0, x17:0:0)))), x10:0:0, NULL) -> f5291_0_max_NULL(x8:0:0 + 1, java.lang.Object(IntList(x15:0:0, java.lang.Object(IntList(x16:0:0, x17:0:0)))), 0, x17:0:0) :|: x10:0:0 + -1 * x8:0:0 >= 0 && x11:0:0 > 0 && x15:0:0 < 1 && x16:0:0 < 1 25.52/14.35 f5291_0_max_NULL(x:0:0:0:0, x1:0:0:0:0, x2:0:0:0:0, java.lang.Object(IntList(x3:0:0:0:0, x4:0:0:0:0))) -> f5291_0_max_NULL(x:0:0:0:0, x1:0:0:0:0, x3:0:0:0:0, x4:0:0:0:0) :|: x3:0:0:0:0 > x2:0:0:0:0 25.52/14.35 f5291_0_max_NULL(x27:0:0, java.lang.Object(IntList(x34:0:0, java.lang.Object(IntList(x35:0:0, x36:0:0)))), x29:0:0, NULL) -> f5291_0_max_NULL(x27:0:0 + 1, java.lang.Object(IntList(x34:0:0, java.lang.Object(IntList(x35:0:0, x36:0:0)))), x35:0:0, x36:0:0) :|: x29:0:0 + -1 * x27:0:0 >= 0 && x30:0:0 > 0 && x34:0:0 < 1 && x35:0:0 > 0 25.52/14.35 f5291_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))))) -> f5291_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 25.52/14.35 f5291_0_max_NULL(x20:0:0:0, x21:0:0:0, x22:0:0:0, java.lang.Object(IntList(x23:0:0:0, NULL))) -> f5291_0_max_NULL(x20:0:0:0 + 1, x21:0:0:0, 0, x21:0:0:0) :|: x22:0:0:0 + -1 * x20:0:0:0 >= 0 && x23:0:0:0 + -1 * x22:0:0:0 <= 0 && x28:0:0:0 > 0 25.52/14.35 f5291_0_max_NULL(x18:0:0, java.lang.Object(IntList(x25:0:0, x26:0:0)), x20:0:0, NULL) -> f5291_0_max_NULL(x18:0:0 + 1, java.lang.Object(IntList(x25:0:0, x26:0:0)), x25:0:0, x26:0:0) :|: x21:0:0 > 0 && x20:0:0 + -1 * x18:0:0 >= 0 && x25:0:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (63) 25.52/14.35 Obligation: 25.52/14.35 25.52/14.35 Termination digraph: 25.52/14.35 Nodes: 25.52/14.35 (1) f5291_0_max_NULL(x, NULL, x2, NULL) -> f5291_0_max_NULL(x + 2, NULL, 0, NULL) :|: TRUE && x2 + -1 * x >= 0 && x3 >= 1 && -1 * x >= 1 && x7 >= 1 25.52/14.35 25.52/14.35 Arcs: 25.52/14.35 (1) -> (1) 25.52/14.35 25.52/14.35 This digraph is fully evaluated! 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (64) IntTRSCompressionProof (EQUIVALENT) 25.52/14.35 Compressed rules. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (65) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x:0, NULL, x2:0, NULL) -> f5291_0_max_NULL(x:0 + 2, NULL, 0, NULL) :|: 1 <= -1 * x:0 && x7:0 > 0 && x2:0 + -1 * x:0 >= 0 && x3:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (66) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 25.52/14.35 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 25.52/14.35 25.52/14.35 f5291_0_max_NULL(x1, x2, x3, x4) -> f5291_0_max_NULL(x1, x3) 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (67) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x:0, x2:0) -> f5291_0_max_NULL(x:0 + 2, 0) :|: 1 <= -1 * x:0 && x7:0 > 0 && x2:0 + -1 * x:0 >= 0 && x3:0 > 0 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (68) TempFilterProof (SOUND) 25.52/14.35 Used the following sort dictionary for filtering: 25.52/14.35 f5291_0_max_NULL(INTEGER, VARIABLE) 25.52/14.35 Replaced non-predefined constructor symbols by 0. 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (69) 25.52/14.35 Obligation: 25.52/14.35 Rules: 25.52/14.35 f5291_0_max_NULL(x:0, x2:0) -> f5291_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (1 <= -1 * x:0 && x7:0 > 0 && x2:0 + -1 * x:0 >= 0 && x3:0 > 0) 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (70) PolynomialOrderProcessor (EQUIVALENT) 25.52/14.35 Found the following polynomial interpretation: 25.52/14.35 [f5291_0_max_NULL(x, x1)] = -1 - x 25.52/14.35 25.52/14.35 The following rules are decreasing: 25.52/14.35 f5291_0_max_NULL(x:0, x2:0) -> f5291_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (1 <= -1 * x:0 && x7:0 > 0 && x2:0 + -1 * x:0 >= 0 && x3:0 > 0) 25.52/14.35 The following rules are bounded: 25.52/14.35 f5291_0_max_NULL(x:0, x2:0) -> f5291_0_max_NULL(c, c1) :|: c1 = 0 && c = x:0 + 2 && (1 <= -1 * x:0 && x7:0 > 0 && x2:0 + -1 * x:0 >= 0 && x3:0 > 0) 25.52/14.35 25.52/14.35 ---------------------------------------- 25.52/14.35 25.52/14.35 (71) 25.52/14.35 YES 25.99/14.42 EOF