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.

Lemma same_constructive_silhouette_join {A} `{HA: Perm_alg A}: forall phi phi' phiy phiz phiz', same_constructive_silhouette phi phi' -> join phi phiy phiz -> join phi' phiy phiz' -> same_constructive_silhouette phiz phiz'.