UNPKG

effect-ts-laws

Version:
15 lines 592 B
import { Law, lawTests } from '#law'; import { implies, Equivalence as BooleanEquivalence } from 'effect/Boolean'; import { symmetry } from '#algebra'; /** * Build laws for `Equivalence`. * @category typeclass laws */ export const equivalenceLaws = ({ F, a, }) => { return lawTests('Equivalence', Law('transitivity', 'a=b ∧ b=c ⇒ a=c', a, a, a)((a, b, c) => implies(F(a, b) && F(b, c), F(a, c))), symmetry({ f: F, a, equals: BooleanEquivalence, }, 'a=b ⇔ b=a'), Law('reflexivity', 'a=a', a)((a) => F(a, a))); }; //# sourceMappingURL=Equivalence.js.map