Definition constructive_joins {A}  {JOIN: Join A} (w1 w2 : A) := {w3 | join w1 w2 w3}.

(* Specifications: *)
Lemma cjoins_joins {A} {JOIN: Join A}: forall {w1 w2}, constructive_joins w1 w2 -> joins w1 w2.
Lemma cjoins_irr {A} `{Perm_alg A}: forall {w1 w2: A} (j1 j2: constructive_joins w1 w2), proj1_sig j1 = proj1_sig j2.
Lemma constructive_joins_sym {A} `{Perm_alg A}: forall a b, constructive_joins a b = constructive_joins b a.