9.84/3.59 YES 10.07/3.65 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 10.07/3.65 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.07/3.65 10.07/3.65 10.07/3.65 termination of the given Bare JBC problem could be proven: 10.07/3.65 10.07/3.65 (0) Bare JBC problem 10.07/3.65 (1) BareJBCToJBCProof [EQUIVALENT, 95 ms] 10.07/3.65 (2) JBC problem 10.07/3.65 (3) JBCToGraph [EQUIVALENT, 586 ms] 10.07/3.65 (4) JBCTerminationGraph 10.07/3.65 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 10.07/3.65 (6) AND 10.07/3.65 (7) JBCTerminationSCC 10.07/3.65 (8) SCCToIRSProof [SOUND, 85 ms] 10.07/3.65 (9) IRSwT 10.07/3.65 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.07/3.65 (11) IRSwT 10.07/3.65 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 13 ms] 10.07/3.65 (13) IRSwT 10.07/3.65 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.07/3.65 (15) IRSwT 10.07/3.65 (16) TempFilterProof [SOUND, 2 ms] 10.07/3.65 (17) IRSwT 10.07/3.65 (18) IRSwTToQDPProof [SOUND, 0 ms] 10.07/3.65 (19) QDP 10.07/3.65 (20) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.07/3.65 (21) YES 10.07/3.65 (22) JBCTerminationSCC 10.07/3.65 (23) SCCToQDPProof [SOUND, 113 ms] 10.07/3.65 (24) QDP 10.07/3.65 (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.07/3.65 (26) YES 10.07/3.65 (27) JBCTerminationSCC 10.07/3.65 (28) SCCToIRSProof [SOUND, 29 ms] 10.07/3.65 (29) IRSwT 10.07/3.65 (30) IRSFormatTransformerProof [EQUIVALENT, 1 ms] 10.07/3.65 (31) IRSwT 10.07/3.65 (32) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] 10.07/3.65 (33) IRSwT 10.07/3.65 (34) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.07/3.65 (35) IRSwT 10.07/3.65 (36) TempFilterProof [SOUND, 40 ms] 10.07/3.65 (37) IntTRS 10.07/3.65 (38) RankingReductionPairProof [EQUIVALENT, 0 ms] 10.07/3.65 (39) YES 10.07/3.65 (40) JBCTerminationSCC 10.07/3.65 (41) SCCToIRSProof [SOUND, 58 ms] 10.07/3.65 (42) IRSwT 10.07/3.65 (43) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.07/3.65 (44) IRSwT 10.07/3.65 (45) IRSwTTerminationDigraphProof [EQUIVALENT, 26 ms] 10.07/3.65 (46) IRSwT 10.07/3.65 (47) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.07/3.65 (48) IRSwT 10.07/3.65 (49) TempFilterProof [SOUND, 25 ms] 10.07/3.65 (50) IntTRS 10.07/3.65 (51) RankingReductionPairProof [EQUIVALENT, 0 ms] 10.07/3.65 (52) IntTRS 10.07/3.65 (53) RankingReductionPairProof [EQUIVALENT, 0 ms] 10.07/3.65 (54) YES 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (0) 10.07/3.65 Obligation: 10.07/3.65 need to prove termination of the following program: 10.07/3.65 public class Test7 { 10.07/3.65 public static void main(String[] args) { 10.07/3.65 List[] ls = { List.mk(args.length), List.mk(args.length), List.mk(args.length) }; 10.07/3.65 10.07/3.65 for (int k = 0; k < ls.length; k++) { 10.07/3.65 int len = length(ls[0]); 10.07/3.65 for (int i = 0; i < len; i++) 10.07/3.65 bubble(ls[0]); 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 private static void bubble(List l) { 10.07/3.65 for (List cursor = l; cursor != null && cursor.getTail() != null; cursor = cursor.getTail()) 10.07/3.65 if (cursor.head > cursor.getTail().head) { 10.07/3.65 int temp = cursor.head; 10.07/3.65 cursor.head = cursor.getTail().head; 10.07/3.65 cursor.getTail().head = temp; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 private static int length(List list) { 10.07/3.65 int len = 0; 10.07/3.65 10.07/3.65 while (list != null) { 10.07/3.65 list = list.getTail(); 10.07/3.65 len++; 10.07/3.65 } 10.07/3.65 10.07/3.65 return len; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 public class List { 10.07/3.65 public int head; 10.07/3.65 private List tail; 10.07/3.65 10.07/3.65 public List(int head, List tail) { 10.07/3.65 this.head = head; 10.07/3.65 this.tail = tail; 10.07/3.65 } 10.07/3.65 10.07/3.65 public List getTail() { 10.07/3.65 return tail; 10.07/3.65 } 10.07/3.65 10.07/3.65 public static List mk(int len) { 10.07/3.65 List result = null; 10.07/3.65 10.07/3.65 while (len-- > 0) 10.07/3.65 result = new List(len, result); 10.07/3.65 10.07/3.65 return result; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (1) BareJBCToJBCProof (EQUIVALENT) 10.07/3.65 initialized classpath 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (2) 10.07/3.65 Obligation: 10.07/3.65 need to prove termination of the following program: 10.07/3.65 public class Test7 { 10.07/3.65 public static void main(String[] args) { 10.07/3.65 List[] ls = { List.mk(args.length), List.mk(args.length), List.mk(args.length) }; 10.07/3.65 10.07/3.65 for (int k = 0; k < ls.length; k++) { 10.07/3.65 int len = length(ls[0]); 10.07/3.65 for (int i = 0; i < len; i++) 10.07/3.65 bubble(ls[0]); 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 private static void bubble(List l) { 10.07/3.65 for (List cursor = l; cursor != null && cursor.getTail() != null; cursor = cursor.getTail()) 10.07/3.65 if (cursor.head > cursor.getTail().head) { 10.07/3.65 int temp = cursor.head; 10.07/3.65 cursor.head = cursor.getTail().head; 10.07/3.65 cursor.getTail().head = temp; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 private static int length(List list) { 10.07/3.65 int len = 0; 10.07/3.65 10.07/3.65 while (list != null) { 10.07/3.65 list = list.getTail(); 10.07/3.65 len++; 10.07/3.65 } 10.07/3.65 10.07/3.65 return len; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 public class List { 10.07/3.65 public int head; 10.07/3.65 private List tail; 10.07/3.65 10.07/3.65 public List(int head, List tail) { 10.07/3.65 this.head = head; 10.07/3.65 this.tail = tail; 10.07/3.65 } 10.07/3.65 10.07/3.65 public List getTail() { 10.07/3.65 return tail; 10.07/3.65 } 10.07/3.65 10.07/3.65 public static List mk(int len) { 10.07/3.65 List result = null; 10.07/3.65 10.07/3.65 while (len-- > 0) 10.07/3.65 result = new List(len, result); 10.07/3.65 10.07/3.65 return result; 10.07/3.65 } 10.07/3.65 } 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (3) JBCToGraph (EQUIVALENT) 10.07/3.65 Constructed TerminationGraph. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (4) 10.07/3.65 Obligation: 10.07/3.65 Termination Graph based on JBC Program: 10.07/3.65 Test7.main([Ljava/lang/String;)V: Graph of 83 nodes with 1 SCC. 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 List.mk(I)LList;: Graph of 54 nodes with 1 SCC. 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 Test7.length(LList;)I: Graph of 22 nodes with 1 SCC. 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 Test7.bubble(LList;)V: Graph of 63 nodes with 1 SCC. 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (5) TerminationGraphToSCCProof (SOUND) 10.07/3.65 Splitted TerminationGraph to 4 SCCss. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (6) 10.07/3.65 Complex Obligation (AND) 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (7) 10.07/3.65 Obligation: 10.07/3.65 SCC of termination graph based on JBC Program. 10.07/3.65 SCC contains nodes from the following methods: Test7.bubble(LList;)V 10.07/3.65 SCC calls the following helper methods: 10.07/3.65 Performed SCC analyses: 10.07/3.65 *Used field analysis yielded the following read fields: 10.07/3.65 *List: [tail, head] 10.07/3.65 *Marker field analysis yielded the following relations that could be markers: 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (8) SCCToIRSProof (SOUND) 10.07/3.65 Transformed FIGraph SCCs to intTRSs. Log: 10.07/3.65 Generated rules. Obtained 55 IRulesP rules: 10.07/3.65 f2631_0_bubble_NULL(EOS(STATIC_2631), java.lang.Object(o454sub), java.lang.Object(o454sub)) -> f2634_0_bubble_NULL(EOS(STATIC_2634), java.lang.Object(o454sub), java.lang.Object(o454sub)) :|: TRUE 10.07/3.65 f2634_0_bubble_NULL(EOS(STATIC_2634), java.lang.Object(o454sub), java.lang.Object(o454sub)) -> f2637_0_bubble_Load(EOS(STATIC_2637), java.lang.Object(o454sub)) :|: TRUE 10.07/3.65 f2637_0_bubble_Load(EOS(STATIC_2637), java.lang.Object(o454sub)) -> f2641_0_bubble_InvokeMethod(EOS(STATIC_2641), java.lang.Object(o454sub), java.lang.Object(o454sub)) :|: TRUE 10.07/3.65 f2641_0_bubble_InvokeMethod(EOS(STATIC_2641), java.lang.Object(o454sub), java.lang.Object(o454sub)) -> f2645_0_getTail_Load(EOS(STATIC_2645), java.lang.Object(o454sub), java.lang.Object(o454sub)) :|: TRUE 10.07/3.65 f2645_0_getTail_Load(EOS(STATIC_2645), java.lang.Object(o454sub), java.lang.Object(o454sub)) -> f2680_0_getTail_FieldAccess(EOS(STATIC_2680), java.lang.Object(o454sub), java.lang.Object(o454sub)) :|: TRUE 10.07/3.65 f2680_0_getTail_FieldAccess(EOS(STATIC_2680), java.lang.Object(List(EOC, o460, i462)), java.lang.Object(List(EOC, o460, i462))) -> f2684_0_getTail_FieldAccess(EOS(STATIC_2684), java.lang.Object(List(EOC, o460, i462)), java.lang.Object(List(EOC, o460, i462))) :|: TRUE 10.07/3.65 f2684_0_getTail_FieldAccess(EOS(STATIC_2684), java.lang.Object(List(EOC, o460, i462)), java.lang.Object(List(EOC, o460, i462))) -> f2686_0_getTail_Return(EOS(STATIC_2686), java.lang.Object(List(EOC, o460, i462)), o460) :|: TRUE 10.07/3.65 f2686_0_getTail_Return(EOS(STATIC_2686), java.lang.Object(List(EOC, o460, i462)), o460) -> f2688_0_bubble_NULL(EOS(STATIC_2688), java.lang.Object(List(EOC, o460, i462)), o460) :|: TRUE 10.07/3.65 f2688_0_bubble_NULL(EOS(STATIC_2688), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), java.lang.Object(o461sub)) -> f2691_0_bubble_NULL(EOS(STATIC_2691), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), java.lang.Object(o461sub)) :|: TRUE 10.07/3.65 f2691_0_bubble_NULL(EOS(STATIC_2691), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), java.lang.Object(o461sub)) -> f2693_0_bubble_Load(EOS(STATIC_2693), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) :|: TRUE 10.07/3.65 f2693_0_bubble_Load(EOS(STATIC_2693), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) -> f2697_0_bubble_FieldAccess(EOS(STATIC_2697), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) :|: TRUE 10.07/3.65 f2697_0_bubble_FieldAccess(EOS(STATIC_2697), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) -> f2699_0_bubble_Load(EOS(STATIC_2699), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462) :|: TRUE 10.07/3.65 f2699_0_bubble_Load(EOS(STATIC_2699), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462) -> f2701_0_bubble_InvokeMethod(EOS(STATIC_2701), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) :|: TRUE 10.07/3.65 f2701_0_bubble_InvokeMethod(EOS(STATIC_2701), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) -> f2704_0_getTail_Load(EOS(STATIC_2704), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) :|: TRUE 10.07/3.65 f2704_0_getTail_Load(EOS(STATIC_2704), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) -> f2706_0_getTail_FieldAccess(EOS(STATIC_2706), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) :|: TRUE 10.07/3.65 f2706_0_getTail_FieldAccess(EOS(STATIC_2706), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(o461sub), i462))) -> f2708_0_getTail_Return(EOS(STATIC_2708), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(o461sub)) :|: TRUE 10.07/3.65 f2708_0_getTail_Return(EOS(STATIC_2708), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(o461sub)) -> f2710_0_bubble_FieldAccess(EOS(STATIC_2710), java.lang.Object(List(EOC, java.lang.Object(o461sub), i462)), i462, java.lang.Object(o461sub)) :|: TRUE 10.07/3.65 f2710_0_bubble_FieldAccess(EOS(STATIC_2710), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, o465, i468))) -> f2734_0_bubble_FieldAccess(EOS(STATIC_2734), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2734_0_bubble_FieldAccess(EOS(STATIC_2734), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, o465, i468))) -> f2736_0_bubble_LE(EOS(STATIC_2736), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) :|: TRUE 10.07/3.65 f2736_0_bubble_LE(EOS(STATIC_2736), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) -> f2743_0_bubble_LE(EOS(STATIC_2743), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) :|: i462 <= i468 10.07/3.65 f2736_0_bubble_LE(EOS(STATIC_2736), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) -> f2744_0_bubble_LE(EOS(STATIC_2744), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) :|: i462 > i468 10.07/3.65 f2743_0_bubble_LE(EOS(STATIC_2743), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) -> f2745_0_bubble_Load(EOS(STATIC_2745), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: i462 <= i468 10.07/3.65 f2745_0_bubble_Load(EOS(STATIC_2745), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2752_0_bubble_InvokeMethod(EOS(STATIC_2752), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2752_0_bubble_InvokeMethod(EOS(STATIC_2752), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2754_0_getTail_Load(EOS(STATIC_2754), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2754_0_getTail_Load(EOS(STATIC_2754), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2757_0_getTail_FieldAccess(EOS(STATIC_2757), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2757_0_getTail_FieldAccess(EOS(STATIC_2757), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2759_0_getTail_Return(EOS(STATIC_2759), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2759_0_getTail_Return(EOS(STATIC_2759), java.lang.Object(List(EOC, o465, i468))) -> f2764_0_bubble_Store(EOS(STATIC_2764), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2764_0_bubble_Store(EOS(STATIC_2764), java.lang.Object(List(EOC, o465, i468))) -> f2766_0_bubble_JMP(EOS(STATIC_2766), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2766_0_bubble_JMP(EOS(STATIC_2766), java.lang.Object(List(EOC, o465, i468))) -> f2767_0_bubble_Load(EOS(STATIC_2767), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2767_0_bubble_Load(EOS(STATIC_2767), java.lang.Object(List(EOC, o465, i468))) -> f2626_0_bubble_Load(EOS(STATIC_2626), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2626_0_bubble_Load(EOS(STATIC_2626), o451) -> f2631_0_bubble_NULL(EOS(STATIC_2631), o451, o451) :|: TRUE 10.07/3.65 f2744_0_bubble_LE(EOS(STATIC_2744), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, i468) -> f2751_0_bubble_Load(EOS(STATIC_2751), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: i462 > i468 10.07/3.65 f2751_0_bubble_Load(EOS(STATIC_2751), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2753_0_bubble_FieldAccess(EOS(STATIC_2753), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2753_0_bubble_FieldAccess(EOS(STATIC_2753), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2755_0_bubble_Store(EOS(STATIC_2755), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462) :|: TRUE 10.07/3.65 f2755_0_bubble_Store(EOS(STATIC_2755), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462) -> f2756_0_bubble_Load(EOS(STATIC_2756), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462) :|: TRUE 10.07/3.65 f2756_0_bubble_Load(EOS(STATIC_2756), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462) -> f2758_0_bubble_Load(EOS(STATIC_2758), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2758_0_bubble_Load(EOS(STATIC_2758), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2762_0_bubble_InvokeMethod(EOS(STATIC_2762), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2762_0_bubble_InvokeMethod(EOS(STATIC_2762), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2765_0_getTail_Load(EOS(STATIC_2765), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2765_0_getTail_Load(EOS(STATIC_2765), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2770_0_getTail_FieldAccess(EOS(STATIC_2770), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) :|: TRUE 10.07/3.65 f2770_0_getTail_FieldAccess(EOS(STATIC_2770), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462))) -> f2807_0_getTail_Return(EOS(STATIC_2807), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2807_0_getTail_Return(EOS(STATIC_2807), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, o465, i468))) -> f2816_0_bubble_FieldAccess(EOS(STATIC_2816), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2816_0_bubble_FieldAccess(EOS(STATIC_2816), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), java.lang.Object(List(EOC, o465, i468))) -> f2818_0_bubble_FieldAccess(EOS(STATIC_2818), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i468) :|: TRUE 10.07/3.65 f2818_0_bubble_FieldAccess(EOS(STATIC_2818), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i462)), i468) -> f2822_0_bubble_Load(EOS(STATIC_2822), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462) :|: TRUE 10.07/3.65 f2822_0_bubble_Load(EOS(STATIC_2822), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462) -> f2824_0_bubble_InvokeMethod(EOS(STATIC_2824), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) :|: TRUE 10.07/3.65 f2824_0_bubble_InvokeMethod(EOS(STATIC_2824), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) -> f2825_0_getTail_Load(EOS(STATIC_2825), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) :|: TRUE 10.07/3.65 f2825_0_getTail_Load(EOS(STATIC_2825), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) -> f2832_0_getTail_FieldAccess(EOS(STATIC_2832), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) :|: TRUE 10.07/3.65 f2832_0_getTail_FieldAccess(EOS(STATIC_2832), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468))) -> f2837_0_getTail_Return(EOS(STATIC_2837), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2837_0_getTail_Return(EOS(STATIC_2837), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, o465, i468))) -> f2840_0_bubble_Load(EOS(STATIC_2840), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, o465, i468))) :|: TRUE 10.07/3.65 f2840_0_bubble_Load(EOS(STATIC_2840), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), i462, java.lang.Object(List(EOC, o465, i468))) -> f2842_0_bubble_FieldAccess(EOS(STATIC_2842), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), java.lang.Object(List(EOC, o465, i468)), i462) :|: TRUE 10.07/3.65 f2842_0_bubble_FieldAccess(EOS(STATIC_2842), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i468)), i468)), java.lang.Object(List(EOC, o465, i468)), i462) -> f2863_0_bubble_Load(EOS(STATIC_2863), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) :|: TRUE 10.07/3.65 f2863_0_bubble_Load(EOS(STATIC_2863), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) -> f2879_0_bubble_InvokeMethod(EOS(STATIC_2879), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) :|: TRUE 10.07/3.65 f2879_0_bubble_InvokeMethod(EOS(STATIC_2879), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) -> f2882_0_getTail_Load(EOS(STATIC_2882), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) :|: TRUE 10.07/3.65 f2882_0_getTail_Load(EOS(STATIC_2882), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) -> f2906_0_getTail_FieldAccess(EOS(STATIC_2906), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) :|: TRUE 10.07/3.65 f2906_0_getTail_FieldAccess(EOS(STATIC_2906), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465, i462)), i468))) -> f2907_0_getTail_Return(EOS(STATIC_2907), java.lang.Object(List(EOC, o465, i462))) :|: TRUE 10.07/3.65 f2907_0_getTail_Return(EOS(STATIC_2907), java.lang.Object(List(EOC, o465, i462))) -> f2759_0_getTail_Return(EOS(STATIC_2759), java.lang.Object(List(EOC, o465, i462))) :|: TRUE 10.07/3.65 Combined rules. Obtained 2 IRulesP rules: 10.07/3.65 f2631_0_bubble_NULL(EOS(STATIC_2631), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465:0, i468:0)), i462:0)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465:0, i468:0)), i462:0))) -> f2631_0_bubble_NULL(EOS(STATIC_2631), java.lang.Object(List(EOC, o465:0, i468:0)), java.lang.Object(List(EOC, o465:0, i468:0))) :|: i468:0 >= i462:0 10.07/3.65 f2631_0_bubble_NULL(EOS(STATIC_2631), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465:0, i468:0)), i462:0)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o465:0, i468:0)), i462:0))) -> f2631_0_bubble_NULL(EOS(STATIC_2631), java.lang.Object(List(EOC, o465:0, i462:0)), java.lang.Object(List(EOC, o465:0, i462:0))) :|: i468:0 < i462:0 10.07/3.65 Filtered constant ground arguments: 10.07/3.65 f2631_0_bubble_NULL(x1, x2, x3) -> f2631_0_bubble_NULL(x2, x3) 10.07/3.65 EOS(x1) -> EOS 10.07/3.65 List(x1, x2, x3) -> List(x2, x3) 10.07/3.65 Filtered duplicate arguments: 10.07/3.65 f2631_0_bubble_NULL(x1, x2) -> f2631_0_bubble_NULL(x2) 10.07/3.65 Finished conversion. Obtained 2 rules.P rules: 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i468:0)), i468:0) :|: i468:0 >= i462:0 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i462:0)), i462:0) :|: i468:0 < i462:0 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (9) 10.07/3.65 Obligation: 10.07/3.65 Rules: 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i468:0)), i468:0) :|: i468:0 >= i462:0 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x, x1)), x2)), x2) -> f2631_0_bubble_NULL(java.lang.Object(List(x, x2)), x2) :|: x1 < x2 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (10) IRSFormatTransformerProof (EQUIVALENT) 10.07/3.65 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (11) 10.07/3.65 Obligation: 10.07/3.65 Rules: 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i468:0)), i468:0) :|: i468:0 >= i462:0 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x, x1)), x2)), x2) -> f2631_0_bubble_NULL(java.lang.Object(List(x, x2)), x2) :|: x1 < x2 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 10.07/3.65 Constructed termination digraph! 10.07/3.65 Nodes: 10.07/3.65 (1) f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i468:0)), i468:0) :|: i468:0 >= i462:0 10.07/3.65 (2) f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x, x1)), x2)), x2) -> f2631_0_bubble_NULL(java.lang.Object(List(x, x2)), x2) :|: x1 < x2 10.07/3.65 10.07/3.65 Arcs: 10.07/3.65 (1) -> (1), (2) 10.07/3.65 (2) -> (1), (2) 10.07/3.65 10.07/3.65 This digraph is fully evaluated! 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (13) 10.07/3.65 Obligation: 10.07/3.65 10.07/3.65 Termination digraph: 10.07/3.65 Nodes: 10.07/3.65 (1) f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0, i468:0)), i462:0)), i462:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0, i468:0)), i468:0) :|: i468:0 >= i462:0 10.07/3.65 (2) f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x, x1)), x2)), x2) -> f2631_0_bubble_NULL(java.lang.Object(List(x, x2)), x2) :|: x1 < x2 10.07/3.65 10.07/3.65 Arcs: 10.07/3.65 (1) -> (1), (2) 10.07/3.65 (2) -> (1), (2) 10.07/3.65 10.07/3.65 This digraph is fully evaluated! 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (14) IntTRSCompressionProof (EQUIVALENT) 10.07/3.65 Compressed rules. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (15) 10.07/3.65 Obligation: 10.07/3.65 Rules: 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x:0, x1:0)), x2:0)), x2:0) -> f2631_0_bubble_NULL(java.lang.Object(List(x:0, x2:0)), x2:0) :|: x2:0 > x1:0 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(o465:0:0, i468:0:0)), i462:0:0)), i462:0:0) -> f2631_0_bubble_NULL(java.lang.Object(List(o465:0:0, i468:0:0)), i468:0:0) :|: i468:0:0 >= i462:0:0 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (16) TempFilterProof (SOUND) 10.07/3.65 Used the following sort dictionary for filtering: 10.07/3.65 f2631_0_bubble_NULL(VARIABLE, INTEGER) 10.07/3.65 java.lang.Object(VARIABLE) 10.07/3.65 List(VARIABLE, INTEGER) 10.07/3.65 Removed predefined arithmetic. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (17) 10.07/3.65 Obligation: 10.07/3.65 Rules: 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x:0))))) -> f2631_0_bubble_NULL(java.lang.Object(List(x:0))) 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (18) IRSwTToQDPProof (SOUND) 10.07/3.65 Removed the integers and created a QDP-Problem. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (19) 10.07/3.65 Obligation: 10.07/3.65 Q DP problem: 10.07/3.65 The TRS P consists of the following rules: 10.07/3.65 10.07/3.65 f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x:0))))) -> f2631_0_bubble_NULL(java.lang.Object(List(x:0))) 10.07/3.65 10.07/3.65 R is empty. 10.07/3.65 Q is empty. 10.07/3.65 We have to consider all (P,Q,R)-chains. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (20) QDPSizeChangeProof (EQUIVALENT) 10.07/3.65 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. 10.07/3.65 10.07/3.65 From the DPs we obtained the following set of size-change graphs: 10.07/3.65 *f2631_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x:0))))) -> f2631_0_bubble_NULL(java.lang.Object(List(x:0))) 10.07/3.65 The graph contains the following edges 1 > 1 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (21) 10.07/3.65 YES 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (22) 10.07/3.65 Obligation: 10.07/3.65 SCC of termination graph based on JBC Program. 10.07/3.65 SCC contains nodes from the following methods: Test7.length(LList;)I 10.07/3.65 SCC calls the following helper methods: 10.07/3.65 Performed SCC analyses: 10.07/3.65 *Used field analysis yielded the following read fields: 10.07/3.65 *List: [tail] 10.07/3.65 *Marker field analysis yielded the following relations that could be markers: 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (23) SCCToQDPProof (SOUND) 10.07/3.65 Transformed TerminationGraph SCC to QDP. Log: 10.07/3.65 Generated 13 rules for P and 0 rules for R.P rules: 10.07/3.65 f1828_0_length_NULL(EOS(STATIC_1828), java.lang.Object(o245sub), java.lang.Object(o245sub)) -> f1844_0_length_NULL(EOS(STATIC_1844), java.lang.Object(o245sub), java.lang.Object(o245sub)) :|: TRUE 10.07/3.65 f1844_0_length_NULL(EOS(STATIC_1844), java.lang.Object(o245sub), java.lang.Object(o245sub)) -> f1885_0_length_Load(EOS(STATIC_1885), java.lang.Object(o245sub)) :|: TRUE 10.07/3.65 f1885_0_length_Load(EOS(STATIC_1885), java.lang.Object(o245sub)) -> f1889_0_length_InvokeMethod(EOS(STATIC_1889), java.lang.Object(o245sub)) :|: TRUE 10.07/3.65 f1889_0_length_InvokeMethod(EOS(STATIC_1889), java.lang.Object(o245sub)) -> f1895_0_getTail_Load(EOS(STATIC_1895), java.lang.Object(o245sub)) :|: TRUE 10.07/3.65 f1895_0_getTail_Load(EOS(STATIC_1895), java.lang.Object(o245sub)) -> f1899_0_getTail_FieldAccess(EOS(STATIC_1899), java.lang.Object(o245sub)) :|: TRUE 10.07/3.65 f1899_0_getTail_FieldAccess(EOS(STATIC_1899), java.lang.Object(List(EOC, o261))) -> f1901_0_getTail_FieldAccess(EOS(STATIC_1901), java.lang.Object(List(EOC, o261))) :|: TRUE 10.07/3.65 f1901_0_getTail_FieldAccess(EOS(STATIC_1901), java.lang.Object(List(EOC, o261))) -> f1903_0_getTail_Return(EOS(STATIC_1903), o261) :|: TRUE 10.07/3.65 f1903_0_getTail_Return(EOS(STATIC_1903), o261) -> f1905_0_length_Store(EOS(STATIC_1905), o261) :|: TRUE 10.07/3.65 f1905_0_length_Store(EOS(STATIC_1905), o261) -> f1907_0_length_Inc(EOS(STATIC_1907), o261) :|: TRUE 10.07/3.65 f1907_0_length_Inc(EOS(STATIC_1907), o261) -> f1909_0_length_JMP(EOS(STATIC_1909), o261) :|: TRUE 10.07/3.65 f1909_0_length_JMP(EOS(STATIC_1909), o261) -> f1911_0_length_Load(EOS(STATIC_1911), o261) :|: TRUE 10.07/3.65 f1911_0_length_Load(EOS(STATIC_1911), o261) -> f1822_0_length_Load(EOS(STATIC_1822), o261) :|: TRUE 10.07/3.65 f1822_0_length_Load(EOS(STATIC_1822), o235) -> f1828_0_length_NULL(EOS(STATIC_1828), o235, o235) :|: TRUE 10.07/3.65 R rules: 10.07/3.65 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 10.07/3.65 f1828_0_length_NULL(EOS(STATIC_1828), java.lang.Object(List(EOC, o261:0)), java.lang.Object(List(EOC, o261:0))) -> f1828_0_length_NULL(EOS(STATIC_1828), o261:0, o261:0) :|: TRUE 10.07/3.65 R rules: 10.07/3.65 Filtered ground terms: 10.07/3.65 f1828_0_length_NULL(x1, x2, x3) -> f1828_0_length_NULL(x2, x3) 10.07/3.65 EOS(x1) -> EOS 10.07/3.65 List(x1, x2) -> List(x2) 10.07/3.65 Filtered duplicate args: 10.07/3.65 f1828_0_length_NULL(x1, x2) -> f1828_0_length_NULL(x2) 10.07/3.65 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 10.07/3.65 F1828_0_LENGTH_NULL(java.lang.Object(List(o261:0:0))) -> F1828_0_LENGTH_NULL(o261:0:0) :|: TRUE 10.07/3.65 R rules: 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (24) 10.07/3.65 Obligation: 10.07/3.65 Q DP problem: 10.07/3.65 The TRS P consists of the following rules: 10.07/3.65 10.07/3.65 F1828_0_LENGTH_NULL(java.lang.Object(List(o261:0:0))) -> F1828_0_LENGTH_NULL(o261:0:0) 10.07/3.65 10.07/3.65 R is empty. 10.07/3.65 Q is empty. 10.07/3.65 We have to consider all minimal (P,Q,R)-chains. 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (25) QDPSizeChangeProof (EQUIVALENT) 10.07/3.65 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. 10.07/3.65 10.07/3.65 From the DPs we obtained the following set of size-change graphs: 10.07/3.65 *F1828_0_LENGTH_NULL(java.lang.Object(List(o261:0:0))) -> F1828_0_LENGTH_NULL(o261:0:0) 10.07/3.65 The graph contains the following edges 1 > 1 10.07/3.65 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (26) 10.07/3.65 YES 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (27) 10.07/3.65 Obligation: 10.07/3.65 SCC of termination graph based on JBC Program. 10.07/3.65 SCC contains nodes from the following methods: List.mk(I)LList; 10.07/3.65 SCC calls the following helper methods: 10.07/3.65 Performed SCC analyses: 10.07/3.65 *Used field analysis yielded the following read fields: 10.07/3.65 10.07/3.65 *Marker field analysis yielded the following relations that could be markers: 10.07/3.65 10.07/3.65 ---------------------------------------- 10.07/3.65 10.07/3.65 (28) SCCToIRSProof (SOUND) 10.07/3.65 Transformed FIGraph SCCs to intTRSs. Log: 10.07/3.65 Generated rules. Obtained 21 IRulesP rules: 10.07/3.65 f1234_0_mk_Inc(EOS(STATIC_1234), i240, java.lang.Object(List(EOC)), i240) -> f1236_0_mk_LE(EOS(STATIC_1236), i240 + -1, java.lang.Object(List(EOC)), i240) :|: TRUE 10.07/3.65 f1236_0_mk_LE(EOS(STATIC_1236), i249, java.lang.Object(List(EOC)), i260) -> f1239_0_mk_LE(EOS(STATIC_1239), i249, java.lang.Object(List(EOC)), i260) :|: TRUE 10.07/3.65 f1239_0_mk_LE(EOS(STATIC_1239), i249, java.lang.Object(List(EOC)), i260) -> f1242_0_mk_New(EOS(STATIC_1242), i249, java.lang.Object(List(EOC))) :|: i260 > 0 10.07/3.65 f1242_0_mk_New(EOS(STATIC_1242), i249, java.lang.Object(List(EOC))) -> f1244_0_mk_Duplicate(EOS(STATIC_1244), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1244_0_mk_Duplicate(EOS(STATIC_1244), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1246_0_mk_Load(EOS(STATIC_1246), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1246_0_mk_Load(EOS(STATIC_1246), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1267_0_mk_Load(EOS(STATIC_1267), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249) :|: TRUE 10.07/3.65 f1267_0_mk_Load(EOS(STATIC_1267), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249) -> f1285_0_mk_InvokeMethod(EOS(STATIC_1285), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1285_0_mk_InvokeMethod(EOS(STATIC_1285), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) -> f1289_0__init__Load(EOS(STATIC_1289), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1289_0__init__Load(EOS(STATIC_1289), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) -> f1298_0__init__InvokeMethod(EOS(STATIC_1298), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1298_0__init__InvokeMethod(EOS(STATIC_1298), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1301_0__init__Load(EOS(STATIC_1301), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1301_0__init__Load(EOS(STATIC_1301), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC))) -> f1304_0__init__Load(EOS(STATIC_1304), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1304_0__init__Load(EOS(STATIC_1304), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1307_0__init__FieldAccess(EOS(STATIC_1307), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249) :|: TRUE 10.07/3.65 f1307_0__init__FieldAccess(EOS(STATIC_1307), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i249) -> f1308_0__init__Load(EOS(STATIC_1308), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1308_0__init__Load(EOS(STATIC_1308), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1311_0__init__Load(EOS(STATIC_1311), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1311_0__init__Load(EOS(STATIC_1311), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1314_0__init__FieldAccess(EOS(STATIC_1314), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1314_0__init__FieldAccess(EOS(STATIC_1314), i249, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) -> f1320_0__init__Return(EOS(STATIC_1320), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1320_0__init__Return(EOS(STATIC_1320), i249, java.lang.Object(List(EOC))) -> f1324_0_mk_Store(EOS(STATIC_1324), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1324_0_mk_Store(EOS(STATIC_1324), i249, java.lang.Object(List(EOC))) -> f1329_0_mk_JMP(EOS(STATIC_1329), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1329_0_mk_JMP(EOS(STATIC_1329), i249, java.lang.Object(List(EOC))) -> f1366_0_mk_Load(EOS(STATIC_1366), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1366_0_mk_Load(EOS(STATIC_1366), i249, java.lang.Object(List(EOC))) -> f1232_0_mk_Load(EOS(STATIC_1232), i249, java.lang.Object(List(EOC))) :|: TRUE 10.07/3.65 f1232_0_mk_Load(EOS(STATIC_1232), i240, java.lang.Object(List(EOC))) -> f1234_0_mk_Inc(EOS(STATIC_1234), i240, java.lang.Object(List(EOC)), i240) :|: TRUE 10.07/3.65 Combined rules. Obtained 1 IRulesP rules: 10.07/3.65 f1234_0_mk_Inc(EOS(STATIC_1234), i240:0, java.lang.Object(List(EOC)), i240:0) -> f1234_0_mk_Inc(EOS(STATIC_1234), i240:0 - 1, java.lang.Object(List(EOC)), i240:0 - 1) :|: i240:0 > 0 10.07/3.65 Filtered constant ground arguments: 10.07/3.65 f1234_0_mk_Inc(x1, x2, x3, x4) -> f1234_0_mk_Inc(x2, x4) 10.07/3.65 EOS(x1) -> EOS 10.07/3.65 java.lang.Object(x1) -> java.lang.Object 10.07/3.66 List(x1) -> List 10.07/3.66 Filtered duplicate arguments: 10.07/3.66 f1234_0_mk_Inc(x1, x2) -> f1234_0_mk_Inc(x2) 10.07/3.66 Finished conversion. Obtained 1 rules.P rules: 10.07/3.66 f1234_0_mk_Inc(i240:0) -> f1234_0_mk_Inc(i240:0 - 1) :|: i240:0 > 0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (29) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f1234_0_mk_Inc(i240:0) -> f1234_0_mk_Inc(i240:0 - 1) :|: i240:0 > 0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (30) IRSFormatTransformerProof (EQUIVALENT) 10.07/3.66 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (31) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f1234_0_mk_Inc(i240:0) -> f1234_0_mk_Inc(arith) :|: i240:0 > 0 && arith = i240:0 - 1 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (32) IRSwTTerminationDigraphProof (EQUIVALENT) 10.07/3.66 Constructed termination digraph! 10.07/3.66 Nodes: 10.07/3.66 (1) f1234_0_mk_Inc(i240:0) -> f1234_0_mk_Inc(arith) :|: i240:0 > 0 && arith = i240:0 - 1 10.07/3.66 10.07/3.66 Arcs: 10.07/3.66 (1) -> (1) 10.07/3.66 10.07/3.66 This digraph is fully evaluated! 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (33) 10.07/3.66 Obligation: 10.07/3.66 10.07/3.66 Termination digraph: 10.07/3.66 Nodes: 10.07/3.66 (1) f1234_0_mk_Inc(i240:0) -> f1234_0_mk_Inc(arith) :|: i240:0 > 0 && arith = i240:0 - 1 10.07/3.66 10.07/3.66 Arcs: 10.07/3.66 (1) -> (1) 10.07/3.66 10.07/3.66 This digraph is fully evaluated! 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (34) IntTRSCompressionProof (EQUIVALENT) 10.07/3.66 Compressed rules. 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (35) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f1234_0_mk_Inc(i240:0:0) -> f1234_0_mk_Inc(i240:0:0 - 1) :|: i240:0:0 > 0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (36) TempFilterProof (SOUND) 10.07/3.66 Used the following sort dictionary for filtering: 10.07/3.66 f1234_0_mk_Inc(INTEGER) 10.07/3.66 Replaced non-predefined constructor symbols by 0. 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (37) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f1234_0_mk_Inc(i240:0:0) -> f1234_0_mk_Inc(c) :|: c = i240:0:0 - 1 && i240:0:0 > 0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (38) RankingReductionPairProof (EQUIVALENT) 10.07/3.66 Interpretation: 10.07/3.66 [ f1234_0_mk_Inc ] = f1234_0_mk_Inc_1 10.07/3.66 10.07/3.66 The following rules are decreasing: 10.07/3.66 f1234_0_mk_Inc(i240:0:0) -> f1234_0_mk_Inc(c) :|: c = i240:0:0 - 1 && i240:0:0 > 0 10.07/3.66 10.07/3.66 The following rules are bounded: 10.07/3.66 f1234_0_mk_Inc(i240:0:0) -> f1234_0_mk_Inc(c) :|: c = i240:0:0 - 1 && i240:0:0 > 0 10.07/3.66 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (39) 10.07/3.66 YES 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (40) 10.07/3.66 Obligation: 10.07/3.66 SCC of termination graph based on JBC Program. 10.07/3.66 SCC contains nodes from the following methods: Test7.main([Ljava/lang/String;)V 10.07/3.66 SCC calls the following helper methods: Test7.length(LList;)I, Test7.bubble(LList;)V 10.07/3.66 Performed SCC analyses: 10.07/3.66 *Used field analysis yielded the following read fields: 10.07/3.66 10.07/3.66 *Marker field analysis yielded the following relations that could be markers: 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (41) SCCToIRSProof (SOUND) 10.07/3.66 Transformed FIGraph SCCs to intTRSs. Log: 10.07/3.66 Generated rules. Obtained 40 IRulesP rules: 10.07/3.66 f1945_0_main_Load(EOS(STATIC_1945), java.lang.Object(ARRAY(matching1)), i362, i362) -> f1947_0_main_ArrayLength(EOS(STATIC_1947), java.lang.Object(ARRAY(3)), i362, i362, java.lang.Object(ARRAY(3))) :|: TRUE && matching1 = 3 10.07/3.66 f1947_0_main_ArrayLength(EOS(STATIC_1947), java.lang.Object(ARRAY(matching1)), i362, i362, java.lang.Object(ARRAY(matching2))) -> f1949_0_main_GE(EOS(STATIC_1949), java.lang.Object(ARRAY(3)), i362, i362, 3) :|: 3 >= 0 && matching1 = 3 && matching2 = 3 10.07/3.66 f1949_0_main_GE(EOS(STATIC_1949), java.lang.Object(ARRAY(matching1)), i364, i364, matching2) -> f1954_0_main_GE(EOS(STATIC_1954), java.lang.Object(ARRAY(3)), i364, i364, 3) :|: TRUE && matching1 = 3 && matching2 = 3 10.07/3.66 f1954_0_main_GE(EOS(STATIC_1954), java.lang.Object(ARRAY(matching1)), i364, i364, matching2) -> f1960_0_main_Load(EOS(STATIC_1960), java.lang.Object(ARRAY(3)), i364) :|: i364 < 3 && matching1 = 3 && matching2 = 3 10.07/3.66 f1960_0_main_Load(EOS(STATIC_1960), java.lang.Object(ARRAY(matching1)), i364) -> f1962_0_main_ConstantStackPush(EOS(STATIC_1962), java.lang.Object(ARRAY(3)), i364, java.lang.Object(ARRAY(3))) :|: TRUE && matching1 = 3 10.07/3.66 f1962_0_main_ConstantStackPush(EOS(STATIC_1962), java.lang.Object(ARRAY(matching1)), i364, java.lang.Object(ARRAY(matching2))) -> f1964_0_main_ArrayAccess(EOS(STATIC_1964), java.lang.Object(ARRAY(3)), i364, java.lang.Object(ARRAY(3)), 0) :|: TRUE && matching1 = 3 && matching2 = 3 10.07/3.66 f1964_0_main_ArrayAccess(EOS(STATIC_1964), java.lang.Object(ARRAY(matching1)), i364, java.lang.Object(ARRAY(matching2)), matching3) -> f1965_0_main_InvokeMethod(EOS(STATIC_1965), java.lang.Object(ARRAY(3)), i364, o272) :|: 0 < 3 && matching1 = 3 && matching2 = 3 && matching3 = 0 10.07/3.66 f1965_0_main_InvokeMethod(EOS(STATIC_1965), java.lang.Object(ARRAY(matching1)), i364, o272) -> f1966_0_length_ConstantStackPush(EOS(STATIC_1966), o272, o272) :|: TRUE && matching1 = 3 10.07/3.66 f1965_0_main_InvokeMethod(EOS(STATIC_1965), java.lang.Object(ARRAY(matching1)), i364, o272) -> f1966_1_length_ConstantStackPush(EOS(STATIC_1966), java.lang.Object(ARRAY(3)), i364, o272) :|: TRUE && matching1 = 3 10.07/3.66 f1966_0_length_ConstantStackPush(EOS(STATIC_1966), o272, o272) -> f3160_0_length_ConstantStackPush(EOS(STATIC_3160), o272, o272) :|: TRUE 10.07/3.66 f1968_0_length_Return(EOS(STATIC_1968), java.lang.Object(ARRAY(matching1)), i364, i366) -> f1969_0_main_Store(EOS(STATIC_1969), java.lang.Object(ARRAY(3)), i364, i366) :|: TRUE && matching1 = 3 10.07/3.66 f1969_0_main_Store(EOS(STATIC_1969), java.lang.Object(ARRAY(matching1)), i364, i366) -> f1970_0_main_ConstantStackPush(EOS(STATIC_1970), java.lang.Object(ARRAY(3)), i364, i366) :|: TRUE && matching1 = 3 10.07/3.66 f1970_0_main_ConstantStackPush(EOS(STATIC_1970), java.lang.Object(ARRAY(matching1)), i364, i366) -> f1971_0_main_Store(EOS(STATIC_1971), java.lang.Object(ARRAY(3)), i364, i366, 0) :|: TRUE && matching1 = 3 10.07/3.66 f1971_0_main_Store(EOS(STATIC_1971), java.lang.Object(ARRAY(matching1)), i364, i366, matching2) -> f1972_0_main_Load(EOS(STATIC_1972), java.lang.Object(ARRAY(3)), i364, i366, 0) :|: TRUE && matching1 = 3 && matching2 = 0 10.07/3.66 f1972_0_main_Load(EOS(STATIC_1972), java.lang.Object(ARRAY(matching1)), i364, i366, matching2) -> f2098_0_main_Load(EOS(STATIC_2098), java.lang.Object(ARRAY(3)), i364, i366, 0) :|: TRUE && matching1 = 3 && matching2 = 0 10.07/3.66 f2098_0_main_Load(EOS(STATIC_2098), java.lang.Object(ARRAY(matching1)), i364, i372, i373) -> f2255_0_main_Load(EOS(STATIC_2255), java.lang.Object(ARRAY(3)), i364, i372, i373) :|: TRUE && matching1 = 3 10.07/3.66 f2255_0_main_Load(EOS(STATIC_2255), java.lang.Object(ARRAY(matching1)), i364, i387, i388) -> f2360_0_main_Load(EOS(STATIC_2360), java.lang.Object(ARRAY(3)), i364, i387, i388) :|: TRUE && matching1 = 3 10.07/3.66 f2360_0_main_Load(EOS(STATIC_2360), java.lang.Object(ARRAY(matching1)), i364, i413, i414) -> f2367_0_main_Load(EOS(STATIC_2367), java.lang.Object(ARRAY(3)), i364, i413, i414, i414) :|: TRUE && matching1 = 3 10.07/3.66 f2367_0_main_Load(EOS(STATIC_2367), java.lang.Object(ARRAY(matching1)), i364, i413, i414, i414) -> f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364, i413, i414, i414, i413) :|: TRUE && matching1 = 3 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(matching1)), i364, i413, i414, i414, i413) -> f2383_0_main_GE(EOS(STATIC_2383), java.lang.Object(ARRAY(3)), i364, i413, i414, i414, i413) :|: i414 >= i413 && matching1 = 3 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(matching1)), i364, i413, i414, i414, i413) -> f2384_0_main_GE(EOS(STATIC_2384), java.lang.Object(ARRAY(3)), i364, i413, i414, i414, i413) :|: i414 < i413 && matching1 = 3 10.07/3.66 f2383_0_main_GE(EOS(STATIC_2383), java.lang.Object(ARRAY(matching1)), i364, i413, i414, i414, i413) -> f2386_0_main_Inc(EOS(STATIC_2386), java.lang.Object(ARRAY(3)), i364) :|: i414 >= i413 && matching1 = 3 10.07/3.66 f2386_0_main_Inc(EOS(STATIC_2386), java.lang.Object(ARRAY(matching1)), i364) -> f2398_0_main_JMP(EOS(STATIC_2398), java.lang.Object(ARRAY(3)), i364 + 1) :|: TRUE && matching1 = 3 10.07/3.66 f2398_0_main_JMP(EOS(STATIC_2398), java.lang.Object(ARRAY(matching1)), i431) -> f2416_0_main_Load(EOS(STATIC_2416), java.lang.Object(ARRAY(3)), i431) :|: TRUE && matching1 = 3 10.07/3.66 f2416_0_main_Load(EOS(STATIC_2416), java.lang.Object(ARRAY(matching1)), i431) -> f1944_0_main_Load(EOS(STATIC_1944), java.lang.Object(ARRAY(3)), i431) :|: TRUE && matching1 = 3 10.07/3.66 f1944_0_main_Load(EOS(STATIC_1944), java.lang.Object(ARRAY(matching1)), i362) -> f1945_0_main_Load(EOS(STATIC_1945), java.lang.Object(ARRAY(3)), i362, i362) :|: TRUE && matching1 = 3 10.07/3.66 f2384_0_main_GE(EOS(STATIC_2384), java.lang.Object(ARRAY(matching1)), i364, i413, i414, i414, i413) -> f2393_0_main_Load(EOS(STATIC_2393), java.lang.Object(ARRAY(3)), i364, i413, i414) :|: i414 < i413 && matching1 = 3 10.07/3.66 f2393_0_main_Load(EOS(STATIC_2393), java.lang.Object(ARRAY(matching1)), i364, i413, i414) -> f2400_0_main_ConstantStackPush(EOS(STATIC_2400), java.lang.Object(ARRAY(3)), i364, i413, i414, java.lang.Object(ARRAY(3))) :|: TRUE && matching1 = 3 10.07/3.66 f2400_0_main_ConstantStackPush(EOS(STATIC_2400), java.lang.Object(ARRAY(matching1)), i364, i413, i414, java.lang.Object(ARRAY(matching2))) -> f2418_0_main_ArrayAccess(EOS(STATIC_2418), java.lang.Object(ARRAY(3)), i364, i413, i414, java.lang.Object(ARRAY(3)), 0) :|: TRUE && matching1 = 3 && matching2 = 3 10.07/3.66 f2418_0_main_ArrayAccess(EOS(STATIC_2418), java.lang.Object(ARRAY(matching1)), i364, i413, i414, java.lang.Object(ARRAY(matching2)), matching3) -> f2422_0_main_InvokeMethod(EOS(STATIC_2422), java.lang.Object(ARRAY(3)), i364, i413, i414, o359) :|: 0 < 3 && matching1 = 3 && matching2 = 3 && matching3 = 0 10.07/3.66 f2422_0_main_InvokeMethod(EOS(STATIC_2422), java.lang.Object(ARRAY(matching1)), i364, i413, i414, o359) -> f2425_0_bubble_Load(EOS(STATIC_2425), o359, o359) :|: i413 >= 1 && i414 < i413 && matching1 = 3 10.07/3.66 f2422_0_main_InvokeMethod(EOS(STATIC_2422), java.lang.Object(ARRAY(matching1)), i364, i413, i414, o359) -> f2425_1_bubble_Load(EOS(STATIC_2425), java.lang.Object(ARRAY(3)), i364, i413, i414, o359) :|: i413 >= 1 && i414 < i413 && matching1 = 3 10.07/3.66 f2425_0_bubble_Load(EOS(STATIC_2425), o359, o359) -> f3212_0_bubble_Load(EOS(STATIC_3212), o359, o359) :|: TRUE 10.07/3.66 f2678_0_bubble_Return(EOS(STATIC_2678), java.lang.Object(ARRAY(matching1)), i364, i413, i414) -> f2449_0_bubble_Return(EOS(STATIC_2449), java.lang.Object(ARRAY(3)), i364, i413, i414) :|: TRUE && matching1 = 3 10.07/3.66 f2449_0_bubble_Return(EOS(STATIC_2449), java.lang.Object(ARRAY(matching1)), i364, i413, i414) -> f2459_0_main_Inc(EOS(STATIC_2459), java.lang.Object(ARRAY(3)), i364, i413, i414) :|: TRUE && matching1 = 3 10.07/3.66 f2459_0_main_Inc(EOS(STATIC_2459), java.lang.Object(ARRAY(matching1)), i364, i413, i414) -> f2469_0_main_JMP(EOS(STATIC_2469), java.lang.Object(ARRAY(3)), i364, i413, i414 + 1) :|: TRUE && matching1 = 3 10.07/3.66 f2469_0_main_JMP(EOS(STATIC_2469), java.lang.Object(ARRAY(matching1)), i364, i413, i443) -> f2486_0_main_Load(EOS(STATIC_2486), java.lang.Object(ARRAY(3)), i364, i413, i443) :|: TRUE && matching1 = 3 10.07/3.66 f2486_0_main_Load(EOS(STATIC_2486), java.lang.Object(ARRAY(matching1)), i364, i413, i443) -> f2360_0_main_Load(EOS(STATIC_2360), java.lang.Object(ARRAY(3)), i364, i413, i443) :|: TRUE && matching1 = 3 10.07/3.66 f1966_1_length_ConstantStackPush(EOS(STATIC_1966), java.lang.Object(ARRAY(matching1)), i364, o285) -> f1968_0_length_Return(EOS(STATIC_1968), java.lang.Object(ARRAY(3)), i364, i366) :|: TRUE && matching1 = 3 10.07/3.66 f2425_1_bubble_Load(EOS(STATIC_2425), java.lang.Object(ARRAY(matching1)), i364, i413, i414, o359) -> f2678_0_bubble_Return(EOS(STATIC_2678), java.lang.Object(ARRAY(3)), i364, i413, i414) :|: TRUE && matching1 = 3 10.07/3.66 Combined rules. Obtained 4 IRulesP rules: 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0, i413:0, i414:0, i414:0, i413:0) -> f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0, i413:0, i414:0 + 1, i414:0 + 1, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0, i413:0, i414:0, i414:0, i413:0) -> f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0 + 1, i366:0, 0, 0, i366:0) :|: i364:0 < 2 && i414:0 >= i413:0 10.07/3.66 Removed following non-SCC rules: 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0, i413:0, i414:0, i414:0, i413:0) -> f3212_0_bubble_Load(EOS(STATIC_3212), o359:0, o359:0) :|: i414:0 < i413:0 && i413:0 > 0 10.07/3.66 f2372_0_main_GE(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i364:0, i413:0, i414:0, i414:0, i413:0) -> f3160_0_length_ConstantStackPush(EOS(STATIC_3160), o272:0, o272:0) :|: i364:0 < 2 && i414:0 >= i413:0 10.07/3.66 Filtered constant ground arguments: 10.07/3.66 f2372_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f2372_0_main_GE(x3, x4, x5, x6, x7) 10.07/3.66 EOS(x1) -> EOS 10.07/3.66 java.lang.Object(x1) -> java.lang.Object 10.07/3.66 ARRAY(x1) -> ARRAY 10.07/3.66 Filtered duplicate arguments: 10.07/3.66 f2372_0_main_GE(x1, x2, x3, x4, x5) -> f2372_0_main_GE(x1, x4, x5) 10.07/3.66 Finished conversion. Obtained 2 rules.P rules: 10.07/3.66 f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0, i414:0 + 1, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 10.07/3.66 f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0 + 1, 0, i366:0) :|: i364:0 < 2 && i414:0 >= i413:0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (42) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0, i414:0 + 1, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 10.07/3.66 f2372_0_main_GE(x, x1, x2) -> f2372_0_main_GE(x + 1, 0, x3) :|: x < 2 && x1 >= x2 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (43) IRSFormatTransformerProof (EQUIVALENT) 10.07/3.66 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (44) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0, arith, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 && arith = i414:0 + 1 10.07/3.66 f2372_0_main_GE(x4, x5, x6) -> f2372_0_main_GE(x7, 0, x8) :|: x4 < 2 && x5 >= x6 && x7 = x4 + 1 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (45) IRSwTTerminationDigraphProof (EQUIVALENT) 10.07/3.66 Constructed termination digraph! 10.07/3.66 Nodes: 10.07/3.66 (1) f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0, arith, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 && arith = i414:0 + 1 10.07/3.66 (2) f2372_0_main_GE(x4, x5, x6) -> f2372_0_main_GE(x7, 0, x8) :|: x4 < 2 && x5 >= x6 && x7 = x4 + 1 10.07/3.66 10.07/3.66 Arcs: 10.07/3.66 (1) -> (1), (2) 10.07/3.66 (2) -> (1), (2) 10.07/3.66 10.07/3.66 This digraph is fully evaluated! 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (46) 10.07/3.66 Obligation: 10.07/3.66 10.07/3.66 Termination digraph: 10.07/3.66 Nodes: 10.07/3.66 (1) f2372_0_main_GE(i364:0, i414:0, i413:0) -> f2372_0_main_GE(i364:0, arith, i413:0) :|: i414:0 < i413:0 && i413:0 > 0 && arith = i414:0 + 1 10.07/3.66 (2) f2372_0_main_GE(x4, x5, x6) -> f2372_0_main_GE(x7, 0, x8) :|: x4 < 2 && x5 >= x6 && x7 = x4 + 1 10.07/3.66 10.07/3.66 Arcs: 10.07/3.66 (1) -> (1), (2) 10.07/3.66 (2) -> (1), (2) 10.07/3.66 10.07/3.66 This digraph is fully evaluated! 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (47) IntTRSCompressionProof (EQUIVALENT) 10.07/3.66 Compressed rules. 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (48) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f2372_0_main_GE(i364:0:0, i414:0:0, i413:0:0) -> f2372_0_main_GE(i364:0:0, i414:0:0 + 1, i413:0:0) :|: i414:0:0 < i413:0:0 && i413:0:0 > 0 10.07/3.66 f2372_0_main_GE(x4:0, x5:0, x6:0) -> f2372_0_main_GE(x4:0 + 1, 0, x8:0) :|: x4:0 < 2 && x6:0 <= x5:0 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (49) TempFilterProof (SOUND) 10.07/3.66 Used the following sort dictionary for filtering: 10.07/3.66 f2372_0_main_GE(VARIABLE, VARIABLE, VARIABLE) 10.07/3.66 Replaced non-predefined constructor symbols by 0. 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (50) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f2372_0_main_GE(i364:0:0, i414:0:0, i413:0:0) -> f2372_0_main_GE(i364:0:0, c, i413:0:0) :|: c = i414:0:0 + 1 && (i414:0:0 < i413:0:0 && i413:0:0 > 0) 10.07/3.66 f2372_0_main_GE(x4:0, x5:0, x6:0) -> f2372_0_main_GE(c1, c2, x8:0) :|: c2 = 0 && c1 = x4:0 + 1 && (x4:0 < 2 && x6:0 <= x5:0) 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (51) RankingReductionPairProof (EQUIVALENT) 10.07/3.66 Interpretation: 10.07/3.66 [ f2372_0_main_GE ] = -1*f2372_0_main_GE_1 + 1 10.07/3.66 10.07/3.66 The following rules are decreasing: 10.07/3.66 f2372_0_main_GE(x4:0, x5:0, x6:0) -> f2372_0_main_GE(c1, c2, x8:0) :|: c2 = 0 && c1 = x4:0 + 1 && (x4:0 < 2 && x6:0 <= x5:0) 10.07/3.66 10.07/3.66 The following rules are bounded: 10.07/3.66 f2372_0_main_GE(x4:0, x5:0, x6:0) -> f2372_0_main_GE(c1, c2, x8:0) :|: c2 = 0 && c1 = x4:0 + 1 && (x4:0 < 2 && x6:0 <= x5:0) 10.07/3.66 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (52) 10.07/3.66 Obligation: 10.07/3.66 Rules: 10.07/3.66 f2372_0_main_GE(i364:0:0, i414:0:0, i413:0:0) -> f2372_0_main_GE(i364:0:0, c, i413:0:0) :|: c = i414:0:0 + 1 && (i414:0:0 < i413:0:0 && i413:0:0 > 0) 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (53) RankingReductionPairProof (EQUIVALENT) 10.07/3.66 Interpretation: 10.07/3.66 [ f2372_0_main_GE ] = -1*f2372_0_main_GE_2 + f2372_0_main_GE_3 10.07/3.66 10.07/3.66 The following rules are decreasing: 10.07/3.66 f2372_0_main_GE(i364:0:0, i414:0:0, i413:0:0) -> f2372_0_main_GE(i364:0:0, c, i413:0:0) :|: c = i414:0:0 + 1 && (i414:0:0 < i413:0:0 && i413:0:0 > 0) 10.07/3.66 10.07/3.66 The following rules are bounded: 10.07/3.66 f2372_0_main_GE(i364:0:0, i414:0:0, i413:0:0) -> f2372_0_main_GE(i364:0:0, c, i413:0:0) :|: c = i414:0:0 + 1 && (i414:0:0 < i413:0:0 && i413:0:0 > 0) 10.07/3.66 10.07/3.66 10.07/3.66 ---------------------------------------- 10.07/3.66 10.07/3.66 (54) 10.07/3.66 YES 10.30/5.02 EOF