Notation "| A |" := (length A) (at level 65).Hint Extern 4 => 
match goal with
|[ H: False |- _ ] => destruct H
|[ H: true=false |- _ ] => discriminate H
|[ H: false=true |- _ ] => discriminate H
end.(** ** Tactics *)
Ltac inv H := inversion H; subst; try clear H.

Lemma size_induction X (f : X -> nat) (p : X -> Prop) : (forall x, (forall y, f y < f x -> p y) -> p x) -> forall x, p x.