| n < m * m, 2 < m * m, 2 ≤ n, ∃ n0. m * n0 = n, ∀ n0. n0 < n → 2 ≤ n0 → prime(n0) ∨ (∃ m. m | n0 ∧ prime(m) ∧ m * m ≤ n0) ⊦ m = 0, m = 1, m = n, n = 1, n = 0, ∃ m. m | n ∧ prime(m) ∧ m * m ≤ n |
n0 < m, 2 < m * m, 2 ≤ m * n0, ∀ n1. n1 < m * n0 → 2 ≤ n1 → prime(n1) ∨ (∃ m. m | n1 ∧ prime(m) ∧ m * m ≤ n1) ⊦ m * n0 = 1, m = 1, n0 = 1, n0 = 0, ∃ m0. m0 | m * n0 ∧ prime(m0) ∧ m0 * m0 ≤ m * n0
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n → n ≠ 0; (s)% ⊦ m0 * m < m0 * n ↔ m0 ≠ 0 ∧ m < n; (ws)% ⊦ m * n = m ↔ m = 0 ∨ n = 1; (ws)%mult-c: ⊦ m * n = n * m; from specification nat-mult%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult% ⊦ m0 * m = 0 ↔ m0 = 0 ∨ m = 0; (ws)