Random Lean experiments
-- https://lean-lang.org/documentation/examples/phoas/ inductive Ty where | nat | fn : Ty → Ty → Ty @[reducible] def Ty.denote : Ty → Type | nat => Nat | fn a b => a.denote → b.denote