proposition: Lemma size_induction {X : Type} (measure : X -> nat) (p : X ->Prop) : ( forall x, ( forall y, measure y < measure x -> p y) -> p x) -> forall x, p x.
proof: Proof. move => A x. apply: (A). elim: (measure x) => // n IHn y Hy. apply: A => z Hz. apply: IHn. exact: leq_trans Hz Hy. Qed.
imports: mathcomp(all_ssreflect)