import data.nat
inductive foo (A B : Type) : Type :=
mk : (Π {C : Type}, A → C → B) → foo A B

definition to_fun [coercion] {A B : Type} (f : foo A B) : Π {C : Type}, A → C → B :=
foo.rec (λf, f) f

constant f : foo nat nat
constant a : nat
check f a true