| ⊦ x0 < a + x ↔ x0 = x ∨ x0 < x |
¬(x0 < a + x ↔ x0 = x ∨ x0 < x) ⊦
| ¬(x0 < a + x ↔ x0 = x ∨ x0 < x) ⊦ |
⊦ a + ar = copy(ar, 0, mkarray(# ar + 1), 1, # ar)(0 := a)
¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x) ⊦
Used terms: a, x
| ⊦ a + ar = copy(ar, 0, mkarray(# ar + 1), 1, # ar)(0 := a) |
| ¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x) ⊦ |
x0 = x, ¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x) ⊦
¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x), x0 ≠ x ⊦
Used formulas: x0 = x
| x0 = x, ¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x) ⊦ |
¬ x < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ⊦
| ¬ x < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ⊦ |
⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0)
Used simplifier rules: ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ # ar(n := a) = # ar; (s) ⊦ # copy(ar, m, ar0, m0, n) = # ar0; (s) ⊦ m + n - m = n; (s) n < n0 ⊦ subarray(ar(n := a), n0, n1) = subarray(ar, n0, n1); (s) ⊦ # mkarray(n) = n; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic m1 + n ≤ # ar1 ⊦ subarray(copy(ar0, m0, ar1, m1, n), m1, n) = subarray(ar0, m0, n); (s) # ar = n ⊦ subarray(ar, 0, n) = ar; (s) Used terms: x, copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a)
| ⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0) |
| ¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 = x ∨ x0 < x), x0 ≠ x ⊦ |
¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 < x), x0 ≠ x ⊦
| ¬(x0 < copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ↔ x0 < x), x0 ≠ x ⊦ |
⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0)
¬ ( # x0 < # copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a), # copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) - # x0, # x0) ↔ x0 < x), x0 ≠ x ⊦
Used terms: x0, copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a)
| ⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0) |
| ¬ ( # x0 < # copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a), # copy(x, 0, mkarray(# x + 1), 1, # x)(0 := a) - # x0, # x0) ↔ x0 < x), x0 ≠ x ⊦ |
¬(¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ x0 < x), x0 ≠ x ⊦
Used simplifier rules: n < n0 ⊦ subarray(ar(n := a), n0, n1) = subarray(ar, n0, n1); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ n → (n - m = 0 ↔ n = m); (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ 0 < m ↔ m ≠ 0; (s) ⊦ # mkarray(n) = n; (s) ⊦ # copy(ar, m, ar0, m0, n) = # ar0; (s) ⊦ # ar(n := a) = # ar; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s)
| ¬(¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ x0 < x), x0 ≠ x ⊦ |
⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0)
¬ ( ¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, # x - # x0, # x0)), x0 ≠ x ⊦
Used terms: x0, x
| ⊦ ar0 < ar1 ↔ # ar0 < # ar1 ∧ ar0 = subarray(ar1, # ar1 - # ar0, # ar0) |
| ¬ ( ¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, # x - # x0, # x0)), x0 ≠ x ⊦ |
# x = n0 + # x0, ¬ ( ¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦
Used simplifier rules: ⊦ ¬ m < n → ¬ m + m0 < n; (s) n ≤ m ⊦ (m - n) + m0 ≤ n0 ↔ m + m0 ≤ n0 + n; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m + m0 ≤ m ↔ m0 = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ # mkarray(n) = n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) m0 + m1 ≤ n1, m0 + m1 ≤ # ar ⊦ subarray(copy(ar0, n0, ar, n1, n2), m0, m1) = subarray(ar, m0, m1); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → ¬ n < m; (s) n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # x, # x0, n0
| # x = n0 + # x0, ¬ ( ¬ # x < # x0 ∧ x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), # x + 1 - # x0, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦ |
# x = n0 + # x0, ¬ ( x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), (# x - # x0) + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m ≤ n → (n < m ↔ false); (s)
| # x = n0 + # x0, ¬ ( x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), (# x - # x0) + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦ |
# x = n0 + # x0, # x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # x, # x0, n
| # x = n0 + # x0, # x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n0, # x0)), x0 ≠ x, # x0 ≤ # x ⊦ |
# x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n1, # x0)), x0 ≠ x, # x0 ≤ # x ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic eqs: ⊦ m = n + n0 ∧ m = n + n1 → n0 = n1; (forward) from specification nat-basic
| # x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n1, # x0)), x0 ≠ x, # x0 ≤ # x ⊦ |
# x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n1, # x0)), x0 ≠ x, # x0 < # x, # x0 ≤ # x ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ # subarray(ar, m, n) = n; (s) ⊦ m = m + n ↔ n = 0; (s) ⊦ m ≤ m; (s) ⊦ # mkarray(n) = n; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic m1 + n ≤ # ar1 ⊦ subarray(copy(ar0, m0, ar1, m1, n), m1, n) = subarray(ar0, m0, n); (s) # ar = n ⊦ subarray(ar, 0, n) = ar; (s) Used formulas: # x0 < # x
| # x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ # x0 < # x ∧ x0 = subarray(x, n1, # x0)), x0 ≠ x, # x0 < # x, # x0 ≤ # x ⊦ |
# x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ x0 = subarray(x, n1, # x0)), n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m < n → n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → m ≤ n; (s)
| # x = n1 + # x0, ¬(x0 = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ↔ x0 = subarray(x, n1, # x0)), n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ |
⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1(n) = ar2(n))
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ # x0 = # subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ∧ (∀ n. n < # x0 → x0(n) = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0)(n)) ↔ x0 = subarray(x, n1, # x0)
Used terms: x0, subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0)
| ⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1(n) = ar2(n)) |
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ # x0 = # subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0) ∧ (∀ n. n < # x0 → x0(n) = subarray(copy(x, 0, mkarray(# x + 1), 1, # x), n1 + 1, # x0)(n)) ↔ x0 = subarray(x, n1, # x0) |
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ x0 = subarray(x, n1, # x0)
Used simplifier rules: ⊦ n0 < n → subarray(ar, m, n)(n0) = ar(m + n0); (s) ⊦ # subarray(ar, m, n) = n; (s)
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ x0 = subarray(x, n1, # x0) |
⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1(n) = ar2(n))
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ # x0 = # subarray(x, n1, # x0) ∧ (∀ n. n < # x0 → x0(n) = subarray(x, n1, # x0)(n))
Used terms: x0, subarray(x, n1, # x0)
| ⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1(n) = ar2(n)) |
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ # x0 = # subarray(x, n1, # x0) ∧ (∀ n. n < # x0 → x0(n) = subarray(x, n1, # x0)(n)) |
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ (∀ n. n < # x0 → x0(n) = x(n1 + n))
Used simplifier rules: ⊦ n0 < n → subarray(ar, m, n)(n0) = ar(m + n0); (s) ⊦ # subarray(ar, m, n) = n; (s)
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x ⊦ (∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)) ↔ (∀ n. n < # x0 → x0(n) = x(n1 + n)) |
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ ∀ n. n < # x0 → x0(n) = x(n1 + n)
# x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n)
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ ∀ n. n < # x0 → x0(n) = x(n1 + n) |
# x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
# x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used terms: n
| # x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
# x = n1 + # x0, x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
| # x = n1 + # x0, x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)(m0) = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1(m0);ar0(m0 + n - n0))
# x = n1 + # x0, x0(n) = ((n1 + 1) + n < 1 ∨ 1 + # x ≤ (n1 + 1) + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(((n1 + 1) + n) + 0 - 1)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, (n1 + 1) + n < # mkarray(# x + 1), ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used simplifier rules: ⊦ # mkarray(n) = n; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: 1, 0, mkarray(# x + 1), # x, (n1 + 1) + n, x
| ⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)(m0) = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1(m0);ar0(m0 + n - n0)) |
| # x = n1 + # x0, x0(n) = ((n1 + 1) + n < 1 ∨ 1 + # x ≤ (n1 + 1) + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(((n1 + 1) + n) + 0 - 1)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, (n1 + 1) + n < # mkarray(# x + 1), ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
# x = n1 + # x0, x0(n) = (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ # mkarray(n) = n; (s) ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ ¬ m < n → ¬ m + m0 < n; (s)
| # x = n1 + # x0, x0(n) = (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
# x = n1 + # x0, x0(n) = (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used formulas: # x ≤ n1 + n
| # x = n1 + # x0, x0(n) = (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
# x = n1 + # x0, x0(n) = mkarray(# x + 1)((n1 + 1) + n), x0(n) ≠ x(n1 + n), n1 ≠ 1, n1 ≠ 0, x0 ≠ x, # x0 < n1 + n, n + 1 < # x, n < # x0, # x0 < # x, n < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| # x = n1 + # x0, x0(n) = mkarray(# x + 1)((n1 + 1) + n), x0(n) ≠ x(n1 + n), n1 ≠ 1, n1 ≠ 0, x0 ≠ x, # x0 < n1 + n, n + 1 < # x, n < # x0, # x0 < # x, n < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) ⊦ |
Used simplifier rules: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # x = n1 + # x0, n1 ≠ 0, x0 ≠ x, # x0 < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ ∀ n. n < # x0 → x0(n) = copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n) |
# x = n1 + # x0, x0(n) ≠ copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # x = n1 + # x0, x0(n) ≠ copy(x, 0, mkarray(# x + 1), 1, # x)((n1 + 1) + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)(m0) = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1(m0);ar0(m0 + n - n0))
# x = n1 + # x0, x0(n) ≠ ((n1 + 1) + n < 1 ∨ 1 + # x ≤ (n1 + 1) + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(((n1 + 1) + n) + 0 - 1)), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, (n1 + 1) + n < # mkarray(# x + 1), ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
Used simplifier rules: ⊦ # mkarray(n) = n; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: 1, 0, mkarray(# x + 1), # x, (n1 + 1) + n, x
| ⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)(m0) = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1(m0);ar0(m0 + n - n0)) |
| # x = n1 + # x0, x0(n) ≠ ((n1 + 1) + n < 1 ∨ 1 + # x ≤ (n1 + 1) + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(((n1 + 1) + n) + 0 - 1)), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, (n1 + 1) + n < # mkarray(# x + 1), ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
# x = n1 + # x0, x0(n) ≠ (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ # mkarray(n) = n; (s) ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ ¬ m < n → ¬ m + m0 < n; (s)
| # x = n1 + # x0, x0(n) ≠ (# x ≤ n1 + n ⊃ mkarray(# x + 1)((n1 + 1) + n);x(n1 + n)), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
# x = n1 + # x0, x0(n) ≠ mkarray(# x + 1)((n1 + 1) + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
# x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, ¬ # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
| # x = n1 + # x0, x0(n) ≠ mkarray(# x + 1)((n1 + 1) + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
# x = n1 + # x0, x0(n) ≠ mkarray(# x + 1)((n1 + 1) + n), n1 ≠ 1, n1 ≠ 0, x0 ≠ x, # x0 < n1 + n, n + 1 < # x, n < # x0, # x0 < # x, n < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| # x = n1 + # x0, x0(n) ≠ mkarray(# x + 1)((n1 + 1) + n), n1 ≠ 1, n1 ≠ 0, x0 ≠ x, # x0 < n1 + n, n + 1 < # x, n < # x0, # x0 < # x, n < # x, # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
Used simplifier rules: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n < # x, # x0 < # x, n < # x0, n + 1 < # x, ¬ # x ≤ n1 + n, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
# x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # x = n1 + # x0, x0(n) ≠ x(n1 + n), n1 ≠ 0, x0 ≠ x, n + 1 < # x, n < # x0, # x0 < # x, n < # x, ∀ n. n < # x0 → x0(n) = x(n1 + n) ⊦ |
Used terms: n
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.