(* Base of k vector *)
Fixpoint base (n: nat) k:list (vect n) :=
match n return list (vect n) with
| O =>  match k with | O => 1%f::nil | _ => nil end
| S n1 =>
match k with | O =>
map (lift n1) (base n1 k) | S k1 =>
(map (dlift n1) (base n1 k1) ++
map (lift n1) (base n1 k))%list
end
end.

Lemma cbl_base1_list_split n l:
(forall x, In x l -> cbl _ (base n.+1 1) x) ->
exists lk, exists ly,
(forall i, In i lk -> (fst i) <> 0%f) /\
(forall i, In i lk -> cbl _ (base n 1) (snd i)) /\
(forall i, In i ly -> cbl _ (base n 1) i) /\
perm l ((map (fun x => ([fst x],(snd x))) lk) ++ map (lift n) ly).