Variables can be bound to any entity, including other variables. The variable and procedure stores are monotonic, i.e., information can only be added to them, not changed or removed. Figure 1.1 defines the abstract syntax of a statement S in the kernel language. We briefly define each possible statement. Statement sequences are reduced sequentially inside a thread.
All variables are logic variables, declared in an explicit scope defined by the local statement.
Procedures are defined at run-time with the proc statement and referred to by a variable. Procedure applications block until their first argument refers to a procedure. State is created explicitly by NewCell , which creates a cell, an updateable pointer into the variable store. Cells are updated by Exchange and read by Access . Conditionals use the keyword if and block until the condition variable B is true or false in the variable store.