/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could not be shown: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 955 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 132 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IntTRSCompressionProof [EQUIVALENT, 0 ms] (13) IRSwT (14) TempFilterProof [SOUND, 1781 ms] (15) IRSwT (16) IntTRSCompressionProof [EQUIVALENT, 0 ms] (17) IRSwT (18) JBCTerminationSCC (19) SCCToIRSProof [SOUND, 19 ms] (20) IRSwT (21) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (22) IRSwT (23) IRSwTTerminationDigraphProof [EQUIVALENT, 74 ms] (24) IRSwT (25) IntTRSCompressionProof [EQUIVALENT, 0 ms] (26) IRSwT (27) FilterProof [EQUIVALENT, 0 ms] (28) IntTRS (29) IntTRSCompressionProof [EQUIVALENT, 0 ms] (30) IntTRS (31) IntTRSPeriodicNontermProof [COMPLETE, 11 ms] (32) NO (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 13 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 8 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 39 ms] (43) IntTRS (44) PolynomialOrderProcessor [EQUIVALENT, 5 ms] (45) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: /** * Rather inefficient random number generator that can generate infinitely * many positive integers from a single positive integer (the * "random source") by taking the exponents of its prime factorization. */ public class RandomHard { // a single natural number, to give rise to infinitely many natural numbers // from its prime factorization (if the datatype int had infinite precision) final private int source; // use the exponent of the nextPrimeIndex-th prime in the unique // prime factorization of source as the next "randomly generated" // natural number private int nextPrimeIndex; public RandomHard(int source) { this.source = source; this.nextPrimeIndex = 1; } public static void main(String[] args) { int source = args[0].length(); if (source < 1) { return; } RandomHard random = new RandomHard(source); int limit = args[1].length(); for (int i = 0; i < limit; ++i) { random.getNext(); } } /** @return the next (random!) natural number */ public int getNext() { int prime = findKthPrime(this.nextPrimeIndex); ++this.nextPrimeIndex; int res = getPowerOfKInSource(prime); return res; } /** @return How often can we divide source by k without remainder? */ private int getPowerOfKInSource(int k) { /*if (k < 2) { throw new RuntimeException("Divide only by primes -- they are >= 2!"); }*/ int divisor = this.source; int res = 0; while (divisor % k == 0) { divisor = divisor / k; ++res; } return res; } /** @return the k-th prime number for k > 0 */ private int findKthPrime(int k) { int yippi = 0; int cand = 1; // termination of this loop on the integers follows from // the existence of infinitely many prime numbers while (yippi < k) { ++cand; // all prime numbers are >= 2, so increment boolean isPrime = checkPrime(cand); if (isPrime) { ++yippi; } } return cand; } /** @return Is n prime? */ private static boolean checkPrime(int n) { if (n < 2) { return false; } for (int i = 2; i < n; ++i) { if (n % i == 0) { // i divides n and 1 < i < n return false; } } return true; } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: /** * Rather inefficient random number generator that can generate infinitely * many positive integers from a single positive integer (the * "random source") by taking the exponents of its prime factorization. */ public class RandomHard { // a single natural number, to give rise to infinitely many natural numbers // from its prime factorization (if the datatype int had infinite precision) final private int source; // use the exponent of the nextPrimeIndex-th prime in the unique // prime factorization of source as the next "randomly generated" // natural number private int nextPrimeIndex; public RandomHard(int source) { this.source = source; this.nextPrimeIndex = 1; } public static void main(String[] args) { int source = args[0].length(); if (source < 1) { return; } RandomHard random = new RandomHard(source); int limit = args[1].length(); for (int i = 0; i < limit; ++i) { random.getNext(); } } /** @return the next (random!) natural number */ public int getNext() { int prime = findKthPrime(this.nextPrimeIndex); ++this.nextPrimeIndex; int res = getPowerOfKInSource(prime); return res; } /** @return How often can we divide source by k without remainder? */ private int getPowerOfKInSource(int k) { /*if (k < 2) { throw new RuntimeException("Divide only by primes -- they are >= 2!"); }*/ int divisor = this.source; int res = 0; while (divisor % k == 0) { divisor = divisor / k; ++res; } return res; } /** @return the k-th prime number for k > 0 */ private int findKthPrime(int k) { int yippi = 0; int cand = 1; // termination of this loop on the integers follows from // the existence of infinitely many prime numbers while (yippi < k) { ++cand; // all prime numbers are >= 2, so increment boolean isPrime = checkPrime(cand); if (isPrime) { ++yippi; } } return cand; } /** @return Is n prime? */ private static boolean checkPrime(int n) { if (n < 2) { return false; } for (int i = 2; i < n; ++i) { if (n % i == 0) { // i divides n and 1 < i < n return false; } } return true; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: RandomHard.main([Ljava/lang/String;)V: Graph of 161 nodes with 1 SCC. RandomHard.getNext()I: Graph of 68 nodes with 1 SCC. RandomHard.findKthPrime(I)I: Graph of 64 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: RandomHard.findKthPrime(I)I 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: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 56 IRulesP rules: f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538, i538, i539, i540, i539) -> f4644_0_findKthPrime_GE(EOS(STATIC_4644), i538, i538, i539, i540, i539, i538) :|: TRUE f4644_0_findKthPrime_GE(EOS(STATIC_4644), i538, i538, i539, i540, i539, i538) -> f4647_0_findKthPrime_GE(EOS(STATIC_4647), i538, i538, i539, i540, i539, i538) :|: i539 < i538 f4647_0_findKthPrime_GE(EOS(STATIC_4647), i538, i538, i539, i540, i539, i538) -> f4651_0_findKthPrime_Inc(EOS(STATIC_4651), i538, i538, i539, i540) :|: i539 < i538 f4651_0_findKthPrime_Inc(EOS(STATIC_4651), i538, i538, i539, i540) -> f4659_0_findKthPrime_Load(EOS(STATIC_4659), i538, i538, i539, i540 + 1) :|: TRUE f4659_0_findKthPrime_Load(EOS(STATIC_4659), i538, i538, i539, i547) -> f4668_0_findKthPrime_InvokeMethod(EOS(STATIC_4668), i538, i538, i539, i547, i547) :|: TRUE f4668_0_findKthPrime_InvokeMethod(EOS(STATIC_4668), i538, i538, i539, i547, i547) -> f4687_0_checkPrime_Load(EOS(STATIC_4687), i538, i538, i539, i547, i547) :|: TRUE f4687_0_checkPrime_Load(EOS(STATIC_4687), i538, i538, i539, i547, i547) -> f4722_0_checkPrime_ConstantStackPush(EOS(STATIC_4722), i538, i538, i539, i547, i547, i547) :|: TRUE f4722_0_checkPrime_ConstantStackPush(EOS(STATIC_4722), i538, i538, i539, i547, i547, i547) -> f4727_0_checkPrime_GE(EOS(STATIC_4727), i538, i538, i539, i547, i547, i547, 2) :|: TRUE f4727_0_checkPrime_GE(EOS(STATIC_4727), i538, i538, i539, i556, i556, i556, matching1) -> f4741_0_checkPrime_GE(EOS(STATIC_4741), i538, i538, i539, i556, i556, i556, 2) :|: TRUE && matching1 = 2 f4727_0_checkPrime_GE(EOS(STATIC_4727), i538, i538, i539, i557, i557, i557, matching1) -> f4742_0_checkPrime_GE(EOS(STATIC_4742), i538, i538, i539, i557, i557, i557, 2) :|: TRUE && matching1 = 2 f4741_0_checkPrime_GE(EOS(STATIC_4741), i538, i538, i539, i556, i556, i556, matching1) -> f4746_0_checkPrime_ConstantStackPush(EOS(STATIC_4746), i538, i538, i539, i556) :|: i556 < 2 && matching1 = 2 f4746_0_checkPrime_ConstantStackPush(EOS(STATIC_4746), i538, i538, i539, i556) -> f4754_0_checkPrime_Return(EOS(STATIC_4754), i538, i538, i539, i556, 0) :|: TRUE f4754_0_checkPrime_Return(EOS(STATIC_4754), i538, i538, i539, i556, matching1) -> f4757_0_findKthPrime_Store(EOS(STATIC_4757), i538, i538, i539, i556, 0) :|: TRUE && matching1 = 0 f4757_0_findKthPrime_Store(EOS(STATIC_4757), i538, i538, i539, i556, matching1) -> f4760_0_findKthPrime_Load(EOS(STATIC_4760), i538, i538, i539, i556, 0) :|: TRUE && matching1 = 0 f4760_0_findKthPrime_Load(EOS(STATIC_4760), i538, i538, i539, i556, matching1) -> f4763_0_findKthPrime_EQ(EOS(STATIC_4763), i538, i538, i539, i556, 0) :|: TRUE && matching1 = 0 f4763_0_findKthPrime_EQ(EOS(STATIC_4763), i538, i538, i539, i556, matching1) -> f4766_0_findKthPrime_JMP(EOS(STATIC_4766), i538, i538, i539, i556) :|: TRUE && matching1 = 0 f4766_0_findKthPrime_JMP(EOS(STATIC_4766), i538, i538, i539, i556) -> f4770_0_findKthPrime_Load(EOS(STATIC_4770), i538, i538, i539, i556) :|: TRUE f4770_0_findKthPrime_Load(EOS(STATIC_4770), i538, i538, i539, i556) -> f4640_0_findKthPrime_Load(EOS(STATIC_4640), i538, i538, i539, i556) :|: TRUE f4640_0_findKthPrime_Load(EOS(STATIC_4640), i538, i538, i539, i540) -> f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538, i538, i539, i540, i539) :|: TRUE f4742_0_checkPrime_GE(EOS(STATIC_4742), i538, i538, i539, i557, i557, i557, matching1) -> f4752_0_checkPrime_ConstantStackPush(EOS(STATIC_4752), i538, i538, i539, i557, i557) :|: i557 >= 2 && matching1 = 2 f4752_0_checkPrime_ConstantStackPush(EOS(STATIC_4752), i538, i538, i539, i557, i557) -> f4755_0_checkPrime_Store(EOS(STATIC_4755), i538, i538, i539, i557, i557, 2) :|: TRUE f4755_0_checkPrime_Store(EOS(STATIC_4755), i538, i538, i539, i557, i557, matching1) -> f4758_0_checkPrime_Load(EOS(STATIC_4758), i538, i538, i539, i557, i557, 2) :|: TRUE && matching1 = 2 f4758_0_checkPrime_Load(EOS(STATIC_4758), i538, i538, i539, i557, i557, matching1) -> f4888_0_checkPrime_Load(EOS(STATIC_4888), i538, i538, i539, i557, i557, 2) :|: TRUE && matching1 = 2 f4888_0_checkPrime_Load(EOS(STATIC_4888), i538, i538, i539, i572, i572, i573) -> f5139_0_checkPrime_Load(EOS(STATIC_5139), i538, i538, i539, i572, i572, i573) :|: TRUE f5139_0_checkPrime_Load(EOS(STATIC_5139), i538, i538, i539, i595, i595, i596) -> f5290_0_checkPrime_Load(EOS(STATIC_5290), i538, i538, i539, i595, i595, i596) :|: TRUE f5290_0_checkPrime_Load(EOS(STATIC_5290), i538, i538, i539, i625, i625, i626) -> f5293_0_checkPrime_Load(EOS(STATIC_5293), i538, i538, i539, i625, i625, i626, i626) :|: TRUE f5293_0_checkPrime_Load(EOS(STATIC_5293), i538, i538, i539, i625, i625, i626, i626) -> f5300_0_checkPrime_GE(EOS(STATIC_5300), i538, i538, i539, i625, i625, i626, i626, i625) :|: TRUE f5300_0_checkPrime_GE(EOS(STATIC_5300), i538, i538, i539, i625, i625, i626, i626, i625) -> f5372_0_checkPrime_GE(EOS(STATIC_5372), i538, i538, i539, i625, i625, i626, i626, i625) :|: i626 >= i625 f5300_0_checkPrime_GE(EOS(STATIC_5300), i538, i538, i539, i625, i625, i626, i626, i625) -> f5373_0_checkPrime_GE(EOS(STATIC_5373), i538, i538, i539, i625, i625, i626, i626, i625) :|: i626 < i625 f5372_0_checkPrime_GE(EOS(STATIC_5372), i538, i538, i539, i625, i625, i626, i626, i625) -> f5376_0_checkPrime_ConstantStackPush(EOS(STATIC_5376), i538, i538, i539, i625) :|: i626 >= i625 f5376_0_checkPrime_ConstantStackPush(EOS(STATIC_5376), i538, i538, i539, i625) -> f5381_0_checkPrime_Return(EOS(STATIC_5381), i538, i538, i539, i625, 1) :|: TRUE f5381_0_checkPrime_Return(EOS(STATIC_5381), i538, i538, i539, i625, matching1) -> f5386_0_findKthPrime_Store(EOS(STATIC_5386), i538, i538, i539, i625, 1) :|: TRUE && matching1 = 1 f5386_0_findKthPrime_Store(EOS(STATIC_5386), i538, i538, i539, i625, matching1) -> f5395_0_findKthPrime_Load(EOS(STATIC_5395), i538, i538, i539, i625, 1) :|: TRUE && matching1 = 1 f5395_0_findKthPrime_Load(EOS(STATIC_5395), i538, i538, i539, i625, matching1) -> f5407_0_findKthPrime_EQ(EOS(STATIC_5407), i538, i538, i539, i625, 1) :|: TRUE && matching1 = 1 f5407_0_findKthPrime_EQ(EOS(STATIC_5407), i538, i538, i539, i625, matching1) -> f5423_0_findKthPrime_Inc(EOS(STATIC_5423), i538, i538, i539, i625) :|: 1 > 0 && matching1 = 1 f5423_0_findKthPrime_Inc(EOS(STATIC_5423), i538, i538, i539, i625) -> f5430_0_findKthPrime_JMP(EOS(STATIC_5430), i538, i538, i539 + 1, i625) :|: TRUE f5430_0_findKthPrime_JMP(EOS(STATIC_5430), i538, i538, i682, i625) -> f5451_0_findKthPrime_Load(EOS(STATIC_5451), i538, i538, i682, i625) :|: TRUE f5451_0_findKthPrime_Load(EOS(STATIC_5451), i538, i538, i682, i625) -> f4640_0_findKthPrime_Load(EOS(STATIC_4640), i538, i538, i682, i625) :|: TRUE f5373_0_checkPrime_GE(EOS(STATIC_5373), i538, i538, i539, i625, i625, i626, i626, i625) -> f5377_0_checkPrime_Load(EOS(STATIC_5377), i538, i538, i539, i625, i625, i626) :|: i626 < i625 f5377_0_checkPrime_Load(EOS(STATIC_5377), i538, i538, i539, i625, i625, i626) -> f5382_0_checkPrime_Load(EOS(STATIC_5382), i538, i538, i539, i625, i625, i626, i625) :|: TRUE f5382_0_checkPrime_Load(EOS(STATIC_5382), i538, i538, i539, i625, i625, i626, i625) -> f5387_0_checkPrime_IntArithmetic(EOS(STATIC_5387), i538, i538, i539, i625, i625, i626, i625, i626) :|: TRUE f5387_0_checkPrime_IntArithmetic(EOS(STATIC_5387), i538, i538, i539, i625, i625, i626, i625, i626) -> f5398_0_checkPrime_NE(EOS(STATIC_5398), i538, i538, i539, i625, i625, i626, i625 % i626) :|: TRUE f5398_0_checkPrime_NE(EOS(STATIC_5398), i538, i538, i539, i625, i625, i626, i678) -> f5413_0_checkPrime_NE(EOS(STATIC_5413), i538, i538, i539, i625, i625, i626, i678) :|: TRUE f5398_0_checkPrime_NE(EOS(STATIC_5398), i538, i538, i539, i625, i625, i626, matching1) -> f5414_0_checkPrime_NE(EOS(STATIC_5414), i538, i538, i539, i625, i625, i626, 0) :|: TRUE && matching1 = 0 f5413_0_checkPrime_NE(EOS(STATIC_5413), i538, i538, i539, i625, i625, i626, i678) -> f5424_0_checkPrime_Inc(EOS(STATIC_5424), i538, i538, i539, i625, i625, i626) :|: i678 > 0 f5424_0_checkPrime_Inc(EOS(STATIC_5424), i538, i538, i539, i625, i625, i626) -> f5432_0_checkPrime_JMP(EOS(STATIC_5432), i538, i538, i539, i625, i625, i626 + 1) :|: TRUE f5432_0_checkPrime_JMP(EOS(STATIC_5432), i538, i538, i539, i625, i625, i683) -> f5467_0_checkPrime_Load(EOS(STATIC_5467), i538, i538, i539, i625, i625, i683) :|: TRUE f5467_0_checkPrime_Load(EOS(STATIC_5467), i538, i538, i539, i625, i625, i683) -> f5290_0_checkPrime_Load(EOS(STATIC_5290), i538, i538, i539, i625, i625, i683) :|: TRUE f5414_0_checkPrime_NE(EOS(STATIC_5414), i538, i538, i539, i625, i625, i626, matching1) -> f5425_0_checkPrime_ConstantStackPush(EOS(STATIC_5425), i538, i538, i539, i625) :|: TRUE && matching1 = 0 f5425_0_checkPrime_ConstantStackPush(EOS(STATIC_5425), i538, i538, i539, i625) -> f5434_0_checkPrime_Return(EOS(STATIC_5434), i538, i538, i539, i625, 0) :|: TRUE f5434_0_checkPrime_Return(EOS(STATIC_5434), i538, i538, i539, i625, matching1) -> f5471_0_findKthPrime_Store(EOS(STATIC_5471), i538, i538, i539, i625, 0) :|: TRUE && matching1 = 0 f5471_0_findKthPrime_Store(EOS(STATIC_5471), i538, i538, i539, i625, matching1) -> f5478_0_findKthPrime_Load(EOS(STATIC_5478), i538, i538, i539, i625, 0) :|: TRUE && matching1 = 0 f5478_0_findKthPrime_Load(EOS(STATIC_5478), i538, i538, i539, i625, matching1) -> f5487_0_findKthPrime_EQ(EOS(STATIC_5487), i538, i538, i539, i625, 0) :|: TRUE && matching1 = 0 f5487_0_findKthPrime_EQ(EOS(STATIC_5487), i538, i538, i539, i625, matching1) -> f5518_0_findKthPrime_JMP(EOS(STATIC_5518), i538, i538, i539, i625) :|: TRUE && matching1 = 0 f5518_0_findKthPrime_JMP(EOS(STATIC_5518), i538, i538, i539, i625) -> f5540_0_findKthPrime_Load(EOS(STATIC_5540), i538, i538, i539, i625) :|: TRUE f5540_0_findKthPrime_Load(EOS(STATIC_5540), i538, i538, i539, i625) -> f4640_0_findKthPrime_Load(EOS(STATIC_4640), i538, i538, i539, i625) :|: TRUE Combined rules. Obtained 7 IRulesP rules: f5300_0_checkPrime_GE(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) -> f5300_0_checkPrime_GE'(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div = 0 f5300_0_checkPrime_GE'(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538:0, i538:0, i539:0, i625:0, i539:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div = 0 && i626:0 > i625:0 - i626:0 * div && i625:0 - i626:0 * div + i626:0 > 0 f5300_0_checkPrime_GE(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538:0, i538:0, i539:0 + 1, i625:0, i539:0 + 1) :|: i626:0 >= i625:0 f5300_0_checkPrime_GE(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) -> f5300_0_checkPrime_GE'(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div > 0 f5300_0_checkPrime_GE'(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0, i626:0, i625:0) -> f5300_0_checkPrime_GE(EOS(STATIC_5300), i538:0, i538:0, i539:0, i625:0, i625:0, i626:0 + 1, i626:0 + 1, i625:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div > 0 && i626:0 > i625:0 - i626:0 * div && i625:0 - i626:0 * div + i626:0 > 0 f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538:0, i538:0, i539:0, i540:0, i539:0) -> f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538:0, i538:0, i539:0, i540:0 + 1, i539:0) :|: i539:0 < i538:0 && i540:0 < 1 f4642_0_findKthPrime_Load(EOS(STATIC_4642), i538:0, i538:0, i539:0, i540:0, i539:0) -> f5300_0_checkPrime_GE(EOS(STATIC_5300), i538:0, i538:0, i539:0, i540:0 + 1, i540:0 + 1, 2, 2, i540:0 + 1) :|: i539:0 < i538:0 && i540:0 > 0 Filtered constant ground arguments: f5300_0_checkPrime_GE(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f5300_0_checkPrime_GE(x2, x3, x4, x5, x6, x7, x8, x9) f5300_0_checkPrime_GE'(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f5300_0_checkPrime_GE'(x2, x3, x4, x5, x6, x7, x8, x9) f4642_0_findKthPrime_Load(x1, x2, x3, x4, x5, x6) -> f4642_0_findKthPrime_Load(x2, x3, x4, x5, x6) Filtered duplicate arguments: f5300_0_checkPrime_GE(x1, x2, x3, x4, x5, x6, x7, x8) -> f5300_0_checkPrime_GE(x2, x3, x7, x8) f5300_0_checkPrime_GE'(x1, x2, x3, x4, x5, x6, x7, x8) -> f5300_0_checkPrime_GE'(x2, x3, x7, x8) f4642_0_findKthPrime_Load(x1, x2, x3, x4, x5) -> f4642_0_findKthPrime_Load(x2, x4, x5) Finished conversion. Obtained 7 rules.P rules: f5300_0_checkPrime_GE(i538:0, i539:0, i626:0, i625:0) -> f5300_0_checkPrime_GE'(i538:0, i539:0, i626:0, i625:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div = 0 f5300_0_checkPrime_GE'(i538:0, i539:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(i538:0, i625:0, i539:0) :|: i625:0 - i626:0 * div = 0 && i626:0 < i625:0 && i625:0 - i626:0 * div + i626:0 > 0 && i626:0 > i625:0 - i626:0 * div f5300_0_checkPrime_GE(i538:0, i539:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(i538:0, i625:0, i539:0 + 1) :|: i626:0 >= i625:0 f5300_0_checkPrime_GE(i538:0, i539:0, i626:0, i625:0) -> f5300_0_checkPrime_GE'(i538:0, i539:0, i626:0, i625:0) :|: i626:0 < i625:0 && i625:0 - i626:0 * div > 0 f5300_0_checkPrime_GE'(i538:0, i539:0, i626:0, i625:0) -> f5300_0_checkPrime_GE(i538:0, i539:0, i626:0 + 1, i625:0) :|: i625:0 - i626:0 * div > 0 && i626:0 < i625:0 && i625:0 - i626:0 * div + i626:0 > 0 && i626:0 > i625:0 - i626:0 * div f4642_0_findKthPrime_Load(i538:0, i540:0, i539:0) -> f4642_0_findKthPrime_Load(i538:0, i540:0 + 1, i539:0) :|: i539:0 < i538:0 && i540:0 < 1 f4642_0_findKthPrime_Load(i538:0, i540:0, i539:0) -> f5300_0_checkPrime_GE(i538:0, i539:0, 2, i540:0 + 1) :|: i539:0 < i538:0 && i540:0 > 0 ---------------------------------------- (9) Obligation: Rules: f5300_0_checkPrime_GE(x, x1, x2, x3) -> f5300_0_checkPrime_GE'(x, x1, x2, x3) :|: x2 < x3 && x3 - x2 * x4 = 0 f5300_0_checkPrime_GE'(x5, x6, x7, x8) -> f4642_0_findKthPrime_Load(x5, x8, x6) :|: x8 - x7 * x9 = 0 && x7 < x8 && x8 - x7 * x9 + x7 > 0 && x7 > x8 - x7 * x9 f5300_0_checkPrime_GE(i538:0, i539:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(i538:0, i625:0, i539:0 + 1) :|: i626:0 >= i625:0 f5300_0_checkPrime_GE(x10, x11, x12, x13) -> f5300_0_checkPrime_GE'(x10, x11, x12, x13) :|: x12 < x13 && x13 - x12 * x14 > 0 f5300_0_checkPrime_GE'(x15, x16, x17, x18) -> f5300_0_checkPrime_GE(x15, x16, x17 + 1, x18) :|: x18 - x17 * x19 > 0 && x17 < x18 && x18 - x17 * x19 + x17 > 0 && x17 > x18 - x17 * x19 f4642_0_findKthPrime_Load(x20, x21, x22) -> f4642_0_findKthPrime_Load(x20, x21 + 1, x22) :|: x22 < x20 && x21 < 1 f4642_0_findKthPrime_Load(x23, x24, x25) -> f5300_0_checkPrime_GE(x23, x25, 2, x24 + 1) :|: x25 < x23 && x24 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f5300_0_checkPrime_GE(x, x1, x2, x3) -> f5300_0_checkPrime_GE'(x, x1, x2, x3) :|: x2 < x3 && x3 - x2 * x4 = 0 f5300_0_checkPrime_GE'(x5, x6, x7, x8) -> f4642_0_findKthPrime_Load(x5, x8, x6) :|: x8 - x7 * x9 = 0 && x7 < x8 && x8 - x7 * x9 + x7 > 0 && x7 > x8 - x7 * x9 f5300_0_checkPrime_GE(i538:0, i539:0, i626:0, i625:0) -> f4642_0_findKthPrime_Load(i538:0, i625:0, arith) :|: i626:0 >= i625:0 && arith = i539:0 + 1 f5300_0_checkPrime_GE(x10, x11, x12, x13) -> f5300_0_checkPrime_GE'(x10, x11, x12, x13) :|: x12 < x13 && x13 - x12 * x14 > 0 f5300_0_checkPrime_GE'(x26, x27, x28, x29) -> f5300_0_checkPrime_GE(x26, x27, x30, x29) :|: x29 - x28 * x31 > 0 && x28 < x29 && x29 - x28 * x31 + x28 > 0 && x28 > x29 - x28 * x31 && x30 = x28 + 1 f4642_0_findKthPrime_Load(x32, x33, x34) -> f4642_0_findKthPrime_Load(x32, x35, x34) :|: x34 < x32 && x33 < 1 && x35 = x33 + 1 f4642_0_findKthPrime_Load(x36, x37, x38) -> f5300_0_checkPrime_GE(x36, x38, 2, x39) :|: x38 < x36 && x37 > 0 && x39 = x37 + 1 ---------------------------------------- (12) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (13) Obligation: Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, i539:0:0 + 1) :|: i626:0:0 >= i625:0:0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, x28:0 + 1, x29:0) :|: x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0 f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, 2, x37:0 + 1) :|: x38:0 < x36:0 && x37:0 > 0 f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, x33:0 + 1, x34:0) :|: x34:0 < x32:0 && x33:0 < 1 f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 ---------------------------------------- (14) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5300_0_checkPrime_GE(VARIABLE, VARIABLE, VARIABLE, INTEGER) f5300_0_checkPrime_GE'(VARIABLE, VARIABLE, INTEGER, INTEGER) f4642_0_findKthPrime_Load(VARIABLE, INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0.The following proof was generated: # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given IntTRS could not be shown: - IntTRS - PolynomialOrderProcessor Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, c) :|: c = i539:0:0 + 1 && i626:0:0 >= i625:0:0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, c2, c3) :|: c3 = x37:0 + 1 && c2 = 2 && (x38:0 < x36:0 && x37:0 > 0) f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, c4, x34:0) :|: c4 = x33:0 + 1 && (x34:0 < x32:0 && x33:0 < 1) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 Found the following polynomial interpretation: [f5300_0_checkPrime_GE(x, x1, x2, x3)] = -1 + x - x1 [f5300_0_checkPrime_GE'(x4, x5, x6, x7)] = -1 + x4 - x5 [f4642_0_findKthPrime_Load(x8, x9, x10)] = -1 - x10 + x8 The following rules are decreasing: f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, c) :|: c = i539:0:0 + 1 && i626:0:0 >= i625:0:0 The following rules are bounded: f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, c2, c3) :|: c3 = x37:0 + 1 && c2 = 2 && (x38:0 < x36:0 && x37:0 > 0) f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, c4, x34:0) :|: c4 = x33:0 + 1 && (x34:0 < x32:0 && x33:0 < 1) - IntTRS - PolynomialOrderProcessor - AND - IntTRS - IntTRS - RankingReductionPairProof - IntTRS Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, c2, c3) :|: c3 = x37:0 + 1 && c2 = 2 && (x38:0 < x36:0 && x37:0 > 0) f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, c4, x34:0) :|: c4 = x33:0 + 1 && (x34:0 < x32:0 && x33:0 < 1) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 Interpretation: [ f5300_0_checkPrime_GE ] = -2*f5300_0_checkPrime_GE_4 + 2*f5300_0_checkPrime_GE_1 + -2*f5300_0_checkPrime_GE_2 + 1 [ f5300_0_checkPrime_GE' ] = 2*f5300_0_checkPrime_GE'_1 + -2*f5300_0_checkPrime_GE'_2 + -2*f5300_0_checkPrime_GE'_4 + 1 [ f4642_0_findKthPrime_Load ] = 2*f4642_0_findKthPrime_Load_1 + -2*f4642_0_findKthPrime_Load_2 + -2*f4642_0_findKthPrime_Load_3 The following rules are decreasing: f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, c2, c3) :|: c3 = x37:0 + 1 && c2 = 2 && (x38:0 < x36:0 && x37:0 > 0) f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, c4, x34:0) :|: c4 = x33:0 + 1 && (x34:0 < x32:0 && x33:0 < 1) The following rules are bounded: f4642_0_findKthPrime_Load(x32:0, x33:0, x34:0) -> f4642_0_findKthPrime_Load(x32:0, c4, x34:0) :|: c4 = x33:0 + 1 && (x34:0 < x32:0 && x33:0 < 1) - IntTRS - PolynomialOrderProcessor - AND - IntTRS - IntTRS - RankingReductionPairProof - IntTRS - IntTRS Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, c2, c3) :|: c3 = x37:0 + 1 && c2 = 2 && (x38:0 < x36:0 && x37:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 - IntTRS - PolynomialOrderProcessor - AND - IntTRS - IntTRS - IntTRS - PolynomialOrderProcessor Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, c) :|: c = i539:0:0 + 1 && i626:0:0 >= i625:0:0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 Found the following polynomial interpretation: [f5300_0_checkPrime_GE(x, x1, x2, x3)] = 1 [f5300_0_checkPrime_GE'(x4, x5, x6, x7)] = 1 [f4642_0_findKthPrime_Load(x8, x9, x10)] = 0 The following rules are decreasing: f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, c) :|: c = i539:0:0 + 1 && i626:0:0 >= i625:0:0 The following rules are bounded: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE(i538:0:0, i539:0:0, i626:0:0, i625:0:0) -> f4642_0_findKthPrime_Load(i538:0:0, i625:0:0, c) :|: c = i539:0:0 + 1 && i626:0:0 >= i625:0:0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 - IntTRS - PolynomialOrderProcessor - AND - IntTRS - IntTRS - IntTRS - PolynomialOrderProcessor - IntTRS - RankingReductionPairProof Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 Interpretation: [ f5300_0_checkPrime_GE ] = 2*f5300_0_checkPrime_GE_4 + -2*f5300_0_checkPrime_GE_3 + 1 [ f5300_0_checkPrime_GE' ] = -2*f5300_0_checkPrime_GE'_3 + 2*f5300_0_checkPrime_GE'_4 The following rules are decreasing: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 The following rules are bounded: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, c1, x29:0) :|: c1 = x28:0 + 1 && (x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0) f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 ---------------------------------------- (15) Obligation: Rules: f5300_0_checkPrime_GE(x:0, x1:0, x2:0, x3:0) -> f5300_0_checkPrime_GE'(x:0, x1:0, x2:0, x3:0) :|: x3:0 > x2:0 && x3:0 - x2:0 * x4:0 = 0 f5300_0_checkPrime_GE'(x5:0, x6:0, x7:0, x8:0) -> f4642_0_findKthPrime_Load(x5:0, x8:0, x6:0) :|: x8:0 - x7:0 * x9:0 + x7:0 > 0 && x8:0 - x7:0 * x9:0 < x7:0 && x8:0 > x7:0 && x8:0 - x7:0 * x9:0 = 0 f5300_0_checkPrime_GE'(x26:0, x27:0, x28:0, x29:0) -> f5300_0_checkPrime_GE(x26:0, x27:0, x28:0 + 1, x29:0) :|: x29:0 - x28:0 * x31:0 + x28:0 > 0 && x29:0 - x28:0 * x31:0 < x28:0 && x29:0 > x28:0 && x29:0 - x28:0 * x31:0 > 0 f4642_0_findKthPrime_Load(x36:0, x37:0, x38:0) -> f5300_0_checkPrime_GE(x36:0, x38:0, 2, x37:0 + 1) :|: x38:0 < x36:0 && x37:0 > 0 f5300_0_checkPrime_GE(x10:0, x11:0, x12:0, x13:0) -> f5300_0_checkPrime_GE'(x10:0, x11:0, x12:0, x13:0) :|: x13:0 > x12:0 && x13:0 - x12:0 * x14:0 > 0 ---------------------------------------- (16) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (17) Obligation: Rules: f5300_0_checkPrime_GE'(x26:0:0, x27:0:0, x28:0:0, x29:0:0) -> f5300_0_checkPrime_GE(x26:0:0, x27:0:0, x28:0:0 + 1, x29:0:0) :|: x29:0:0 > x28:0:0 && x29:0:0 - x28:0:0 * x31:0:0 > 0 && x29:0:0 - x28:0:0 * x31:0:0 < x28:0:0 && x29:0:0 - x28:0:0 * x31:0:0 + x28:0:0 > 0 f5300_0_checkPrime_GE'(x5:0:0, x6:0:0, x7:0:0, x8:0:0) -> f5300_0_checkPrime_GE(x5:0:0, x6:0:0, 2, x8:0:0 + 1) :|: x6:0:0 < x5:0:0 && x8:0:0 - x7:0:0 * x9:0:0 = 0 && x8:0:0 > 0 && x8:0:0 > x7:0:0 && x8:0:0 - x7:0:0 * x9:0:0 < x7:0:0 && x8:0:0 - x7:0:0 * x9:0:0 + x7:0:0 > 0 f5300_0_checkPrime_GE(x:0:0, x1:0:0, x2:0:0, x3:0:0) -> f5300_0_checkPrime_GE'(x:0:0, x1:0:0, x2:0:0, x3:0:0) :|: x3:0:0 > x2:0:0 && x3:0:0 - x2:0:0 * x4:0:0 = 0 f5300_0_checkPrime_GE(x10:0:0, x11:0:0, x12:0:0, x13:0:0) -> f5300_0_checkPrime_GE'(x10:0:0, x11:0:0, x12:0:0, x13:0:0) :|: x13:0:0 > x12:0:0 && x13:0:0 - x12:0:0 * x14:0:0 > 0 ---------------------------------------- (18) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: RandomHard.getNext()I 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: ---------------------------------------- (19) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 13 IRulesP rules: f5539_0_getPowerOfKInSource_Load(EOS(STATIC_5539), i702, i703, i703) -> f5542_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5542), i702, i703, i703, i702) :|: TRUE f5542_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5542), i723, i703, i703, i723) -> f5545_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5545), i723, i703, i703, i723) :|: TRUE f5545_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5545), i723, i703, i703, i723) -> f5548_0_getPowerOfKInSource_NE(EOS(STATIC_5548), i723, i703, i703 % i723) :|: TRUE f5548_0_getPowerOfKInSource_NE(EOS(STATIC_5548), i723, i703, matching1) -> f5551_0_getPowerOfKInSource_NE(EOS(STATIC_5551), i723, i703, 0) :|: TRUE && matching1 = 0 f5551_0_getPowerOfKInSource_NE(EOS(STATIC_5551), i723, i703, matching1) -> f5554_0_getPowerOfKInSource_Load(EOS(STATIC_5554), i723, i703) :|: TRUE && matching1 = 0 f5554_0_getPowerOfKInSource_Load(EOS(STATIC_5554), i723, i703) -> f5557_0_getPowerOfKInSource_Load(EOS(STATIC_5557), i723, i703) :|: TRUE f5557_0_getPowerOfKInSource_Load(EOS(STATIC_5557), i723, i703) -> f5559_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5559), i723, i703, i723) :|: TRUE f5559_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5559), i723, i703, i723) -> f5562_0_getPowerOfKInSource_Store(EOS(STATIC_5562), i723, i731) :|: i731 = i703 / i723 f5562_0_getPowerOfKInSource_Store(EOS(STATIC_5562), i723, i731) -> f5565_0_getPowerOfKInSource_Inc(EOS(STATIC_5565), i723, i731) :|: TRUE f5565_0_getPowerOfKInSource_Inc(EOS(STATIC_5565), i723, i731) -> f5567_0_getPowerOfKInSource_JMP(EOS(STATIC_5567), i723, i731) :|: TRUE f5567_0_getPowerOfKInSource_JMP(EOS(STATIC_5567), i723, i731) -> f5569_0_getPowerOfKInSource_Load(EOS(STATIC_5569), i723, i731) :|: TRUE f5569_0_getPowerOfKInSource_Load(EOS(STATIC_5569), i723, i731) -> f5514_0_getPowerOfKInSource_Load(EOS(STATIC_5514), i723, i731) :|: TRUE f5514_0_getPowerOfKInSource_Load(EOS(STATIC_5514), i702, i703) -> f5539_0_getPowerOfKInSource_Load(EOS(STATIC_5539), i702, i703, i703) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f5539_0_getPowerOfKInSource_Load(EOS(STATIC_5539), i702:0, i703:0, i703:0) -> f5539_0_getPowerOfKInSource_Load'(EOS(STATIC_5539), i702:0, i703:0, i703:0) :|: i703:0 - i702:0 * div = 0 f5539_0_getPowerOfKInSource_Load'(EOS(STATIC_5539), i702:0, i703:0, i703:0) -> f5539_0_getPowerOfKInSource_Load(EOS(STATIC_5539), i702:0, div1, div1) :|: i703:0 - i702:0 * div = 0 && i703:0 - i702:0 * div + i702:0 > 0 && i703:0 - i702:0 * div < i702:0 && i703:0 - i702:0 * div1 < i702:0 && i703:0 - i702:0 * div1 + i702:0 > 0 Filtered constant ground arguments: f5539_0_getPowerOfKInSource_Load(x1, x2, x3, x4) -> f5539_0_getPowerOfKInSource_Load(x2, x3, x4) f5539_0_getPowerOfKInSource_Load'(x1, x2, x3, x4) -> f5539_0_getPowerOfKInSource_Load'(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f5539_0_getPowerOfKInSource_Load(x1, x2, x3) -> f5539_0_getPowerOfKInSource_Load(x1, x3) f5539_0_getPowerOfKInSource_Load'(x1, x2, x3) -> f5539_0_getPowerOfKInSource_Load'(x1, x3) Finished conversion. Obtained 2 rules.P rules: f5539_0_getPowerOfKInSource_Load(i702:0, i703:0) -> f5539_0_getPowerOfKInSource_Load'(i702:0, i703:0) :|: i703:0 - i702:0 * div = 0 f5539_0_getPowerOfKInSource_Load'(i702:0, i703:0) -> f5539_0_getPowerOfKInSource_Load(i702:0, div1) :|: i703:0 - i702:0 * div + i702:0 > 0 && i703:0 - i702:0 * div = 0 && i703:0 - i702:0 * div < i702:0 && i703:0 - i702:0 * div1 + i702:0 > 0 && i703:0 - i702:0 * div1 < i702:0 ---------------------------------------- (20) Obligation: Rules: f5539_0_getPowerOfKInSource_Load(x, x1) -> f5539_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 f5539_0_getPowerOfKInSource_Load'(x3, x4) -> f5539_0_getPowerOfKInSource_Load(x3, x5) :|: x4 - x3 * x6 + x3 > 0 && x4 - x3 * x6 = 0 && x4 - x3 * x6 < x3 && x4 - x3 * x5 + x3 > 0 && x4 - x3 * x5 < x3 ---------------------------------------- (21) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (22) Obligation: Rules: f5539_0_getPowerOfKInSource_Load(x, x1) -> f5539_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 f5539_0_getPowerOfKInSource_Load'(x3, x4) -> f5539_0_getPowerOfKInSource_Load(x3, x5) :|: x4 - x3 * x6 + x3 > 0 && x4 - x3 * x6 = 0 && x4 - x3 * x6 < x3 && x4 - x3 * x5 + x3 > 0 && x4 - x3 * x5 < x3 ---------------------------------------- (23) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5539_0_getPowerOfKInSource_Load(x, x1) -> f5539_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 (2) f5539_0_getPowerOfKInSource_Load'(x3, x4) -> f5539_0_getPowerOfKInSource_Load(x3, x5) :|: x4 - x3 * x6 + x3 > 0 && x4 - x3 * x6 = 0 && x4 - x3 * x6 < x3 && x4 - x3 * x5 + x3 > 0 && x4 - x3 * x5 < x3 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (24) Obligation: Termination digraph: Nodes: (1) f5539_0_getPowerOfKInSource_Load(x, x1) -> f5539_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 (2) f5539_0_getPowerOfKInSource_Load'(x3, x4) -> f5539_0_getPowerOfKInSource_Load(x3, x5) :|: x4 - x3 * x6 + x3 > 0 && x4 - x3 * x6 = 0 && x4 - x3 * x6 < x3 && x4 - x3 * x5 + x3 > 0 && x4 - x3 * x5 < x3 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (25) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (26) Obligation: Rules: f5539_0_getPowerOfKInSource_Load(x:0, x1:0) -> f5539_0_getPowerOfKInSource_Load(x:0, x5:0) :|: x:0 > x1:0 - x:0 * x5:0 && x1:0 - x:0 * x2:0 = 0 && x1:0 - x:0 * x5:0 + x:0 > 0 && x:0 > x1:0 - x:0 * x6:0 && x1:0 - x:0 * x6:0 = 0 && x1:0 - x:0 * x6:0 + x:0 > 0 ---------------------------------------- (27) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f5539_0_getPowerOfKInSource_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (28) Obligation: Rules: f5539_0_getPowerOfKInSource_Load(x:0, x1:0) -> f5539_0_getPowerOfKInSource_Load(x:0, x5:0) :|: x:0 > x1:0 - x:0 * x5:0 && x1:0 - x:0 * x2:0 = 0 && x1:0 - x:0 * x5:0 + x:0 > 0 && x:0 > x1:0 - x:0 * x6:0 && x1:0 - x:0 * x6:0 = 0 && x1:0 - x:0 * x6:0 + x:0 > 0 ---------------------------------------- (29) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (30) Obligation: Rules: f5539_0_getPowerOfKInSource_Load(x:0:0, x1:0:0) -> f5539_0_getPowerOfKInSource_Load(x:0:0, x5:0:0) :|: x1:0:0 - x:0:0 * x6:0:0 = 0 && x1:0:0 - x:0:0 * x6:0:0 + x:0:0 > 0 && x:0:0 > x1:0:0 - x:0:0 * x6:0:0 && x1:0:0 - x:0:0 * x5:0:0 + x:0:0 > 0 && x1:0:0 - x:0:0 * x2:0:0 = 0 && x:0:0 > x1:0:0 - x:0:0 * x5:0:0 ---------------------------------------- (31) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, x:0:0, x1:0:0) -> f(1, x:0:0, x5:0:0) :|: pc = 1 && (x1:0:0 - x:0:0 * x6:0:0 = 0 && x1:0:0 - x:0:0 * x6:0:0 + x:0:0 > 0 && x:0:0 > x1:0:0 - x:0:0 * x6:0:0 && x1:0:0 - x:0:0 * x5:0:0 + x:0:0 > 0 && x1:0:0 - x:0:0 * x2:0:0 = 0 && x:0:0 > x1:0:0 - x:0:0 * x5:0:0) Witness term starting non-terminating reduction: f(1, 4, 0) ---------------------------------------- (32) NO ---------------------------------------- (33) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: RandomHard.main([Ljava/lang/String;)V SCC calls the following helper methods: RandomHard.getNext()I, RandomHard.findKthPrime(I)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (34) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 15 IRulesP rules: f3466_0_main_Load(EOS(STATIC_3466), java.lang.Object(RandomHard(EOC)), i360, i361, i361) -> f3474_0_main_GE(EOS(STATIC_3474), java.lang.Object(RandomHard(EOC)), i360, i361, i361, i360) :|: TRUE f3474_0_main_GE(EOS(STATIC_3474), java.lang.Object(RandomHard(EOC)), i360, i361, i361, i360) -> f3503_0_main_GE(EOS(STATIC_3503), java.lang.Object(RandomHard(EOC)), i360, i361, i361, i360) :|: i361 < i360 f3503_0_main_GE(EOS(STATIC_3503), java.lang.Object(RandomHard(EOC)), i360, i361, i361, i360) -> f3529_0_main_Load(EOS(STATIC_3529), java.lang.Object(RandomHard(EOC)), i360, i361) :|: i361 < i360 f3529_0_main_Load(EOS(STATIC_3529), java.lang.Object(RandomHard(EOC)), i360, i361) -> f3542_0_main_InvokeMethod(EOS(STATIC_3542), java.lang.Object(RandomHard(EOC)), i360, i361, java.lang.Object(RandomHard(EOC))) :|: TRUE f3542_0_main_InvokeMethod(EOS(STATIC_3542), java.lang.Object(RandomHard(EOC)), i360, i361, java.lang.Object(RandomHard(EOC))) -> f3708_0_getNext_Load(EOS(STATIC_3708), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: i360 >= 1 && i18 > 1 && i359 >= 1 && i361 < i360 f3542_0_main_InvokeMethod(EOS(STATIC_3542), java.lang.Object(RandomHard(EOC)), i360, i361, java.lang.Object(RandomHard(EOC))) -> f3708_1_getNext_Load(EOS(STATIC_3708), java.lang.Object(RandomHard(EOC)), i360, i361, java.lang.Object(RandomHard(EOC))) :|: i360 >= 1 && i18 > 1 && i359 >= 1 && i361 < i360 f3708_0_getNext_Load(EOS(STATIC_3708), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) -> f5743_0_getNext_Load(EOS(STATIC_5743), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: TRUE f5571_0_getNext_Return(EOS(STATIC_5571), java.lang.Object(RandomHard(EOC)), i360, i361) -> f5572_0_getNext_Return(EOS(STATIC_5572), java.lang.Object(RandomHard(EOC)), i360, i361) :|: TRUE f5572_0_getNext_Return(EOS(STATIC_5572), java.lang.Object(RandomHard(EOC)), i360, i361) -> f5573_0_main_StackPop(EOS(STATIC_5573), java.lang.Object(RandomHard(EOC)), i360, i361) :|: TRUE f5573_0_main_StackPop(EOS(STATIC_5573), java.lang.Object(RandomHard(EOC)), i360, i361) -> f5575_0_main_Inc(EOS(STATIC_5575), java.lang.Object(RandomHard(EOC)), i360, i361) :|: TRUE f5575_0_main_Inc(EOS(STATIC_5575), java.lang.Object(RandomHard(EOC)), i360, i361) -> f5577_0_main_JMP(EOS(STATIC_5577), java.lang.Object(RandomHard(EOC)), i360, i361 + 1) :|: TRUE f5577_0_main_JMP(EOS(STATIC_5577), java.lang.Object(RandomHard(EOC)), i360, i751) -> f5579_0_main_Load(EOS(STATIC_5579), java.lang.Object(RandomHard(EOC)), i360, i751) :|: TRUE f5579_0_main_Load(EOS(STATIC_5579), java.lang.Object(RandomHard(EOC)), i360, i751) -> f3422_0_main_Load(EOS(STATIC_3422), java.lang.Object(RandomHard(EOC)), i360, i751) :|: TRUE f3422_0_main_Load(EOS(STATIC_3422), java.lang.Object(RandomHard(EOC)), i360, i361) -> f3466_0_main_Load(EOS(STATIC_3466), java.lang.Object(RandomHard(EOC)), i360, i361, i361) :|: TRUE f3708_1_getNext_Load(EOS(STATIC_3708), java.lang.Object(RandomHard(EOC)), i360, i361, java.lang.Object(RandomHard(EOC))) -> f5571_0_getNext_Return(EOS(STATIC_5571), java.lang.Object(RandomHard(EOC)), i360, i361) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f5571_0_getNext_Return(EOS(STATIC_5571), java.lang.Object(RandomHard(EOC)), i360:0, i361:0) -> f5571_0_getNext_Return(EOS(STATIC_5571), java.lang.Object(RandomHard(EOC)), i360:0, i361:0 + 1) :|: i18:0 > 1 && i360:0 > 0 && i361:0 + 1 < i360:0 && i359:0 > 0 Removed following non-SCC rules: f5571_0_getNext_Return(EOS(STATIC_5571), java.lang.Object(RandomHard(EOC)), i360:0, i361:0) -> f5743_0_getNext_Load(EOS(STATIC_5743), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: i18:0 > 1 && i360:0 > 0 && i361:0 + 1 < i360:0 && i359:0 > 0 Filtered constant ground arguments: f5571_0_getNext_Return(x1, x2, x3, x4) -> f5571_0_getNext_Return(x3, x4) EOS(x1) -> EOS java.lang.Object(x1) -> java.lang.Object RandomHard(x1) -> RandomHard Finished conversion. Obtained 1 rules.P rules: f5571_0_getNext_Return(i360:0, i361:0) -> f5571_0_getNext_Return(i360:0, i361:0 + 1) :|: i360:0 > 0 && i18:0 > 1 && i359:0 > 0 && i361:0 + 1 < i360:0 ---------------------------------------- (35) Obligation: Rules: f5571_0_getNext_Return(i360:0, i361:0) -> f5571_0_getNext_Return(i360:0, i361:0 + 1) :|: i360:0 > 0 && i18:0 > 1 && i359:0 > 0 && i361:0 + 1 < i360:0 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f5571_0_getNext_Return(i360:0, i361:0) -> f5571_0_getNext_Return(i360:0, arith) :|: i360:0 > 0 && i18:0 > 1 && i359:0 > 0 && i361:0 + 1 < i360:0 && arith = i361:0 + 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5571_0_getNext_Return(i360:0, i361:0) -> f5571_0_getNext_Return(i360:0, arith) :|: i360:0 > 0 && i18:0 > 1 && i359:0 > 0 && i361:0 + 1 < i360:0 && arith = i361:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f5571_0_getNext_Return(i360:0, i361:0) -> f5571_0_getNext_Return(i360:0, arith) :|: i360:0 > 0 && i18:0 > 1 && i359:0 > 0 && i361:0 + 1 < i360:0 && arith = i361:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f5571_0_getNext_Return(i360:0:0, i361:0:0) -> f5571_0_getNext_Return(i360:0:0, i361:0:0 + 1) :|: i359:0:0 > 0 && i361:0:0 + 1 < i360:0:0 && i18:0:0 > 1 && i360:0:0 > 0 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5571_0_getNext_Return(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f5571_0_getNext_Return(i360:0:0, i361:0:0) -> f5571_0_getNext_Return(i360:0:0, c) :|: c = i361:0:0 + 1 && (i359:0:0 > 0 && i361:0:0 + 1 < i360:0:0 && i18:0:0 > 1 && i360:0:0 > 0) ---------------------------------------- (44) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f5571_0_getNext_Return(x, x1)] = x - x1 The following rules are decreasing: f5571_0_getNext_Return(i360:0:0, i361:0:0) -> f5571_0_getNext_Return(i360:0:0, c) :|: c = i361:0:0 + 1 && (i359:0:0 > 0 && i361:0:0 + 1 < i360:0:0 && i18:0:0 > 1 && i360:0:0 > 0) The following rules are bounded: f5571_0_getNext_Return(i360:0:0, i361:0:0) -> f5571_0_getNext_Return(i360:0:0, c) :|: c = i361:0:0 + 1 && (i359:0:0 > 0 && i361:0:0 + 1 < i360:0:0 && i18:0:0 > 1 && i360:0:0 > 0) ---------------------------------------- (45) YES