(***************************************************************************)

Definition LIN_AVL (T : AVL) := match T with
                                | AVL_intro t _ => lin_avl t
                                end.(***************************************************************************)

Definition LIN_INS (key : Int) (update : B -> B) (init : B) 
  (T0 T : AVL) :=
  match T0 with
  | AVL_intro t0 _ =>
      match T with
      | AVL_intro t _ => lin_ins_spec key update init t0 t
      end
  end.Definition EQUIV_INS (key : Int) (update : B -> B) 
  (init : B) (T0 T : AVL) :=
  match T0 with
  | AVL_intro t0 _ =>
      match T with
      | AVL_intro t _ => equiv_ins key update init t0 t
      end
  end.Definition INSRT_Spec (key : Int) (update : B -> B) 
  (init : B) (T0 : AVL) :=
  match T0 with
  | AVL_intro t0 _ => avl_ins_spec key update init t0
  end.

(* Specifications: *)
Theorem INSRT_AVL : forall (key : Int) (update : B -> B) (init : B) (T0 : AVL), INSRT_Spec key update init T0.