| ⊦ id○(ar0, ar1, n, m) ∧ id○(ar1, ar2, n, m) → id○(ar0, ar2, n, m) |
id○(ar0, ar1, n, m), id○(ar1, ar2, n, m), ¬ id○(ar0, ar2, n, m) ⊦
| id○(ar0, ar1, n, m), id○(ar1, ar2, n, m), ¬ id○(ar0, ar2, n, m) ⊦ |
# ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], m0 < n ∨ n + m ≤ m0 ⊦
Used simplifier rules: Idexcept-n: ⊦ id○(ar0, ar1, m, n) ↔ # ar0 = # ar1 ∧ m + n ≤ # ar0 ∧ (∀ m0. (m0 < m ∨ m + n ≤ m0) ∧ m0 < # ar0 → ar0[m0] = ar1[m0]); ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], m0 < n ∨ n + m ≤ m0 ⊦ |
# ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], m0 < n ∨ n + m ≤ m0 ⊦
# ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n + m ≤ # ar2, ¬ m0 < n, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], m0 < n ∨ n + m ≤ m0 ⊦
Used formulas: m0 < n
| # ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], m0 < n ∨ n + m ≤ m0 ⊦ |
# ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦ |
# ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < n, m0 < # ar2, n + m ≤ # ar2, (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0] ⊦
Used terms: m0
| # ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < n, m0 < # ar2, n + m ≤ # ar2, (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0] ⊦ |
# ar0 = # ar2, # ar1 = # ar2, ar1[m0] = ar2[m0], ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦
| # ar0 = # ar2, # ar1 = # ar2, ar1[m0] = ar2[m0], ar0[m0] ≠ ar2[m0], m0 < # ar2, m0 < n, n + m ≤ # ar2, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦ |
Used terms: m0
| # ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n + m ≤ # ar2, ¬ m0 < n, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], m0 < n ∨ n + m ≤ m0 ⊦ |
# ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], n + m < # ar2, n < # ar2, m0 < # ar2, n + m ≤ m0, n ≤ m0, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # ar0 = # ar2, # ar1 = # ar2, ar0[m0] ≠ ar2[m0], n + m < # ar2, n < # ar2, m0 < # ar2, n + m ≤ m0, n ≤ m0, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦ |
# ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n < # ar2, n + m < # ar2, n ≤ m0, n + m ≤ m0, (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0] ⊦
Used terms: m0
| # ar1 = # ar2, # ar0 = # ar2, ar0[m0] ≠ ar2[m0], m0 < # ar2, n < # ar2, n + m < # ar2, n ≤ m0, n + m ≤ m0, (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0] ⊦ |
# ar0 = # ar2, # ar1 = # ar2, ar0[m0] = ar1[m0], ar1[m0] ≠ ar2[m0], n + m < # ar2, n < # ar2, m0 < # ar2, n + m ≤ m0, n ≤ m0, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s)
| # ar0 = # ar2, # ar1 = # ar2, ar0[m0] = ar1[m0], ar1[m0] ≠ ar2[m0], n + m < # ar2, n < # ar2, m0 < # ar2, n + m ≤ m0, n ≤ m0, ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar0[m0] = ar1[m0], ∀ m0. (m0 < n ∨ n + m ≤ m0) ∧ m0 < # ar2 → ar1[m0] = ar2[m0] ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m0
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.