| Symbol | Specification | Kind | Type |
|---|
| # . | array | f | array('a) → nat |
| #x . | cube | f | cube('a) → nat |
| #y . | cube | f | cube('a) → nat |
| #z . | cube | f | cube('a) → nat |
| . + . | nat-basic | f | nat × nat → nat |
| . +1 | nat-basic | f | nat → nat |
| . - . | nat | pf | nat × nat → nat with λ n, m. n ≥ m |
| . -1 | nat-basic | pf | nat → nat with λ n. n ≠ 0 |
| . < . | nat-basic | p | nat × nat |
| . > . | nat | p | nat × nat |
| . [ . := . ] | cube | pf | cube('a) × nat × nat × nat × 'a → cube('a) with λ cu, nx, ny, nz, a. nx < #x cu ∧ ny < #y cu ∧ nz < #z cu |
| . [ . := . ] | array | pf | array('a) × nat × 'a → array('a) with λ ar, n, a. n < # ar |
| . [ . ] | cube | pf | cube('a) × nat × nat × nat → 'a with λ cu, nx, ny, nz. nx < #x cu ∧ ny < #y cu ∧ nz < #z cu |
| . [ . ] | array | pf | array('a) × nat → 'a with λ ar, n. n < # ar |
| . [ . ]xy | cube+array | pf | cube('a) × nat × nat → array('a) with λ cu, nx, ny. nx < #x cu ∧ ny < #y cu |
| . [ . ]xz | cube+array | pf | cube('a) × nat × nat → array('a) with λ cu, nx, nz. nx < #x cu ∧ nz < #z cu |
| . [ . ]yz | cube+array | pf | cube('a) × nat × nat → array('a) with λ cu, ny, nz. ny < #y cu ∧ nz < #z cu |
| . ≤ . | nat | p | nat × nat |
| . ≥ . | nat | p | nat × nat |
| array | array | s | |
| cu | cube+array | v | cube('a) |
| cube | cube | s | |
| mkarray | array | f | nat → array('a) |
| mkcube | cube | f | nat × nat × nat × 'a → cube('a) |
| nat | nat-basic | s | |
| nx | cube+array | v | nat |
| ny | cube+array | v | nat |
| nz | cube+array | v | nat |