WXT   $(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None,The type of directed acyclic graphs (DAGs). +s are used as a compact representation of  s. the entry point for the DAG the edges of the DAG$the total number of nodes in the DAG6The type of the compact edge representation used in a .The type of node in a .   $(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None !"$+M  This exception indicates that a   could not be reified to a  (using &) due to its cyclic sharing structure.)Turn a term into a graph without sharing.*This function takes a term, and returns a  with the implicit sharing of the input data structure made explicit. If the sharing structure of the term is cyclic an exception of type  is thrown.@This function unravels a given graph to the term it represents.UChecks whether two dags are bisimilar. In particular, we have the following equality )bisim g1 g2 = (unravel g1 == unravel g2) CThat is, two dags are bisimilar iff they have the same unravelling.1Checks whether the two given DAGs are isomorphic.Checks whether the two given DAGs are strongly isomorphic, i.e. their internal representation is the same modulo renaming of nodes.This function flattens the internal representation of a DAG. That is, it turns the nested representation of edges into single layers.MChecks whether the two given dag representations are isomorphic. This function is polymorphic in the representation of the edges. The first argument is a function that checks whether two edges have the same labelling and if so, returns the matching pairs of outgoing nodes the two edges point to. Otherwise the function returns .  $(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None 2346HJKM 8The type of semantic functions for inherited attributes.gThe type of semantic functions for inherited attributes. For defining semantic functions use the type r, which includes the inherited attribute that is defined by the semantic function into the available attributes.:The type of semantic functions for synthesised attributes.iThe type of semantic functions for synthesised attributes. For defining semantic functions use the type t, which includes the synthesised attribute that is defined by the semantic function into the available attributes.XA simple rewrite function that may depend on (inherited and/or synthesised) attributes.[This function provides access to attributes of the immediate children of the current node.?This function provides access to attributes of the current node Turns the explicit parameters ?above and ?below into explicit ones.!Combines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes."Combines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes.#Combines the semantic functions for two inherited attributes to form a semantic function for the compound attribute consisting of the two original attributes.$Combines the semantic functions for two inherited attributes to form a semantic function for the compound attribute consisting of the two original attributes.  !"#$  !"#$  !"#$$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None !"3CHM}This function runs an attribute grammar on a dag. The result is the (combined) synthesised attribute at the root of the dag.This function runs an attribute grammar with rewrite function on a dag. The result is the (combined) synthesised attribute at the root of the dag and the rewritten dag.%zThis function relabels the nodes of the given dag. Parts that are unreachable from the root are discarded. Instead of an IntMap, edges are represented by a &.,resolution function for inherited attributes+semantic function of synthesised attributes)semantic function of inherited attributes&initialisation of inherited attributes input dag,resolution function for inherited attributes+semantic function of synthesised attributes)semantic function of inherited attributes&initialisation of inherited attributes input term%'()*+,-./01234!"#$%$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None3HJKM This function runs an attribute grammar on a term. The result is the (combined) synthesised attribute at the root of the term. This function runs an attribute grammar with rewrite function on a term. The result is the (combined) synthesised attribute at the root of the term and the rewritten term. +semantic function of synthesised attributes)semantic function of inherited attributes&initialisation of inherited attributes input term +semantic function of synthesised attributes)semantic function of inherited attributes&initialisation of inherited attributes input term'()*+,-./01234!"#$   5       !"#$%&'()*+,-./01212131415161718191:1;<=><=?@compdata-dags-0.1 Data.Comp.DagData.Comp.Dag.AG Data.Comp.AGData.Comp.Dag.InternalData.Comp.AG.InternalDagtermTreereifyDagunravelbisimiso strongIsorunAG runRewrite compdata-0.9Data.Comp.TermTermrootedges nodeCountEdgesNodeCyclicExceptionflattencheckIsobase Data.MaybeNothing$fExceptionCyclicException $fShowDagInhInh'SynSyn'RewritebelowaboveexplicitprodSyn|*|prodInh>*< relabelNodesvector-0.10.11.0 Data.VectorVectorData.Traversable TraversableData.Comp.MappingNumbered|->prodMapfindWithDefaultempty&Mapping unNumberednumber lookupNumMapprojection-0.1Data.Projection:<pr