/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: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 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, 891 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 83 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IntTRSCompressionProof [EQUIVALENT, 0 ms] (13) IRSwT (14) TempFilterProof [SOUND, 1582 ms] (15) IRSwT (16) IntTRSCompressionProof [EQUIVALENT, 0 ms] (17) IRSwT (18) JBCTerminationSCC (19) SCCToIRSProof [SOUND, 45 ms] (20) IRSwT (21) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (22) IRSwT (23) IRSwTTerminationDigraphProof [EQUIVALENT, 87 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, 9 ms] (32) NO (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 27 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 34 ms] (43) IntTRS (44) RankingReductionPairProof [EQUIVALENT, 20 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: f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545, i545, i546, i547, i546) -> f4771_0_findKthPrime_GE(EOS(STATIC_4771), i545, i545, i546, i547, i546, i545) :|: TRUE f4771_0_findKthPrime_GE(EOS(STATIC_4771), i545, i545, i546, i547, i546, i545) -> f4774_0_findKthPrime_GE(EOS(STATIC_4774), i545, i545, i546, i547, i546, i545) :|: i546 < i545 f4774_0_findKthPrime_GE(EOS(STATIC_4774), i545, i545, i546, i547, i546, i545) -> f4777_0_findKthPrime_Inc(EOS(STATIC_4777), i545, i545, i546, i547) :|: i546 < i545 f4777_0_findKthPrime_Inc(EOS(STATIC_4777), i545, i545, i546, i547) -> f4781_0_findKthPrime_Load(EOS(STATIC_4781), i545, i545, i546, i547 + 1) :|: TRUE f4781_0_findKthPrime_Load(EOS(STATIC_4781), i545, i545, i546, i554) -> f4785_0_findKthPrime_InvokeMethod(EOS(STATIC_4785), i545, i545, i546, i554, i554) :|: TRUE f4785_0_findKthPrime_InvokeMethod(EOS(STATIC_4785), i545, i545, i546, i554, i554) -> f4799_0_checkPrime_Load(EOS(STATIC_4799), i545, i545, i546, i554, i554) :|: TRUE f4799_0_checkPrime_Load(EOS(STATIC_4799), i545, i545, i546, i554, i554) -> f4805_0_checkPrime_ConstantStackPush(EOS(STATIC_4805), i545, i545, i546, i554, i554, i554) :|: TRUE f4805_0_checkPrime_ConstantStackPush(EOS(STATIC_4805), i545, i545, i546, i554, i554, i554) -> f4807_0_checkPrime_GE(EOS(STATIC_4807), i545, i545, i546, i554, i554, i554, 2) :|: TRUE f4807_0_checkPrime_GE(EOS(STATIC_4807), i545, i545, i546, i565, i565, i565, matching1) -> f4809_0_checkPrime_GE(EOS(STATIC_4809), i545, i545, i546, i565, i565, i565, 2) :|: TRUE && matching1 = 2 f4807_0_checkPrime_GE(EOS(STATIC_4807), i545, i545, i546, i566, i566, i566, matching1) -> f4810_0_checkPrime_GE(EOS(STATIC_4810), i545, i545, i546, i566, i566, i566, 2) :|: TRUE && matching1 = 2 f4809_0_checkPrime_GE(EOS(STATIC_4809), i545, i545, i546, i565, i565, i565, matching1) -> f4812_0_checkPrime_ConstantStackPush(EOS(STATIC_4812), i545, i545, i546, i565) :|: i565 < 2 && matching1 = 2 f4812_0_checkPrime_ConstantStackPush(EOS(STATIC_4812), i545, i545, i546, i565) -> f4815_0_checkPrime_Return(EOS(STATIC_4815), i545, i545, i546, i565, 0) :|: TRUE f4815_0_checkPrime_Return(EOS(STATIC_4815), i545, i545, i546, i565, matching1) -> f4818_0_findKthPrime_Store(EOS(STATIC_4818), i545, i545, i546, i565, 0) :|: TRUE && matching1 = 0 f4818_0_findKthPrime_Store(EOS(STATIC_4818), i545, i545, i546, i565, matching1) -> f4821_0_findKthPrime_Load(EOS(STATIC_4821), i545, i545, i546, i565, 0) :|: TRUE && matching1 = 0 f4821_0_findKthPrime_Load(EOS(STATIC_4821), i545, i545, i546, i565, matching1) -> f4824_0_findKthPrime_EQ(EOS(STATIC_4824), i545, i545, i546, i565, 0) :|: TRUE && matching1 = 0 f4824_0_findKthPrime_EQ(EOS(STATIC_4824), i545, i545, i546, i565, matching1) -> f4827_0_findKthPrime_JMP(EOS(STATIC_4827), i545, i545, i546, i565) :|: TRUE && matching1 = 0 f4827_0_findKthPrime_JMP(EOS(STATIC_4827), i545, i545, i546, i565) -> f4852_0_findKthPrime_Load(EOS(STATIC_4852), i545, i545, i546, i565) :|: TRUE f4852_0_findKthPrime_Load(EOS(STATIC_4852), i545, i545, i546, i565) -> f4767_0_findKthPrime_Load(EOS(STATIC_4767), i545, i545, i546, i565) :|: TRUE f4767_0_findKthPrime_Load(EOS(STATIC_4767), i545, i545, i546, i547) -> f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545, i545, i546, i547, i546) :|: TRUE f4810_0_checkPrime_GE(EOS(STATIC_4810), i545, i545, i546, i566, i566, i566, matching1) -> f4813_0_checkPrime_ConstantStackPush(EOS(STATIC_4813), i545, i545, i546, i566, i566) :|: i566 >= 2 && matching1 = 2 f4813_0_checkPrime_ConstantStackPush(EOS(STATIC_4813), i545, i545, i546, i566, i566) -> f4816_0_checkPrime_Store(EOS(STATIC_4816), i545, i545, i546, i566, i566, 2) :|: TRUE f4816_0_checkPrime_Store(EOS(STATIC_4816), i545, i545, i546, i566, i566, matching1) -> f4819_0_checkPrime_Load(EOS(STATIC_4819), i545, i545, i546, i566, i566, 2) :|: TRUE && matching1 = 2 f4819_0_checkPrime_Load(EOS(STATIC_4819), i545, i545, i546, i566, i566, matching1) -> f4948_0_checkPrime_Load(EOS(STATIC_4948), i545, i545, i546, i566, i566, 2) :|: TRUE && matching1 = 2 f4948_0_checkPrime_Load(EOS(STATIC_4948), i545, i545, i546, i577, i577, i578) -> f5106_0_checkPrime_Load(EOS(STATIC_5106), i545, i545, i546, i577, i577, i578) :|: TRUE f5106_0_checkPrime_Load(EOS(STATIC_5106), i545, i545, i546, i595, i595, i596) -> f5357_0_checkPrime_Load(EOS(STATIC_5357), i545, i545, i546, i595, i595, i596) :|: TRUE f5357_0_checkPrime_Load(EOS(STATIC_5357), i545, i545, i546, i632, i632, i633) -> f5368_0_checkPrime_Load(EOS(STATIC_5368), i545, i545, i546, i632, i632, i633, i633) :|: TRUE f5368_0_checkPrime_Load(EOS(STATIC_5368), i545, i545, i546, i632, i632, i633, i633) -> f5406_0_checkPrime_GE(EOS(STATIC_5406), i545, i545, i546, i632, i632, i633, i633, i632) :|: TRUE f5406_0_checkPrime_GE(EOS(STATIC_5406), i545, i545, i546, i632, i632, i633, i633, i632) -> f5466_0_checkPrime_GE(EOS(STATIC_5466), i545, i545, i546, i632, i632, i633, i633, i632) :|: i633 >= i632 f5406_0_checkPrime_GE(EOS(STATIC_5406), i545, i545, i546, i632, i632, i633, i633, i632) -> f5467_0_checkPrime_GE(EOS(STATIC_5467), i545, i545, i546, i632, i632, i633, i633, i632) :|: i633 < i632 f5466_0_checkPrime_GE(EOS(STATIC_5466), i545, i545, i546, i632, i632, i633, i633, i632) -> f5474_0_checkPrime_ConstantStackPush(EOS(STATIC_5474), i545, i545, i546, i632) :|: i633 >= i632 f5474_0_checkPrime_ConstantStackPush(EOS(STATIC_5474), i545, i545, i546, i632) -> f5487_0_checkPrime_Return(EOS(STATIC_5487), i545, i545, i546, i632, 1) :|: TRUE f5487_0_checkPrime_Return(EOS(STATIC_5487), i545, i545, i546, i632, matching1) -> f5497_0_findKthPrime_Store(EOS(STATIC_5497), i545, i545, i546, i632, 1) :|: TRUE && matching1 = 1 f5497_0_findKthPrime_Store(EOS(STATIC_5497), i545, i545, i546, i632, matching1) -> f5513_0_findKthPrime_Load(EOS(STATIC_5513), i545, i545, i546, i632, 1) :|: TRUE && matching1 = 1 f5513_0_findKthPrime_Load(EOS(STATIC_5513), i545, i545, i546, i632, matching1) -> f5524_0_findKthPrime_EQ(EOS(STATIC_5524), i545, i545, i546, i632, 1) :|: TRUE && matching1 = 1 f5524_0_findKthPrime_EQ(EOS(STATIC_5524), i545, i545, i546, i632, matching1) -> f5532_0_findKthPrime_Inc(EOS(STATIC_5532), i545, i545, i546, i632) :|: 1 > 0 && matching1 = 1 f5532_0_findKthPrime_Inc(EOS(STATIC_5532), i545, i545, i546, i632) -> f5539_0_findKthPrime_JMP(EOS(STATIC_5539), i545, i545, i546 + 1, i632) :|: TRUE f5539_0_findKthPrime_JMP(EOS(STATIC_5539), i545, i545, i692, i632) -> f5550_0_findKthPrime_Load(EOS(STATIC_5550), i545, i545, i692, i632) :|: TRUE f5550_0_findKthPrime_Load(EOS(STATIC_5550), i545, i545, i692, i632) -> f4767_0_findKthPrime_Load(EOS(STATIC_4767), i545, i545, i692, i632) :|: TRUE f5467_0_checkPrime_GE(EOS(STATIC_5467), i545, i545, i546, i632, i632, i633, i633, i632) -> f5479_0_checkPrime_Load(EOS(STATIC_5479), i545, i545, i546, i632, i632, i633) :|: i633 < i632 f5479_0_checkPrime_Load(EOS(STATIC_5479), i545, i545, i546, i632, i632, i633) -> f5488_0_checkPrime_Load(EOS(STATIC_5488), i545, i545, i546, i632, i632, i633, i632) :|: TRUE f5488_0_checkPrime_Load(EOS(STATIC_5488), i545, i545, i546, i632, i632, i633, i632) -> f5499_0_checkPrime_IntArithmetic(EOS(STATIC_5499), i545, i545, i546, i632, i632, i633, i632, i633) :|: TRUE f5499_0_checkPrime_IntArithmetic(EOS(STATIC_5499), i545, i545, i546, i632, i632, i633, i632, i633) -> f5515_0_checkPrime_NE(EOS(STATIC_5515), i545, i545, i546, i632, i632, i633, i632 % i633) :|: TRUE f5515_0_checkPrime_NE(EOS(STATIC_5515), i545, i545, i546, i632, i632, i633, i691) -> f5527_0_checkPrime_NE(EOS(STATIC_5527), i545, i545, i546, i632, i632, i633, i691) :|: TRUE f5515_0_checkPrime_NE(EOS(STATIC_5515), i545, i545, i546, i632, i632, i633, matching1) -> f5528_0_checkPrime_NE(EOS(STATIC_5528), i545, i545, i546, i632, i632, i633, 0) :|: TRUE && matching1 = 0 f5527_0_checkPrime_NE(EOS(STATIC_5527), i545, i545, i546, i632, i632, i633, i691) -> f5534_0_checkPrime_Inc(EOS(STATIC_5534), i545, i545, i546, i632, i632, i633) :|: i691 > 0 f5534_0_checkPrime_Inc(EOS(STATIC_5534), i545, i545, i546, i632, i632, i633) -> f5545_0_checkPrime_JMP(EOS(STATIC_5545), i545, i545, i546, i632, i632, i633 + 1) :|: TRUE f5545_0_checkPrime_JMP(EOS(STATIC_5545), i545, i545, i546, i632, i632, i693) -> f5551_0_checkPrime_Load(EOS(STATIC_5551), i545, i545, i546, i632, i632, i693) :|: TRUE f5551_0_checkPrime_Load(EOS(STATIC_5551), i545, i545, i546, i632, i632, i693) -> f5357_0_checkPrime_Load(EOS(STATIC_5357), i545, i545, i546, i632, i632, i693) :|: TRUE f5528_0_checkPrime_NE(EOS(STATIC_5528), i545, i545, i546, i632, i632, i633, matching1) -> f5536_0_checkPrime_ConstantStackPush(EOS(STATIC_5536), i545, i545, i546, i632) :|: TRUE && matching1 = 0 f5536_0_checkPrime_ConstantStackPush(EOS(STATIC_5536), i545, i545, i546, i632) -> f5546_0_checkPrime_Return(EOS(STATIC_5546), i545, i545, i546, i632, 0) :|: TRUE f5546_0_checkPrime_Return(EOS(STATIC_5546), i545, i545, i546, i632, matching1) -> f5552_0_findKthPrime_Store(EOS(STATIC_5552), i545, i545, i546, i632, 0) :|: TRUE && matching1 = 0 f5552_0_findKthPrime_Store(EOS(STATIC_5552), i545, i545, i546, i632, matching1) -> f5556_0_findKthPrime_Load(EOS(STATIC_5556), i545, i545, i546, i632, 0) :|: TRUE && matching1 = 0 f5556_0_findKthPrime_Load(EOS(STATIC_5556), i545, i545, i546, i632, matching1) -> f5559_0_findKthPrime_EQ(EOS(STATIC_5559), i545, i545, i546, i632, 0) :|: TRUE && matching1 = 0 f5559_0_findKthPrime_EQ(EOS(STATIC_5559), i545, i545, i546, i632, matching1) -> f5563_0_findKthPrime_JMP(EOS(STATIC_5563), i545, i545, i546, i632) :|: TRUE && matching1 = 0 f5563_0_findKthPrime_JMP(EOS(STATIC_5563), i545, i545, i546, i632) -> f5567_0_findKthPrime_Load(EOS(STATIC_5567), i545, i545, i546, i632) :|: TRUE f5567_0_findKthPrime_Load(EOS(STATIC_5567), i545, i545, i546, i632) -> f4767_0_findKthPrime_Load(EOS(STATIC_4767), i545, i545, i546, i632) :|: TRUE Combined rules. Obtained 7 IRulesP rules: f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545:0, i545:0, i546:0, i547:0, i546:0) -> f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545:0, i545:0, i546:0, i547:0 + 1, i546:0) :|: i546:0 < i545:0 && i547:0 < 1 f5406_0_checkPrime_GE(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) -> f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545:0, i545:0, i546:0 + 1, i632:0, i546:0 + 1) :|: i633:0 >= i632:0 f5406_0_checkPrime_GE(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) -> f5406_0_checkPrime_GE'(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div > 0 f5406_0_checkPrime_GE'(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) -> f5406_0_checkPrime_GE(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0 + 1, i633:0 + 1, i632:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div > 0 && i633:0 > i632:0 - i633:0 * div && i632:0 - i633:0 * div + i633:0 > 0 f5406_0_checkPrime_GE(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) -> f5406_0_checkPrime_GE'(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div = 0 f5406_0_checkPrime_GE'(EOS(STATIC_5406), i545:0, i545:0, i546:0, i632:0, i632:0, i633:0, i633:0, i632:0) -> f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545:0, i545:0, i546:0, i632:0, i546:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div = 0 && i633:0 > i632:0 - i633:0 * div && i632:0 - i633:0 * div + i633:0 > 0 f4769_0_findKthPrime_Load(EOS(STATIC_4769), i545:0, i545:0, i546:0, i547:0, i546:0) -> f5406_0_checkPrime_GE(EOS(STATIC_5406), i545:0, i545:0, i546:0, i547:0 + 1, i547:0 + 1, 2, 2, i547:0 + 1) :|: i546:0 < i545:0 && i547:0 > 0 Filtered constant ground arguments: f4769_0_findKthPrime_Load(x1, x2, x3, x4, x5, x6) -> f4769_0_findKthPrime_Load(x2, x3, x4, x5, x6) f5406_0_checkPrime_GE(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f5406_0_checkPrime_GE(x2, x3, x4, x5, x6, x7, x8, x9) f5406_0_checkPrime_GE'(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f5406_0_checkPrime_GE'(x2, x3, x4, x5, x6, x7, x8, x9) Filtered duplicate arguments: f4769_0_findKthPrime_Load(x1, x2, x3, x4, x5) -> f4769_0_findKthPrime_Load(x2, x4, x5) f5406_0_checkPrime_GE(x1, x2, x3, x4, x5, x6, x7, x8) -> f5406_0_checkPrime_GE(x2, x3, x7, x8) f5406_0_checkPrime_GE'(x1, x2, x3, x4, x5, x6, x7, x8) -> f5406_0_checkPrime_GE'(x2, x3, x7, x8) Finished conversion. Obtained 7 rules.P rules: f4769_0_findKthPrime_Load(i545:0, i547:0, i546:0) -> f4769_0_findKthPrime_Load(i545:0, i547:0 + 1, i546:0) :|: i546:0 < i545:0 && i547:0 < 1 f5406_0_checkPrime_GE(i545:0, i546:0, i633:0, i632:0) -> f4769_0_findKthPrime_Load(i545:0, i632:0, i546:0 + 1) :|: i633:0 >= i632:0 f5406_0_checkPrime_GE(i545:0, i546:0, i633:0, i632:0) -> f5406_0_checkPrime_GE'(i545:0, i546:0, i633:0, i632:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div > 0 f5406_0_checkPrime_GE'(i545:0, i546:0, i633:0, i632:0) -> f5406_0_checkPrime_GE(i545:0, i546:0, i633:0 + 1, i632:0) :|: i632:0 - i633:0 * div > 0 && i633:0 < i632:0 && i632:0 - i633:0 * div + i633:0 > 0 && i633:0 > i632:0 - i633:0 * div f5406_0_checkPrime_GE(i545:0, i546:0, i633:0, i632:0) -> f5406_0_checkPrime_GE'(i545:0, i546:0, i633:0, i632:0) :|: i633:0 < i632:0 && i632:0 - i633:0 * div = 0 f5406_0_checkPrime_GE'(i545:0, i546:0, i633:0, i632:0) -> f4769_0_findKthPrime_Load(i545:0, i632:0, i546:0) :|: i632:0 - i633:0 * div = 0 && i633:0 < i632:0 && i632:0 - i633:0 * div + i633:0 > 0 && i633:0 > i632:0 - i633:0 * div f4769_0_findKthPrime_Load(i545:0, i547:0, i546:0) -> f5406_0_checkPrime_GE(i545:0, i546:0, 2, i547:0 + 1) :|: i546:0 < i545:0 && i547:0 > 0 ---------------------------------------- (9) Obligation: Rules: f4769_0_findKthPrime_Load(i545:0, i547:0, i546:0) -> f4769_0_findKthPrime_Load(i545:0, i547:0 + 1, i546:0) :|: i546:0 < i545:0 && i547:0 < 1 f5406_0_checkPrime_GE(x, x1, x2, x3) -> f4769_0_findKthPrime_Load(x, x3, x1 + 1) :|: x2 >= x3 f5406_0_checkPrime_GE(x4, x5, x6, x7) -> f5406_0_checkPrime_GE'(x4, x5, x6, x7) :|: x6 < x7 && x7 - x6 * x8 > 0 f5406_0_checkPrime_GE'(x9, x10, x11, x12) -> f5406_0_checkPrime_GE(x9, x10, x11 + 1, x12) :|: x12 - x11 * x13 > 0 && x11 < x12 && x12 - x11 * x13 + x11 > 0 && x11 > x12 - x11 * x13 f5406_0_checkPrime_GE(x14, x15, x16, x17) -> f5406_0_checkPrime_GE'(x14, x15, x16, x17) :|: x16 < x17 && x17 - x16 * x18 = 0 f5406_0_checkPrime_GE'(x19, x20, x21, x22) -> f4769_0_findKthPrime_Load(x19, x22, x20) :|: x22 - x21 * x23 = 0 && x21 < x22 && x22 - x21 * x23 + x21 > 0 && x21 > x22 - x21 * x23 f4769_0_findKthPrime_Load(x24, x25, x26) -> f5406_0_checkPrime_GE(x24, x26, 2, x25 + 1) :|: x26 < x24 && x25 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f4769_0_findKthPrime_Load(i545:0, i547:0, i546:0) -> f4769_0_findKthPrime_Load(i545:0, arith, i546:0) :|: i546:0 < i545:0 && i547:0 < 1 && arith = i547:0 + 1 f5406_0_checkPrime_GE(x27, x28, x29, x30) -> f4769_0_findKthPrime_Load(x27, x30, x31) :|: x29 >= x30 && x31 = x28 + 1 f5406_0_checkPrime_GE(x4, x5, x6, x7) -> f5406_0_checkPrime_GE'(x4, x5, x6, x7) :|: x6 < x7 && x7 - x6 * x8 > 0 f5406_0_checkPrime_GE'(x32, x33, x34, x35) -> f5406_0_checkPrime_GE(x32, x33, x36, x35) :|: x35 - x34 * x37 > 0 && x34 < x35 && x35 - x34 * x37 + x34 > 0 && x34 > x35 - x34 * x37 && x36 = x34 + 1 f5406_0_checkPrime_GE(x14, x15, x16, x17) -> f5406_0_checkPrime_GE'(x14, x15, x16, x17) :|: x16 < x17 && x17 - x16 * x18 = 0 f5406_0_checkPrime_GE'(x19, x20, x21, x22) -> f4769_0_findKthPrime_Load(x19, x22, x20) :|: x22 - x21 * x23 = 0 && x21 < x22 && x22 - x21 * x23 + x21 > 0 && x21 > x22 - x21 * x23 f4769_0_findKthPrime_Load(x38, x39, x40) -> f5406_0_checkPrime_GE(x38, x40, 2, x41) :|: x40 < x38 && x39 > 0 && x41 = x39 + 1 ---------------------------------------- (12) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (13) Obligation: Rules: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, 2, x39:0 + 1) :|: x40:0 < x38:0 && x39:0 > 0 f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, x28:0 + 1) :|: x30:0 <= x29:0 f4769_0_findKthPrime_Load(i545:0:0, i547:0:0, i546:0:0) -> f4769_0_findKthPrime_Load(i545:0:0, i547:0:0 + 1, i546:0:0) :|: i546:0:0 < i545:0:0 && i547:0:0 < 1 f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, x34:0 + 1, x35:0) :|: x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0 f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 ---------------------------------------- (14) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4769_0_findKthPrime_Load(VARIABLE, INTEGER, VARIABLE) f5406_0_checkPrime_GE(VARIABLE, VARIABLE, VARIABLE, INTEGER) f5406_0_checkPrime_GE'(VARIABLE, VARIABLE, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0.The following proof was generated: # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given IntTRS could not be shown: - IntTRS - RankingReductionPairProof Rules: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, c, c1) :|: c1 = x39:0 + 1 && c = 2 && (x40:0 < x38:0 && x39:0 > 0) f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f4769_0_findKthPrime_Load(i545:0:0, i547:0:0, i546:0:0) -> f4769_0_findKthPrime_Load(i545:0:0, c3, i546:0:0) :|: c3 = i547:0:0 + 1 && (i546:0:0 < i545:0:0 && i547:0:0 < 1) f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 Interpretation: [ f4769_0_findKthPrime_Load ] = -2*f4769_0_findKthPrime_Load_3 + 2*f4769_0_findKthPrime_Load_1 + -5*f4769_0_findKthPrime_Load_2 + -4 [ f5406_0_checkPrime_GE ] = 2*f5406_0_checkPrime_GE_1 + -2*f5406_0_checkPrime_GE_2 + -5*f5406_0_checkPrime_GE_4 [ f5406_0_checkPrime_GE' ] = 2*f5406_0_checkPrime_GE'_1 + -2*f5406_0_checkPrime_GE'_2 + -5*f5406_0_checkPrime_GE'_4 The following rules are decreasing: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, c, c1) :|: c1 = x39:0 + 1 && c = 2 && (x40:0 < x38:0 && x39:0 > 0) f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f4769_0_findKthPrime_Load(i545:0:0, i547:0:0, i546:0:0) -> f4769_0_findKthPrime_Load(i545:0:0, c3, i546:0:0) :|: c3 = i547:0:0 + 1 && (i546:0:0 < i545:0:0 && i547:0:0 < 1) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 The following rules are bounded: f4769_0_findKthPrime_Load(i545:0:0, i547:0:0, i546:0:0) -> f4769_0_findKthPrime_Load(i545:0:0, c3, i546:0:0) :|: c3 = i547:0:0 + 1 && (i546:0:0 < i545:0:0 && i547:0:0 < 1) - IntTRS - RankingReductionPairProof - IntTRS - RankingReductionPairProof Rules: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, c, c1) :|: c1 = x39:0 + 1 && c = 2 && (x40:0 < x38:0 && x39:0 > 0) f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 Interpretation: [ f4769_0_findKthPrime_Load ] = -2*f4769_0_findKthPrime_Load_3 + 2*f4769_0_findKthPrime_Load_1 + 1 [ f5406_0_checkPrime_GE ] = 2*f5406_0_checkPrime_GE_1 + -2*f5406_0_checkPrime_GE_2 + 1 [ f5406_0_checkPrime_GE' ] = 2*f5406_0_checkPrime_GE'_1 + -2*f5406_0_checkPrime_GE'_2 + 1 The following rules are decreasing: f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 The following rules are bounded: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, c, c1) :|: c1 = x39:0 + 1 && c = 2 && (x40:0 < x38:0 && x39:0 > 0) - IntTRS - RankingReductionPairProof - IntTRS - RankingReductionPairProof - AND - IntTRS - IntTRS - IntTRS Rules: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, c, c1) :|: c1 = x39:0 + 1 && c = 2 && (x40:0 < x38:0 && x39:0 > 0) f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 - IntTRS - RankingReductionPairProof - IntTRS - RankingReductionPairProof - AND - IntTRS - IntTRS - IntTRS - PolynomialOrderProcessor Rules: f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 Found the following polynomial interpretation: [f5406_0_checkPrime_GE(x, x1, x2, x3)] = 0 [f4769_0_findKthPrime_Load(x4, x5, x6)] = -1 [f5406_0_checkPrime_GE'(x7, x8, x9, x10)] = 0 The following rules are decreasing: f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 The following rules are bounded: f5406_0_checkPrime_GE(x27:0, x28:0, x29:0, x30:0) -> f4769_0_findKthPrime_Load(x27:0, x30:0, c2) :|: c2 = x28:0 + 1 && x30:0 <= x29:0 f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 - IntTRS - RankingReductionPairProof - IntTRS - RankingReductionPairProof - AND - IntTRS - IntTRS - IntTRS - PolynomialOrderProcessor - IntTRS - PolynomialOrderProcessor Rules: f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 Found the following polynomial interpretation: [f5406_0_checkPrime_GE(x, x1, x2, x3)] = 1 - x2 + x3 [f5406_0_checkPrime_GE'(x4, x5, x6, x7)] = -x6 + x7 The following rules are decreasing: f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 The following rules are bounded: f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 - IntTRS - RankingReductionPairProof - IntTRS - RankingReductionPairProof - AND - IntTRS - IntTRS - IntTRS - PolynomialOrderProcessor - IntTRS - PolynomialOrderProcessor - IntTRS - RankingReductionPairProof Rules: f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) Interpretation: [ f5406_0_checkPrime_GE' ] = 0 [ f5406_0_checkPrime_GE ] = -1 The following rules are decreasing: f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) The following rules are bounded: f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, c4, x35:0) :|: c4 = x34:0 + 1 && (x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0) ---------------------------------------- (15) Obligation: Rules: f4769_0_findKthPrime_Load(x38:0, x39:0, x40:0) -> f5406_0_checkPrime_GE(x38:0, x40:0, 2, x39:0 + 1) :|: x40:0 < x38:0 && x39:0 > 0 f5406_0_checkPrime_GE(x4:0, x5:0, x6:0, x7:0) -> f5406_0_checkPrime_GE'(x4:0, x5:0, x6:0, x7:0) :|: x7:0 > x6:0 && x7:0 - x6:0 * x8:0 > 0 f5406_0_checkPrime_GE'(x32:0, x33:0, x34:0, x35:0) -> f5406_0_checkPrime_GE(x32:0, x33:0, x34:0 + 1, x35:0) :|: x35:0 - x34:0 * x37:0 + x34:0 > 0 && x35:0 - x34:0 * x37:0 < x34:0 && x35:0 > x34:0 && x35:0 - x34:0 * x37:0 > 0 f5406_0_checkPrime_GE'(x19:0, x20:0, x21:0, x22:0) -> f4769_0_findKthPrime_Load(x19:0, x22:0, x20:0) :|: x22:0 - x21:0 * x23:0 + x21:0 > 0 && x22:0 - x21:0 * x23:0 < x21:0 && x22:0 > x21:0 && x22:0 - x21:0 * x23:0 = 0 f5406_0_checkPrime_GE(x14:0, x15:0, x16:0, x17:0) -> f5406_0_checkPrime_GE'(x14:0, x15:0, x16:0, x17:0) :|: x17:0 > x16:0 && x17:0 - x16:0 * x18:0 = 0 ---------------------------------------- (16) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (17) Obligation: Rules: f5406_0_checkPrime_GE(x14:0:0, x15:0:0, x16:0:0, x17:0:0) -> f5406_0_checkPrime_GE'(x14:0:0, x15:0:0, x16:0:0, x17:0:0) :|: x17:0:0 > x16:0:0 && x17:0:0 - x16:0:0 * x18:0:0 = 0 f5406_0_checkPrime_GE'(x32:0:0, x33:0:0, x34:0:0, x35:0:0) -> f5406_0_checkPrime_GE(x32:0:0, x33:0:0, x34:0:0 + 1, x35:0:0) :|: x35:0:0 > x34:0:0 && x35:0:0 - x34:0:0 * x37:0:0 > 0 && x35:0:0 - x34:0:0 * x37:0:0 < x34:0:0 && x35:0:0 - x34:0:0 * x37:0:0 + x34:0:0 > 0 f5406_0_checkPrime_GE'(x19:0:0, x20:0:0, x21:0:0, x22:0:0) -> f5406_0_checkPrime_GE(x19:0:0, x20:0:0, 2, x22:0:0 + 1) :|: x20:0:0 < x19:0:0 && x22:0:0 - x21:0:0 * x23:0:0 = 0 && x22:0:0 > 0 && x22:0:0 > x21:0:0 && x22:0:0 - x21:0:0 * x23:0:0 < x21:0:0 && x22:0:0 - x21:0:0 * x23:0:0 + x21:0:0 > 0 f5406_0_checkPrime_GE(x4:0:0, x5:0:0, x6:0:0, x7:0:0) -> f5406_0_checkPrime_GE'(x4:0:0, x5:0:0, x6:0:0, x7:0:0) :|: x7:0:0 > x6:0:0 && x7:0:0 - x6:0:0 * x8: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: f5566_0_getPowerOfKInSource_Load(EOS(STATIC_5566), i706, i707, i707) -> f5569_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5569), i706, i707, i707, i706) :|: TRUE f5569_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5569), i723, i707, i707, i723) -> f5572_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5572), i723, i707, i707, i723) :|: TRUE f5572_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5572), i723, i707, i707, i723) -> f5575_0_getPowerOfKInSource_NE(EOS(STATIC_5575), i723, i707, i707 % i723) :|: TRUE f5575_0_getPowerOfKInSource_NE(EOS(STATIC_5575), i723, i707, matching1) -> f5578_0_getPowerOfKInSource_NE(EOS(STATIC_5578), i723, i707, 0) :|: TRUE && matching1 = 0 f5578_0_getPowerOfKInSource_NE(EOS(STATIC_5578), i723, i707, matching1) -> f5581_0_getPowerOfKInSource_Load(EOS(STATIC_5581), i723, i707) :|: TRUE && matching1 = 0 f5581_0_getPowerOfKInSource_Load(EOS(STATIC_5581), i723, i707) -> f5584_0_getPowerOfKInSource_Load(EOS(STATIC_5584), i723, i707) :|: TRUE f5584_0_getPowerOfKInSource_Load(EOS(STATIC_5584), i723, i707) -> f5586_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5586), i723, i707, i723) :|: TRUE f5586_0_getPowerOfKInSource_IntArithmetic(EOS(STATIC_5586), i723, i707, i723) -> f5589_0_getPowerOfKInSource_Store(EOS(STATIC_5589), i723, i731) :|: i731 = i707 / i723 f5589_0_getPowerOfKInSource_Store(EOS(STATIC_5589), i723, i731) -> f5592_0_getPowerOfKInSource_Inc(EOS(STATIC_5592), i723, i731) :|: TRUE f5592_0_getPowerOfKInSource_Inc(EOS(STATIC_5592), i723, i731) -> f5594_0_getPowerOfKInSource_JMP(EOS(STATIC_5594), i723, i731) :|: TRUE f5594_0_getPowerOfKInSource_JMP(EOS(STATIC_5594), i723, i731) -> f5596_0_getPowerOfKInSource_Load(EOS(STATIC_5596), i723, i731) :|: TRUE f5596_0_getPowerOfKInSource_Load(EOS(STATIC_5596), i723, i731) -> f5562_0_getPowerOfKInSource_Load(EOS(STATIC_5562), i723, i731) :|: TRUE f5562_0_getPowerOfKInSource_Load(EOS(STATIC_5562), i706, i707) -> f5566_0_getPowerOfKInSource_Load(EOS(STATIC_5566), i706, i707, i707) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f5566_0_getPowerOfKInSource_Load(EOS(STATIC_5566), i706:0, i707:0, i707:0) -> f5566_0_getPowerOfKInSource_Load'(EOS(STATIC_5566), i706:0, i707:0, i707:0) :|: i707:0 - i706:0 * div = 0 f5566_0_getPowerOfKInSource_Load'(EOS(STATIC_5566), i706:0, i707:0, i707:0) -> f5566_0_getPowerOfKInSource_Load(EOS(STATIC_5566), i706:0, div1, div1) :|: i707:0 - i706:0 * div = 0 && i707:0 - i706:0 * div + i706:0 > 0 && i707:0 - i706:0 * div < i706:0 && i707:0 - i706:0 * div1 < i706:0 && i707:0 - i706:0 * div1 + i706:0 > 0 Filtered constant ground arguments: f5566_0_getPowerOfKInSource_Load(x1, x2, x3, x4) -> f5566_0_getPowerOfKInSource_Load(x2, x3, x4) f5566_0_getPowerOfKInSource_Load'(x1, x2, x3, x4) -> f5566_0_getPowerOfKInSource_Load'(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f5566_0_getPowerOfKInSource_Load(x1, x2, x3) -> f5566_0_getPowerOfKInSource_Load(x1, x3) f5566_0_getPowerOfKInSource_Load'(x1, x2, x3) -> f5566_0_getPowerOfKInSource_Load'(x1, x3) Finished conversion. Obtained 2 rules.P rules: f5566_0_getPowerOfKInSource_Load(i706:0, i707:0) -> f5566_0_getPowerOfKInSource_Load'(i706:0, i707:0) :|: i707:0 - i706:0 * div = 0 f5566_0_getPowerOfKInSource_Load'(i706:0, i707:0) -> f5566_0_getPowerOfKInSource_Load(i706:0, div1) :|: i707:0 - i706:0 * div + i706:0 > 0 && i707:0 - i706:0 * div = 0 && i707:0 - i706:0 * div < i706:0 && i707:0 - i706:0 * div1 + i706:0 > 0 && i707:0 - i706:0 * div1 < i706:0 ---------------------------------------- (20) Obligation: Rules: f5566_0_getPowerOfKInSource_Load(x, x1) -> f5566_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 f5566_0_getPowerOfKInSource_Load'(x3, x4) -> f5566_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: f5566_0_getPowerOfKInSource_Load(x, x1) -> f5566_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 f5566_0_getPowerOfKInSource_Load'(x3, x4) -> f5566_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) f5566_0_getPowerOfKInSource_Load(x, x1) -> f5566_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 (2) f5566_0_getPowerOfKInSource_Load'(x3, x4) -> f5566_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) f5566_0_getPowerOfKInSource_Load(x, x1) -> f5566_0_getPowerOfKInSource_Load'(x, x1) :|: x1 - x * x2 = 0 (2) f5566_0_getPowerOfKInSource_Load'(x3, x4) -> f5566_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: f5566_0_getPowerOfKInSource_Load(x:0, x1:0) -> f5566_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: f5566_0_getPowerOfKInSource_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (28) Obligation: Rules: f5566_0_getPowerOfKInSource_Load(x:0, x1:0) -> f5566_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: f5566_0_getPowerOfKInSource_Load(x:0:0, x1:0:0) -> f5566_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: f3199_0_main_Load(EOS(STATIC_3199), java.lang.Object(RandomHard(EOC)), i353, i354, i354) -> f3205_0_main_GE(EOS(STATIC_3205), java.lang.Object(RandomHard(EOC)), i353, i354, i354, i353) :|: TRUE f3205_0_main_GE(EOS(STATIC_3205), java.lang.Object(RandomHard(EOC)), i353, i354, i354, i353) -> f3274_0_main_GE(EOS(STATIC_3274), java.lang.Object(RandomHard(EOC)), i353, i354, i354, i353) :|: i354 < i353 f3274_0_main_GE(EOS(STATIC_3274), java.lang.Object(RandomHard(EOC)), i353, i354, i354, i353) -> f3303_0_main_Load(EOS(STATIC_3303), java.lang.Object(RandomHard(EOC)), i353, i354) :|: i354 < i353 f3303_0_main_Load(EOS(STATIC_3303), java.lang.Object(RandomHard(EOC)), i353, i354) -> f3321_0_main_InvokeMethod(EOS(STATIC_3321), java.lang.Object(RandomHard(EOC)), i353, i354, java.lang.Object(RandomHard(EOC))) :|: TRUE f3321_0_main_InvokeMethod(EOS(STATIC_3321), java.lang.Object(RandomHard(EOC)), i353, i354, java.lang.Object(RandomHard(EOC))) -> f3446_0_getNext_Load(EOS(STATIC_3446), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: i353 >= 1 && i18 > 1 && i352 >= 1 && i354 < i353 f3321_0_main_InvokeMethod(EOS(STATIC_3321), java.lang.Object(RandomHard(EOC)), i353, i354, java.lang.Object(RandomHard(EOC))) -> f3446_1_getNext_Load(EOS(STATIC_3446), java.lang.Object(RandomHard(EOC)), i353, i354, java.lang.Object(RandomHard(EOC))) :|: i353 >= 1 && i18 > 1 && i352 >= 1 && i354 < i353 f3446_0_getNext_Load(EOS(STATIC_3446), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) -> f5770_0_getNext_Load(EOS(STATIC_5770), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: TRUE f5598_0_getNext_Return(EOS(STATIC_5598), java.lang.Object(RandomHard(EOC)), i353, i354) -> f5599_0_getNext_Return(EOS(STATIC_5599), java.lang.Object(RandomHard(EOC)), i353, i354) :|: TRUE f5599_0_getNext_Return(EOS(STATIC_5599), java.lang.Object(RandomHard(EOC)), i353, i354) -> f5600_0_main_StackPop(EOS(STATIC_5600), java.lang.Object(RandomHard(EOC)), i353, i354) :|: TRUE f5600_0_main_StackPop(EOS(STATIC_5600), java.lang.Object(RandomHard(EOC)), i353, i354) -> f5602_0_main_Inc(EOS(STATIC_5602), java.lang.Object(RandomHard(EOC)), i353, i354) :|: TRUE f5602_0_main_Inc(EOS(STATIC_5602), java.lang.Object(RandomHard(EOC)), i353, i354) -> f5604_0_main_JMP(EOS(STATIC_5604), java.lang.Object(RandomHard(EOC)), i353, i354 + 1) :|: TRUE f5604_0_main_JMP(EOS(STATIC_5604), java.lang.Object(RandomHard(EOC)), i353, i751) -> f5606_0_main_Load(EOS(STATIC_5606), java.lang.Object(RandomHard(EOC)), i353, i751) :|: TRUE f5606_0_main_Load(EOS(STATIC_5606), java.lang.Object(RandomHard(EOC)), i353, i751) -> f3194_0_main_Load(EOS(STATIC_3194), java.lang.Object(RandomHard(EOC)), i353, i751) :|: TRUE f3194_0_main_Load(EOS(STATIC_3194), java.lang.Object(RandomHard(EOC)), i353, i354) -> f3199_0_main_Load(EOS(STATIC_3199), java.lang.Object(RandomHard(EOC)), i353, i354, i354) :|: TRUE f3446_1_getNext_Load(EOS(STATIC_3446), java.lang.Object(RandomHard(EOC)), i353, i354, java.lang.Object(RandomHard(EOC))) -> f5598_0_getNext_Return(EOS(STATIC_5598), java.lang.Object(RandomHard(EOC)), i353, i354) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f5598_0_getNext_Return(EOS(STATIC_5598), java.lang.Object(RandomHard(EOC)), i353:0, i354:0) -> f5598_0_getNext_Return(EOS(STATIC_5598), java.lang.Object(RandomHard(EOC)), i353:0, i354:0 + 1) :|: i18:0 > 1 && i353:0 > 0 && i354:0 + 1 < i353:0 && i352:0 > 0 Removed following non-SCC rules: f5598_0_getNext_Return(EOS(STATIC_5598), java.lang.Object(RandomHard(EOC)), i353:0, i354:0) -> f5770_0_getNext_Load(EOS(STATIC_5770), java.lang.Object(RandomHard(EOC)), java.lang.Object(RandomHard(EOC))) :|: i18:0 > 1 && i353:0 > 0 && i354:0 + 1 < i353:0 && i352:0 > 0 Filtered constant ground arguments: f5598_0_getNext_Return(x1, x2, x3, x4) -> f5598_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: f5598_0_getNext_Return(i353:0, i354:0) -> f5598_0_getNext_Return(i353:0, i354:0 + 1) :|: i353:0 > 0 && i18:0 > 1 && i352:0 > 0 && i354:0 + 1 < i353:0 ---------------------------------------- (35) Obligation: Rules: f5598_0_getNext_Return(i353:0, i354:0) -> f5598_0_getNext_Return(i353:0, i354:0 + 1) :|: i353:0 > 0 && i18:0 > 1 && i352:0 > 0 && i354:0 + 1 < i353:0 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f5598_0_getNext_Return(i353:0, i354:0) -> f5598_0_getNext_Return(i353:0, arith) :|: i353:0 > 0 && i18:0 > 1 && i352:0 > 0 && i354:0 + 1 < i353:0 && arith = i354:0 + 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5598_0_getNext_Return(i353:0, i354:0) -> f5598_0_getNext_Return(i353:0, arith) :|: i353:0 > 0 && i18:0 > 1 && i352:0 > 0 && i354:0 + 1 < i353:0 && arith = i354:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f5598_0_getNext_Return(i353:0, i354:0) -> f5598_0_getNext_Return(i353:0, arith) :|: i353:0 > 0 && i18:0 > 1 && i352:0 > 0 && i354:0 + 1 < i353:0 && arith = i354:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f5598_0_getNext_Return(i353:0:0, i354:0:0) -> f5598_0_getNext_Return(i353:0:0, i354:0:0 + 1) :|: i352:0:0 > 0 && i354:0:0 + 1 < i353:0:0 && i18:0:0 > 1 && i353:0:0 > 0 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5598_0_getNext_Return(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f5598_0_getNext_Return(i353:0:0, i354:0:0) -> f5598_0_getNext_Return(i353:0:0, c) :|: c = i354:0:0 + 1 && (i352:0:0 > 0 && i354:0:0 + 1 < i353:0:0 && i18:0:0 > 1 && i353:0:0 > 0) ---------------------------------------- (44) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5598_0_getNext_Return ] = -1*f5598_0_getNext_Return_2 + f5598_0_getNext_Return_1 The following rules are decreasing: f5598_0_getNext_Return(i353:0:0, i354:0:0) -> f5598_0_getNext_Return(i353:0:0, c) :|: c = i354:0:0 + 1 && (i352:0:0 > 0 && i354:0:0 + 1 < i353:0:0 && i18:0:0 > 1 && i353:0:0 > 0) The following rules are bounded: f5598_0_getNext_Return(i353:0:0, i354:0:0) -> f5598_0_getNext_Return(i353:0:0, c) :|: c = i354:0:0 + 1 && (i352:0:0 > 0 && i354:0:0 + 1 < i353:0:0 && i18:0:0 > 1 && i353:0:0 > 0) ---------------------------------------- (45) YES