| ⊦ ((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] = (cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] |
((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] ≠ (cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] ⊦
| ((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] ≠ (cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a] ⊦ |
(((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦
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; ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| (((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
ny0 = ny, (((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], nx < #x cu, ny < #y cu, nz < #z cu ⊦
(((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used formulas: ny0 = ny
| ny0 = ny, (((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
(((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦
| (((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
nz0 = nz, (((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nx < #x cu, ny < #y cu, nz < #z cu ⊦
(((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used formulas: nz0 = nz
| nz0 = nz, (((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
(((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦
| (((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz], nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
(((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦
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; Used formulas: nx0 = nx
| (((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz := a])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦
Used simplifier rules: put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| ((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
ny1 = ny, ((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used simplifier rules: 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: ny1 = ny
| ny1 = ny, ((cu[nx0, ny, nz := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny, nz := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
nz1 = nz, ((cu[nx0, ny, nz := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used simplifier rules: 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: nz1 = nz
| nz1 = nz, ((cu[nx0, ny, nz := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nx0 ≠ nx, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny, nz := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], nx0 ≠ nx, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
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: nx1 = nx
| (((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny, nz0 := a])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| ((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
ny1 = ny, ((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦
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: ny1 = ny
| ny1 = ny, ((cu[nx0, ny, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
nz1 = nz, ((cu[nx0, ny, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: nz1 = nz
| nz1 = nz, ((cu[nx0, ny, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], nz0 ≠ nz, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny, nz0 := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny, nz0 := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], nz0 ≠ nz, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
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-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: nx1 = nx
| (((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz] ≠ ((cu[nx1, ny1, nz1 := b])[nx0, ny0, nz0 := a])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| ((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
ny1 = ny, ((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used formulas: ny1 = ny
| ny1 = ny, ((cu[nx0, ny0, nz0 := a0])[nx1, ny1, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny1, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
nz1 = nz, ((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦
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: nz1 = nz
| nz1 = nz, ((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz1 := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz1 := b])[nx, ny, nz], ny0 ≠ ny, nx < #x cu, ny < #y cu, nz < #z cu ⊦ |
((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦
| ((cu[nx0, ny0, nz0 := a0])[nx1, ny, nz := b])[nx, ny, nz] ≠ (cu[nx1, ny, nz := b])[nx, ny, nz], ny0 ≠ ny, nz < #z cu, ny < #y cu, nx < #x cu ⊦ |
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-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: nx1 = nx
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.