Definition sub_silhouette {A} `{Perm_alg A} (a b: A) : Prop :=
forall c, joins c b -> joins c a.
Definition same_silhouette {A} `{Perm_alg A} (a b: A) : Prop :=
forall c, joins c a <-> joins c b.

(* Specifications: *)
Lemma sub_silhouette_refl {A} `{Perm_alg A}: forall a, sub_silhouette a a.
Lemma same_silhouette_trans {A} `{Perm_alg A}: forall a b c,
same_silhouette a b -> same_silhouette b c -> same_silhouette a c.