Foo.val : (α β : Type) → [self : Foo α β] → Nat 10 valOf2 Bool Bool : Nat fun (x y : Nat) => f x y 10 : Nat → Nat → Nat fun (a : Nat) => g a 10 : Nat → Nat fun (a : Bool) => h Bool a true : Bool → Bool