Definition dist_compl_def_1 (A : Set) (p : prechain A) : Prop :=
  dist_compl_def_0 A p -> forall m : Map A, dist_compl_def_0 A (concat A p m).

(* Specifications: *)
Lemma dist_compl_1 : forall (A : Set) (m : Map A), dist_compl_def_1 A (single A m).
Lemma dist_compl_2 : forall (A : Set) (p : prechain A), dist_compl_def_1 A p -> forall m : Map A, dist_compl_def_1 A (concat A p m).
Lemma dist_compl_3 : forall (A : Set) (p : prechain A), dist_compl_def_0 A p -> forall m : Map A, dist_compl_def_0 A (concat A p m).
Lemma dist_compl_4 : forall (A : Set) (p : prechain A), dist_chain A p \/ non_dist_chain A p.
Lemma dist_compl_5 : forall (A : Set) (x : Map A), ~ dist_chain A (concat A (single A x) x).
Lemma dist_compl_6 : forall (A : Set) (x : Map A) (z : prechain A), ~ dist_chain A (concat A (concat A z x) x).
Lemma dist_compl_7 : forall (A : Set) (x y : Map A) (z : prechain A), non_dist_chain A (concat A z x) -> ~ dist_chain A (concat A z x) -> ~ dist_chain A (concat A (concat A z x) y).
Lemma dist_compl_8 : forall (A : Set) (p : prechain A), non_dist_chain A p -> ~ dist_chain A p.
Lemma dist_compl : forall (A : Set) (p : prechain A), ~ dist_chain A p <-> non_dist_chain A p.