6.93/2.76 YES 6.93/2.79 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 6.93/2.79 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.93/2.79 6.93/2.79 6.93/2.79 termination of the given Bare JBC problem could be proven: 6.93/2.79 6.93/2.79 (0) Bare JBC problem 6.93/2.79 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 6.93/2.79 (2) JBC problem 6.93/2.79 (3) JBCToGraph [EQUIVALENT, 349 ms] 6.93/2.79 (4) JBCTerminationGraph 6.93/2.79 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 6.93/2.79 (6) AND 6.93/2.79 (7) JBCTerminationSCC 6.93/2.79 (8) SCCToQDPProof [SOUND, 127 ms] 6.93/2.79 (9) QDP 6.93/2.79 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 6.93/2.79 (11) YES 6.93/2.79 (12) JBCTerminationSCC 6.93/2.79 (13) SCCToIRSProof [SOUND, 96 ms] 6.93/2.79 (14) IRSwT 6.93/2.79 (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 6.93/2.79 (16) IRSwT 6.93/2.79 (17) IRSwTTerminationDigraphProof [EQUIVALENT, 29 ms] 6.93/2.79 (18) IRSwT 6.93/2.79 (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] 6.93/2.79 (20) IRSwT 6.93/2.79 (21) TempFilterProof [SOUND, 18 ms] 6.93/2.79 (22) IntTRS 6.93/2.79 (23) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 6.93/2.79 (24) YES 6.93/2.79 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (0) 6.93/2.79 Obligation: 6.93/2.79 need to prove termination of the following program: 6.93/2.79 public class List1 { 6.93/2.79 List1 pred, next; 6.93/2.79 6.93/2.79 List1(List1 pred) { 6.93/2.79 if (pred != null) { 6.93/2.79 pred.next = this; 6.93/2.79 } 6.93/2.79 this.pred = pred; 6.93/2.79 } 6.93/2.79 6.93/2.79 static int length(List1 l) { 6.93/2.79 int r = 1; 6.93/2.79 while (null != (l = l.next)) 6.93/2.79 r++; 6.93/2.79 return r; 6.93/2.79 } 6.93/2.79 6.93/2.79 public static void main(String[] args) { 6.93/2.79 //Create doubly-linked list: 6.93/2.79 int length = args.length; 6.93/2.79 List1 cur = new List1(null); 6.93/2.79 List1 first = cur; 6.93/2.79 while (length-- > 0) { 6.93/2.79 cur = new List1(cur); 6.93/2.79 } 6.93/2.79 6.93/2.79 length(first); 6.93/2.79 } 6.93/2.79 } 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (1) BareJBCToJBCProof (EQUIVALENT) 6.93/2.79 initialized classpath 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (2) 6.93/2.79 Obligation: 6.93/2.79 need to prove termination of the following program: 6.93/2.79 public class List1 { 6.93/2.79 List1 pred, next; 6.93/2.79 6.93/2.79 List1(List1 pred) { 6.93/2.79 if (pred != null) { 6.93/2.79 pred.next = this; 6.93/2.79 } 6.93/2.79 this.pred = pred; 6.93/2.79 } 6.93/2.79 6.93/2.79 static int length(List1 l) { 6.93/2.79 int r = 1; 6.93/2.79 while (null != (l = l.next)) 6.93/2.79 r++; 6.93/2.79 return r; 6.93/2.79 } 6.93/2.79 6.93/2.79 public static void main(String[] args) { 6.93/2.79 //Create doubly-linked list: 6.93/2.79 int length = args.length; 6.93/2.79 List1 cur = new List1(null); 6.93/2.79 List1 first = cur; 6.93/2.79 while (length-- > 0) { 6.93/2.79 cur = new List1(cur); 6.93/2.79 } 6.93/2.79 6.93/2.79 length(first); 6.93/2.79 } 6.93/2.79 } 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (3) JBCToGraph (EQUIVALENT) 6.93/2.79 Constructed TerminationGraph. 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (4) 6.93/2.79 Obligation: 6.93/2.79 Termination Graph based on JBC Program: 6.93/2.79 List1.main([Ljava/lang/String;)V: Graph of 79 nodes with 2 SCCs. 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (5) TerminationGraphToSCCProof (SOUND) 6.93/2.79 Splitted TerminationGraph to 2 SCCss. 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (6) 6.93/2.79 Complex Obligation (AND) 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (7) 6.93/2.79 Obligation: 6.93/2.79 SCC of termination graph based on JBC Program. 6.93/2.79 SCC contains nodes from the following methods: List1.main([Ljava/lang/String;)V 6.93/2.79 SCC calls the following helper methods: 6.93/2.79 Performed SCC analyses: 6.93/2.79 *Used field analysis yielded the following read fields: 6.93/2.79 *List1: [next] 6.93/2.79 *Marker field analysis yielded the following relations that could be markers: 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (8) SCCToQDPProof (SOUND) 6.93/2.79 Transformed TerminationGraph SCC to QDP. Log: 6.93/2.79 Generated 11 rules for P and 0 rules for R.P rules: 6.93/2.79 f1254_0_length_Load(EOS(STATIC_1254), java.lang.Object(o184sub)) -> f1257_0_length_FieldAccess(EOS(STATIC_1257), java.lang.Object(o184sub)) :|: TRUE 6.93/2.79 f1257_0_length_FieldAccess(EOS(STATIC_1257), java.lang.Object(List1(EOC, o189))) -> f1259_0_length_FieldAccess(EOS(STATIC_1259), java.lang.Object(List1(EOC, o189))) :|: TRUE 6.93/2.79 f1259_0_length_FieldAccess(EOS(STATIC_1259), java.lang.Object(List1(EOC, o189))) -> f1260_0_length_Duplicate(EOS(STATIC_1260), o189) :|: TRUE 6.93/2.79 f1260_0_length_Duplicate(EOS(STATIC_1260), o189) -> f1261_0_length_Store(EOS(STATIC_1261), o189, o189) :|: TRUE 6.93/2.79 f1261_0_length_Store(EOS(STATIC_1261), o189, o189) -> f1262_0_length_EQ(EOS(STATIC_1262), o189, o189) :|: TRUE 6.93/2.79 f1262_0_length_EQ(EOS(STATIC_1262), java.lang.Object(o190sub), java.lang.Object(o190sub)) -> f1263_0_length_EQ(EOS(STATIC_1263), java.lang.Object(o190sub), java.lang.Object(o190sub)) :|: TRUE 6.93/2.79 f1263_0_length_EQ(EOS(STATIC_1263), java.lang.Object(o190sub), java.lang.Object(o190sub)) -> f1265_0_length_Inc(EOS(STATIC_1265), java.lang.Object(o190sub)) :|: TRUE 6.93/2.79 f1265_0_length_Inc(EOS(STATIC_1265), java.lang.Object(o190sub)) -> f1267_0_length_JMP(EOS(STATIC_1267), java.lang.Object(o190sub)) :|: TRUE 6.93/2.79 f1267_0_length_JMP(EOS(STATIC_1267), java.lang.Object(o190sub)) -> f1270_0_length_ConstantStackPush(EOS(STATIC_1270), java.lang.Object(o190sub)) :|: TRUE 6.93/2.79 f1270_0_length_ConstantStackPush(EOS(STATIC_1270), java.lang.Object(o190sub)) -> f1251_0_length_ConstantStackPush(EOS(STATIC_1251), java.lang.Object(o190sub)) :|: TRUE 6.93/2.79 f1251_0_length_ConstantStackPush(EOS(STATIC_1251), java.lang.Object(o184sub)) -> f1254_0_length_Load(EOS(STATIC_1254), java.lang.Object(o184sub)) :|: TRUE 6.93/2.79 R rules: 6.93/2.79 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 6.93/2.79 f1254_0_length_Load(EOS(STATIC_1254), java.lang.Object(List1(EOC, java.lang.Object(o190sub:0)))) -> f1254_0_length_Load(EOS(STATIC_1254), java.lang.Object(o190sub:0)) :|: TRUE 6.93/2.79 R rules: 6.93/2.79 Filtered ground terms: 6.93/2.79 f1254_0_length_Load(x1, x2) -> f1254_0_length_Load(x2) 6.93/2.79 EOS(x1) -> EOS 6.93/2.79 List1(x1, x2) -> List1(x2) 6.93/2.79 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 6.93/2.79 F1254_0_LENGTH_LOAD(java.lang.Object(List1(java.lang.Object(o190sub:0:0)))) -> F1254_0_LENGTH_LOAD(java.lang.Object(o190sub:0:0)) :|: TRUE 6.93/2.79 R rules: 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (9) 6.93/2.79 Obligation: 6.93/2.79 Q DP problem: 6.93/2.79 The TRS P consists of the following rules: 6.93/2.79 6.93/2.79 F1254_0_LENGTH_LOAD(java.lang.Object(List1(java.lang.Object(o190sub:0:0)))) -> F1254_0_LENGTH_LOAD(java.lang.Object(o190sub:0:0)) 6.93/2.79 6.93/2.79 R is empty. 6.93/2.79 Q is empty. 6.93/2.79 We have to consider all minimal (P,Q,R)-chains. 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (10) QDPSizeChangeProof (EQUIVALENT) 6.93/2.79 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. 6.93/2.79 6.93/2.79 From the DPs we obtained the following set of size-change graphs: 6.93/2.79 *F1254_0_LENGTH_LOAD(java.lang.Object(List1(java.lang.Object(o190sub:0:0)))) -> F1254_0_LENGTH_LOAD(java.lang.Object(o190sub:0:0)) 6.93/2.79 The graph contains the following edges 1 > 1 6.93/2.79 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (11) 6.93/2.79 YES 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (12) 6.93/2.79 Obligation: 6.93/2.79 SCC of termination graph based on JBC Program. 6.93/2.79 SCC contains nodes from the following methods: List1.main([Ljava/lang/String;)V 6.93/2.79 SCC calls the following helper methods: 6.93/2.79 Performed SCC analyses: 6.93/2.79 *Used field analysis yielded the following read fields: 6.93/2.79 6.93/2.79 *Marker field analysis yielded the following relations that could be markers: 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (13) SCCToIRSProof (SOUND) 6.93/2.79 Transformed FIGraph SCCs to intTRSs. Log: 6.93/2.79 Generated rules. Obtained 33 IRulesP rules: 6.93/2.79 f904_0_main_Inc(EOS(STATIC_904), i76, i76, o119[List1.next]o117) -> f908_0_main_LE(EOS(STATIC_908), i76 + -1, i76, o119[List1.next]o117) :|: TRUE 6.93/2.79 f908_0_main_LE(EOS(STATIC_908), i84, i87, o119[List1.next]o117) -> f915_0_main_LE(EOS(STATIC_915), i84, i87, o119[List1.next]o117) :|: TRUE 6.93/2.79 f915_0_main_LE(EOS(STATIC_915), i84, i87, o119[List1.next]o117) -> f921_0_main_New(EOS(STATIC_921), i84, o119[List1.next]o117) :|: i87 > 0 6.93/2.79 f921_0_main_New(EOS(STATIC_921), i84, o119[List1.next]o117) -> f926_0_main_Duplicate(EOS(STATIC_926), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f926_0_main_Duplicate(EOS(STATIC_926), i84, o119[List1.next]o117) -> f931_0_main_Load(EOS(STATIC_931), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f931_0_main_Load(EOS(STATIC_931), i84, o119[List1.next]o117) -> f934_0_main_InvokeMethod(EOS(STATIC_934), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f934_0_main_InvokeMethod(EOS(STATIC_934), i84, o119[List1.next]o117) -> f939_0__init__Load(EOS(STATIC_939), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f939_0__init__Load(EOS(STATIC_939), i84, o119[List1.next]o117) -> f948_0__init__InvokeMethod(EOS(STATIC_948), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f948_0__init__InvokeMethod(EOS(STATIC_948), i84, o119[List1.next]o117) -> f954_0__init__Load(EOS(STATIC_954), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f954_0__init__Load(EOS(STATIC_954), i84, o119[List1.next]o117) -> f962_0__init__NULL(EOS(STATIC_962), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f962_0__init__NULL(EOS(STATIC_962), i84, o119[List1.next]o117) -> f967_0__init__Load(EOS(STATIC_967), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f967_0__init__Load(EOS(STATIC_967), i84, o119[List1.next]o117) -> f972_0__init__Load(EOS(STATIC_972), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f972_0__init__Load(EOS(STATIC_972), i84, o119[List1.next]o117) -> f977_0__init__FieldAccess(EOS(STATIC_977), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f977_0__init__FieldAccess(EOS(STATIC_977), i84, o119[List1.next]o117) -> f996_0__init__FieldAccess(EOS(STATIC_996), i84, o119[List1.next]o117) :|: o119[List1.next]o117 > 0 6.93/2.79 f977_0__init__FieldAccess(EOS(STATIC_977), i84, o136[List1.next]o136) -> f997_0__init__FieldAccess(EOS(STATIC_997), i84) :|: TRUE 6.93/2.79 f996_0__init__FieldAccess(EOS(STATIC_996), i84, o119[List1.next]o117) -> f1000_0__init__Load(EOS(STATIC_1000), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1000_0__init__Load(EOS(STATIC_1000), i84, o119[List1.next]o117) -> f1006_0__init__Load(EOS(STATIC_1006), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1006_0__init__Load(EOS(STATIC_1006), i84, o119[List1.next]o117) -> f1020_0__init__FieldAccess(EOS(STATIC_1020), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1020_0__init__FieldAccess(EOS(STATIC_1020), i84, o119[List1.next]o117) -> f1023_0__init__Return(EOS(STATIC_1023), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1023_0__init__Return(EOS(STATIC_1023), i84, o119[List1.next]o117) -> f1026_0_main_Store(EOS(STATIC_1026), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1026_0_main_Store(EOS(STATIC_1026), i84, o119[List1.next]o117) -> f1030_0_main_JMP(EOS(STATIC_1030), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1030_0_main_JMP(EOS(STATIC_1030), i84, o119[List1.next]o117) -> f1033_0_main_Load(EOS(STATIC_1033), i84, o119[List1.next]o117) :|: TRUE 6.93/2.79 f1033_0_main_Load(EOS(STATIC_1033), i84, o119[List1.next]o117) -> f900_0_main_Load(EOS(STATIC_900), i84, o119[List1.next]o124) :|: TRUE 6.93/2.79 f900_0_main_Load(EOS(STATIC_900), i76, o119[List1.next]o117) -> f904_0_main_Inc(EOS(STATIC_904), i76, i76, o119[List1.next]o117) :|: TRUE 6.93/2.79 f997_0__init__FieldAccess(EOS(STATIC_997), i84) -> f1001_0__init__FieldAccess(EOS(STATIC_1001), i84) :|: TRUE 6.93/2.79 f1001_0__init__FieldAccess(EOS(STATIC_1001), i84) -> f1014_0__init__Load(EOS(STATIC_1014), i84) :|: TRUE 6.93/2.79 f1014_0__init__Load(EOS(STATIC_1014), i84) -> f1021_0__init__Load(EOS(STATIC_1021), i84) :|: TRUE 6.93/2.79 f1021_0__init__Load(EOS(STATIC_1021), i84) -> f1024_0__init__FieldAccess(EOS(STATIC_1024), i84) :|: TRUE 6.93/2.79 f1024_0__init__FieldAccess(EOS(STATIC_1024), i84) -> f1028_0__init__Return(EOS(STATIC_1028), i84) :|: TRUE 6.93/2.79 f1028_0__init__Return(EOS(STATIC_1028), i84) -> f1031_0_main_Store(EOS(STATIC_1031), i84) :|: TRUE 6.93/2.79 f1031_0_main_Store(EOS(STATIC_1031), i84) -> f1034_0_main_JMP(EOS(STATIC_1034), i84) :|: TRUE 6.93/2.79 f1034_0_main_JMP(EOS(STATIC_1034), i84) -> f1174_0_main_Load(EOS(STATIC_1174), i84) :|: TRUE 6.93/2.79 f1174_0_main_Load(EOS(STATIC_1174), i84) -> f900_0_main_Load(EOS(STATIC_900), i84, o139[List1.next]o124) :|: o139[List1.next]o124 = 1 6.93/2.79 Combined rules. Obtained 2 IRulesP rules: 6.93/2.79 f904_0_main_Inc(EOS(STATIC_904), i76:0, i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(EOS(STATIC_904), i76:0 - 1, i76:0 - 1, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 6.93/2.79 f904_0_main_Inc(EOS(STATIC_904), i76:0, i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(EOS(STATIC_904), i76:0 - 1, i76:0 - 1, 1) :|: i76:0 > 0 6.93/2.79 Filtered constant ground arguments: 6.93/2.79 f904_0_main_Inc(x1, x2, x3, x4) -> f904_0_main_Inc(x2, x3, x4) 6.93/2.79 EOS(x1) -> EOS 6.93/2.79 Filtered duplicate arguments: 6.93/2.79 f904_0_main_Inc(x1, x2, x3) -> f904_0_main_Inc(x2, x3) 6.93/2.79 Finished conversion. Obtained 2 rules.P rules: 6.93/2.79 f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(i76:0 - 1, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 6.93/2.79 f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(i76:0 - 1, 1) :|: i76:0 > 0 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (14) 6.93/2.79 Obligation: 6.93/2.79 Rules: 6.93/2.79 f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(i76:0 - 1, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 6.93/2.79 f904_0_main_Inc(x, x1) -> f904_0_main_Inc(x - 1, 1) :|: x > 0 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (15) IRSFormatTransformerProof (EQUIVALENT) 6.93/2.79 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (16) 6.93/2.79 Obligation: 6.93/2.79 Rules: 6.93/2.79 f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(arith, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 && arith = i76:0 - 1 6.93/2.79 f904_0_main_Inc(x2, x3) -> f904_0_main_Inc(x4, 1) :|: x2 > 0 && x4 = x2 - 1 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (17) IRSwTTerminationDigraphProof (EQUIVALENT) 6.93/2.79 Constructed termination digraph! 6.93/2.79 Nodes: 6.93/2.79 (1) f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(arith, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 && arith = i76:0 - 1 6.93/2.79 (2) f904_0_main_Inc(x2, x3) -> f904_0_main_Inc(x4, 1) :|: x2 > 0 && x4 = x2 - 1 6.93/2.79 6.93/2.79 Arcs: 6.93/2.79 (1) -> (1), (2) 6.93/2.79 (2) -> (1), (2) 6.93/2.79 6.93/2.79 This digraph is fully evaluated! 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (18) 6.93/2.79 Obligation: 6.93/2.79 6.93/2.79 Termination digraph: 6.93/2.79 Nodes: 6.93/2.79 (1) f904_0_main_Inc(i76:0, o119[List1.next]o117:0) -> f904_0_main_Inc(arith, o119[List1.next]o124:0) :|: o119[List1.next]o117:0 > 0 && i76:0 > 0 && arith = i76:0 - 1 6.93/2.79 (2) f904_0_main_Inc(x2, x3) -> f904_0_main_Inc(x4, 1) :|: x2 > 0 && x4 = x2 - 1 6.93/2.79 6.93/2.79 Arcs: 6.93/2.79 (1) -> (1), (2) 6.93/2.79 (2) -> (1), (2) 6.93/2.79 6.93/2.79 This digraph is fully evaluated! 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (19) IntTRSCompressionProof (EQUIVALENT) 6.93/2.79 Compressed rules. 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (20) 6.93/2.79 Obligation: 6.93/2.79 Rules: 6.93/2.79 f904_0_main_Inc(i76:0:0, o119[List1.next]o117:0:0) -> f904_0_main_Inc(i76:0:0 - 1, o119[List1.next]o124:0:0) :|: o119[List1.next]o117:0:0 > 0 && i76:0:0 > 0 6.93/2.79 f904_0_main_Inc(x2:0, x3:0) -> f904_0_main_Inc(x2:0 - 1, 1) :|: x2:0 > 0 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (21) TempFilterProof (SOUND) 6.93/2.79 Used the following sort dictionary for filtering: 6.93/2.79 f904_0_main_Inc(INTEGER, VARIABLE) 6.93/2.79 Replaced non-predefined constructor symbols by 0. 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (22) 6.93/2.79 Obligation: 6.93/2.79 Rules: 6.93/2.79 f904_0_main_Inc(i76:0:0, o119[List1.next]o117:0:0) -> f904_0_main_Inc(c, o119[List1.next]o124:0:0) :|: c = i76:0:0 - 1 && (o119[List1.next]o117:0:0 > 0 && i76:0:0 > 0) 6.93/2.79 f904_0_main_Inc(x2:0, x3:0) -> f904_0_main_Inc(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 0 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (23) PolynomialOrderProcessor (EQUIVALENT) 6.93/2.79 Found the following polynomial interpretation: 6.93/2.79 [f904_0_main_Inc(x, x1)] = x 6.93/2.79 6.93/2.79 The following rules are decreasing: 6.93/2.79 f904_0_main_Inc(i76:0:0, o119[List1.next]o117:0:0) -> f904_0_main_Inc(c, o119[List1.next]o124:0:0) :|: c = i76:0:0 - 1 && (o119[List1.next]o117:0:0 > 0 && i76:0:0 > 0) 6.93/2.79 f904_0_main_Inc(x2:0, x3:0) -> f904_0_main_Inc(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 0 6.93/2.79 The following rules are bounded: 6.93/2.79 f904_0_main_Inc(i76:0:0, o119[List1.next]o117:0:0) -> f904_0_main_Inc(c, o119[List1.next]o124:0:0) :|: c = i76:0:0 - 1 && (o119[List1.next]o117:0:0 > 0 && i76:0:0 > 0) 6.93/2.79 f904_0_main_Inc(x2:0, x3:0) -> f904_0_main_Inc(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 0 6.93/2.79 6.93/2.79 ---------------------------------------- 6.93/2.79 6.93/2.79 (24) 6.93/2.79 YES 7.25/2.83 EOF