Code for manipulation of equivalence classes on index types. An
Equivalence is an equivalence relation. The empty equivalence relation
is constructed over a ranges of values using
discerning equivalence relations can be obtained with
equateAll. The relation can be tested with
An example follows:
import Data.Equivalence.Persistent rel = equateAll [1,3,5,7,9] . equate 5 6 . equate 2 4 $ emptyEquivalence (1,10) test1 = equiv rel 3 5 -- This is True test2 = equiv rel 1 6 -- This is True test3 = equiv rel 4 6 -- This is False
- data Equivalence i
- emptyEquivalence :: Ix i => (i, i) -> Equivalence i
- domain :: Ix i => Equivalence i -> (i, i)
- equiv :: Ix i => Equivalence i -> i -> i -> Bool
- equivalent :: Ix i => Equivalence i -> [i] -> Bool
- equate :: Ix i => i -> i -> Equivalence i -> Equivalence i
- equateAll :: Ix i => [i] -> Equivalence i -> Equivalence i
Equivalence is an equivalence relation on a range of values of some
emptyEquivalence is an equivalence relation that equates two values
only when they are equal to each other. It is the most discerning such
Gets the domain of an equivalence relation, as the ordered pair of index bounds.
Determines if two values are equivalent under the given equivalence relation.
Determines if all of the given values are equivalent under the given equivalence relation.
Construct the equivalence relation obtained by equating the given two values. This combines equivalence classes.