(*********************************************************)
(*		Definition is_above_avl		  	 *)

Inductive is_above_avl : avl_tree -> Int -> Prop :=
  | Above_Avl_Nil : forall k0 : Int, is_above_avl Avl_Nil k0
  | Above_Avl_Node :
      forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
      Less k0 k -> is_above_avl l k0 -> is_above_avl (Avl_Node k d l r b) k0.(*********************************************************)
(*		Definition is_above_avl		  	 *)

Inductive is_above_avl : avl_tree -> Int -> Prop :=
  | Above_Avl_Nil : forall k0 : Int, is_above_avl Avl_Nil k0
  | Above_Avl_Node :
      forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
      Less k0 k -> is_above_avl l k0 -> is_above_avl (Avl_Node k d l r b) k0.(*********************************************************)
(*		Definition is_above_avl		  	 *)

Inductive is_above_avl : avl_tree -> Int -> Prop :=
  | Above_Avl_Nil : forall k0 : Int, is_above_avl Avl_Nil k0
  | Above_Avl_Node :
      forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int),
      Less k0 k -> is_above_avl l k0 -> is_above_avl (Avl_Node k d l r b) k0.

(* Specifications: *)
Lemma inv_above_avl_key : forall (k : Int) (d : B) (l r : avl_tree) (b : bal) (k0 : Int), is_above_avl (Avl_Node k d l r b) k0 -> Less k0 k.
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 above_above_avl : forall (t : avl_tree) (key : Int), is_above t key -> is_above_avl t key.