| ⊦ mx1 = mx0(r, c := a) ↔ #r mx0 = #r mx1 ∧ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
⊦ #r mx1 = #r mx0 ∧ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx1 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #r mx0 = #r mx1 ∧ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)))
Used simplifier rules: extension: ⊦ mx1 = mx2 ↔ #r mx1 = #r mx2 ∧ #c mx1 = #c mx2 ∧ (∀ r, c. r < #r mx1 ∧ c < #c mx1 → mx1(r, c) = mx2(r, c)); rowno-put: ⊦ #r mx(r, c := a) = #r mx; colno-put: ⊦ #c mx(r, c := a) = #c mx;
| ⊦ #r mx1 = #r mx0 ∧ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx1 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #r mx0 = #r mx1 ∧ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
#r mx1 = #r mx0 ⊦ #r mx1 = #r mx0 ∧ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx1 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #r mx0 = #r mx1 ∧ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)))
Used formulas: #r mx1 = #r mx0
| #r mx1 = #r mx0 ⊦ #r mx1 = #r mx0 ∧ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx1 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #r mx0 = #r mx1 ∧ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
#r mx1 = #r mx0 ⊦ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)))
| #r mx1 = #r mx0 ⊦ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
#c mx1 = #c mx0, #r mx1 = #r mx0 ⊦ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)))
Used formulas: #c mx1 = #c mx0
| #c mx1 = #c mx0, #r mx1 = #r mx0 ⊦ #c mx1 = #c mx0 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx1 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ #c mx0 = #c mx1 ∧ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
#c mx1 = #c mx0, #r mx1 = #r mx0 ⊦ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)))
| #c mx1 = #c mx0, #r mx1 = #r mx0 ⊦ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)) ↔ (∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))) |
#c mx1 = #c mx0, #r mx1 = #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0))
#c mx1 = #c mx0, #r mx1 = #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0)
| #c mx1 = #c mx0, #r mx1 = #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦
Used simplifier rules: ⊦ 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
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, r = r0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), r ≠ r0, r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦
Used formulas: r = r0
| #c mx1 = #c mx0, #r mx1 = #r mx0, r = r0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, c = c0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), c ≠ c0, r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦
Used formulas: c = c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, c = c0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ a, c0 < #c mx0, r0 < #r mx0, ∀ r1, c1. r1 < #r mx0 ∧ c1 < #c mx0 → mx1(r1, c1) = mx0(r0, c0 := a)(r1, c1) ⊦
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ a, c0 < #c mx0, r0 < #r mx0, ∀ r1, c1. r1 < #r mx0 ∧ c1 < #c mx0 → mx1(r1, c1) = mx0(r0, c0 := a)(r1, c1) ⊦ |
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → mx(r, c := a)(r, c) = a; Used terms: r0, c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (c = c0 ⊃ a;mx0(r0, c0)), c ≠ c0, r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), c ≠ c0, c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), c ≠ c0, c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = mx0(r0, c := a)(r1, c0) ⊦ |
Used simplifier rules: put-othercol: ⊦ c ≠ c0 → mx(r, c := a)(r0, c0) = mx(r0, c0); Used terms: r0, c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)), r ≠ r0, r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), r ≠ r0, c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), r ≠ r0, c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) ⊦ |
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → mx(r, c := a)(r0, c0) = mx(r0, c0); Used terms: r0, c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = mx0(r, c := a)(r0, c0) |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦
Used simplifier rules: ⊦ 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
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, r = r0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), r ≠ r0, r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦
Used formulas: r = r0
| #c mx1 = #c mx0, #r mx1 = #r mx0, r = r0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, c = c0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), c ≠ c0, r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦
Used formulas: c = c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, c = c0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ a, c0 < #c mx0, r0 < #r mx0, ∀ r1, c1. r1 < #r mx0 ∧ c1 < #c mx0 → mx1(r1, c1) = (r0 = r1 ∧ c0 = c1 ⊃ a;mx0(r1, c1)) ⊦
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → mx(r, c := a)(r, c) = a;
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ a, c0 < #c mx0, r0 < #r mx0, ∀ r1, c1. r1 < #r mx0 ∧ c1 < #c mx0 → mx1(r1, c1) = (r0 = r1 ∧ c0 = c1 ⊃ a;mx0(r1, c1)) ⊦ |
Used terms: r0, c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c := a)(r0, c0), c ≠ c0, r0 < #r mx0, c0 < #c mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), c ≠ c0, c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦
Used simplifier rules: put-othercol: ⊦ c ≠ c0 → mx(r, c := a)(r0, c0) = mx(r0, c0);
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), c ≠ c0, c0 < #c mx0, r0 < #r mx0, ∀ r1, c0. r1 < #r mx0 ∧ c0 < #c mx0 → mx1(r1, c0) = (r0 = r1 ∧ c = c0 ⊃ a;mx0(r1, c0)) ⊦ |
Used terms: r0, c0
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r, c := a)(r0, c0), r ≠ r0, r0 < #r mx0, c0 < #c mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ |
#c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), r ≠ r0, c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → mx(r, c := a)(r0, c0) = mx(r0, c0);
| #c mx1 = #c mx0, #r mx1 = #r mx0, mx1(r0, c0) ≠ mx0(r0, c0), r ≠ r0, c0 < #c mx0, r0 < #r mx0, ∀ r0, c0. r0 < #r mx0 ∧ c0 < #c mx0 → mx1(r0, c0) = (r = r0 ∧ c = c0 ⊃ a;mx0(r0, c0)) ⊦ |
Used terms: r0, c0
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.