| ⊦ nx ≠ nx0 → ( (cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1] = (cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0] ↔ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1)) |
¬ ( (cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1] = (cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0] ↔ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1)), nx ≠ nx0 ⊦
| ¬ ( (cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1] = (cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0] ↔ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1)), nx ≠ nx0 ⊦ |
nx ≠ nx0 ⊦ (∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1]) ↔ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1)
Used simplifier rules: extension: ⊦ cu1 = cu2 ↔ #x cu1 = #x cu2 ∧ #y cu1 = #y cu2 ∧ #z cu1 = #z cu2 ∧ (∀ nx, ny, nz. nx < #x cu1 ∧ ny < #y cu1 ∧ nz < #z cu1 → cu1[nx, ny, nz] = cu2[nx, ny, nz]); width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu;
| nx ≠ nx0 ⊦ (∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1]) ↔ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1) |
nx ≠ nx0, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1)
nx ≠ nx0, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1]
| nx ≠ nx0, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦ (nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0) ∧ (nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1) |
a0 ≠ b0, nx ≠ nx0, nx < #x cu, ny < #y cu, nz < #z cu, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦
a1 ≠ b1, nx ≠ nx0, nx0 < #x cu, ny0 < #y cu, nz0 < #z cu, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦
| a0 ≠ b0, nx ≠ nx0, nx < #x cu, ny < #y cu, nz < #z cu, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦ |
Used simplifier rules: put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; Used terms: nx, ny, nz
| a1 ≠ b1, nx ≠ nx0, nx0 < #x cu, ny0 < #y cu, nz0 < #z cu, ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] ⊦ |
Used simplifier rules: width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; Used terms: nx0, ny0, nz0
| nx ≠ nx0, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ ∀ nx1, ny1, nz1. nx1 < #x cu ∧ ny1 < #y cu ∧ nz1 < #z cu → ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] = ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1] |
((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
ny0 = ny1, ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used formulas: ny0 = ny1
| ny0 = ny1, ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦
| ((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
nz0 = nz1, ((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used formulas: nz0 = nz1
| nz0 = nz1, ((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
((cu[nx, ny, nz := a0])[nx0, ny1, nz1 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦
| ((cu[nx, ny, nz := a0])[nx0, ny1, nz1 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦ |
((cu[nx, ny, nz := a0])[nx0, ny1, nz1 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used simplifier rules: width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; Used formulas: nx0 = nx1
| ((cu[nx, ny, nz := a0])[nx0, ny1, nz1 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦
Used simplifier rules: put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦ |
ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: ny = ny1
| ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦
| (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦ |
nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nz = nz1
| nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu → a1 = b1 ⊦ |
(cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu → a1 = b1 ⊦
Used simplifier rules: ngp-07-w: ⊦ nx < nx0 → (cu[nx0, ny0, nz0 := a])[nx, ny, nz] = cu[nx, ny, nz]; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz1 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, nx0 ≠ nx1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu → a1 = b1 ⊦ |
Used simplifier rules: width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nx = nx1
| ((cu[nx, ny, nz := a0])[nx0, ny1, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: ny = ny1
| ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦
| (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦ |
nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nz = nz1
| nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
(cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: ngp-07-w: ⊦ nx < nx0 → (cu[nx0, ny0, nz0 := a])[nx, ny, nz] = cu[nx, ny, nz]; put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny1, nz0 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, nz0 ≠ nz1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
Used simplifier rules: width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nx = nx1
| ((cu[nx, ny, nz := a0])[nx0, ny0, nz0 := a1])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: ny = ny1
| ny = ny1, (cu[nx, ny, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ ny < #y cu ∧ nz < #z cu → a0 = b0 ⊦ |
(cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦
| (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1, nx < #x cu ∧ nz < #z cu → a0 = b0 ⊦ |
nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nz = nz1
| nz = nz1, (cu[nx, ny1, nz := a0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx1 < #x cu, ny1 < #y cu, nz1 < #z cu, nx < #x cu ∧ nz < #z cu → a0 = b0, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
(cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦
Used simplifier rules: ngp-07-w: ⊦ nx < nx0 → (cu[nx0, ny0, nz0 := a])[nx, ny, nz] = cu[nx, ny, nz]; put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (cu[nx, ny1, nz1 := b0])[nx1, ny1, nz1] ≠ ((cu[nx0, ny0, nz0 := b1])[nx, ny1, nz1 := b0])[nx1, ny1, nz1], nx ≠ nx0, ny0 ≠ ny1, nx < #x cu, nz1 < #z cu, ny1 < #y cu, nx1 < #x cu, nx0 < #x cu ∧ ny0 < #y cu ∧ nz0 < #z cu → a1 = b1 ⊦ |
Used simplifier rules: width-put: ⊦ #x cu[nx, ny, nz := a] = #x cu; depth-put: ⊦ #y cu[nx, ny, nz := a] = #y cu; height-put: ⊦ #z cu[nx, ny, nz := a] = #z cu; put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a; put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nx = nx1
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.