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