induction l1 as [| a1 l1 IH].
intros H; case H; auto.
intros _ Hl2.
case (list_case _ l1); intros; subst; simpl app; rewrite joinlS; auto.
rewrite joinlS, IH, join_assoc; auto.
destruct l1; auto; try (intros; discriminate).
Qed.

(* Specifications: *)
Lemma joinl_base1_perm n l1 l2 :
perm l1 l2 ->
(forall x, In x l1 -> cbl _ (base n 1) x) ->
(joinl n l1 = joinl n l2) \/ (joinl n l1 = (-(1)).* joinl n l2) .
Lemma joinl0_base1_perm n l1 l2 : perm l1 l2 ->
(forall x, In x l1 -> cbl _ (base n 1) x) -> joinl n l1 = 0 -> joinl n l2 = 0.
Lemma lift_joinl n l : lift n (joinl n l) = joinl n.+1 (map (lift n) l).
Lemma joinl_hom1 n l :
(forall x, In x l -> hom n 1 x) -> hom n (length l) (joinl n l).