Fixpoint value_beq (v1 v2 : value) : bool :=
  match v1, v2 with
  | c_capply c lv, c_capply c' lv' => constructor_beq c c' && list_beq _ value_beq lv lv'
  end.

(* Specifications: *)
Lemma value_ind2 : forall (P : value -> Prop), (forall c l, (forall v, In v l -> P v) -> P (c_capply c l)) -> forall v, P v.
Lemma value_beq_eq v1 v2 : value_beq v1 v2 = true <-> v1 = v2.