Variables and Constants

Free variables can be defined simply by giving them a name

#![allow(unused)] fn main() { let b = Free "b" let r = Free "r" let l = Free "l" }

Constants are written with the constructor Bound. A node/baker constant is written by its name:

#![allow(unused)] fn main() { let b1 = Bound (N "b1") }

There are smart constructors for level and round constants so that they can be written easily:

#![allow(unused)] fn main() { let l3 = level 3 let r0 = round 0 }

Info

Once a free variable is bound to a constant by matching, it is bound to this same constant for the rest of the scenario.

Catch-all variables are written by the constructor Any or simply (two underscore symbols):

#![allow(unused)] fn main() { __ }