Definition same_constructive_silhouette {A} {JOIN: Join A} (a b: A) :=
forall c, (constructive_joins c a -> constructive_joins c b) *
(constructive_joins c b -> constructive_joins c a).
Definition sub_constructive_silhouette {A} {JOIN: Join A}  (a b: A) :=
forall c, constructive_joins c b -> constructive_joins c a.

(* Specifications: *)
Lemma sub_constructive_silhouette_refl {A} {JOIN: Join A} : forall a, sub_constructive_silhouette a a.
Lemma constructive_join_sub_joins_trans {A} {JA: Join A}{PA: Perm_alg A}: forall {a b c},
constructive_join_sub a c -> constructive_joins c b -> constructive_joins a b.
Lemma join_constructive_join_sub1 {A} {JA: Join A}{PA: Perm_alg A}: forall {a b c},
join a b c -> constructive_join_sub a c.