| prime(i), abs(j0) = i ∨ abs(j0) = 1, prime(j0), all_prime_divisors(((i * i0) / max_prime_divisor(i * i0)) / i) = all_prime_divisors((i * i0) / max_prime_divisor(i * i0)) -1l i, prime(i), 2 ≤ i * i0, i | (i * i0) / max_prime_divisor(i * i0), prime(i0), 0 < i * i0, 0 ≤ i * i0, j | i * i0, i < j, j < i * i0, prime(j), i < i * i0, i0 < j0, j0 < i * i0, prime(j0), i0 < i * i0, ∀ j0, i1. i→n(j0) < i→n(i * i0) → i1 | j0 ∧ prime(i1) ∧ 0 < j0 → all_prime_divisors(j0 / i1) = all_prime_divisors(j0) -1l i1 ⊦ i0 ' = (all_prime_divisors((i * i0) / max_prime_divisor(i * i0)) -1l i) + max_prime_divisor(i * i0) ', prime(i * i0) |
all_prime_divisors(((i * i0) / max_prime_divisor(i * i0)) / i) = all_prime_divisors((i * i0) / max_prime_divisor(i * i0)) -1l i, i0 < i * i0, i0 < i, i < i * i0, prime(j), j < i * i0, i < j, j | i * i0, 0 ≤ i * i0, 0 < i * i0, prime(i0), i | (i * i0) / max_prime_divisor(i * i0), 2 ≤ i * i0, prime(i), i0 < j, ∀ j0, i1. i→n(j0) < i→n(i * i0) → i1 | j0 ∧ prime(i1) ∧ 0 < j0 → all_prime_divisors(j0 / i1) = all_prime_divisors(j0) -1l i1 ⊦ i = 1, i0 ' = (all_prime_divisors((i * i0) / max_prime_divisor(i * i0)) -1l i) + max_prime_divisor(i * i0) ', prime(i * i0)
Used simplifier rules: transitivity: ⊦ i < i0 ∧ i0 < i1 → i < i1; (forward) from specification oelem[intlista]%lel: ⊦ i < i0 ∧ i = i1 → i1 < i0; (forward) from specification oelem[intlista]%prime-one: ⊦ i ≤ 1 → ¬ prime(i); from specification int-gcd%prime-abs: ⊦ prime(j) → abs(j) = j; from specification int-gcd