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 eq_psubst_consistent_assoc_extension :
forall s s' p,
(forall x, assoc (variable_beq variable_eq_dec) x s <> None -> assoc (variable_beq variable_eq_dec) x s' = None) ->
(forall x, In x (vars_of_pattern p) -> assoc (variable_beq variable_eq_dec) x s <> None) ->
psubst (assoc_default (variable_beq variable_eq_dec) value_default (s' ++ s)) p =
psubst (assoc_default (variable_beq variable_eq_dec) value_default s) p.