!F<      !"#$%&'()*+,-./0123456789:;$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None<>?QSTV  compdata-dags8The type of semantic functions for inherited attributes. compdata-dagsgThe 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. compdata-dags:The type of semantic functions for synthesised attributes. compdata-dagsiThe 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. compdata-dagsXA simple rewrite function that may depend on (inherited and/or synthesised) attributes. compdata-dags[This function provides access to attributes of the immediate children of the current node. compdata-dags?This function provides access to attributes of the current node< compdata-dagsTurns the explicit parameters ?above and ?below into explicit ones. compdata-dagsCombines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes. compdata-dagsCombines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes.  compdata-dagsCombines the semantic functions for two inherited attributes to form a semantic function for the compound attribute consisting of the two original attributes.! compdata-dagsCombines 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<QSTV-" compdata-dagsThis function runs an attribute grammar on a term. The result is the (combined) synthesised attribute at the root of the term.# compdata-dagsThis 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." compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input term# compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input term  !"#"#  !$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None5$ compdata-dags,The type of directed acyclic graphs (DAGs). $+s are used as a compact representation of =s.> compdata-dagsthe entry point for the DAG? compdata-dagsthe edges of the DAG@ compdata-dags$the total number of nodes in the DAGA compdata-dags6The type of the compact edge representation used in a $.B compdata-dagsThe type of node in a $.$C@>?AB$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None $&')1VN@ D compdata-dags This exception indicates that a = could not be reified to a $ (using &&) due to its cyclic sharing structure.% compdata-dags)Turn a term into a graph without sharing.& compdata-dags*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 D is thrown.' compdata-dags@This function unravels a given graph to the term it represents.( compdata-dagsUChecks 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.) compdata-dags1Checks whether the two given DAGs are isomorphic.* compdata-dagsChecks whether the two given DAGs are strongly isomorphic, i.e. their internal representation is the same modulo renaming of nodes.E compdata-dagsThis function flattens the internal representation of a DAG. That is, it turns the nested representation of edges into single layers.F compdata-dagsMChecks 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 G.$%&'()*$%&'()*$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None $&'<LQV`. compdata-dags}This function runs an attribute grammar on a dag. The result is the (combined) synthesised attribute at the root of the dag./ compdata-dagsThis 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.H compdata-dagszThis 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 I.. compdata-dags,resolution function for inherited attributes compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input dag/ compdata-dags,resolution function for inherited attributes compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input term  !././  !$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None<>?QSTV{` 0 compdata-dags8The type of semantic functions for inherited attributes.1 compdata-dagsgThe type of semantic functions for inherited attributes. For defining semantic functions use the type 0r, which includes the inherited attribute that is defined by the semantic function into the available attributes.2 compdata-dags:The type of semantic functions for synthesised attributes.3 compdata-dagsiThe type of semantic functions for synthesised attributes. For defining semantic functions use the type 2t, which includes the synthesised attribute that is defined by the semantic function into the available attributes.4 compdata-dags[This function provides access to attributes of the immediate children of the current node.5 compdata-dags?This function provides access to attributes of the current node6 compdata-dagsCombines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes.7 compdata-dagsCombines the semantic functions for two synthesised attributes to form a semantic function for the compound attribute consisting of the two original attributes.8 compdata-dagsCombines the semantic functions for two inherited attributes to form a semantic function for the compound attribute consisting of the two original attributes.9 compdata-dagsCombines the semantic functions for two inherited attributes to form a semantic function for the compound attribute consisting of the two original attributes. <0123456789$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None<QSTV/: compdata-dagsThis function runs a parametric attribute grammar on a term. The result is the (combined) synthesised attribute at the root of the term.: compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input term  0123456789: : 0123456789$(c) 2014 Patrick Bahr, Emil AxelssonBSD3Patrick Bahr <paba@di.ku.dk> experimentalnon-portable (GHC Extensions)None$&';<=LQSTVBJ compdata-dags!The state space for the function K.; compdata-dags}This function runs an attribute grammar on a dag. The result is the (combined) synthesised attribute at the root of the dag.K compdata-dagsAllocates a fresh node for the given context. A new edge is store in the state monad that maps the fresh node to the context that was passed to the function. If the context is just a single node, that node is returned.L compdata-dagskThis function relabels the nodes of the given dag. Parts that are unreachable from the root are discarded.; compdata-dags,resolution function for inherited attributes compdata-dags+semantic function of synthesised attributes compdata-dags)semantic function of inherited attributes compdata-dags&initialisation of inherited attributes compdata-dags input term  0123456789; ; 0123456789M                      ! "#$%&'()*+,-./0123456789./#$%&()*+,-::; <=>?@AB0CDE FGHIJKLMHN*compdata-dags-0.2.1-D9dd10fTY2QJCc7kVoH1Cw Data.Comp.AG Data.Comp.PAG Data.Comp.DagData.Comp.Dag.AGData.Comp.Dag.PAGData.Comp.AG.InternalData.Comp.Dag.InternalData.Comp.PAG.InternalbaseData.Traversable Traversable$compdata-0.12-CeFRmeS8zRuKuhc6rRWnMzData.Comp.Multi.Projectionpr:< Data.Comp.Opsfsndffst:*:Data.Comp.ProjectionData.Comp.Mapping lookupNumMap' lookupNumMapprodMapnumber unNumberedNumberedfindWithDefault prodMapWithempty|->&MappingNumMapInhInh'SynSyn'RewritebelowaboveprodSyn|*|prodInh>*<runAG runRewriteDagtermTreereifyDagunravelbisimiso strongIso $fShowDag$fExceptionCyclicException$fShowCyclicExceptionrunPAGexplicitData.Comp.TermTermrootedges nodeCountEdgesNodeCyclicExceptionflattencheckIsoGHC.BaseNothing relabelNodes&vector-0.12.0.1-GC2xzdMF0QQGz7ZCcRBJRL Data.VectorVectorFresh freshNode