/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 680 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 233 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 11 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 274 ms] (17) IRSwT (18) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (19) TRUE (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 62 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 23 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 33 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (32) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: package IntListDupRec; public class IntListDupRec { public static void main(String[] args) { Random.args = args; List l = List.createList(Random.random()); l.dupList(); } } class List { boolean dupped; List next; public List(boolean d, List n) { this.dupped = d; this.next = n; } public void dupList() { if (this.next == null) { new List(false, this); } else if (this.dupped == false) { List next = this.next; this.next = new List(true, next); } this.next.dupList(); this.dupped = false; } public static List createList(int l) { if (l < 0) { return null; } else { return new List(false, createList(l - 1)); } } } class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: package IntListDupRec; public class IntListDupRec { public static void main(String[] args) { Random.args = args; List l = List.createList(Random.random()); l.dupList(); } } class List { boolean dupped; List next; public List(boolean d, List n) { this.dupped = d; this.next = n; } public void dupList() { if (this.next == null) { new List(false, this); } else if (this.dupped == false) { List next = this.next; this.next = new List(true, next); } this.next.dupList(); this.dupped = false; } public static List createList(int l) { if (l < 0) { return null; } else { return new List(false, createList(l - 1)); } } } class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: IntListDupRec.IntListDupRec.main([Ljava/lang/String;)V: Graph of 119 nodes with 0 SCCs. IntListDupRec.List.createList(I)LIntListDupRec/List;: Graph of 45 nodes with 0 SCCs. IntListDupRec.List.dupList()V: Graph of 98 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: IntListDupRec.List.dupList()V SCC calls the following helper methods: IntListDupRec.List.dupList()V Performed SCC analyses: *Used field analysis yielded the following read fields: *IntListDupRec.List: [next, dupped] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 47 IRulesP rules: f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398, java.lang.Object(IntListDupRec.List(EOC, o405, i180)), java.lang.Object(IntListDupRec.List(EOC, o405, i180))) -> f2454_0_dupList_FieldAccess(EOS(STATIC_2454), o398, java.lang.Object(IntListDupRec.List(EOC, o405, i180)), java.lang.Object(IntListDupRec.List(EOC, o405, i180))) :|: TRUE f2454_0_dupList_FieldAccess(EOS(STATIC_2454), o398, java.lang.Object(IntListDupRec.List(EOC, o405, i180)), java.lang.Object(IntListDupRec.List(EOC, o405, i180))) -> f2457_0_dupList_NONNULL(EOS(STATIC_2457), o398, java.lang.Object(IntListDupRec.List(EOC, o405, i180)), o405) :|: TRUE f2457_0_dupList_NONNULL(EOS(STATIC_2457), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), java.lang.Object(o406sub)) -> f2460_0_dupList_NONNULL(EOS(STATIC_2460), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), java.lang.Object(o406sub)) :|: TRUE f2460_0_dupList_NONNULL(EOS(STATIC_2460), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), java.lang.Object(o406sub)) -> f2463_0_dupList_Load(EOS(STATIC_2463), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180))) :|: TRUE f2463_0_dupList_Load(EOS(STATIC_2463), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180))) -> f2465_0_dupList_FieldAccess(EOS(STATIC_2465), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180))) :|: TRUE f2465_0_dupList_FieldAccess(EOS(STATIC_2465), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180))) -> f2471_0_dupList_NE(EOS(STATIC_2471), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i180)), i180) :|: TRUE f2471_0_dupList_NE(EOS(STATIC_2471), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), i181) -> f2476_0_dupList_NE(EOS(STATIC_2476), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), i181) :|: TRUE f2471_0_dupList_NE(EOS(STATIC_2471), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2) -> f2477_0_dupList_NE(EOS(STATIC_2477), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), 0) :|: TRUE && matching1 = 0 && matching2 = 0 f2476_0_dupList_NE(EOS(STATIC_2476), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), i181) -> f2481_0_dupList_Load(EOS(STATIC_2481), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181))) :|: !(i181 = 0) f2481_0_dupList_Load(EOS(STATIC_2481), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181))) -> f2485_0_dupList_FieldAccess(EOS(STATIC_2485), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181))) :|: TRUE f2485_0_dupList_FieldAccess(EOS(STATIC_2485), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181))) -> f2490_0_dupList_InvokeMethod(EOS(STATIC_2490), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) :|: TRUE f2490_0_dupList_InvokeMethod(EOS(STATIC_2490), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) -> f2494_0_dupList_Load(EOS(STATIC_2494), java.lang.Object(o406sub), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) :|: i145 >= 1 f2490_0_dupList_InvokeMethod(EOS(STATIC_2490), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) -> f2494_1_dupList_Load(EOS(STATIC_2494), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) :|: i145 >= 1 f2494_0_dupList_Load(EOS(STATIC_2494), java.lang.Object(o406sub), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) -> f2505_0_dupList_Load(EOS(STATIC_2505), java.lang.Object(o406sub), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) :|: TRUE f2505_0_dupList_Load(EOS(STATIC_2505), java.lang.Object(o406sub), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub)) -> f2527_0_dupList_Load(EOS(STATIC_2527), java.lang.Object(o406sub), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), i181)), java.lang.Object(o406sub), o404[List.next]o406) :|: o404[List.next]o406 = 1 f2527_0_dupList_Load(EOS(STATIC_2527), java.lang.Object(o411sub), o415, o417, java.lang.Object(o411sub), o417[List.next]o411) -> f2535_0_dupList_Load(EOS(STATIC_2535), java.lang.Object(o411sub), java.lang.Object(o411sub)) :|: TRUE f2535_0_dupList_Load(EOS(STATIC_2535), java.lang.Object(o411sub), java.lang.Object(o411sub)) -> f2451_0_dupList_Load(EOS(STATIC_2451), java.lang.Object(o411sub), java.lang.Object(o411sub)) :|: TRUE f2451_0_dupList_Load(EOS(STATIC_2451), o398, java.lang.Object(o403sub)) -> f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398, java.lang.Object(o403sub), java.lang.Object(o403sub)) :|: TRUE f2477_0_dupList_NE(EOS(STATIC_2477), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2) -> f2483_0_dupList_Load(EOS(STATIC_2483), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f2483_0_dupList_Load(EOS(STATIC_2483), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1))) -> f2486_0_dupList_FieldAccess(EOS(STATIC_2486), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0))) :|: TRUE && matching1 = 0 f2486_0_dupList_FieldAccess(EOS(STATIC_2486), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2))) -> f2492_0_dupList_Store(EOS(STATIC_2492), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 f2492_0_dupList_Store(EOS(STATIC_2492), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub)) -> f2497_0_dupList_Load(EOS(STATIC_2497), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 f2497_0_dupList_Load(EOS(STATIC_2497), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub)) -> f2507_0_dupList_New(EOS(STATIC_2507), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0))) :|: TRUE && matching1 = 0 f2507_0_dupList_New(EOS(STATIC_2507), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2))) -> f2529_0_dupList_Duplicate(EOS(STATIC_2529), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f2529_0_dupList_Duplicate(EOS(STATIC_2529), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3))) -> f2531_0_dupList_ConstantStackPush(EOS(STATIC_2531), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f2531_0_dupList_ConstantStackPush(EOS(STATIC_2531), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4))) -> f2533_0_dupList_Load(EOS(STATIC_2533), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 f2533_0_dupList_Load(EOS(STATIC_2533), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5) -> f2711_0_dupList_InvokeMethod(EOS(STATIC_2711), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1, java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 f2711_0_dupList_InvokeMethod(EOS(STATIC_2711), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5, java.lang.Object(o406sub)) -> f2713_0__init__Load(EOS(STATIC_2713), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1, java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 f2713_0__init__Load(EOS(STATIC_2713), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5, java.lang.Object(o406sub)) -> f2728_0__init__InvokeMethod(EOS(STATIC_2728), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 f2728_0__init__InvokeMethod(EOS(STATIC_2728), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, matching6))) -> f2733_0__init__Load(EOS(STATIC_2733), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1, java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 && matching6 = 0 f2733_0__init__Load(EOS(STATIC_2733), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5, java.lang.Object(o406sub)) -> f2736_0__init__Load(EOS(STATIC_2736), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 f2736_0__init__Load(EOS(STATIC_2736), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), matching5, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, matching6))) -> f2742_0__init__FieldAccess(EOS(STATIC_2742), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, 0)), 1) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 1 && matching6 = 0 f2742_0__init__FieldAccess(EOS(STATIC_2742), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, matching5)), matching6) -> f2749_0__init__Load(EOS(STATIC_2749), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 1)), java.lang.Object(IntListDupRec.List(EOC, NULL, 1)), java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 && matching4 = 0 && matching5 = 0 && matching6 = 1 f2749_0__init__Load(EOS(STATIC_2749), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), java.lang.Object(o406sub)) -> f2753_0__init__Load(EOS(STATIC_2753), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 1)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, 1))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 1 && matching4 = 1 f2753_0__init__Load(EOS(STATIC_2753), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4))) -> f2758_0__init__FieldAccess(EOS(STATIC_2758), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, NULL, 1)), java.lang.Object(IntListDupRec.List(EOC, NULL, 1)), java.lang.Object(o406sub)) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 1 && matching4 = 1 f2758_0__init__FieldAccess(EOS(STATIC_2758), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching3)), java.lang.Object(IntListDupRec.List(EOC, NULL, matching4)), java.lang.Object(o406sub)) -> f2762_0__init__Return(EOS(STATIC_2762), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 1 && matching4 = 1 f2762_0__init__Return(EOS(STATIC_2762), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching3))) -> f2766_0_dupList_FieldAccess(EOS(STATIC_2766), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 1 f2766_0_dupList_FieldAccess(EOS(STATIC_2766), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching3))) -> f2784_0_dupList_Load(EOS(STATIC_2784), o398put, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0))) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 1 f2784_0_dupList_Load(EOS(STATIC_2784), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2))) -> f2790_0_dupList_FieldAccess(EOS(STATIC_2790), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0))) :|: TRUE && matching1 = 1 && matching2 = 0 f2790_0_dupList_FieldAccess(EOS(STATIC_2790), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching3)), matching4))) -> f2796_0_dupList_InvokeMethod(EOS(STATIC_2796), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: TRUE && matching1 = 1 && matching2 = 0 && matching3 = 1 && matching4 = 0 f2796_0_dupList_InvokeMethod(EOS(STATIC_2796), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching3))) -> f2800_0_dupList_Load(EOS(STATIC_2800), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), o398, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: i145 >= 1 && matching1 = 1 && matching2 = 0 && matching3 = 1 f2796_0_dupList_InvokeMethod(EOS(STATIC_2796), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), matching2)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching3))) -> f2800_1_dupList_Load(EOS(STATIC_2800), o398, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: i145 >= 1 && matching1 = 1 && matching2 = 0 && matching3 = 1 f2800_0_dupList_Load(EOS(STATIC_2800), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), o398, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), matching3)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching4))) -> f2802_0_dupList_Load(EOS(STATIC_2802), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), o398, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1))) :|: TRUE && matching1 = 1 && matching2 = 1 && matching3 = 0 && matching4 = 1 f2802_0_dupList_Load(EOS(STATIC_2802), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching1)), o398, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching2)), matching3)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), matching4))) -> f2830_0_dupList_Load(EOS(STATIC_2830), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), o398, java.lang.Object(o406sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub), 1)), o404[List.next]o418, o404[List.next]o406) :|: o404[List.next]o418 = 1 && o404[List.next]o406 = 2 && matching1 = 1 && matching2 = 1 && matching3 = 0 && matching4 = 1 f2830_0_dupList_Load(EOS(STATIC_2830), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching1)), o531, java.lang.Object(o527sub), o533, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching2)), o533[List.next]o526, o533[List.next]o527) -> f2834_0_dupList_Load(EOS(STATIC_2834), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1)), o531, o533, java.lang.Object(o527sub), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1)), o533[List.next]o526) :|: TRUE && matching1 = 1 && matching2 = 1 f2834_0_dupList_Load(EOS(STATIC_2834), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching1)), o531, o533, o534, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching2)), o533[List.next]o526) -> f2852_0_dupList_Load(EOS(STATIC_2852), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1))) :|: TRUE && matching1 = 1 && matching2 = 1 f2852_0_dupList_Load(EOS(STATIC_2852), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), matching2))) -> f2451_0_dupList_Load(EOS(STATIC_2451), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o527sub), 1))) :|: TRUE && matching1 = 1 && matching2 = 1 Combined rules. Obtained 6 IRulesP rules: f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(EOS(STATIC_2452), java.lang.Object(o406sub:0), java.lang.Object(o406sub:0), java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(EOS(STATIC_2452), java.lang.Object(o406sub:0), java.lang.Object(o406sub:0), java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 > 0 f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 0))) -> f2452_0_dupList_FieldAccess(EOS(STATIC_2452), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 1)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 1))) :|: i145:0 > 0 Removed following non-SCC rules: f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 0))) -> f2800_1_dupList_Load(EOS(STATIC_2800), o398put:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 1)), 0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), 1))) :|: i145:0 > 0 f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0))) -> f2494_1_dupList_Load(EOS(STATIC_2494), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 f2452_0_dupList_FieldAccess(EOS(STATIC_2452), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0))) -> f2494_1_dupList_Load(EOS(STATIC_2494), o398:0, java.lang.Object(IntListDupRec.List(EOC, java.lang.Object(o406sub:0), i180:0)), java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 > 0 Filtered constant ground arguments: f2452_0_dupList_FieldAccess(x1, x2, x3, x4) -> f2452_0_dupList_FieldAccess(x2, x3, x4) EOS(x1) -> EOS IntListDupRec.List(x1, x2, x3) -> IntListDupRec.List(x2, x3) Filtered duplicate arguments: f2452_0_dupList_FieldAccess(x1, x2, x3) -> f2452_0_dupList_FieldAccess(x1, x3) Filtered unneeded arguments: f2452_0_dupList_FieldAccess(x1, x2) -> f2452_0_dupList_FieldAccess(x2) Finished conversion. Obtained 3 rules.P rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 > 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), cons_0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), 1))) :|: TRUE && cons_0 = 0 ---------------------------------------- (9) Obligation: Rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x), x1))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x)) :|: x2 > 0 && x1 > 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), x4))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), 1))) :|: TRUE && x4 = 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x), x1))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x)) :|: x2 > 0 && x1 > 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), x4))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), 1))) :|: TRUE && x4 = 0 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 (2) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x), x1))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x)) :|: x2 > 0 && x1 > 0 (3) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), x4))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), 1))) :|: TRUE && x4 = 0 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (2) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0), i180:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0)) :|: i145:0 > 0 && i180:0 < 0 (2) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x), x1))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x)) :|: x2 > 0 && x1 > 0 (3) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), x4))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3), 1))) :|: TRUE && x4 = 0 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (2) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x:0), x1:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x:0)) :|: x2:0 > 0 && x1:0 > 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(o406sub:0:0), i180:0:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(o406sub:0:0)) :|: i145:0:0 > 0 && i180:0:0 < 0 f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), cons_0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), 1))) :|: TRUE && cons_0 = 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2452_0_dupList_FieldAccess(VARIABLE) java.lang.Object(VARIABLE) IntListDupRec.List(VARIABLE, VARIABLE) Removed predefined arithmetic.The following proof was generated: # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given IRSwT could not be shown: - IRSwT - IRSwTToQDPProof Rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x:0), x1:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x:0)) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) Removed the integers and created a QDP-Problem. - IRSwT - IRSwTToQDPProof - QDP - MRRProof Q DP problem: The TRS P consists of the following rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x:0), x1:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x:0)) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x:0), x1:0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(x:0)) Used ordering: Knuth-Bendix order [KBO] with precedence:predef > IntListDupRec.List_2 > java.lang.Object_1 > f2452_0_dupList_FieldAccess_1 and weight map: predef=1 f2452_0_dupList_FieldAccess_1=1 java.lang.Object_1=1 IntListDupRec.List_2=0 The variable weight is 1 - IRSwT - IRSwTToQDPProof - QDP - MRRProof - QDP Q DP problem: The TRS P consists of the following rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), predef))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (17) Obligation: Rules: f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), cons_0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), 1))) :|: TRUE && cons_0 = 0 ---------------------------------------- (18) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), cons_0))) -> f2452_0_dupList_FieldAccess(java.lang.Object(IntListDupRec.List(java.lang.Object(x3:0), 1))) :|: TRUE && cons_0 = 0 No arcs! This digraph is fully evaluated! ---------------------------------------- (19) TRUE ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: IntListDupRec.List.createList(I)LIntListDupRec/List; SCC calls the following helper methods: IntListDupRec.List.createList(I)LIntListDupRec/List; Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 13 IRulesP rules: f301_0_createList_GE(EOS(STATIC_301), i31, i31, i31) -> f305_0_createList_GE(EOS(STATIC_305), i31, i31, i31) :|: TRUE f305_0_createList_GE(EOS(STATIC_305), i31, i31, i31) -> f310_0_createList_New(EOS(STATIC_310), i31, i31) :|: i31 >= 0 f310_0_createList_New(EOS(STATIC_310), i31, i31) -> f315_0_createList_Duplicate(EOS(STATIC_315), i31, i31) :|: TRUE f315_0_createList_Duplicate(EOS(STATIC_315), i31, i31) -> f319_0_createList_ConstantStackPush(EOS(STATIC_319), i31, i31) :|: TRUE f319_0_createList_ConstantStackPush(EOS(STATIC_319), i31, i31) -> f361_0_createList_Load(EOS(STATIC_361), i31, i31) :|: TRUE f361_0_createList_Load(EOS(STATIC_361), i31, i31) -> f365_0_createList_ConstantStackPush(EOS(STATIC_365), i31, i31) :|: TRUE f365_0_createList_ConstantStackPush(EOS(STATIC_365), i31, i31) -> f367_0_createList_IntArithmetic(EOS(STATIC_367), i31, i31, 1) :|: TRUE f367_0_createList_IntArithmetic(EOS(STATIC_367), i31, i31, matching1) -> f370_0_createList_InvokeMethod(EOS(STATIC_370), i31, i31 - 1) :|: i31 >= 0 && matching1 = 1 f370_0_createList_InvokeMethod(EOS(STATIC_370), i31, i37) -> f372_0_createList_Load(EOS(STATIC_372), i37, i37) :|: i10 >= 1 && i37 < i31 f370_0_createList_InvokeMethod(EOS(STATIC_370), i31, i37) -> f372_1_createList_Load(EOS(STATIC_372), i31, i37) :|: i10 >= 1 && i37 < i31 f372_0_createList_Load(EOS(STATIC_372), i37, i37) -> f375_0_createList_Load(EOS(STATIC_375), i37, i37) :|: TRUE f375_0_createList_Load(EOS(STATIC_375), i37, i37) -> f296_0_createList_Load(EOS(STATIC_296), i37, i37) :|: TRUE f296_0_createList_Load(EOS(STATIC_296), i29, i29) -> f301_0_createList_GE(EOS(STATIC_301), i29, i29, i29) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f301_0_createList_GE(EOS(STATIC_301), i31:0, i31:0, i31:0) -> f301_0_createList_GE(EOS(STATIC_301), i31:0 - 1, i31:0 - 1, i31:0 - 1) :|: i31:0 > -1 && i10:0 > 0 && i31:0 - 1 < i31:0 Removed following non-SCC rules: f301_0_createList_GE(EOS(STATIC_301), i31:0, i31:0, i31:0) -> f372_1_createList_Load(EOS(STATIC_372), i31:0, i31:0 - 1) :|: i31:0 > -1 && i10:0 > 0 && i31:0 - 1 < i31:0 Filtered constant ground arguments: f301_0_createList_GE(x1, x2, x3, x4) -> f301_0_createList_GE(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f301_0_createList_GE(x1, x2, x3) -> f301_0_createList_GE(x3) Finished conversion. Obtained 1 rules.P rules: f301_0_createList_GE(i31:0) -> f301_0_createList_GE(i31:0 - 1) :|: i10:0 > 0 && i31:0 - 1 < i31:0 && i31:0 > -1 ---------------------------------------- (22) Obligation: Rules: f301_0_createList_GE(i31:0) -> f301_0_createList_GE(i31:0 - 1) :|: i10:0 > 0 && i31:0 - 1 < i31:0 && i31:0 > -1 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f301_0_createList_GE(i31:0) -> f301_0_createList_GE(arith) :|: i10:0 > 0 && i31:0 - 1 < i31:0 && i31:0 > -1 && arith = i31:0 - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f301_0_createList_GE(i31:0) -> f301_0_createList_GE(arith) :|: i10:0 > 0 && i31:0 - 1 < i31:0 && i31:0 > -1 && arith = i31:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f301_0_createList_GE(i31:0) -> f301_0_createList_GE(arith) :|: i10:0 > 0 && i31:0 - 1 < i31:0 && i31:0 > -1 && arith = i31:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f301_0_createList_GE(i31:0:0) -> f301_0_createList_GE(i31:0:0 - 1) :|: i10:0:0 > 0 && i31:0:0 - 1 < i31:0:0 && i31:0:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f301_0_createList_GE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f301_0_createList_GE(i31:0:0) -> f301_0_createList_GE(c) :|: c = i31:0:0 - 1 && (i10:0:0 > 0 && i31:0:0 - 1 < i31:0:0 && i31:0:0 > -1) ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f301_0_createList_GE(x)] = x The following rules are decreasing: f301_0_createList_GE(i31:0:0) -> f301_0_createList_GE(c) :|: c = i31:0:0 - 1 && (i10:0:0 > 0 && i31:0:0 - 1 < i31:0:0 && i31:0:0 > -1) The following rules are bounded: f301_0_createList_GE(i31:0:0) -> f301_0_createList_GE(c) :|: c = i31:0:0 - 1 && (i10:0:0 > 0 && i31:0:0 - 1 < i31:0:0 && i31:0:0 > -1) ---------------------------------------- (32) YES