{- `build` is the inverse of `fold` -} let build : ( ∀(natural : Type) → ∀(succ : natural → natural) → ∀(zero : natural) → natural ) → Natural = Natural/build let example0 = assert : build ( λ(natural : Type) → λ(succ : natural → natural) → λ(zero : natural) → succ (succ (succ zero)) ) ≡ 3 let example1 = assert : build ( λ(natural : Type) → λ(succ : natural → natural) → λ(zero : natural) → zero ) ≡ 0 in build