| ⊦ c ≠ c0 → ( (mx[r, c := a0])[r0, c0 := a1] = (mx[r0, c0 := b1])[r, c := b0] ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)) |
¬ ( (mx[r, c := a0])[r0, c0 := a1] = (mx[r0, c0 := b1])[r, c := b0] ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)), c ≠ c0 ⊦
| ¬ ( (mx[r, c := a0])[r0, c0 := a1] = (mx[r0, c0 := b1])[r, c := b0] ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)), c ≠ c0 ⊦ |
c ≠ c0 ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
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;
| c ≠ c0 ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
c ≠ c0, ¬ r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
Used formulas: r < #r mx
| c ≠ c0, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| c ≠ c0, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
c ≠ c0, r < #r mx, ¬ c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
Used formulas: c < #c mx
| c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
a0 = b0, c ≠ c0, c < #c mx, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
a0 ≠ b0, c ≠ c0, c < #c mx, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1)
Used formulas: a0 = b0
| a0 = b0, c ≠ c0, c < #c mx, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
| c ≠ c0, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
c ≠ c0, c < #c mx, r < #r mx, ¬ r0 < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
Used formulas: r0 < #r mx
| c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < #r mx, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1
| c ≠ c0, r0 < #r mx, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1
c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, ¬ c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1
Used formulas: c0 < #c mx
| c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1
| c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1 |
a1 = b1, c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1
a1 ≠ b1, c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1
Used formulas: a1 = b1
| a1 = b1, c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1 |
((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0];
| ((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
r0 = r1, ((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦
((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦
Used formulas: r0 = r1
| r0 = r1, ((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ |
((mx[r, c := b0])[r1, c0 := b1])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 < #c mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
| ((mx[r, c := b0])[r1, c0 := b1])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 < #c mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
((mx[r, c := b0])[r1, c0 := b1])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, c0 < #c mx ⊦
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; Used formulas: c0 = c1
| ((mx[r, c := b0])[r1, c0 := b1])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, c0 < #c mx ⊦ |
(mx[r, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c0 < #c mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
Used simplifier rules: put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0];
| (mx[r, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c0 < #c mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, c0 < #c mx ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: r = r1
| r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, c0 < #c mx ⊦ |
(mx[r1, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c0 < #c mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
| (mx[r1, c := b0])[r1, c1] ≠ ((mx[r1, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, c0 ≠ c1, c0 < #c mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: c = c1
| ((mx[r, c := b0])[r0, c0 := b1])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ |
(mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0];
| (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: r = r1
| r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ |
(mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c0 < #c mx, r0 < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦
| (mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, r0 ≠ r1, c0 < #c mx, r0 < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx ⊦ |
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: c = c1
| a1 ≠ b1, c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a1 = b1 |
a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1] ⊦
| a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c < #c mx, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1] ⊦ |
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; Used terms: r0, c0
| c ≠ c0, c < #c mx, r < #r mx, r0 < #r mx, ¬ c0 < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
(mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, c < c0, c1 < c0, #c mx ≤ c0 ⊦
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r0 < #r mx, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, c < c0, c1 < c0, #c mx ≤ c0 ⊦ |
r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c1 < c0, c < c0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, #c mx ≤ c0 ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; ngp-07-c: ⊦ c < c0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; Used formulas: r = r1
| r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, c1 < c0, c < c0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, r0 < #r mx, #c mx ≤ c0 ⊦ |
(mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, r0 < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, c < c0, c1 < c0, #c mx ≤ c0 ⊦
| (mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, r0 < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, c < c0, c1 < c0, #c mx ≤ c0 ⊦ |
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; ngp-07-c: ⊦ c < c0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; Used formulas: c = c1
| c ≠ c0, c < #c mx, r < #r mx, ¬ r0 < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := b0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
(mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, r < r0, r1 < r0, #r mx ≤ r0 ⊦
Used simplifier rules: cngetput-r: r ≠ r0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r < #r mx, c < #c mx, r1 < #r mx, c1 < #c mx, r < r0, r1 < r0, #r mx ≤ r0 ⊦ |
r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r1 < r0, r < r0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, #r mx ≤ r0 ⊦
Used simplifier rules: put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; ngp-07-r: ⊦ r < r0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; Used formulas: r = r1
| r = r1, (mx[r, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r, c := b0])[r1, c1], c ≠ c0, r1 < r0, r < r0, c1 < #c mx, r1 < #r mx, c < #c mx, r < #r mx, #r mx ≤ r0 ⊦ |
(mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, c < #c mx, r1 < #r mx, c1 < #c mx, r1 < r0, #r mx ≤ r0 ⊦
| (mx[r1, c := b0])[r1, c1] ≠ ((mx[r0, c0 := b1])[r1, c := b0])[r1, c1], c ≠ c0, c < #c mx, r1 < #r mx, c1 < #c mx, r1 < r0, #r mx ≤ r0 ⊦ |
Used simplifier rules: put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; ngp-07-r: ⊦ r < r0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; Used formulas: c = c1
| a0 ≠ b0, c ≠ c0, c < #c mx, r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ a0 = b0 ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
a0 ≠ b0, c ≠ c0, r < #r mx, c < #c mx, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1] ⊦
| a0 ≠ b0, c ≠ c0, r < #r mx, c < #c mx, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1] ⊦ |
Used simplifier rules: put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; Used terms: r, c
| c ≠ c0, r < #r mx, ¬ c < #c mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, r < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| c ≠ c0, r < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, r < #r mx, r0 < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; cngetput-r: r ≠ r0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) Used formulas: r0 < #r mx
| c ≠ c0, r < #r mx, r0 < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < #r mx, r < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1
| c ≠ c0, r0 < #r mx, r < #r mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) Used formulas: c0 < #c mx
| c ≠ c0, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
a1 = b1, c ≠ c0, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
a1 ≠ b1, c ≠ c0, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
Used formulas: a1 = b1
| a1 = b1, c ≠ c0, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, r1 < #r mx, c1 < #c mx, c1 < c, #c mx ≤ c ⊦
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, r1 < #r mx, c1 < #c mx, c1 < c, #c mx ≤ c ⊦ |
r0 = r1, ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, c1 < c, c1 < #c mx, r1 < #r mx, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦
Used simplifier rules: ngp-07-c: ⊦ c < c0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: r0 = r1
| r0 = r1, ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, c1 < c, c1 < #c mx, r1 < #r mx, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ |
((mx[r, c := a0])[r1, c0 := b1])[r1, c1] ≠ (mx[r1, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r < #r mx, c0 < c, r1 < #r mx, c1 < #c mx, c1 < c, #c mx ≤ c ⊦
| ((mx[r, c := a0])[r1, c0 := b1])[r1, c1] ≠ (mx[r1, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r < #r mx, c0 < c, r1 < #r mx, c1 < #c mx, c1 < c, #c mx ≤ c ⊦ |
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; ngp-07-c: ⊦ c < c0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: c0 = c1
| a1 ≠ b1, c ≠ c0, c0 < c, r < #r mx, r0 < #r mx, c0 < #c mx, #c mx ≤ c ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, #c mx ≤ c, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1] ⊦
| a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r < #r mx, c0 < c, #c mx ≤ c, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1] ⊦ |
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; Used terms: r0, c0
| c ≠ c0, ¬ r < #r mx ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = ((mx[r0, c0 := b1])[r, c := b0])[r1, c1]) ↔ (r < #r mx ∧ c < #c mx → a0 = b0) ∧ (r0 < #r mx ∧ c0 < #c mx → a1 = b1) |
c ≠ c0, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-r: r ≠ r0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| c ≠ c0, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < #r mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-r: r ≠ r0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) Used formulas: r0 < #r mx
| c ≠ c0, r0 < #r mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ r0 < #r mx ∧ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| c ≠ c0, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1
Used simplifier rules: cngetput-r: r ≠ r0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) Used formulas: c0 < #c mx
| c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ c0 < #c mx → a1 = b1 |
c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
a1 = b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1
Used formulas: a1 = b1
| a1 = b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, r1 < #r mx, c1 < #c mx, r1 < r, #r mx ≤ r ⊦
Used simplifier rules: cngetput-c: c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]; fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, r1 < #r mx, c1 < #c mx, r1 < r, #r mx ≤ r ⊦ |
r0 = r1, ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, r1 < r, c1 < #c mx, r1 < #r mx, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦
Used simplifier rules: ngp-07-r: ⊦ r < r0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; put-otherrow: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: r0 = r1
| r0 = r1, ((mx[r, c := a0])[r0, c0 := b1])[r1, c1] ≠ (mx[r0, c0 := b1])[r1, c1], c ≠ c0, r1 < r, c1 < #c mx, r1 < #r mx, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ |
((mx[r, c := a0])[r1, c0 := b1])[r1, c1] ≠ (mx[r1, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r1 < #r mx, c1 < #c mx, r1 < r, #r mx ≤ r ⊦
| ((mx[r, c := a0])[r1, c0 := b1])[r1, c1] ≠ (mx[r1, c0 := b1])[r1, c1], c ≠ c0, c0 < #c mx, r1 < #r mx, c1 < #c mx, r1 < r, #r mx ≤ r ⊦ |
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; ngp-07-r: ⊦ r < r0 → (mx[r0, c0 := a])[r, c] = mx[r, c]; put-othercol: ⊦ c ≠ c0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; Used formulas: c0 = c1
| a1 ≠ b1, c ≠ c0, c0 < #c mx, r0 < #r mx, r0 < r, #r mx ≤ r ⊦ (∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1]) ↔ a1 = b1 |
a1 ≠ b1, c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1] ⊦
| a1 ≠ b1, c ≠ c0, r0 < r, r0 < #r mx, c0 < #c mx, #r mx ≤ r, ∀ r1, c1. r1 < #r mx ∧ c1 < #c mx → ((mx[r, c := a0])[r0, c0 := a1])[r1, c1] = (mx[r0, c0 := b1])[r1, c1] ⊦ |
Used simplifier rules: rowno-put: ⊦ #r mx[r, c := a] = #r mx; colno-put: ⊦ #c mx[r, c := a] = #c mx; cgetput: r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; put-same: ⊦ r < #r mx ∧ c < #c mx → (mx[r, c := a])[r, c] = a; 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.