open function bool constant f : num → bool constant g : num → num #check f ∘ g ∘ g #check (id : num → num) constant h : num → bool → num #check swap h #check swap h ff num.zero #check (swap h ff num.zero : num) constant f1 : num → num → bool constant f2 : bool → num #check (f1 on f2) ff tt