Notation "'dC[ x ]" := (dconst _ x).

(* Specifications: *)
Lemma dconjk n b k :
[k] ^d_ b = (if b then [(-(1))^n.+1 * k] else [(-(1))^n * k]:vect n).
Lemma dconj_const n b (x: vect n) :
'C[x ^d_ b] = (if b then ((-(1))^n.+1 * 'C[x])%f else ((-(1))^n * 'C[x])%f).
Lemma conj_dconst n b (x: vect n) :
'dC[x ^_ b] = (if b then ((-(1))^n.+1 * 'dC[x])%f else  ((-(1))^n * 'dC[x])%f).
Lemma dconst_all n : 'dC[(E: vect n)] = 1%f .
Lemma homn_all n x : hom n n x -> x = 'dC[x] .* E.
Lemma const_dual n (x: vect n) : 'C['@x] = 'dC[x].
Fixpoint meet (n : nat) : vect n -> vect n -> vect n :=
match n return (vect n -> vect n -> vect n) with
| 0%nat => fun a b => (a * b)%f
| S n1 =>
fun v1 v2 =>
let (x1, y1) := v1 in
let (x2, y2) := v2 in (meet n1 x1 x2,
meet n1 x1 y2 +
meet n1 y1 (x2 ^d_'f))
end.