Lock
Types
Functions
def new_lock (_ : Unit) : {l : Lock | lock_held l = false}
def acquire (1 l : Lock | lock_held l = false) : {out : Lock | lock_held out = true}
def release (1 l : Lock | lock_held l = true) : {out : Lock | lock_held out = false}
def destroy (1 l : Lock | lock_held l = false) : Unit
Uninterpreted
Functions declared as def f ... = uninterpreted: only their signature is known to the verifier; they have no body.
def lock_held : (l : Lock) → Bool