Instance Permutation_length' A {JA : Join A} {PA : Perm_alg A} :
  Proper (@Permutation A ==> @eq A ==> Logic.iff) joinlist | 10.

(* Specifications: *)
Lemma joinlist_app {A} {JA : Join A} {PA : Perm_alg A} l1 l2 x1 x2 x : joinlist l1 x1 -> joinlist l2 x2 -> join x1 x2 x -> joinlist (l1 ++ l2) x.
Lemma app_joinlist {A} {JA : Join A} {SA : Sep_alg A} {PA : Perm_alg A} l1 l2 x : joinlist (l1 ++ l2) x -> exists x1 x2, joinlist l1 x1 /\ joinlist l2 x2 /\ join x1 x2 x.
Lemma joinlist_merge {A} {JA : Join A} {PA : Perm_alg A} (a b c x : A) l : join a b c -> joinlist (a :: b :: l) x <-> joinlist (c :: l) x.
Lemma joinlist_swap {A} {JA : Join A} {PA : Perm_alg A} (a b x : A) l : joinlist (a :: b :: l) x = joinlist (b :: a :: l) x.
Lemma joinlist_join_sub {A} {JA : Join A} {PA : Perm_alg A} (x phi : A) l : joinlist l phi -> In x l -> join_sub x phi.