úÎx>u7      unknownunknown Patrick Bahr)8This is the top-level data structure that represents an 6equivalence relation. An equivalence relation of type  s c a $lives in the state space indexed by s, contains equivalence class descriptors of type c and has elements of type a. !8maps elements to their entry in the tree data structure "Aconstructs an equivalence class descriptor for a singleton class #9combines the equivalence class descriptor of two classes # which are meant to be combined. $%6This type represents entries (nodes) in the tree data structure. Entry data of type % s c a lives in the state space  indexed by s1, contains equivalence class descriptors of type c and has elements of type a. &'()*+,->This type represents a reference to an entry in the tree data structure. An entry of type .- s c a lives in the state space  indexed by s1, contains equivalence class descriptors of type c and has elements of type a. ./8This function constructs the initial data structure for Fmaintaining an equivalence relation. That is it represents, the fines A(or least) equivalence class (of the set of all elements of type a8). The arguments are used to maintain equivalence class descriptors. Hused to construct an equivalence class descriptor for a singleton class @used to combine the equivalence class descriptor of two classes # which are meant to be combined. 0>This function returns the representative entry of the argument's 1equivalence class (i.e. the root of its tree) or Nothing if it is the representative itself. +This function performs path compression. 1>This function returns the representative entry of the argument's /equivalence class (i.e. the root of its tree). +This function performs path compression. 2=This function provides the representative entry of the given =equivalence class. This function performs path compression. 3AThis function constructs a new (root) entry containing the given entry'@s value, inserts it into the lookup table (thereby removing any existing entry). the constructed entry 4AThis function constructs a new (root) entry containing the given Gvalue, inserts it into the lookup table (thereby removing any existing  entry). the constructed entry BThis function provides the equivalence class the given element is contained in. 56CThis function looks up the entry of the given element in the given 'equivalence relation representation or Nothing if there is none, yet. 7AThis function equates the two given elements. That is, it unions ?the equivalence classes of the two elements and combines their  descriptor. 8AThis function equates all elements given in the list by pairwise  applying 7. <This function combines all equivalence classes in the given Flist. Afterwards all elements in the argument list represent the same equivalence class! 1This function combines the two given equivalence Bclasses. Afterwards both arguments represent the same equivalence Dclass! One of it is returned in order to represent the new combined equivalence class. AThis function equates the element in the given list. That is, it Bunions the equivalence classes of the elements and combines their  descriptor. AThis function equates the two given elements. That is, it unions ?the equivalence classes of the two elements and combines their  descriptor. 2This function returns the descriptor of the given equivalence class. 9This function returns the descriptor of the given element's equivalence class. @This function decides whether the two given equivalence classes are the same. @This function decides whether the two given elements are in the Csame equivalence class according to the given equivalence relation representation. 98This function modifies the content of a reference cell. :7This function marks the given root entry as deleted. :This function removes the given equivalence class. If the *equivalence class does not exists anymore False is returned;  otherwise True. 9This function removes the equivalence class of the given 9element. If there is no corresponding equivalence class, False is returned; otherwise True.      unknownunknown Patrick BahrBThis class specifies the interface for a monadic computation that %maintains an equivalence relation. 9This function decides whether the two given elements are 8 equivalent in the current equivalence relation 9This function obtains the descriptor of the given element's  equivalence class. AThis function equates the element in the given list. That is, it H unions the equivalence classes of the elements and combines their  descriptor. 9This function equates the given two elements. That is it = unions the equivalence classes of the two elements. 9This function removes the equivalence class of the given ? element. If there is no corresponding equivalence class, False is  returned; otherwise True. ?This function provides the equivalence class the given element  is contained in. <This function combines all equivalence classes in the given L list. Afterwards all elements in the argument list represent the same  equivalence class! 1This function combines the two given equivalence H classes. Afterwards both arguments represent the same equivalence J class! One of it is returned in order to represent the new combined  equivalence class. @This function decides whether the two given equivalence classes  are the same. 2This function returns the descriptor of the given  equivalence class. :This function removes the given equivalence class. If the 0 equivalence class does not exists anymore False is returned;  otherwise True. @This monad encapsulates computations maintaining an equivalence (relation. A monadic computation of type  s c v a maintains a state space indexed by type s$, maintains an equivalence relation over elements of type v, with equivalence class descriptors of type c and returns a value of type a. @This monad transformer encapsulates computations maintaining an 4equivalence relation. A monadic computation of type  s c v m a) maintains a state space indexed by type s, maintains an +equivalence relation over elements of type v with equivalence class descriptors of type c. and contains an internal monadic computation of type m a. ;This function runs a monadic computation that maintains an Gequivalence relation. The first tow arguments specify how to construct Aan equivalence class descriptor for a singleton class and how to ,combine two equivalence class descriptors. Hused to construct an equivalence class descriptor for a singleton class @used to combine the equivalence class descriptor of two classes # which are meant to be combined. ;This function runs a monadic computation that maintains an Gequivalence relation. The first tow arguments specify how to construct Aan equivalence class descriptor for a singleton class and how to ,combine two equivalence class descriptors. Hused to construct an equivalence class descriptor for a singleton class @used to combine the equivalence class descriptor of two classes # which are meant to be combined.  ;          !"#$$%&'()*+,-./0equivalence-0.2.0Data.Equivalence.STTData.Equivalence.MonadEquivClass leastEquivgetClass combineAllcombine equateAllequatedesc classDescsame equivalentremove removeClass MonadEquiv===EquivMEquivTunEquivT runEquivT runEquivMentries singleDesccombDescEntries EntryDataRoot entryDesc entryWeight entryDeletedNode entryParent entryValueEntryrepresentative'representativeclassRepmkEntry'mkEntry getEntry'getEntry equateEntry equateEntries modifySTRef removeEntry