| ⊦ #oc(i, mx.toArr) = #oc(i, mx.toArc) |
#oc(i, mx.toArr) ≠ #oc(i, mx.toArc) ⊦
| #oc(i, mx.toArr) ≠ #oc(i, mx.toArc) ⊦ |
#oc(i, (mx0(m, m0 := i0)).toArr) ≠ #oc(i, (mx0(m, m0 := i0)).toArc), ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: init-toArr: ⊦ mkmatrix(m, n, i).toArr = mklist(i, m * n); init-toArc: ⊦ mkmatrix(m, n, i).toArc = mklist(i, m * n); Matrix generated by mkmatrix, . ( . := . );
| #oc(i, (mx0(m, m0 := i0)).toArr) ≠ #oc(i, (mx0(m, m0 := i0)).toArc), ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
⊦ ¬ m < #r mx ∨ ¬ n < #c mx → mx(m, n := i) = mx
#oc(i, (mx0(m, m0 := i0)).toArr) ≠ #oc(i, (mx0(m, m0 := i0)).toArc), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
#oc(i, mx0.toArr) ≠ #oc(i, mx0.toArc), ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc), ¬ m < #r mx0 ∨ ¬ m0 < #c mx0 ⊦
Used terms: mx0, m, m0, i0
| ⊦ ¬ m < #r mx ∨ ¬ n < #c mx → mx(m, n := i) = mx |
| #oc(i, (mx0(m, m0 := i0)).toArr) ≠ #oc(i, (mx0(m, m0 := i0)).toArc), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: oc-put-toAr: ⊦ m < #r mx ∧ n < #c mx → #oc(i, (mx(m, n := j)).toArr) = #oc(i, mx.toArr) + (i = j ⊃ 1;0) - (mx(m, n) = i ⊃ 1;0); oc-put-toArc: ⊦ m < #r mx ∧ n < #c mx → #oc(i, (mx(m, n := j)).toArc) = #oc(i, mx.toArc) + (i = j ⊃ 1;0) - (mx(m, n) = i ⊃ 1;0); ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| #oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
i = i0, #oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
#oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used formulas: i = i0
| i = i0, #oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
| #oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
mx0(m, m0) = i0, #oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
#oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), mx0(m, m0) ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used formulas: mx0(m, m0) = i0
| mx0(m, m0) = i0, #oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(mx0(m, m0), mx0.toArr) ≠ #oc(mx0(m, m0), mx0.toArc), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)
| #oc(mx0(m, m0), mx0.toArr) ≠ #oc(mx0(m, m0), mx0.toArc), m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
Used terms: mx0(m, m0)
| #oc(i0, mx0.toArr) + 1 - (mx0(m, m0) = i0 ⊃ 1;0) ≠ #oc(i0, mx0.toArc) + 1 - (mx0(m, m0) = i0 ⊃ 1;0), mx0(m, m0) ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(i0, mx0.toArr) ≠ #oc(i0, mx0.toArc), mx0(m, m0) ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)
| #oc(i0, mx0.toArr) ≠ #oc(i0, mx0.toArc), mx0(m, m0) ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
Used terms: i0
| #oc(i, mx0.toArr) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) + (i = i0 ⊃ 1;0) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| #oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
mx0(m, m0) = i, #oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
#oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), mx0(m, m0) ≠ i, i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used formulas: mx0(m, m0) = i
| mx0(m, m0) = i, #oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(mx0(m, m0), mx0.toArr) - 1 ≠ #oc(mx0(m, m0), mx0.toArc) - 1, mx0(m, m0) ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
| #oc(mx0(m, m0), mx0.toArr) - 1 ≠ #oc(mx0(m, m0), mx0.toArc) - 1, mx0(m, m0) ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
Used terms: mx0(m, m0)
| #oc(i, mx0.toArr) - (mx0(m, m0) = i ⊃ 1;0) ≠ #oc(i, mx0.toArc) - (mx0(m, m0) = i ⊃ 1;0), mx0(m, m0) ≠ i, i ≠ i0, m0 < #c mx0, m < #r mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
#oc(i, mx0.toArr) ≠ #oc(i, mx0.toArc), mx0(m, m0) ≠ i, i ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦
Used simplifier rules: ⊦ m - 0 = m; (s)
| #oc(i, mx0.toArr) ≠ #oc(i, mx0.toArc), mx0(m, m0) ≠ i, i ≠ i0, m < #r mx0, m0 < #c mx0, ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc) ⊦ |
Used terms: i
| #oc(i, mx0.toArr) ≠ #oc(i, mx0.toArc), ∀ i. #oc(i, mx0.toArr) = #oc(i, mx0.toArc), ¬ m < #r mx0 ∨ ¬ m0 < #c mx0 ⊦ |
Used terms: i
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.