(** Elememt [a] is a subelement of [c] .  This relation forms a partial order. *)
  Definition join_sub {A} `{Join A} (a c : A) : Prop :=
    exists b, join a b c.

(* Specifications: *)
Lemma join_join_sub {A} `{Perm_alg A}: forall {a b c}, join a b c -> join_sub a c.
Lemma join_join_sub' {A} `{Perm_alg A}: forall {a b c}, join a b c -> join_sub b c.
Lemma join_sub_refl {A} {J: Join A}{PA: Perm_alg A}{SA: Sep_alg A}: forall a, join_sub a a.
Lemma join_sub_trans {A} {J: Join A}{PA: Perm_alg A}{SA: Sep_alg A}: forall a b c, join_sub a b -> join_sub b c -> join_sub a c.
Lemma join_sub_unit_for {A} {J: Join A}{PA: Perm_alg A}: forall e a b, unit_for e a -> join_sub a b -> unit_for e b.
Lemma join_sub_same_identity {A} {J: Join A}{PA: Perm_alg A}: forall e e' a c, identity e -> unit_for e a -> identity e' -> unit_for e' c -> join_sub a c -> e = e'.
Lemma join_sub_joins {A} `{HA: Perm_alg A}: forall {a b}, join_sub a b -> joins a b -> joins a a.
Lemma join_sub_joins_trans {A} `{HA: Perm_alg A}: forall {a b c}, join_sub a c -> joins c b -> joins a b.
Lemma join_sub_joins' {A} `{HA: Perm_alg A}: forall {a a' b b' : A}, join_sub a a' -> join_sub b b' -> joins a' b' -> joins a b.