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_cons x s E:
(var x, s) :: E ≈ (var x, s) :: (update x s var •₊₊ E).