/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, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 278 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 56 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 69 ms] (13) AND (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) TempFilterProof [SOUND, 5 ms] (18) IntTRS (19) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (20) YES (21) IRSwT (22) IntTRSCompressionProof [EQUIVALENT, 0 ms] (23) IRSwT (24) TempFilterProof [SOUND, 7 ms] (25) IntTRS (26) RankingReductionPairProof [EQUIVALENT, 0 ms] (27) YES (28) JBCTerminationSCC (29) SCCToIRSProof [SOUND, 86 ms] (30) IRSwT (31) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (32) IRSwT (33) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IntTRSCompressionProof [EQUIVALENT, 2 ms] (36) IRSwT (37) TempFilterProof [SOUND, 35 ms] (38) IntTRS (39) RankingReductionPairProof [EQUIVALENT, 20 ms] (40) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: /** * This class represents a list. The function get(n) can be used to access * the n-th element. * @author Marc Brockschmidt */ public class CyclicList { /** * A reference to the next list element. */ private CyclicList next; public static void main(String[] args) { CyclicList list = CyclicList.create(args.length); list.get(args[0].length()); } /** * Create a new list element. * @param n a reference to the next element. */ public CyclicList(final CyclicList n) { this.next = n; } /** * Create a new cyclical list of a length l. * @param l some length * @return cyclical list of length max(1, l) */ public static CyclicList create(int x) { CyclicList last, current; last = current = new CyclicList(null); while (--x > 0) current = new CyclicList(current); return last.next = current; } public CyclicList get(int n) { CyclicList cur = this; while (--n > 0) { cur = cur.next; } return cur; } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: /** * This class represents a list. The function get(n) can be used to access * the n-th element. * @author Marc Brockschmidt */ public class CyclicList { /** * A reference to the next list element. */ private CyclicList next; public static void main(String[] args) { CyclicList list = CyclicList.create(args.length); list.get(args[0].length()); } /** * Create a new list element. * @param n a reference to the next element. */ public CyclicList(final CyclicList n) { this.next = n; } /** * Create a new cyclical list of a length l. * @param l some length * @return cyclical list of length max(1, l) */ public static CyclicList create(int x) { CyclicList last, current; last = current = new CyclicList(null); while (--x > 0) current = new CyclicList(current); return last.next = current; } public CyclicList get(int n) { CyclicList cur = this; while (--n > 0) { cur = cur.next; } return cur; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: CyclicList.main([Ljava/lang/String;)V: Graph of 131 nodes with 2 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: CyclicList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *CyclicList: [next] *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: f1026_0_get_Load(EOS(STATIC_1026), i156, o29[CyclicList.next]o29) -> f1029_0_get_LE(EOS(STATIC_1029), i156, i156, o29[CyclicList.next]o29) :|: TRUE f1029_0_get_LE(EOS(STATIC_1029), i158, i158, o29[CyclicList.next]o29) -> f1034_0_get_LE(EOS(STATIC_1034), i158, i158, o29[CyclicList.next]o29) :|: TRUE f1034_0_get_LE(EOS(STATIC_1034), i158, i158, o29[CyclicList.next]o29) -> f1039_0_get_Load(EOS(STATIC_1039), i158, o29[CyclicList.next]o29) :|: i158 > 0 f1039_0_get_Load(EOS(STATIC_1039), i158, o29[CyclicList.next]o29) -> f1050_0_get_FieldAccess(EOS(STATIC_1050), i158, o29[CyclicList.next]o29) :|: TRUE f1050_0_get_FieldAccess(EOS(STATIC_1050), i158, o91[CyclicList.next]o91) -> f1071_0_get_FieldAccess(EOS(STATIC_1071), i158, o92[CyclicList.next]o91) :|: o92[CyclicList.next]o91 < o91[CyclicList.next]o91 && o91[CyclicList.next]o91 >= 0 f1071_0_get_FieldAccess(EOS(STATIC_1071), i158, o92[CyclicList.next]o91) -> f1091_0_get_FieldAccess(EOS(STATIC_1091), i158, o92[CyclicList.next]o91) :|: o92[CyclicList.next]o91 > 0 f1071_0_get_FieldAccess(EOS(STATIC_1071), i158, o92[CyclicList.next]o97) -> f1092_0_get_FieldAccess(EOS(STATIC_1092), i158) :|: TRUE f1091_0_get_FieldAccess(EOS(STATIC_1091), i158, o92[CyclicList.next]o91) -> f1103_0_get_Store(EOS(STATIC_1103), i158, o92[CyclicList.next]o92) :|: o92[CyclicList.next]o92 > o92[CyclicList.next]o91 && o92[CyclicList.next]o91 >= 0 f1103_0_get_Store(EOS(STATIC_1103), i158, o92[CyclicList.next]o92) -> f1115_0_get_JMP(EOS(STATIC_1115), i158, o92[CyclicList.next]o92) :|: TRUE f1115_0_get_JMP(EOS(STATIC_1115), i158, o92[CyclicList.next]o92) -> f1136_0_get_Inc(EOS(STATIC_1136), i158, o92[CyclicList.next]o92) :|: TRUE f1136_0_get_Inc(EOS(STATIC_1136), i158, o92[CyclicList.next]o92) -> f1025_0_get_Inc(EOS(STATIC_1025), i158, o92[CyclicList.next]o92) :|: TRUE f1025_0_get_Inc(EOS(STATIC_1025), i152, o29[CyclicList.next]o29) -> f1026_0_get_Load(EOS(STATIC_1026), i152 + -1, o29[CyclicList.next]o29) :|: TRUE f1092_0_get_FieldAccess(EOS(STATIC_1092), i158) -> f1108_0_get_Store(EOS(STATIC_1108), i158) :|: TRUE f1108_0_get_Store(EOS(STATIC_1108), i158) -> f1118_0_get_JMP(EOS(STATIC_1118), i158) :|: TRUE f1118_0_get_JMP(EOS(STATIC_1118), i158) -> f1147_0_get_Inc(EOS(STATIC_1147), i158) :|: TRUE f1147_0_get_Inc(EOS(STATIC_1147), i158) -> f1025_0_get_Inc(EOS(STATIC_1025), i158, o97[CyclicList.next]o97) :|: o97[CyclicList.next]o97 = 1 Combined rules. Obtained 2 IRulesP rules: f1026_0_get_Load(EOS(STATIC_1026), i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(EOS(STATIC_1026), i156:0 - 1, o92[CyclicList.next]o92:0) :|: o92[CyclicList.next]o91:0 > 0 && i156:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 f1026_0_get_Load(EOS(STATIC_1026), i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(EOS(STATIC_1026), i156:0 - 1, 1) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o29[CyclicList.next]o29:0 > -1 Filtered constant ground arguments: f1026_0_get_Load(x1, x2, x3) -> f1026_0_get_Load(x2, x3) EOS(x1) -> EOS Finished conversion. Obtained 2 rules.P rules: f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(i156:0 - 1, o92[CyclicList.next]o92:0) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(i156:0 - 1, 1) :|: o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o29[CyclicList.next]o29:0 > -1 && i156:0 > 0 ---------------------------------------- (9) Obligation: Rules: f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(i156:0 - 1, o92[CyclicList.next]o92:0) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 f1026_0_get_Load(x, x1) -> f1026_0_get_Load(x - 1, 1) :|: x2 < x1 && x1 > -1 && x > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(arith, o92[CyclicList.next]o92:0) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 && arith = i156:0 - 1 f1026_0_get_Load(x3, x4) -> f1026_0_get_Load(x5, 1) :|: x6 < x4 && x4 > -1 && x3 > 0 && x5 = x3 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(arith, o92[CyclicList.next]o92:0) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 && arith = i156:0 - 1 (2) f1026_0_get_Load(x3, x4) -> f1026_0_get_Load(x5, 1) :|: x6 < x4 && x4 > -1 && x3 > 0 && x5 = x3 - 1 Arcs: (1) -> (1), (2) (2) -> (2) This digraph is fully evaluated! ---------------------------------------- (13) Complex Obligation (AND) ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f1026_0_get_Load(i156:0, o29[CyclicList.next]o29:0) -> f1026_0_get_Load(arith, o92[CyclicList.next]o92:0) :|: i156:0 > 0 && o92[CyclicList.next]o91:0 > 0 && o29[CyclicList.next]o29:0 > -1 && o92[CyclicList.next]o91:0 < o29[CyclicList.next]o29:0 && o92[CyclicList.next]o92:0 > o92[CyclicList.next]o91:0 && arith = i156:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f1026_0_get_Load(i156:0:0, o29[CyclicList.next]o29:0:0) -> f1026_0_get_Load(i156:0:0 - 1, o92[CyclicList.next]o92:0:0) :|: o92[CyclicList.next]o91:0:0 < o29[CyclicList.next]o29:0:0 && o92[CyclicList.next]o92:0:0 > o92[CyclicList.next]o91:0:0 && o29[CyclicList.next]o29:0:0 > -1 && o92[CyclicList.next]o91:0:0 > 0 && i156:0:0 > 0 ---------------------------------------- (17) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1026_0_get_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (18) Obligation: Rules: f1026_0_get_Load(i156:0:0, o29[CyclicList.next]o29:0:0) -> f1026_0_get_Load(c, o92[CyclicList.next]o92:0:0) :|: c = i156:0:0 - 1 && (o92[CyclicList.next]o91:0:0 < o29[CyclicList.next]o29:0:0 && o92[CyclicList.next]o92:0:0 > o92[CyclicList.next]o91:0:0 && o29[CyclicList.next]o29:0:0 > -1 && o92[CyclicList.next]o91:0:0 > 0 && i156:0:0 > 0) ---------------------------------------- (19) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1026_0_get_Load(x, x1)] = x The following rules are decreasing: f1026_0_get_Load(i156:0:0, o29[CyclicList.next]o29:0:0) -> f1026_0_get_Load(c, o92[CyclicList.next]o92:0:0) :|: c = i156:0:0 - 1 && (o92[CyclicList.next]o91:0:0 < o29[CyclicList.next]o29:0:0 && o92[CyclicList.next]o92:0:0 > o92[CyclicList.next]o91:0:0 && o29[CyclicList.next]o29:0:0 > -1 && o92[CyclicList.next]o91:0:0 > 0 && i156:0:0 > 0) The following rules are bounded: f1026_0_get_Load(i156:0:0, o29[CyclicList.next]o29:0:0) -> f1026_0_get_Load(c, o92[CyclicList.next]o92:0:0) :|: c = i156:0:0 - 1 && (o92[CyclicList.next]o91:0:0 < o29[CyclicList.next]o29:0:0 && o92[CyclicList.next]o92:0:0 > o92[CyclicList.next]o91:0:0 && o29[CyclicList.next]o29:0:0 > -1 && o92[CyclicList.next]o91:0:0 > 0 && i156:0:0 > 0) ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: Termination digraph: Nodes: (1) f1026_0_get_Load(x3, x4) -> f1026_0_get_Load(x5, 1) :|: x6 < x4 && x4 > -1 && x3 > 0 && x5 = x3 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (22) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (23) Obligation: Rules: f1026_0_get_Load(x3:0, x4:0) -> f1026_0_get_Load(x3:0 - 1, 1) :|: x6:0 < x4:0 && x4:0 > -1 && x3:0 > 0 ---------------------------------------- (24) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1026_0_get_Load(INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (25) Obligation: Rules: f1026_0_get_Load(x3:0, x4:0) -> f1026_0_get_Load(c, c1) :|: c1 = 1 && c = x3:0 - 1 && (x6:0 < x4:0 && x4:0 > -1 && x3:0 > 0) ---------------------------------------- (26) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1026_0_get_Load ] = f1026_0_get_Load_1 The following rules are decreasing: f1026_0_get_Load(x3:0, x4:0) -> f1026_0_get_Load(c, c1) :|: c1 = 1 && c = x3:0 - 1 && (x6:0 < x4:0 && x4:0 > -1 && x3:0 > 0) The following rules are bounded: f1026_0_get_Load(x3:0, x4:0) -> f1026_0_get_Load(c, c1) :|: c1 = 1 && c = x3:0 - 1 && (x6:0 < x4:0 && x4:0 > -1 && x3:0 > 0) ---------------------------------------- (27) YES ---------------------------------------- (28) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: CyclicList.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: ---------------------------------------- (29) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f596_0_create_Load(EOS(STATIC_596), i85, o29[CyclicList.next]o28) -> f599_0_create_LE(EOS(STATIC_599), i85, i85, o29[CyclicList.next]o28) :|: TRUE f599_0_create_LE(EOS(STATIC_599), i93, i93, o29[CyclicList.next]o28) -> f604_0_create_LE(EOS(STATIC_604), i93, i93, o29[CyclicList.next]o28) :|: TRUE f604_0_create_LE(EOS(STATIC_604), i93, i93, o29[CyclicList.next]o28) -> f610_0_create_New(EOS(STATIC_610), i93, o29[CyclicList.next]o28) :|: i93 > 0 f610_0_create_New(EOS(STATIC_610), i93, o29[CyclicList.next]o28) -> f615_0_create_Duplicate(EOS(STATIC_615), i93, o29[CyclicList.next]o28) :|: TRUE f615_0_create_Duplicate(EOS(STATIC_615), i93, o29[CyclicList.next]o28) -> f620_0_create_Load(EOS(STATIC_620), i93, o29[CyclicList.next]o28) :|: TRUE f620_0_create_Load(EOS(STATIC_620), i93, o29[CyclicList.next]o28) -> f663_0_create_InvokeMethod(EOS(STATIC_663), i93, o29[CyclicList.next]o28) :|: TRUE f663_0_create_InvokeMethod(EOS(STATIC_663), i93, o29[CyclicList.next]o28) -> f705_0__init__Load(EOS(STATIC_705), i93, o29[CyclicList.next]o28) :|: TRUE f705_0__init__Load(EOS(STATIC_705), i93, o29[CyclicList.next]o28) -> f736_0__init__InvokeMethod(EOS(STATIC_736), i93, o29[CyclicList.next]o28) :|: TRUE f736_0__init__InvokeMethod(EOS(STATIC_736), i93, o29[CyclicList.next]o28) -> f746_0__init__Load(EOS(STATIC_746), i93, o29[CyclicList.next]o28) :|: TRUE f746_0__init__Load(EOS(STATIC_746), i93, o29[CyclicList.next]o28) -> f754_0__init__Load(EOS(STATIC_754), i93, o29[CyclicList.next]o28) :|: TRUE f754_0__init__Load(EOS(STATIC_754), i93, o29[CyclicList.next]o28) -> f763_0__init__FieldAccess(EOS(STATIC_763), i93, o29[CyclicList.next]o28) :|: TRUE f763_0__init__FieldAccess(EOS(STATIC_763), i93, o29[CyclicList.next]o28) -> f780_0__init__Return(EOS(STATIC_780), i93, o29[CyclicList.next]o28) :|: TRUE f780_0__init__Return(EOS(STATIC_780), i93, o29[CyclicList.next]o28) -> f787_0_create_Store(EOS(STATIC_787), i93, o29[CyclicList.next]o28) :|: TRUE f787_0_create_Store(EOS(STATIC_787), i93, o29[CyclicList.next]o28) -> f795_0_create_JMP(EOS(STATIC_795), i93, o29[CyclicList.next]o28) :|: TRUE f795_0_create_JMP(EOS(STATIC_795), i93, o29[CyclicList.next]o28) -> f963_0_create_Inc(EOS(STATIC_963), i93, o29[CyclicList.next]o28) :|: TRUE f963_0_create_Inc(EOS(STATIC_963), i93, o29[CyclicList.next]o28) -> f559_0_create_Inc(EOS(STATIC_559), i93, o59[CyclicList.next]o28) :|: TRUE f559_0_create_Inc(EOS(STATIC_559), i22, o29[CyclicList.next]o28) -> f596_0_create_Load(EOS(STATIC_596), i22 + -1, o29[CyclicList.next]o28) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f596_0_create_Load(EOS(STATIC_596), i85:0, o29[CyclicList.next]o28:0) -> f596_0_create_Load(EOS(STATIC_596), i85:0 - 1, o59[CyclicList.next]o28:0) :|: i85:0 > 0 Filtered constant ground arguments: f596_0_create_Load(x1, x2, x3) -> f596_0_create_Load(x2, x3) EOS(x1) -> EOS Filtered unneeded arguments: f596_0_create_Load(x1, x2) -> f596_0_create_Load(x1) Finished conversion. Obtained 1 rules.P rules: f596_0_create_Load(i85:0) -> f596_0_create_Load(i85:0 - 1) :|: i85:0 > 0 ---------------------------------------- (30) Obligation: Rules: f596_0_create_Load(i85:0) -> f596_0_create_Load(i85:0 - 1) :|: i85:0 > 0 ---------------------------------------- (31) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (32) Obligation: Rules: f596_0_create_Load(i85:0) -> f596_0_create_Load(arith) :|: i85:0 > 0 && arith = i85:0 - 1 ---------------------------------------- (33) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f596_0_create_Load(i85:0) -> f596_0_create_Load(arith) :|: i85:0 > 0 && arith = i85:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (34) Obligation: Termination digraph: Nodes: (1) f596_0_create_Load(i85:0) -> f596_0_create_Load(arith) :|: i85:0 > 0 && arith = i85:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (35) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (36) Obligation: Rules: f596_0_create_Load(i85:0:0) -> f596_0_create_Load(i85:0:0 - 1) :|: i85:0:0 > 0 ---------------------------------------- (37) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f596_0_create_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (38) Obligation: Rules: f596_0_create_Load(i85:0:0) -> f596_0_create_Load(c) :|: c = i85:0:0 - 1 && i85:0:0 > 0 ---------------------------------------- (39) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f596_0_create_Load ] = f596_0_create_Load_1 The following rules are decreasing: f596_0_create_Load(i85:0:0) -> f596_0_create_Load(c) :|: c = i85:0:0 - 1 && i85:0:0 > 0 The following rules are bounded: f596_0_create_Load(i85:0:0) -> f596_0_create_Load(c) :|: c = i85:0:0 - 1 && i85:0:0 > 0 ---------------------------------------- (40) YES