Section Unifiability.
Definition unifies sigma s t := sigma • s = sigma • t.
Definition Unifies sigma E := forall e, e ∈ E -> unifies sigma (fst e) (snd e).
Global Instance unifies_equiv sigma: Equivalence (unifies sigma).
Hint Rewrite Unifies_app : simplify.
Definition equi_unifiable (E1 E2: eqs X) :=
forall sigma, Unifies sigma E1 <-> Unifies sigma E2.
Notation "E1 ≈ E2" := (equi_unifiable E1 E2) (at level 80).
Global Instance equi_unifiable_equivalence: Equivalence equi_unifiable.
Instance equi_unifiable_app:
Proper (equi_unifiable ++> equi_unifiable ++> equi_unifiable)
(@List.app (eq X)).

Lemma equi_unifiable_decompose_app s1 s2 t1 t2:
[(s1 s2, t1 t2)] ≈ [(s1, t1); (s2, t2)].