(* Note: there are two other conceivable conclusions from the above premises: "joins b b" and "join_sub b a".  Neither must follow, since neither is true on the bools, but also neither is a contradiction since both are true on Z *)

(* Specifications: *)
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.