proposition: Lemma Equiv_comb : forall R1 R2 rules1 rules2, (forall l r, R1 r l <-> In (l,r) rules1) -> (forall l r, R2 r l <-> In (l,r) rules2) -> (forall (l r : term), (@union _ R1 R2) r l <-> In (l,r) (rules1 ++ rules2)).
proof: Proof. intros R1 R2 rules1 rules2 Equiv1 Equiv2. intros l r; split; intro H. destruct H as [H | H]; apply in_or_app; [left; rewrite <- Equiv1 | right; rewrite <- Equiv2]; trivial. destruct (in_app_or _ _ _ H) as [H' | H']; [left; rewrite Equiv1 | right; rewrite Equiv2]; trivial. Qed.
imports: Coq(List Relations Wellfounded Arith Recdef Setoid) CoLoR(closure more_list weaved_relation term equational_theory_spec dp)