proposition: Lemma acc_subterms_1 : forall R t s, Acc (one_step R) t -> direct_subterm s t -> Acc (one_step R) s.
proof: Proof. intros R t s Acc_t; generalize s; clear s; pattern t; refine (@Acc_ind _ (one_step R) _ _ t Acc_t). clear t Acc_t; intros t Acc_t IH s H; destruct t as [ x | f l]; simpl in H. contradiction. apply Acc_intro; intros u H'; destruct (In_split _ _ H) as [l1 [l2 H'']]; subst l; apply (IH (Term f (l1 ++ u :: l2))). apply one_step_context_in; trivial. simpl; apply in_or_app; right; left; trivial. Qed.
imports: Coq(List Relations Wellfounded Arith Setoid) CoLoR(closure more_list weaved_relation dickson term_spec equational_theory_spec)