úÎ`{^$      !"#unknownunknown Patrick Bahr Safe-Infered 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. 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. BThis function provides the equivalence class the given element is contained in. <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. :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. 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.       unknownunknown Patrick Bahr Safe-InferedBThis 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 is a special case of  that only maintains .trivial equivalence class descriptors of type (). @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 is a special case of  that only 8maintains trivial equivalence class descriptors of type (). @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. !#This function is a special case of   that only maintains .trivial equivalence class descriptors of type (). ";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. ##This function is a special case of " that only maintains .trivial equivalence class descriptors of type (). ! 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. !"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. #$%&'()*+,-. !"# !"#  !"#$%&'()*+,-./          !"#$%&'equivalence-0.2.2Data.Equivalence.STTData.Equivalence.MonadEquivClass leastEquivgetClass combineAllcombine equateAllequatedesc classDescsame equivalentremove removeClass MonadEquiv===EquivM'EquivMEquivT'EquivTunEquivT runEquivT runEquivT' runEquivM runEquivM'$fMonadEquivcvdReaderT$fMonadEquivcvdStateT$fMonadEquivcvdErrorT$fMonadEquivcvdWriterT$fMonadEquivClassvdEquivT$fMonadErroreEquivT$fMonadStatestEquivT$fMonadWriterwEquivT$fMonadReaderrEquivT$fMonadTransEquivT $fMonadEquivT