intros.
inversion H; assumption.
Qed.

(* Specifications: *)
Lemma inv_below_left :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_below (Avl_Node k d l r b) k0 -> is_below l k0.
Lemma inv_below_right :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_below (Avl_Node k d l r b) k0 -> is_below r k0.
Lemma below_trans :
forall (t : avl_tree) (k0 k1 : Int),
is_below t k0 -> Less k0 k1 -> is_below t k1.
Lemma inv_above_left :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_above (Avl_Node k d l r b) k0 -> is_above l k0.
Lemma inv_above_right :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_above (Avl_Node k d l r b) k0 -> is_above r k0.
Lemma above_trans :
forall (t : avl_tree) (k0 k1 : Int),
is_above t k0 -> Less k1 k0 -> is_above t k1.
Lemma inv_fully_balanced :
forall l r : avl_tree, is_balanced l r Balanced -> height l = height r.
Lemma inv_right_balanced :
forall l r : avl_tree,
is_balanced l r Right_Balanced -> S (height l) = height r.
Lemma inv_below_avl_right :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_below_avl (Avl_Node k d l r b) k0 -> is_below_avl r k0.
Lemma below_avl_trans :
forall (t : avl_tree) (k0 k1 : Int),
is_below_avl t k0 -> Less k0 k1 -> is_below_avl t k1.
Lemma inv_above_avl_left :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
is_above_avl (Avl_Node k d l r b) k0 -> is_above_avl l k0.
Lemma above_avl_trans :
forall (t : avl_tree) (k0 k1 : Int),
is_above_avl t k0 -> Less k1 k0 -> is_above_avl t k1.
Lemma inv_fully_balanced_avl :
forall l r : avl_tree,
is_balanced_avl l r Balanced -> height_avl l = height_avl r.
Lemma inv_right_balanced_avl :
forall l r : avl_tree,
is_balanced_avl l r Right_Balanced -> S (height_avl l) = height_avl r.
Lemma hasnot_grown_left__preserves_is_balanced_avl :
forall (l l0 r0 : avl_tree) (b0 : bal),
is_balanced_avl l0 r0 b0 ->
height_avl l = height_avl l0 -> is_balanced_avl l r0 b0.
Lemma inv_is_avl_right :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal),
is_avl (Avl_Node k d l r b) -> is_avl r.
Lemma inv_is_avl_is_balanced_avl :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal),
is_avl (Avl_Node k d l r b) -> is_balanced_avl l r b.
Lemma inv_is_avl_is_is_below_avl :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal),
is_avl (Avl_Node k d l r b) -> is_below_avl l k.
Lemma inv_is_avl_is_is_above_avl :
forall (k : Int) (d : B) (l r : avl_tree) (b : bal),
is_avl (Avl_Node k d l r b) -> is_above_avl r k.
Lemma avl_height_avl_height :
forall t : avl_tree, is_avl t -> height_avl t = height t.