`1PD{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o pqrstuvwxyz Safe-InferredThe LR class defines two functions, leftf and rightf, which should & produce different functorial values. The LRBase class defines two functions, leftb and rightb , which " should produce different values. {|}~  {|}~ Safe-Inferred (Monadic zip but argument is not monadic  Unsafe zip (Combine two structures monadically only Generic equality ;Monadic generic equality (just for the sake of the monad!)       Safe-Inferred/Allows metavariables on either side of a rule. ;Recursively extends a type with a case for a metavariable. :Extends a pattern functor with a case for a metavariable. +Specifies a rule as a value of a datatype. &Returns the left-hand side of a rule. 'Returns the right-hand side of a rule. Constructs a metavariable.  ! ! ! ! Safe-Inferred"#$%&"#$%&$%"#& "#$%& Safe-Inferred) Unify an ' with an a. '()'()'()'() Safe-Inferred*+,-./01234 *+,-./01234 *+,-./41230*+,-./01234 Safe-Inferred*Count the number of recursive occurrences The type of the memo table Key used in memoisation table 5#Comparing index of different types ?+Apply the transformation to the given tree 4Look up the references using the original structure &Extract the subtree at the given path @EFind a set of insertions to transform the first into the second tree Pick the best edit &Pick the shortest of two lists lazily Lookup with a specific type !Lift a tree to an edit structure AExtend the paths of edits for the children with the child number =Try to apply as much edits to the edit structure as possible " to make the final edit smaller 'Replace a subtree in an edit structure 9Map a function with child index at a top-level structure Get the immediate children "Get all children with their paths S56789:;<=>?@ 56789:;<=>?@ @?89:<>=;756I56789:;<>=?@ Safe-InferredABCDEFGABCDEFGBCDEFGAABCDEFG Safe-Inferred !ABCDEFG NoneHIJKLMHIJKLMJKMLHIHIJKLM None NOPNOPNOP NOP None*Count the number of recursive occurrences W"Apply the edits to the given tree 4Look up the references using the original structure &Extract the subtree at the given path X@Find a set of edits to transform the first into the second tree :Helper function for lookup with provided compare function Pick the best edit &Pick the shortest of two lists lazily &Lift a tree to a tree with references =Try to apply as much edits to the edit structure as possible " to make the final edit smaller 'Replace a subtree in an edit structure AExtend the paths of edits for the children with the child number 9Map a function with child index at a top-level structure Get the immediate children "Get all children with their paths FQRSTUVWX      !"#$%&'()*+QRSTUVWXXWRSUTVQ>QRSUTVWX      !"#$%&'()*+ None Y=It is in general not necessary to use the generic navigation 1 functions directly. The functions listed in the ` Interface' section  below are more user-friendly. `AAbstract type of context frames. Not required for the high-level  navigation functions. aBAbstract type of locations. A location contains the current focus A and its context. A location is parameterized over the family of 4 datatypes and over the type of the complete value. c:Start navigating a datastructure. Returns a location that 4 focuses the entire value and has an empty context. d)Move down to the leftmost child. Returns , if the  current focus is a leaf. e*Move down to the rightmost child. Returns , if the  current focus is a leaf. fMove up to the parent. Returns , if the current  focus is the root. g#Move to the right sibling. Returns , if the current ! focus is the rightmost sibling. h"Move to the left sibling. Returns , if the current  focus is the leftmost sibling. i;Return the entire value, independent of the current focus. j;Operate on the current focus. This function can be used to % extract the current point of focus. k4Update the current focus without changing its type. l4Update the current focus without changing its type. YZ[\]^_`abcdefghijkl-./012345YZ[\]^_`abcdefghijklab`YZ[\]^_cdefghijklYZ[\]^_`abcdefghijkl-./012345 Nonemno6mnonmomno6None pq7rstuvwxy8z pqrstuvwxyz pqrstuzwxyv pq7rstuvwxy8z9 !"#$$%&'()*+,-./01234566789:;<=>?@ABCDEFGGHIJKLMNOPQRST G G F E U L V W 5 E F I J K H L M X Y Z [ \ ] ^ _ ` ` a b c d   e f g h F E L89:;<=>?@ABijklmnopqrstuvwxyz{|}~ h         "            transformations-0.1.0.0Generics.MultiRec.LRGenerics.MultiRec.HZip!Generics.MultiRec.Rewriting.RulesGenerics.MultiRec.OrdGenerics.MultiRec.Any-Generics.MultiRec.Transformations.ZipperState*Generics.MultiRec.Transformations.Explicit%Generics.MultiRec.Rewriting.Machinery.Generics.MultiRec.Transformations.RewriteRulesGenerics.Regular.Functions.GOrd)Generics.Regular.Transformations.ExplicitGenerics.Regular.Zipper-Generics.Regular.Transformations.RewriteRules,Generics.Regular.Transformations.ZipperStateGenerics.MultiRec.RewritingLRleftfrightfLRBaseleftbrightbleftrightsafeHeadHZiphzipMhziphzip'combinegeqgeq'BuilderTargetbasediagRuleSchemeMetavarExtRuleSpec:~>lhsRrhsRmetavarpfrule mergeSchemes insertMVarOrd1compare1HOrdhcomparegcompareAnymatchAny ZipperMonad ZipperStateupMonad downMonad leftMonad rightMonad updateMonad saveMonad loadMonadtopMonadnavigateOrdIcompareI TransformTransformation AnyInsertPathWithRefRefInRapplydiffSubstRewriterewriteMmatchmatchM checkEqualinstinsertGOrdcomparefZippercmapfillfirstlastnextprevCtxLocenterdowndown'upleaveonupdateupdateM $fLRphi:.: $fLRphi:>:$fLRphiC $fLRphi:*: $fLRphi:+:$fLRphiU$fLRphiK$fLRphiI $fLRBase[] $fLRBaseBool $fLRBaseChar$fLRBaseInteger $fLRBaseInt $fHZipphi:.: $fHZipphiC $fHZipphi:>: $fHZipphi:*: $fHZipphi:+: $fHZipphiU $fHZipphiK $fHZipphiI$fBuilderphi(->)$fBuilderphiRuleSpec$fOrd1[] $fHOrdphi:.: $fHOrdphi:>: $fHOrdphiC $fHOrdphi:*: $fHOrdphi:+: $fHOrdphiU $fHOrdphiK $fHOrdphiI enterMonad moveMonad leaveMonadcountI MemoTableMemoKey lookupRefsextractpickBest pickShortest anyLookupannotateupdateChildPaths partialApplyreplacetmapN imChildren childrenPathsChildrenchildrenCountIMapNmapNExtractN extractN'SEq shallowEqMemorunMemorecMemoextractN$fChildrenphi:.:$fChildrenphi:>:$fChildrenphiC$fChildrenphi:*:$fChildrenphi:+:$fChildrenphiU$fChildrenphiK$fChildrenphiI$fCountIphi:.: $fCountIphiC$fCountIphi:>:$fCountIphi:*:$fCountIphi:+: $fCountIphiU $fCountIphiK $fCountIphiI $fMapNphi:.: $fMapNphiC $fMapNphi:>: $fMapNphi:*: $fMapNphi:+: $fMapNphiU $fMapNphiK $fMapNphiI$fExtractNphi:.:$fExtractNphiC$fExtractNphi:>:$fExtractNphi:*:$fExtractNphi:+:$fExtractNphiU$fExtractNphiK$fExtractNphiI $fSEqphi:.: $fSEqphiC $fSEqphi:>: $fSEqphi:*: $fSEqphi:+: $fSEqphiK $fSEqphiU $fSEqphiI $fOrdMemoKey $fEqMemoKey $fRewritephi$fGOrdS$fGOrdC $fGOrd:*: $fGOrd:+:$fGOrdU$fGOrdK$fGOrdI lookupWithbestwithRefs $fChildrenS $fChildrenC $fChildren:*: $fChildren:+: $fChildrenU $fChildrenK $fChildrenI $fCountIS $fCountIC $fCountI:*: $fCountI:+: $fCountIU $fCountIK $fCountII$fMapNS$fMapNC $fMapN:*: $fMapN:+:$fMapNU$fMapNK$fMapNI $fExtractNS $fExtractNC $fExtractN:*: $fExtractN:+: $fExtractNU $fExtractNK $fExtractNI$fSEqS$fSEqC$fSEq:*:$fSEq:+:$fSEqK$fSEqU$fSEqI Data.MaybeNothing impossible $fZipperS $fZipperC $fZipper:*: $fZipper:+: $fZipperU $fZipperK $fZipperI $fFunctorCtx $fRewritea