(* Doit-on définir explicitement term_value ? *)
Fixpoint term_value (t: term) : Prop :=
  match t with
    | capply _ lt => andl (map term_value lt)
    | _ => False
  end.

(* Specifications: *)
Lemma term_value_eqv (t: term) : term_value t <-> exists (v: value), t = term_from_value v.