| ⊦ cu1 = cu0[nx, ny, nz := a] ↔ #x cu0 = #x cu1 ∧ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
⊦ #x cu1 = #x cu0 ∧ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu1 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #x cu0 = #x cu1 ∧ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
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;
| ⊦ #x cu1 = #x cu0 ∧ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu1 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #x cu0 = #x cu1 ∧ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0 ⊦ #x cu1 = #x cu0 ∧ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu1 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #x cu0 = #x cu1 ∧ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
Used formulas: #x cu1 = #x cu0
| #x cu1 = #x cu0 ⊦ #x cu1 = #x cu0 ∧ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu1 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #x cu0 = #x cu1 ∧ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0 ⊦ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
| #x cu1 = #x cu0 ⊦ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0, #y cu1 = #y cu0 ⊦ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
Used formulas: #y cu1 = #y cu0
| #x cu1 = #x cu0, #y cu1 = #y cu0 ⊦ #y cu1 = #y cu0 ∧ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu1 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #y cu0 = #y cu1 ∧ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0, #y cu1 = #y cu0 ⊦ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
| #x cu1 = #x cu0, #y cu1 = #y cu0 ⊦ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0 ⊦ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
Used formulas: #z cu1 = #z cu0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0 ⊦ #z cu1 = #z cu0 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu1 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ #z cu0 = #z cu1 ∧ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0 ⊦ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]))
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0 ⊦ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]) ↔ (∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])) |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦ ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0])
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0]
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦ ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]), nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦
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
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]), nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nx = nx0, ny = ny0, nz = nz0, cu1[nx0, ny0, nz0] ≠ a, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nx ≠ nx0 ∨ ny ≠ ny0 ∨ nz ≠ nz0 ⊦
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nx = nx0, ny = ny0, nz = nz0, cu1[nx0, ny0, nz0] ≠ a, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ a, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx1, ny1, nz1. nx1 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx1, ny1, nz1] = (cu0[nx0, ny0, nz0 := a])[nx1, ny1, nz1] ⊦
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ a, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx1, ny1, nz1. nx1 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx1, ny1, nz1] = (cu0[nx0, ny0, nz0 := a])[nx1, ny1, nz1] ⊦ |
Used simplifier rules: 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
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nx ≠ nx0 ∨ ny ≠ ny0 ∨ nz ≠ nz0 ⊦ |
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]; put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0]; Used terms: nx0, ny0, nz0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (cu0[nx, ny, nz := a])[nx0, ny0, nz0] |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦
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
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ny = ny0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], ny ≠ ny0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦
Used formulas: ny = ny0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, ny = ny0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nz = nz0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nz ≠ nz0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦
Used formulas: nz = nz0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nz = nz0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nx = nx0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nx ≠ nx0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦
Used formulas: nx = nx0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, nx = nx0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ a, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx1, ny1, nz1. nx1 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx1, ny1, nz1] = (nx0 = nx1 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx1, ny1, nz1]) ⊦
Used simplifier rules: put-same: nx < #x cu, ny < #y cu, nz < #z cu ⊦ (cu[nx, ny, nz := a])[nx, ny, nz] = a;
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ a, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx1, ny1, nz1. nx1 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx1, ny1, nz1] = (nx0 = nx1 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx1, ny1, nz1]) ⊦ |
Used terms: nx0, ny0, nz0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz0 := a])[nx0, ny0, nz0], nx ≠ nx0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nx ≠ nx0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦
Used simplifier rules: put-otherwidth: ⊦ nx ≠ nx0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nx ≠ nx0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz1. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz1 < #z cu0 → cu1[nx0, ny1, nz1] = (nx = nx0 ∧ ny0 = ny1 ∧ nz0 = nz1 ⊃ a;cu0[nx0, ny1, nz1]) ⊦ |
Used terms: nx0, ny0, nz0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny0, nz := a])[nx0, ny0, nz0], nz ≠ nz0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nz ≠ nz0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦
Used simplifier rules: put-otherheight: ⊦ nz ≠ nz0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], nz ≠ nz0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny1, nz0. nx0 < #x cu0 ∧ ny1 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny1, nz0] = (nx = nx0 ∧ ny0 = ny1 ∧ nz = nz0 ⊃ a;cu0[nx0, ny1, nz0]) ⊦ |
Used terms: nx0, ny0, nz0
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ (cu0[nx, ny, nz := a])[nx0, ny0, nz0], ny ≠ ny0, nx0 < #x cu0, ny0 < #y cu0, nz0 < #z cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ |
#x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], ny ≠ ny0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦
Used simplifier rules: put-otherdepth: ⊦ ny ≠ ny0 → (cu[nx, ny, nz := a])[nx0, ny0, nz0] = cu[nx0, ny0, nz0];
| #x cu1 = #x cu0, #y cu1 = #y cu0, #z cu1 = #z cu0, cu1[nx0, ny0, nz0] ≠ cu0[nx0, ny0, nz0], ny ≠ ny0, nz0 < #z cu0, ny0 < #y cu0, nx0 < #x cu0, ∀ nx0, ny0, nz0. nx0 < #x cu0 ∧ ny0 < #y cu0 ∧ nz0 < #z cu0 → cu1[nx0, ny0, nz0] = (nx = nx0 ∧ ny = ny0 ∧ nz = nz0 ⊃ a;cu0[nx0, ny0, nz0]) ⊦ |
Used terms: nx0, ny0, nz0
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.