fact: Fixpoint defined_subterms (is_def : symbol -> bool) (lhs : term) (acc: list term) (t:term) {struct t} := match t with | Var _ => acc | Term f l => let acc' := if is_def f then if eq_bool lhs t then t :: acc else if is_subterm t lhs then acc else t :: acc else acc in fold_left (defined_subterms is_def lhs) l acc' end.
imports: Coq(List Relations Wellfounded Arith Recdef Setoid) CoLoR(closure more_list weaved_relation term equational_theory_spec) CoLoR(NatCompat)