inductive imf (f : nat → nat) : nat → Type | mk1 : ∀ (a : nat), imf (f a) | mk2 : imf (f 0 + 1) definition inv_2 (f : nat → nat) : ∀ (b : nat), imf f b → {x : nat \ x > b} →nat | ⌞f a⌟ (imf.mk1 ⌞f⌟ a) x := a | ⌞f 0 + 1⌟ (imf.mk2 ⌞f⌟) x := subtype.elt_of x