Definition Regular (t : avl_tree (list A)) :=
  forall (k : Int) (d : list A), lookup (list A) k t d -> d = nil -> False.Remark regular_nil : Regular (Avl_Nil (list A)).Remark regular_equiv_del :
 forall (key : Int) (t t' : avl_tree (list A)),
 Regular t -> equiv_del (list A) key t t' -> Regular t'.Remark regular_equiv_ins :
 forall (key : Int) (data : A) (t t' : avl_tree (list A)),
 is_avl (list A) t ->
 is_avl (list A) t' ->
 Regular t -> equiv_ins (list A) key (cons data) nil t t' -> Regular t'.(***********************************************************************)

Definition REGULAR (t : AVL (list A)) :=
  match t with
  | AVL_intro t _ => Regular t
  end.

(* Specifications: *)
Lemma regular_AVL_NIL : REGULAR (AVL_NIL (list A)).
Lemma regular_EQUIV_DEL : forall (key : Int) (T T' : AVL (list A)), REGULAR T -> EQUIV_DEL (list A) key T T' -> REGULAR T'.
Lemma regular_EQUIV_INS : forall (key : Int) (data : A) (T T' : AVL (list A)), REGULAR T -> EQUIV_INS (list A) key (cons data) nil T T' -> REGULAR T'.