(* assignment of a value*)
Fixpoint value_assignment (qic:assignment_constructor) (v:value) {struct v}:=
   match v with
  | c_capply c lv => qic c (map (value_assignment qic) lv)
   end.

Lemma value_size_le_QI qic cs: additive qic cs -> constructor_non_zero cs -> forall v:value, value_size v <= value_assignment qic v.