/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 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, 482 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 125 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (13) IRSwT (14) TempFilterProof [SOUND, 25 ms] (15) IRSwT (16) IRSwTToQDPProof [SOUND, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 0 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) FilterProof [EQUIVALENT, 0 ms] (30) IntTRS (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] (32) IntTRS (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 0 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 4 ms] (45) IntTRS (46) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (47) YES (48) JBCTerminationSCC (49) SCCToIRSProof [SOUND, 0 ms] (50) IRSwT (51) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (52) IRSwT (53) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (54) IRSwT (55) IntTRSCompressionProof [EQUIVALENT, 0 ms] (56) IRSwT (57) TempFilterProof [SOUND, 37 ms] (58) IntTRS (59) RankingReductionPairProof [EQUIVALENT, 0 ms] (60) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class ListReversePanhandleList { public static void main(String... args) { List x = List.createPanhandleList(args[0].length(), args[1].length()); List.reverse(x); } } class List { List n; public List(List next) { this.n = next; } public static void reverse(List x) { List y = null; while (x != null) { List z = x; x = x.n; z.n = y; y = z; } } public static List createList(int l, List end) { while (--l > 0) { end = new List(end); } return end; } public static List createCycle(int l) { List last = new List(null); List first = createList(l - 1, last); last.n = first; return first; } public static List createPanhandleList(int pl, int cl) { return createList(pl, createCycle(cl)); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class ListReversePanhandleList { public static void main(String... args) { List x = List.createPanhandleList(args[0].length(), args[1].length()); List.reverse(x); } } class List { List n; public List(List next) { this.n = next; } public static void reverse(List x) { List y = null; while (x != null) { List z = x; x = x.n; z.n = y; y = z; } } public static List createList(int l, List end) { while (--l > 0) { end = new List(end); } return end; } public static List createCycle(int l) { List last = new List(null); List first = createList(l - 1, last); last.n = first; return first; } public static List createPanhandleList(int pl, int cl) { return createList(pl, createCycle(cl)); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: ListReversePanhandleList.main([Ljava/lang/String;)V: Graph of 364 nodes with 4 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 4 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListReversePanhandleList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [n] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 16 IRulesP rules: f2028_0_reverse_NULL(EOS(STATIC_2028), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(o1116sub)) -> f2035_0_reverse_Load(EOS(STATIC_2035), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955))) :|: TRUE f2035_0_reverse_Load(EOS(STATIC_2035), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955))) -> f2062_0_reverse_Store(EOS(STATIC_2062), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(o1116sub)) :|: TRUE f2062_0_reverse_Store(EOS(STATIC_2062), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) -> f2070_0_reverse_Store(EOS(STATIC_2070), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) :|: TRUE f2070_0_reverse_Store(EOS(STATIC_2070), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) -> f2077_0_reverse_Load(EOS(STATIC_2077), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) :|: TRUE f2077_0_reverse_Load(EOS(STATIC_2077), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) -> f2079_0_reverse_FieldAccess(EOS(STATIC_2079), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198))) :|: TRUE f2079_0_reverse_FieldAccess(EOS(STATIC_2079), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198))) -> f2088_0_reverse_Store(EOS(STATIC_2088), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), o1198) :|: TRUE f2088_0_reverse_Store(EOS(STATIC_2088), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), o1198) -> f2111_0_reverse_Load(EOS(STATIC_2111), o1198, java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) :|: TRUE f2111_0_reverse_Load(EOS(STATIC_2111), o1198, java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198))) -> f2134_0_reverse_Load(EOS(STATIC_2134), o1198, java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198))) :|: TRUE f2134_0_reverse_Load(EOS(STATIC_2134), o1198, java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198))) -> f2155_0_reverse_FieldAccess(EOS(STATIC_2155), o1198, java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955))) :|: TRUE f2155_0_reverse_FieldAccess(EOS(STATIC_2155), o1198, java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1198)), java.lang.Object(List(EOC, o1027867727955))) -> f2190_0_reverse_Load(EOS(STATIC_2190), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1027put1735492459))))) :|: TRUE f2190_0_reverse_Load(EOS(STATIC_2190), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) -> f2224_0_reverse_Store(EOS(STATIC_2224), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) :|: TRUE f2224_0_reverse_Store(EOS(STATIC_2224), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) -> f2239_0_reverse_JMP(EOS(STATIC_2239), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) :|: TRUE f2239_0_reverse_JMP(EOS(STATIC_2239), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) -> f2317_0_reverse_Load(EOS(STATIC_2317), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) :|: TRUE f2317_0_reverse_Load(EOS(STATIC_2317), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) -> f1971_0_reverse_Load(EOS(STATIC_1971), o1198, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o10271735492459))))) :|: TRUE f1971_0_reverse_Load(EOS(STATIC_1971), o1025, java.lang.Object(List(EOC, o1027867727955))) -> f2017_0_reverse_NULL(EOS(STATIC_2017), o1025, java.lang.Object(List(EOC, o1027867727955)), o1025) :|: TRUE f2017_0_reverse_NULL(EOS(STATIC_2017), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(o1116sub)) -> f2028_0_reverse_NULL(EOS(STATIC_2028), java.lang.Object(o1116sub), java.lang.Object(List(EOC, o1027867727955)), java.lang.Object(o1116sub)) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2028_0_reverse_NULL(EOS(STATIC_2028), java.lang.Object(List(EOC, java.lang.Object(o1116sub:0))), java.lang.Object(List(EOC, o1027867727955:0)), java.lang.Object(List(EOC, java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(EOS(STATIC_2028), java.lang.Object(o1116sub:0), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE Filtered constant ground arguments: f2028_0_reverse_NULL(x1, x2, x3, x4) -> f2028_0_reverse_NULL(x2, x3, x4) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate arguments: f2028_0_reverse_NULL(x1, x2, x3) -> f2028_0_reverse_NULL(x2, x3) Finished conversion. Obtained 1 rules.P rules: f2028_0_reverse_NULL(java.lang.Object(List(o1027867727955:0)), java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(List(o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE ---------------------------------------- (9) Obligation: Rules: f2028_0_reverse_NULL(java.lang.Object(List(o1027867727955:0)), java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(List(o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f2028_0_reverse_NULL(java.lang.Object(List(o1027867727955:0)), java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(List(o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2028_0_reverse_NULL(java.lang.Object(List(o1027867727955:0)), java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(List(o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2028_0_reverse_NULL(java.lang.Object(List(o1027867727955:0)), java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(List(o1027put1735492459:0)))), java.lang.Object(o1116sub:0)) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2028_0_reverse_NULL(VARIABLE, VARIABLE) java.lang.Object(VARIABLE) List(VARIABLE) Removed predefined arithmetic. ---------------------------------------- (15) Obligation: Rules: f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(o1116sub:0)) :|: TRUE ---------------------------------------- (16) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(o1116sub:0)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *f2028_0_reverse_NULL(java.lang.Object(List(java.lang.Object(o1116sub:0)))) -> f2028_0_reverse_NULL(java.lang.Object(o1116sub:0)) The graph contains the following edges 1 > 1 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListReversePanhandleList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [n] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 16 IRulesP rules: f1778_0_reverse_FieldAccess(EOS(STATIC_1778), o677[List.n]o677, o794[List.n]o677) -> f1798_0_reverse_FieldAccess(EOS(STATIC_1798), o677[List.n]o677, o795[List.n]o677) :|: o795[List.n]o677 < o794[List.n]o677 && o794[List.n]o677 >= 0 f1798_0_reverse_FieldAccess(EOS(STATIC_1798), o677[List.n]o677, o795[List.n]o677) -> f1801_0_reverse_Store(EOS(STATIC_1801), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1801_0_reverse_Store(EOS(STATIC_1801), o677[List.n]o677, o795[List.n]o677) -> f1884_0_reverse_Load(EOS(STATIC_1884), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1884_0_reverse_Load(EOS(STATIC_1884), o677[List.n]o677, o795[List.n]o677) -> f1888_0_reverse_Load(EOS(STATIC_1888), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1888_0_reverse_Load(EOS(STATIC_1888), o677[List.n]o677, o795[List.n]o677) -> f1892_0_reverse_FieldAccess(EOS(STATIC_1892), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1892_0_reverse_FieldAccess(EOS(STATIC_1892), o677[List.n]o677, o795[List.n]o677) -> f1896_0_reverse_Load(EOS(STATIC_1896), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1896_0_reverse_Load(EOS(STATIC_1896), o677[List.n]o677, o795[List.n]o677) -> f1917_0_reverse_Store(EOS(STATIC_1917), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1917_0_reverse_Store(EOS(STATIC_1917), o677[List.n]o677, o795[List.n]o677) -> f1935_0_reverse_JMP(EOS(STATIC_1935), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1935_0_reverse_JMP(EOS(STATIC_1935), o677[List.n]o677, o795[List.n]o677) -> f1998_0_reverse_Load(EOS(STATIC_1998), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1998_0_reverse_Load(EOS(STATIC_1998), o677[List.n]o677, o795[List.n]o677) -> f1692_0_reverse_Load(EOS(STATIC_1692), o677[List.n]o677, o795[List.n]o677) :|: TRUE f1692_0_reverse_Load(EOS(STATIC_1692), o677[List.n]o677, o676[List.n]o677) -> f1725_0_reverse_NULL(EOS(STATIC_1725), o677[List.n]o677, o676[List.n]o677) :|: TRUE f1725_0_reverse_NULL(EOS(STATIC_1725), o677[List.n]o677, o676[List.n]o677) -> f1736_0_reverse_Load(EOS(STATIC_1736), o677[List.n]o677, o676[List.n]o677) :|: TRUE f1736_0_reverse_Load(EOS(STATIC_1736), o677[List.n]o677, o676[List.n]o677) -> f1743_0_reverse_Store(EOS(STATIC_1743), o677[List.n]o677, o676[List.n]o677) :|: TRUE f1743_0_reverse_Store(EOS(STATIC_1743), o677[List.n]o677, o676[List.n]o677) -> f1752_0_reverse_Load(EOS(STATIC_1752), o677[List.n]o677, o676[List.n]o677) :|: TRUE f1752_0_reverse_Load(EOS(STATIC_1752), o677[List.n]o677, o676[List.n]o677) -> f1754_0_reverse_FieldAccess(EOS(STATIC_1754), o677[List.n]o677, o676[List.n]o677) :|: TRUE f1754_0_reverse_FieldAccess(EOS(STATIC_1754), o677[List.n]o677, o676[List.n]o677) -> f1778_0_reverse_FieldAccess(EOS(STATIC_1778), o677[List.n]o677, o676[List.n]o677) :|: o677[List.n]o677 > 0 && o676[List.n]o677 > 0 Combined rules. Obtained 1 IRulesP rules: f1778_0_reverse_FieldAccess(EOS(STATIC_1778), o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(EOS(STATIC_1778), o677[List.n]o677:0, o795[List.n]o677:0) :|: o794[List.n]o677:0 > -1 && o795[List.n]o677:0 < o794[List.n]o677:0 && o677[List.n]o677:0 > 0 && o795[List.n]o677:0 > 0 Filtered constant ground arguments: f1778_0_reverse_FieldAccess(x1, x2, x3) -> f1778_0_reverse_FieldAccess(x2, x3) EOS(x1) -> EOS Finished conversion. Obtained 1 rules.P rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o795[List.n]o677:0) :|: o795[List.n]o677:0 < o794[List.n]o677:0 && o794[List.n]o677:0 > -1 && o795[List.n]o677:0 > 0 && o677[List.n]o677:0 > 0 ---------------------------------------- (22) Obligation: Rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o795[List.n]o677:0) :|: o795[List.n]o677:0 < o794[List.n]o677:0 && o794[List.n]o677:0 > -1 && o795[List.n]o677:0 > 0 && o677[List.n]o677:0 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o795[List.n]o677:0) :|: o795[List.n]o677:0 < o794[List.n]o677:0 && o794[List.n]o677:0 > -1 && o795[List.n]o677:0 > 0 && o677[List.n]o677:0 > 0 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o795[List.n]o677:0) :|: o795[List.n]o677:0 < o794[List.n]o677:0 && o794[List.n]o677:0 > -1 && o795[List.n]o677:0 > 0 && o677[List.n]o677:0 > 0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o794[List.n]o677:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0, o795[List.n]o677:0) :|: o795[List.n]o677:0 < o794[List.n]o677:0 && o794[List.n]o677:0 > -1 && o795[List.n]o677:0 > 0 && o677[List.n]o677:0 > 0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0, o794[List.n]o677:0:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0, o795[List.n]o677:0:0) :|: o795[List.n]o677:0:0 > 0 && o677[List.n]o677:0:0 > 0 && o794[List.n]o677:0:0 > -1 && o795[List.n]o677:0:0 < o794[List.n]o677:0:0 ---------------------------------------- (29) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f1778_0_reverse_FieldAccess(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0, o794[List.n]o677:0:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0, o795[List.n]o677:0:0) :|: o795[List.n]o677:0:0 > 0 && o677[List.n]o677:0:0 > 0 && o794[List.n]o677:0:0 > -1 && o795[List.n]o677:0:0 < o794[List.n]o677:0:0 ---------------------------------------- (31) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (32) Obligation: Rules: f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o794[List.n]o677:0:0:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o795[List.n]o677:0:0:0) :|: o794[List.n]o677:0:0:0 > -1 && o795[List.n]o677:0:0:0 < o794[List.n]o677:0:0:0 && o677[List.n]o677:0:0:0 > 0 && o795[List.n]o677:0:0:0 > 0 ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1778_0_reverse_FieldAccess(x, x1)] = x1 The following rules are decreasing: f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o794[List.n]o677:0:0:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o795[List.n]o677:0:0:0) :|: o794[List.n]o677:0:0:0 > -1 && o795[List.n]o677:0:0:0 < o794[List.n]o677:0:0:0 && o677[List.n]o677:0:0:0 > 0 && o795[List.n]o677:0:0:0 > 0 The following rules are bounded: f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o794[List.n]o677:0:0:0) -> f1778_0_reverse_FieldAccess(o677[List.n]o677:0:0:0, o795[List.n]o677:0:0:0) :|: o794[List.n]o677:0:0:0 > -1 && o795[List.n]o677:0:0:0 < o794[List.n]o677:0:0:0 && o677[List.n]o677:0:0:0 > 0 && o795[List.n]o677:0:0:0 > 0 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListReversePanhandleList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f715_0_createList_Load(EOS(STATIC_715), i84) -> f747_0_createList_LE(EOS(STATIC_747), i84, i84) :|: TRUE f747_0_createList_LE(EOS(STATIC_747), i106, i106) -> f791_0_createList_LE(EOS(STATIC_791), i106, i106) :|: TRUE f791_0_createList_LE(EOS(STATIC_791), i106, i106) -> f795_0_createList_New(EOS(STATIC_795), i106) :|: i106 > 0 f795_0_createList_New(EOS(STATIC_795), i106) -> f799_0_createList_Duplicate(EOS(STATIC_799), i106) :|: TRUE f799_0_createList_Duplicate(EOS(STATIC_799), i106) -> f803_0_createList_Load(EOS(STATIC_803), i106) :|: TRUE f803_0_createList_Load(EOS(STATIC_803), i106) -> f807_0_createList_InvokeMethod(EOS(STATIC_807), i106) :|: TRUE f807_0_createList_InvokeMethod(EOS(STATIC_807), i106) -> f817_0__init__Load(EOS(STATIC_817), i106) :|: TRUE f817_0__init__Load(EOS(STATIC_817), i106) -> f835_0__init__InvokeMethod(EOS(STATIC_835), i106) :|: TRUE f835_0__init__InvokeMethod(EOS(STATIC_835), i106) -> f846_0__init__Load(EOS(STATIC_846), i106) :|: TRUE f846_0__init__Load(EOS(STATIC_846), i106) -> f857_0__init__Load(EOS(STATIC_857), i106) :|: TRUE f857_0__init__Load(EOS(STATIC_857), i106) -> f869_0__init__FieldAccess(EOS(STATIC_869), i106) :|: TRUE f869_0__init__FieldAccess(EOS(STATIC_869), i106) -> f891_0__init__Return(EOS(STATIC_891), i106) :|: TRUE f891_0__init__Return(EOS(STATIC_891), i106) -> f909_0_createList_Store(EOS(STATIC_909), i106) :|: TRUE f909_0_createList_Store(EOS(STATIC_909), i106) -> f923_0_createList_JMP(EOS(STATIC_923), i106) :|: TRUE f923_0_createList_JMP(EOS(STATIC_923), i106) -> f945_0_createList_Inc(EOS(STATIC_945), i106) :|: TRUE f945_0_createList_Inc(EOS(STATIC_945), i106) -> f709_0_createList_Inc(EOS(STATIC_709), i106) :|: TRUE f709_0_createList_Inc(EOS(STATIC_709), i13) -> f715_0_createList_Load(EOS(STATIC_715), i13 + -1) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f715_0_createList_Load(EOS(STATIC_715), i84:0) -> f715_0_createList_Load(EOS(STATIC_715), i84:0 - 1) :|: i84:0 > 0 Filtered constant ground arguments: f715_0_createList_Load(x1, x2) -> f715_0_createList_Load(x2) EOS(x1) -> EOS Finished conversion. Obtained 1 rules.P rules: f715_0_createList_Load(i84:0) -> f715_0_createList_Load(i84:0 - 1) :|: i84:0 > 0 ---------------------------------------- (37) Obligation: Rules: f715_0_createList_Load(i84:0) -> f715_0_createList_Load(i84:0 - 1) :|: i84:0 > 0 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f715_0_createList_Load(i84:0) -> f715_0_createList_Load(arith) :|: i84:0 > 0 && arith = i84:0 - 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f715_0_createList_Load(i84:0) -> f715_0_createList_Load(arith) :|: i84:0 > 0 && arith = i84:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f715_0_createList_Load(i84:0) -> f715_0_createList_Load(arith) :|: i84:0 > 0 && arith = i84:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f715_0_createList_Load(i84:0:0) -> f715_0_createList_Load(i84:0:0 - 1) :|: i84:0:0 > 0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f715_0_createList_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f715_0_createList_Load(i84:0:0) -> f715_0_createList_Load(c) :|: c = i84:0:0 - 1 && i84:0:0 > 0 ---------------------------------------- (46) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f715_0_createList_Load(x)] = x The following rules are decreasing: f715_0_createList_Load(i84:0:0) -> f715_0_createList_Load(c) :|: c = i84:0:0 - 1 && i84:0:0 > 0 The following rules are bounded: f715_0_createList_Load(i84:0:0) -> f715_0_createList_Load(c) :|: c = i84:0:0 - 1 && i84:0:0 > 0 ---------------------------------------- (47) YES ---------------------------------------- (48) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListReversePanhandleList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (49) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f602_0_createList_Load(EOS(STATIC_602), i81) -> f604_0_createList_LE(EOS(STATIC_604), i81, i81) :|: TRUE f604_0_createList_LE(EOS(STATIC_604), i83, i83) -> f609_0_createList_LE(EOS(STATIC_609), i83, i83) :|: TRUE f609_0_createList_LE(EOS(STATIC_609), i83, i83) -> f613_0_createList_New(EOS(STATIC_613), i83) :|: i83 > 0 f613_0_createList_New(EOS(STATIC_613), i83) -> f619_0_createList_Duplicate(EOS(STATIC_619), i83) :|: TRUE f619_0_createList_Duplicate(EOS(STATIC_619), i83) -> f623_0_createList_Load(EOS(STATIC_623), i83) :|: TRUE f623_0_createList_Load(EOS(STATIC_623), i83) -> f629_0_createList_InvokeMethod(EOS(STATIC_629), i83) :|: TRUE f629_0_createList_InvokeMethod(EOS(STATIC_629), i83) -> f632_0__init__Load(EOS(STATIC_632), i83) :|: TRUE f632_0__init__Load(EOS(STATIC_632), i83) -> f640_0__init__InvokeMethod(EOS(STATIC_640), i83) :|: TRUE f640_0__init__InvokeMethod(EOS(STATIC_640), i83) -> f654_0__init__Load(EOS(STATIC_654), i83) :|: TRUE f654_0__init__Load(EOS(STATIC_654), i83) -> f666_0__init__Load(EOS(STATIC_666), i83) :|: TRUE f666_0__init__Load(EOS(STATIC_666), i83) -> f671_0__init__FieldAccess(EOS(STATIC_671), i83) :|: TRUE f671_0__init__FieldAccess(EOS(STATIC_671), i83) -> f707_0__init__Return(EOS(STATIC_707), i83) :|: TRUE f707_0__init__Return(EOS(STATIC_707), i83) -> f713_0_createList_Store(EOS(STATIC_713), i83) :|: TRUE f713_0_createList_Store(EOS(STATIC_713), i83) -> f714_0_createList_JMP(EOS(STATIC_714), i83) :|: TRUE f714_0_createList_JMP(EOS(STATIC_714), i83) -> f746_0_createList_Inc(EOS(STATIC_746), i83) :|: TRUE f746_0_createList_Inc(EOS(STATIC_746), i83) -> f596_0_createList_Inc(EOS(STATIC_596), i83) :|: TRUE f596_0_createList_Inc(EOS(STATIC_596), i77) -> f602_0_createList_Load(EOS(STATIC_602), i77 + -1) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f602_0_createList_Load(EOS(STATIC_602), i81:0) -> f602_0_createList_Load(EOS(STATIC_602), i81:0 - 1) :|: i81:0 > 0 Filtered constant ground arguments: f602_0_createList_Load(x1, x2) -> f602_0_createList_Load(x2) EOS(x1) -> EOS Finished conversion. Obtained 1 rules.P rules: f602_0_createList_Load(i81:0) -> f602_0_createList_Load(i81:0 - 1) :|: i81:0 > 0 ---------------------------------------- (50) Obligation: Rules: f602_0_createList_Load(i81:0) -> f602_0_createList_Load(i81:0 - 1) :|: i81:0 > 0 ---------------------------------------- (51) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (52) Obligation: Rules: f602_0_createList_Load(i81:0) -> f602_0_createList_Load(arith) :|: i81:0 > 0 && arith = i81:0 - 1 ---------------------------------------- (53) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f602_0_createList_Load(i81:0) -> f602_0_createList_Load(arith) :|: i81:0 > 0 && arith = i81:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (54) Obligation: Termination digraph: Nodes: (1) f602_0_createList_Load(i81:0) -> f602_0_createList_Load(arith) :|: i81:0 > 0 && arith = i81:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (55) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (56) Obligation: Rules: f602_0_createList_Load(i81:0:0) -> f602_0_createList_Load(i81:0:0 - 1) :|: i81:0:0 > 0 ---------------------------------------- (57) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f602_0_createList_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (58) Obligation: Rules: f602_0_createList_Load(i81:0:0) -> f602_0_createList_Load(c) :|: c = i81:0:0 - 1 && i81:0:0 > 0 ---------------------------------------- (59) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f602_0_createList_Load ] = f602_0_createList_Load_1 The following rules are decreasing: f602_0_createList_Load(i81:0:0) -> f602_0_createList_Load(c) :|: c = i81:0:0 - 1 && i81:0:0 > 0 The following rules are bounded: f602_0_createList_Load(i81:0:0) -> f602_0_createList_Load(c) :|: c = i81:0:0 - 1 && i81:0:0 > 0 ---------------------------------------- (60) YES