\lambda n:nat. \lambda H:n=n.\lambda g:(?\to (le n 0))\to True.(g \lambda f.(f n H)) ### (* METASENV after disambiguation *) n : nat; H : (eq nat n n); _ :? _; _ :? _; _ : nat |- ?26: Type n : nat; H : (eq nat n n); _ :? _; _ :? _; _ : nat |- ?27: ?26[n ; H ; _ ; _ ; __1] n : nat; H : (eq nat n n); _ :? _ |- ?8: Type n : nat; H : (eq nat n n); _ :? _ |- ?9: ?8[n ; H ; _] n : nat; H : (eq nat n n) |- ?5: Type n : nat; H : (eq nat n n) |- ?6: ?5[n ; H] ### (* TERM after disambiguation *) [n:nat][H:(eq nat n n)][g:(((nat->((eq nat __1 __1)->(le __2 O)))->(le n O))->True)](g [f:(nat->((eq nat __1 __1)->(le __2 O)))](f n H)) ### (* TYPE_OF the disambiguated term *) (n:nat)(H:(eq nat n n))(g:(((nat->((eq nat __1 __1)->(le __2 O)))->(le n O))->True))True ### (* REDUCED disambiguated term *) [n:nat][H:(eq nat n n)][g:(((nat->((eq nat __1 __1)->(le __2 O)))->(le n O))->True)](g [f:(nat->((eq nat __1 __1)->(le __2 O)))](f n H))