:type let f : (a -> a) -> a -> a = \g. (\x. g (g x)) in f (\x. x+x) :type let f : (a -> a) -> a -> a = \g. (\x. g (g x)) in f (\x. x-x) :type let f : (a -> a) -> a -> a = \g. (\x. g (g x)) in f (\x. x/x) :type let f : (a -> a) -> a -> a = \g. (\x. g (g x)) in f (\x. -x/x) :type \x.x :type \x. \y. x :type \x. \y. \z. x + y + z :type \x. \(y:Nat). x - y :type \w. \x:Nat. \y. \z : Frac. w - x + y + z \x. \y:Bool. x - y