effect-ts-laws
Version:
effect-ts law testing using fast-check.
15 lines • 592 B
JavaScript
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