Definition term_from_active_term (t: active_term) : term :=
let (f, lv) := t in
fapply f (map (@term_from_value _ _ _) lv).
Definition value_list_order (lv lv' : list value) : Prop :=
suml (map (@value_size _) lv) < suml (map (@value_size _) lv').

Lemma unify_all_vars_defined :
forall (s s': list (variable * value)) (v: value) (p: pattern),
unify s v p = Some s' ->
forall x, In x (vars_of_pattern p) -> assoc (variable_beq variable_eq_dec) x s' <> None.