7.51/2.81 YES 7.51/2.83 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 7.51/2.83 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.51/2.83 7.51/2.83 7.51/2.83 termination of the given Bare JBC problem could be proven: 7.51/2.83 7.51/2.83 (0) Bare JBC problem 7.51/2.83 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 7.51/2.83 (2) JBC problem 7.51/2.83 (3) JBCToGraph [EQUIVALENT, 351 ms] 7.51/2.83 (4) JBCTerminationGraph 7.51/2.83 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 7.51/2.83 (6) JBCTerminationSCC 7.51/2.83 (7) SCCToIRSProof [SOUND, 126 ms] 7.51/2.83 (8) IRSwT 7.51/2.83 (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 7.51/2.83 (10) IRSwT 7.51/2.83 (11) IRSwTTerminationDigraphProof [EQUIVALENT, 53 ms] 7.51/2.83 (12) AND 7.51/2.83 (13) IRSwT 7.51/2.83 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.51/2.83 (15) IRSwT 7.51/2.83 (16) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 7.51/2.83 (17) IRSwT 7.51/2.83 (18) TempFilterProof [SOUND, 29 ms] 7.51/2.83 (19) IntTRS 7.51/2.83 (20) PolynomialOrderProcessor [EQUIVALENT, 12 ms] 7.51/2.83 (21) YES 7.51/2.83 (22) IRSwT 7.51/2.83 (23) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.51/2.83 (24) IRSwT 7.51/2.83 (25) TempFilterProof [SOUND, 13 ms] 7.51/2.83 (26) IntTRS 7.51/2.83 (27) PolynomialOrderProcessor [EQUIVALENT, 4 ms] 7.51/2.83 (28) YES 7.51/2.83 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (0) 7.51/2.83 Obligation: 7.51/2.83 need to prove termination of the following program: 7.51/2.83 /** 7.51/2.83 * Example taken from "A Term Rewriting Approach to the Automated Termination 7.51/2.83 * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) 7.51/2.83 * and converted to Java. 7.51/2.83 */ 7.51/2.83 7.51/2.83 public class PastaC11 { 7.51/2.83 public static void main(String[] args) { 7.51/2.83 Random.args = args; 7.51/2.83 int x = Random.random(); 7.51/2.83 int y = Random.random(); 7.51/2.83 7.51/2.83 while (true) { 7.51/2.83 if (x >= 0) { 7.51/2.83 x--; 7.51/2.83 y = Random.random(); 7.51/2.83 } else if (y >= 0) { 7.51/2.83 y--; 7.51/2.83 } else { 7.51/2.83 break; 7.51/2.83 } 7.51/2.83 } 7.51/2.83 } 7.51/2.83 } 7.51/2.83 7.51/2.83 7.51/2.83 public class Random { 7.51/2.83 static String[] args; 7.51/2.83 static int index = 0; 7.51/2.83 7.51/2.83 public static int random() { 7.51/2.83 String string = args[index]; 7.51/2.83 index++; 7.51/2.83 return string.length(); 7.51/2.83 } 7.51/2.83 } 7.51/2.83 7.51/2.83 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (1) BareJBCToJBCProof (EQUIVALENT) 7.51/2.83 initialized classpath 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (2) 7.51/2.83 Obligation: 7.51/2.83 need to prove termination of the following program: 7.51/2.83 /** 7.51/2.83 * Example taken from "A Term Rewriting Approach to the Automated Termination 7.51/2.83 * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) 7.51/2.83 * and converted to Java. 7.51/2.83 */ 7.51/2.83 7.51/2.83 public class PastaC11 { 7.51/2.83 public static void main(String[] args) { 7.51/2.83 Random.args = args; 7.51/2.83 int x = Random.random(); 7.51/2.83 int y = Random.random(); 7.51/2.83 7.51/2.83 while (true) { 7.51/2.83 if (x >= 0) { 7.51/2.83 x--; 7.51/2.83 y = Random.random(); 7.51/2.83 } else if (y >= 0) { 7.51/2.83 y--; 7.51/2.83 } else { 7.51/2.83 break; 7.51/2.83 } 7.51/2.83 } 7.51/2.83 } 7.51/2.83 } 7.51/2.83 7.51/2.83 7.51/2.83 public class Random { 7.51/2.83 static String[] args; 7.51/2.83 static int index = 0; 7.51/2.83 7.51/2.83 public static int random() { 7.51/2.83 String string = args[index]; 7.51/2.83 index++; 7.51/2.83 return string.length(); 7.51/2.83 } 7.51/2.83 } 7.51/2.83 7.51/2.83 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (3) JBCToGraph (EQUIVALENT) 7.51/2.83 Constructed TerminationGraph. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (4) 7.51/2.83 Obligation: 7.51/2.83 Termination Graph based on JBC Program: 7.51/2.83 PastaC11.main([Ljava/lang/String;)V: Graph of 249 nodes with 1 SCC. 7.51/2.83 7.51/2.83 7.51/2.83 7.51/2.83 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (5) TerminationGraphToSCCProof (SOUND) 7.51/2.83 Splitted TerminationGraph to 1 SCCs. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (6) 7.51/2.83 Obligation: 7.51/2.83 SCC of termination graph based on JBC Program. 7.51/2.83 SCC contains nodes from the following methods: PastaC11.main([Ljava/lang/String;)V 7.51/2.83 SCC calls the following helper methods: 7.51/2.83 Performed SCC analyses: 7.51/2.83 *Used field analysis yielded the following read fields: 7.51/2.83 *java.lang.String: [count] 7.51/2.83 *Marker field analysis yielded the following relations that could be markers: 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (7) SCCToIRSProof (SOUND) 7.51/2.83 Transformed FIGraph SCCs to intTRSs. Log: 7.51/2.83 Generated rules. Obtained 34 IRulesP rules: 7.51/2.83 f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i126, matching2) -> f1198_0_main_LT(EOS(STATIC_1198(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i126, -1) :|: TRUE && matching1 = -1 && matching2 = -1 7.51/2.83 f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212, i126, i212) -> f1199_0_main_LT(EOS(STATIC_1199(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212, i126, i212) :|: TRUE 7.51/2.83 f1198_0_main_LT(EOS(STATIC_1198(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i126, matching2) -> f1202_0_main_Load(EOS(STATIC_1202(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i126) :|: -1 < 0 && matching1 = -1 && matching2 = -1 7.51/2.83 f1202_0_main_Load(EOS(STATIC_1202(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i126) -> f1206_0_main_LT(EOS(STATIC_1206(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i126, i126) :|: TRUE && matching1 = -1 7.51/2.83 f1206_0_main_LT(EOS(STATIC_1206(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i215, i215) -> f1213_0_main_LT(EOS(STATIC_1213(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i215, i215) :|: TRUE && matching1 = -1 7.51/2.83 f1213_0_main_LT(EOS(STATIC_1213(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i215, i215) -> f1219_0_main_Inc(EOS(STATIC_1219(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i215) :|: i215 >= 0 && matching1 = -1 7.51/2.83 f1219_0_main_Inc(EOS(STATIC_1219(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i215) -> f1225_0_main_JMP(EOS(STATIC_1225(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i215 + -1) :|: TRUE && matching1 = -1 7.51/2.83 f1225_0_main_JMP(EOS(STATIC_1225(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i217) -> f1325_0_main_Load(EOS(STATIC_1325(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i217) :|: TRUE && matching1 = -1 7.51/2.83 f1325_0_main_Load(EOS(STATIC_1325(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), matching1, i217) -> f1189_0_main_Load(EOS(STATIC_1189(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), -1, i217) :|: TRUE && matching1 = -1 7.51/2.83 f1189_0_main_Load(EOS(STATIC_1189(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i125, i126) -> f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i125, i126, i125) :|: TRUE 7.51/2.83 f1199_0_main_LT(EOS(STATIC_1199(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212, i126, i212) -> f1203_0_main_Inc(EOS(STATIC_1203(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212) :|: i212 >= 0 7.51/2.83 f1203_0_main_Inc(EOS(STATIC_1203(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212) -> f1209_0_main_InvokeMethod(EOS(STATIC_1209(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i212 + -1) :|: TRUE 7.51/2.83 f1209_0_main_InvokeMethod(EOS(STATIC_1209(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214) -> f1215_0_random_FieldAccess(EOS(STATIC_1215(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214) :|: TRUE 7.51/2.83 f1215_0_random_FieldAccess(EOS(STATIC_1215(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214) -> f1228_0_random_FieldAccess(EOS(STATIC_1228(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) :|: TRUE 7.51/2.83 f1228_0_random_FieldAccess(EOS(STATIC_1228(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) -> f1335_0_random_ArrayAccess(EOS(STATIC_1335(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) :|: TRUE 7.51/2.83 f1335_0_random_ArrayAccess(EOS(STATIC_1335(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) -> f1337_0_random_ArrayAccess(EOS(STATIC_1337(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) :|: TRUE 7.51/2.83 f1337_0_random_ArrayAccess(EOS(STATIC_1337(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(ARRAY(i6))) -> f1344_0_random_Store(EOS(STATIC_1344(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1344_0_random_Store(EOS(STATIC_1344(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1351_0_random_FieldAccess(EOS(STATIC_1351(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1351_0_random_FieldAccess(EOS(STATIC_1351(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1354_0_random_ConstantStackPush(EOS(STATIC_1354(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1354_0_random_ConstantStackPush(EOS(STATIC_1354(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1365_0_random_IntArithmetic(EOS(STATIC_1365(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1365_0_random_IntArithmetic(EOS(STATIC_1365(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1371_0_random_FieldAccess(EOS(STATIC_1371(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1371_0_random_FieldAccess(EOS(STATIC_1371(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1375_0_random_Load(EOS(STATIC_1375(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1375_0_random_Load(EOS(STATIC_1375(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) -> f1388_0_random_InvokeMethod(EOS(STATIC_1388(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, o108) :|: TRUE 7.51/2.83 f1388_0_random_InvokeMethod(EOS(STATIC_1388(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o115sub)) -> f1390_0_random_InvokeMethod(EOS(STATIC_1390(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o115sub)) :|: TRUE 7.51/2.83 f1390_0_random_InvokeMethod(EOS(STATIC_1390(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) -> f1393_0_random_InvokeMethod(EOS(STATIC_1393(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) :|: TRUE 7.51/2.83 f1393_0_random_InvokeMethod(EOS(STATIC_1393(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) -> f1404_0_length_Load(EOS(STATIC_1404(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) :|: TRUE 7.51/2.83 f1404_0_length_Load(EOS(STATIC_1404(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) -> f1421_0_length_FieldAccess(EOS(STATIC_1421(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(o116sub)) :|: TRUE 7.51/2.83 f1421_0_length_FieldAccess(EOS(STATIC_1421(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(java.lang.String(EOC, i278))) -> f1433_0_length_FieldAccess(EOS(STATIC_1433(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(java.lang.String(EOC, i278))) :|: i278 >= 0 7.51/2.83 f1433_0_length_FieldAccess(EOS(STATIC_1433(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, java.lang.Object(java.lang.String(EOC, i278))) -> f1441_0_length_Return(EOS(STATIC_1441(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 f1441_0_length_Return(EOS(STATIC_1441(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) -> f1452_0_random_Return(EOS(STATIC_1452(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 f1452_0_random_Return(EOS(STATIC_1452(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) -> f1460_0_main_Store(EOS(STATIC_1460(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 f1460_0_main_Store(EOS(STATIC_1460(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) -> f1462_0_main_JMP(EOS(STATIC_1462(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 f1462_0_main_JMP(EOS(STATIC_1462(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) -> f1465_0_main_Load(EOS(STATIC_1465(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 f1465_0_main_Load(EOS(STATIC_1465(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) -> f1189_0_main_Load(EOS(STATIC_1189(java.lang.Object(ARRAY(i6)))), java.lang.Object(ARRAY(i6)), i214, i278) :|: TRUE 7.51/2.83 Combined rules. Obtained 2 IRulesP rules: 7.51/2.83 f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6:0)))), java.lang.Object(ARRAY(i6:0)), -1, i126:0, -1) -> f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6:0)))), java.lang.Object(ARRAY(i6:0)), -1, i126:0 - 1, -1) :|: i126:0 > -1 7.51/2.83 f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6:0)))), java.lang.Object(ARRAY(i6:0)), i212:0, i126:0, i212:0) -> f1193_0_main_LT(EOS(STATIC_1193(java.lang.Object(ARRAY(i6:0)))), java.lang.Object(ARRAY(i6:0)), i212:0 - 1, i278:0, i212:0 - 1) :|: i278:0 > -1 && i212:0 > -1 7.51/2.83 Filtered duplicate arguments: 7.51/2.83 f1193_0_main_LT(x1, x2, x3, x4, x5) -> f1193_0_main_LT(x1, x2, x4, x5) 7.51/2.83 Filtered unneeded arguments: 7.51/2.83 f1193_0_main_LT(x1, x2, x3, x4) -> f1193_0_main_LT(x3, x4) 7.51/2.83 Finished conversion. Obtained 2 rules.P rules: 7.51/2.83 f1193_0_main_LT(i126:0, cons_-1) -> f1193_0_main_LT(i126:0 - 1, -1) :|: i126:0 > -1 && cons_-1 = -1 7.51/2.83 f1193_0_main_LT(i126:0, i212:0) -> f1193_0_main_LT(i278:0, i212:0 - 1) :|: i278:0 > -1 && i212:0 > -1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (8) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(i126:0, cons_-1) -> f1193_0_main_LT(i126:0 - 1, -1) :|: i126:0 > -1 && cons_-1 = -1 7.51/2.83 f1193_0_main_LT(x, x1) -> f1193_0_main_LT(x2, x1 - 1) :|: x2 > -1 && x1 > -1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (9) IRSFormatTransformerProof (EQUIVALENT) 7.51/2.83 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (10) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(i126:0, cons_-1) -> f1193_0_main_LT(arith, -1) :|: i126:0 > -1 && cons_-1 = -1 && arith = i126:0 - 1 7.51/2.83 f1193_0_main_LT(x3, x4) -> f1193_0_main_LT(x5, x6) :|: x5 > -1 && x4 > -1 && x6 = x4 - 1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (11) IRSwTTerminationDigraphProof (EQUIVALENT) 7.51/2.83 Constructed termination digraph! 7.51/2.83 Nodes: 7.51/2.83 (1) f1193_0_main_LT(i126:0, cons_-1) -> f1193_0_main_LT(arith, -1) :|: i126:0 > -1 && cons_-1 = -1 && arith = i126:0 - 1 7.51/2.83 (2) f1193_0_main_LT(x3, x4) -> f1193_0_main_LT(x5, x6) :|: x5 > -1 && x4 > -1 && x6 = x4 - 1 7.51/2.83 7.51/2.83 Arcs: 7.51/2.83 (1) -> (1) 7.51/2.83 (2) -> (1), (2) 7.51/2.83 7.51/2.83 This digraph is fully evaluated! 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (12) 7.51/2.83 Complex Obligation (AND) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (13) 7.51/2.83 Obligation: 7.51/2.83 7.51/2.83 Termination digraph: 7.51/2.83 Nodes: 7.51/2.83 (1) f1193_0_main_LT(x3, x4) -> f1193_0_main_LT(x5, x6) :|: x5 > -1 && x4 > -1 && x6 = x4 - 1 7.51/2.83 7.51/2.83 Arcs: 7.51/2.83 (1) -> (1) 7.51/2.83 7.51/2.83 This digraph is fully evaluated! 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (14) IntTRSCompressionProof (EQUIVALENT) 7.51/2.83 Compressed rules. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (15) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(x3:0, x4:0) -> f1193_0_main_LT(x5:0, x4:0 - 1) :|: x5:0 > -1 && x4:0 > -1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (16) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 7.51/2.83 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 7.51/2.83 7.51/2.83 f1193_0_main_LT(x1, x2) -> f1193_0_main_LT(x2) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (17) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(x4:0) -> f1193_0_main_LT(x4:0 - 1) :|: x5:0 > -1 && x4:0 > -1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (18) TempFilterProof (SOUND) 7.51/2.83 Used the following sort dictionary for filtering: 7.51/2.83 f1193_0_main_LT(INTEGER) 7.51/2.83 Replaced non-predefined constructor symbols by 0. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (19) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(x4:0) -> f1193_0_main_LT(c) :|: c = x4:0 - 1 && (x5:0 > -1 && x4:0 > -1) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (20) PolynomialOrderProcessor (EQUIVALENT) 7.51/2.83 Found the following polynomial interpretation: 7.51/2.83 [f1193_0_main_LT(x)] = x 7.51/2.83 7.51/2.83 The following rules are decreasing: 7.51/2.83 f1193_0_main_LT(x4:0) -> f1193_0_main_LT(c) :|: c = x4:0 - 1 && (x5:0 > -1 && x4:0 > -1) 7.51/2.83 The following rules are bounded: 7.51/2.83 f1193_0_main_LT(x4:0) -> f1193_0_main_LT(c) :|: c = x4:0 - 1 && (x5:0 > -1 && x4:0 > -1) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (21) 7.51/2.83 YES 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (22) 7.51/2.83 Obligation: 7.51/2.83 7.51/2.83 Termination digraph: 7.51/2.83 Nodes: 7.51/2.83 (1) f1193_0_main_LT(i126:0, cons_-1) -> f1193_0_main_LT(arith, -1) :|: i126:0 > -1 && cons_-1 = -1 && arith = i126:0 - 1 7.51/2.83 7.51/2.83 Arcs: 7.51/2.83 (1) -> (1) 7.51/2.83 7.51/2.83 This digraph is fully evaluated! 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (23) IntTRSCompressionProof (EQUIVALENT) 7.51/2.83 Compressed rules. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (24) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(i126:0:0, cons_-1) -> f1193_0_main_LT(i126:0:0 - 1, -1) :|: i126:0:0 > -1 && cons_-1 = -1 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (25) TempFilterProof (SOUND) 7.51/2.83 Used the following sort dictionary for filtering: 7.51/2.83 f1193_0_main_LT(INTEGER, VARIABLE) 7.51/2.83 Replaced non-predefined constructor symbols by 0. 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (26) 7.51/2.83 Obligation: 7.51/2.83 Rules: 7.51/2.83 f1193_0_main_LT(i126:0:0, c) -> f1193_0_main_LT(c1, c2) :|: c2 = -1 && (c1 = i126:0:0 - 1 && c = -1) && (i126:0:0 > -1 && cons_-1 = -1) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (27) PolynomialOrderProcessor (EQUIVALENT) 7.51/2.83 Found the following polynomial interpretation: 7.51/2.83 [f1193_0_main_LT(x, x1)] = x 7.51/2.83 7.51/2.83 The following rules are decreasing: 7.51/2.83 f1193_0_main_LT(i126:0:0, c) -> f1193_0_main_LT(c1, c2) :|: c2 = -1 && (c1 = i126:0:0 - 1 && c = -1) && (i126:0:0 > -1 && cons_-1 = -1) 7.51/2.83 The following rules are bounded: 7.51/2.83 f1193_0_main_LT(i126:0:0, c) -> f1193_0_main_LT(c1, c2) :|: c2 = -1 && (c1 = i126:0:0 - 1 && c = -1) && (i126:0:0 > -1 && cons_-1 = -1) 7.51/2.83 7.51/2.83 ---------------------------------------- 7.51/2.83 7.51/2.83 (28) 7.51/2.83 YES 7.74/2.88 EOF