K׃l      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO 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!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""###################################$$$$$$$$$$$$$$$$%%%%%%%&&&&&&&&&''''''''''''''''' ' ' ' ' '''''(((((((((((()) )!)")#)$)%*&+'+(+)+*+++,+-,.,/,0,1,2,3,4,5,6-7-8-9-:-;-<-=->-?.@/A/B/C/D/E/F/G/H/IJKLMNOPQRSTUVWXYZ[\]^_`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0111122222222222223333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555666 6 6 6 6 666777777777788999: :!:":#:$:%:&:';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7<8<9<:<;<<<=<><?<@<A<B<C=D=E=F=G=H=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@BA Safe-InferredlWCharacters that are valid as the leading character of an identifier in a HERMIT script.m=Characters that are valid identifier elements (a superset of l) in a HERMIT script.n@Characters that are valid in infix operators in a HERMIT script.oRChars that are valid as the leading character of an identifier in a Core fragment.p=Characters that are valid identifier elements (a superset of o) in a Core fragment.q@Characters that are valid in infix operators in a Core fragment.lmnopqrlmnopqlmnopqrNone *+-./02345689:;=?BCDGHJKM)9A simple expression language AST, for things parsed from s or JSON structures.*List of expressions+ Core Fragment, Application.-Commands (to be looked up in @B)..'Variable names (refers to source code).t-Use ghci Parser.hs to run this test function.uvwxyz({|}~)*+,-.t/01 ()*+,-./01 (/01).-,+*{uvwxyz({ ~}|).-,+*t/01w x NoneHM24Re-Setup the typechecking environment from a ModGuts23 2323 23C Safe-Inferred      Safe-Inferred 7dEntry point for HERMIT driver executable. First String in list is expected to be target file name. :See if the given HERMIT args imply any additional GHC args 4567    45674576 4567     Safe-Inferred84Determine if a list contains no duplicated elements.9Generalisation of :$ to an arbitrary equality predicate.:wDiscard the last occurrence of each element in the list. Thus the returned list contains only the duplicated elements.<A generalisation of =! to any equivalence relation. equivalent = equivalentBy (==)=.Determine if all elements of a list are equal.>'Perform the monadic action only in the  case.?Lift a  into an arbitrary monad, using  or .89:;<=>?89:;<=>?8:9;<=>?89:;<=>?None)24@Rename this namespace, as  is already a function in Var.B Convert a $ to a list of user-readable strings.C#Show a human-readable version of a .E Get the unqualified name from a .F$Get the fully qualified name from a .GCConvert a variable to a neat string for printing (unqualfied name).H Compare a s to a  for equality. Strings containing a period are assumed to be fully qualified names. (Except for ".", which is an unqualified reference to composition.)J Compare a s to a  for equality. See H.KFind 7s matching a given fully qualified or unqualified name.LPretty-print an identifier.M Erase all  in a variable if it is is an , or do nothing if it's a  or  (which have no ).NDetermine if a  is not an element of a .S Build a dictionary for the givenU Finds the  corresponding to the given  in the context of the  . Returns Nothing if no such = could be found. Any other condition results in an exception: If the module could not be found3If we could not determine the imports of the modulepThis is adapted from GHC's function of the same name, but using initTcFromModGuts instead of initTcInteractive./Also copied from GHC because it is not exposed.@ABCDEFGHIJKL MNOPQRST!"U#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc defghijklmnopqrst uvwxyz{|}~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 p q r s t u v w x y z { | } ~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTU<LMG @IHJFEK& !"#$% DNBCOQPRSTU A@ABCDEFGHIJKL MNOPQRST!"U#None[%An enumeration type for GHC's phases.qGiven a list of s, produce the  to % function required to build a plugin.r;Build a plugin. This mainly handles the per-module options.Determine whether to act on this module, choose plugin pass. NB: we have the ability to stick module info in the phase info hereKFilter options to those pertaining to this module, stripping module prefix.unIf HERMIT user specifies the -pN flag, get the N TODO: as written will discard other flags that start with -p#VWXYZ[\]^_`abcdefghijklmnopqrstu VWXYZ[\]^_`abcdefghijklmnopqrstu qr[ponmlkjihgfedcba`_^]\tsVWXYZu VWXYZ[ponmlkjihgfedcba`_^]\qrstuNoneT6vKCrumbs record a path through the tree, using descriptive constructor names.A (potentially recursive) definition is an identifier and an expression. In GHC Core, recursive definitions are encoded as (,  R)) pairs. This data type is isomorphic.A program is a telescope of nested binding groups. That is, each binding scopes over the remainder of the program. In GHC Core, programs are encoded as [ T#]. This data type is isomorphic./A binding group and the program it scopes over.An empty program.0Unlike everything else, there is no synonym for   # provided by GHC, so we define one.&Get the list of bindings in a program.Build a program from a list of bindings. Note that bindings earlier in the list are considered scope over bindings later in the list.CExtract the list of variable/expression pairs from a binding group.6Convert a definition to an identifier/expression pair.UConvert a list of recursive definitions into an (isomorphic) recursive binding group.Syntactic Equality of programs.%Syntactic Equality of binding groups.,Syntactic Equality of recursive definitions."Syntactic Equality of expressions.(Syntactic Equality of case alternatives.Syntactic Equality of s.Syntactic Equality of  s.Alpha equality of programs.!Alpha equality of binding groups.(Alpha equality of recursive definitions.Alpha equality of expressions.$Alpha equality of case alternatives.Alpha equality of types.Alpha equality of coercions.9List all identifiers bound at the top-level in a program.,List all variables bound in a binding group.6Return the identifier bound by a recursive definition./List the variables bound by a case alternative.)Find all free variables in an expression.+Find all free identifiers in an expression.9Find all locally defined free variables in an expression.;Find all locally defined free identifiers in an expression.^Find all free identifiers in a binding group, which excludes any variables bound in the group.aFind all free variables on a binder. Equivalent to idFreeVars, but safe to call on type bindings.UFind all free variables in a recursive definition, which excludes the bound variable.eFind all free variables in a case alternative, which excludes any variables bound in the alternative.kFind all free local variables in a case alternative, which excludes any variables bound in the alternative.%Find all free variables in a program."Find all free variables in a type.&Find all free variables in a coercion.GHC's * function throws an error if applied to a . This function returns the  of a , but otherwise behaves as .GHC's * function throws an error if applied to a F. This function catches that case as failure in an arbitrary monad.Returns True iff the expression is a   expression at its top level.(Count the number of nested applications.5Map a function over the RHS of each case alternative.As  , catching failure in a monad.RReturn the domain and codomain types of a function type, if it is a function type.8Return the domain/codomain type of an endofunction type.>Return the domain/codomain type of an endofunction expression.>Return the domain and codomain types of a function expression.!Check two expressions have types a -> b and b -> a , returning (a,b). Converts a v into the v+ pointing to its left-sibling, if a such a vY exists. This is for backwards compatibility purposes with the old Int representation. Converts a v into the v, pointing to its right-sibling, if a such a vY exists. This is for backwards compatibility purposes with the old Int representation.vvwxyz{|}~uvwxyz{|}~uv~}|{zyxw6v=~}|{zyxw None)2346*The HERMIT context, containing all bindings in scope and the current location in the AST. The bindings here are lazy by choice, so that we can avoid the cost of building the context if we never use it.-All (local to this module) bindings in scope.&The depth of the most recent bindings.The # to the current node from the root.$In-scope GHC RULES found in IdInfos.2A class of contexts that provide an empty context.1A class of contexts that store GHC rewrite rules.@A class of contexts from which HERMIT bindings can be retrieved.hA class of contexts that stores the set of variables in scope that have been bound during the traversal.@A class of contexts that can have HERMIT bindings added to them. Add a complete set of parrallel bindings to the context. (Parallel bindings occur in recursive let bindings and case alternatives.) This can also be used for solitary bindings (e.g. lambdas). Bindings are added in parallel sets to help with shadowing issues.HERMIT's representation of variable bindings. Bound expressions cannot be inlined without checking for shadowing issues (using the depth information).nA special case. When we're focussed on ModGuts, we treat all top-level bindings as being in scope at depth 0.'A universally quantified type variable.SA case binder. We store both the scrutinised expression, and the case alternative   and variables.'A variable bound in a case alternative.A recursive binding that is mutually recursive with the binding under consideration (i.e. we're in another definition in the same recursive binding group.).eA recursive binding of a superexpression of the current node (i.e. we're in the RHS of that binding).yA recursive binding that does not depend on the current expression (i.e. we're not in the binding group of that binding).)A non-recursive binding of an expression.A lambda-bound variable.NThe depth of a binding. Used, for example, to detect shadowing when inlining.Retrieve the expression in a , if there is one. Retrieve the expression in a , if there is one. 1Add all bindings in a binding group to a context. Add the binding for a recursive definition currently under examination. Note that because the expression may later be modified, the context only records the identifier, not the expression. Add a list of recursive bindings to the context, except the nth binding in the list. The idea is to exclude the definition being descended into.4Add the case binder for a specific case alternative.Add a lambda bound variable to a context. All that is known is the variable, which may shadow something. If so, we don't worry about that here, it is instead checked during inlining.Add the variables bound by a  4 in a case. They are all bound at the same depth.8Add a universally quantified type variable to a context.BList all variables bound in the context that match the given name..Determine if a variable is bound in a context./Lookup the binding for a variable in a context.6Lookup the depth of a variable's binding in a context.]Lookup the binding for a variable in a context, ensuring it was bound at the specified depth.A special HERMIT context intended for use only when focussed on ModGuts. All top-level bindings are considered to be in scope at depth 0. Extend the  stored in the HERMIT context. Retrieve the . to the current node, from the HERMIT context.`The |HermitC| empty context has an initial depth of 0, an empty path, and no bindings nor rules.AThe bindings are added to the base context and the extra context. The bindings are just discarded.?     -     0     '       None)2346T%;CoreTC is a sum type for use by KURE. CoreTC = Core + TyCo;TyCo is a sum type for use by KURE. TyCo = Type + Coercion A coercion.A type.hCore is a sum type for use by KURE. Core = ModGuts + CoreProg + CoreBind + CoreDef + CoreExpr + CoreAltA case alternative. An expression.!A recursive definition."A binding group.#4A program (a telescope of top-level binding groups).$ The module.%Alpha equality of  fragments.&Alpha equality of  fragments.'Alpha equality of  fragments.(Syntactic equality of  fragments.)Syntactic equality of  fragments.*Syntactic equality of  fragments.+Find all free variables in a  node.,Find all free variables in a  node.-Find all free variables in a  node..Promote a translate on ./Promote a translate on .0Promote a translate on  T.1Promote a translate on .2Promote a translate on  U.3Promote a translate on  R.4Promote a translate on .5Promote a translate on  .6Promote a rewrite on .7Promote a rewrite on .8Promote a rewrite on  T.9Promote a rewrite on .:Promote a rewrite on  U.;Promote a rewrite on  R.<Promote a rewrite on .=Promote a rewrite on  .>#Promote a bidirectional rewrite on  R.9 !"#$%&'()*+,-./0123456789:;<=>' !"#$%&'()*+,-./0123456789:;<=>'$#"! ()*%&'+,-./0132456789;:<=>/$#"! %&'()*+,-./0123456789:;<=> None)?A message packet.EaGet the ModGuts (Note: this is a snapshot of the ModGuts from before the current transformation.)GGet the HermitMEnvH"The HERMIT monad is kept abstract.I&A way of sending messages to top levelLA store of saved definitions.M#A label for individual definitions.NEliminator for H.O#Get the stash of saved definitions.'Replace the stash of saved definitions.Q!Save a definition for future use.R%Lookup a previously saved definition.S can be lifted to H.TLMake a unique global identifier for a specified type, using a provided name.UEMake a unique identifier for a specified type, using a provided name.VHMake a unique type variable for a specified kind, using a provided name.WLMake a unique coercion variable for a specified type, using a provided name.X#Experimental, use at your own risk.YCMake a new variable of the same type, with a modified textual name.,?@ABCDEFGHIJKLMNOPQRSTUVWXYZ?@ABCDEFGHIJKLMNOPQRSTUVWXYZHNSTUVWXYMLQROFGDEBCIJK?A@ZP$?A@BCDEFGHIJKLMNOPQRSTUVWXYZ None )2346MT`\Transform a module. Slightly different to the other congruence combinators: it passes in all0 of the original to the reconstruction function.a Rewrite the  child of a module.bTransform an empty list.c"Transform a program of the form: ( T : )d0Rewrite all children of a program of the form: ( T : )e0Rewrite any children of a program of the form: ( T : )f-Rewrite one child of a program of the form: ( T : )g'Transform a binding group of the form: NonRec   Rh5Rewrite all children of a binding group of the form: NonRec   Ri5Rewrite any children of a binding group of the form: NonRec   Rj2Rewrite one child of a binding group of the form: NonRec   Rk'Transform a binding group of the form: Rec []l5Rewrite all children of a binding group of the form: Rec []m5Rewrite any children of a binding group of the form: Rec []n2Rewrite one child of a binding group of the form: Rec []o.Transform a recursive definition of the form: Def   Rp<Rewrite all children of a recursive definition of the form: Def   Rq<Rewrite any children of a recursive definition of the form: Def   Rr9Rewrite one child of a recursive definition of the form: Def   Rs+Transform a case alternative of the form: ( , [],  R)t9Rewrite all children of a case alternative of the form: ( , ,  R)u9Rewrite any children of a case alternative of the form: ( , ,  R)v6Rewrite one child of a case alternative of the form: ( , ,  R)w%Transform an expression of the form: Var x Rewrite the % child in an expression of the form: Var y%Transform an expression of the form: Lit  z Rewrite the  % child in an expression of the form: Lit  {%Transform an expression of the form: App  R  R|3Rewrite all children of an expression of the form: App  R  R}3Rewrite any children of an expression of the form: App  R  R~0Rewrite one child of an expression of the form: App  R  R%Transform an expression of the form: Lam   R3Rewrite all children of an expression of the form: Lam   R3Rewrite any children of an expression of the form: Lam   R0Rewrite one child of an expression of the form: Lam   R%Transform an expression of the form: Let  T  R3Rewrite all children of an expression of the form: Let  T  R3Rewrite any children of an expression of the form: Let  T  R0Rewrite one child of an expression of the form: Let  T  R%Transform an expression of the form: Case  R   [ U]3Rewrite all children of an expression of the form: Case  R   [ U]3Rewrite any children of an expression of the form: Case  R   [ U]0Rewrite one child of an expression of the form: Case  R   [ U]%Transform an expression of the form: Cast  R  3Rewrite all children of an expression of the form: Cast  R  3Rewrite any children of an expression of the form: Cast  R  0Rewrite one child of an expression of the form: Cast  R  %Transform an expression of the form: Tick   R3Rewrite all children of an expression of the form: Tick   R3Rewrite any children of an expression of the form: Tick   R3Rewrite any children of an expression of the form: Tick   R%Transform an expression of the form: Type  Rewrite the % child in an expression of the form: Type %Transform an expression of the form: Coercion   Rewrite the  % child in an expression of the form: Coercion  #Transform a definition of the form NonRec   R or Def   R1Rewrite all children of a definition of the form NonRec   R or Def   R1Rewrite any children of a definition of the form NonRec   R or Def   R.Rewrite one child of a definition of the form NonRec   R or Def   R'Transform a binding group of the form: Rec [(,  R)]5Rewrite all children of a binding group of the form: Rec [(,  R)]5Rewrite any children of a binding group of the form: Rec [(,  R)]2Rewrite one child of a binding group of the form: Rec [(,  R)]"Transform a program of the form: (NonRec   R) : 4Rewrite all children of an expression of the form: (NonRec   R) : 4Rewrite any children of an expression of the form: (NonRec   R) : 1Rewrite one child of an expression of the form: (NonRec   R) : &Transform an expression of the form: (Rec []) : 4Rewrite all children of an expression of the form: (Rec []) : 4Rewrite any children of an expression of the form: (Rec []) : 1Rewrite one child of an expression of the form: (Rec []) : &Transform an expression of the form: (Rec [(,  R)]) : 4Rewrite all children of an expression of the form: (Rec [(,  R)]) : 4Rewrite any children of an expression of the form: (Rec [(,  R)]) : 1Rewrite one child of an expression of the form: (Rec [(,  R)]) : %Transform an expression of the form: Let (NonRec   R)  R3Rewrite all children of an expression of the form: Let (NonRec   R)  R3Rewrite any children of an expression of the form: Let (NonRec   R)  R0Rewrite one child of an expression of the form: Let (NonRec   R)  R%Transform an expression of the form: Let (Rec [])  R3Rewrite all children of an expression of the form: Let (Rec [])  R3Rewrite any children of an expression of the form: Let (Rec [])  R0Rewrite one child of an expression of the form: Let (Rec [])  R%Transform an expression of the form: Let (Rec [(,  R)])  R3Rewrite all children of an expression of the form: Let (Rec [(,  R)])  R3Rewrite any children of an expression of the form: Let (Rec [(,  R)])  R0Rewrite one child of an expression of the form: Let (Rec [(,  R)])  R%Transform an expression of the form: Case  R   [( , [],  R)]3Rewrite all children of an expression of the form: Case  R   [( , [],  R)]3Rewrite any children of an expression of the form: Case  R   [( , [],  R)]0Rewrite one child of an expression of the form: Case  R   [( , [],  R)]4Transform all top-level binding groups in a program.2Rewrite all top-level binding groups in a program.2Rewrite any top-level binding groups in a program.2Rewrite any top-level binding groups in a program.Transform a type of the form: TyVarTy  Rewrite the  child of a type of the form: TyVarTy Transform a type of the form: LitTy  Rewrite the  child of a type of the form: LitTy Transform a type of the form: AppTy  ,Rewrite all children of a type of the form: AppTy  ,Rewrite any children of a type of the form: AppTy  )Rewrite one child of a type of the form: AppTy  Transform a type of the form: FunTy  ,Rewrite all children of a type of the form: FunTy  ,Rewrite any children of a type of the form: FunTy  )Rewrite one child of a type of the form: FunTy  Transform a type of the form: ForAllTy  ,Rewrite all children of a type of the form: ForAllTy  ,Rewrite any children of a type of the form: ForAllTy  )Rewrite one child of a type of the form: ForAllTy  Transform a type of the form: TyConApp   [ ^],Rewrite all children of a type of the form: TyConApp   [ ^],Rewrite any children of a type of the form: TyConApp   [ ^])Rewrite one child of a type of the form: TyConApp   [ ^]"Transform a coercion of the form: Refl  P  Rewrite the " child of a coercion of the form: Refl  P "Transform a coercion of the form:  TyConAppCo  P   [ ]0Rewrite all children of a coercion of the form:  TyConAppCo   [ ]0Rewrite any children of a coercion of the form:  TyConAppCo   [ ]-Rewrite one child of a coercion of the form:  TyConAppCo   [ ]"Transform a coercion of the form: AppCo    0Rewrite all children of a coercion of the form: AppCo    0Rewrite any children of a coercion of the form: AppCo    -Rewrite one child of a coercion of the form: AppCo    "Transform a coercion of the form: ForAllCo   0Rewrite all children of a coercion of the form: ForAllCo   0Rewrite any children of a coercion of the form: ForAllCo   -Rewrite one child of a coercion of the form: ForAllCo   "Transform a coercion of the form: CoVarCo  Rewrite the " child of a coercion of the form: CoVarCo "Transform a coercion of the form:  AxiomInstCo ( )  [ ]0Rewrite all children of a coercion of the form:  AxiomInstCo ( )  [ ]0Rewrite any children of a coercion of the form:  AxiomInstCo ( )  [ ]-Rewrite one child of a coercion of the form:  AxiomInstCo ( )  [ ]"Transform a coercion of the form: SymCo   Rewrite the  " child of a coercion of the form: SymCo  "Transform a coercion of the form: TransCo    0Rewrite all children of a coercion of the form: TransCo    0Rewrite any children of a coercion of the form: TransCo    -Rewrite one child of a coercion of the form: TransCo    "Transform a coercion of the form: NthCo   0Rewrite all children of a coercion of the form: NthCo   0Rewrite any children of a coercion of the form: NthCo   -Rewrite one child of a coercion of the form: NthCo   "Transform a coercion of the form: LRCo    2Transform all children of a coercion of the form: LRCo    2Transform any children of a coercion of the form: LRCo    /Transform one child of a coercion of the form: LRCo    "Transform a coercion of the form: InstCo   0Rewrite all children of a coercion of the form: InstCo   0Rewrite any children of a coercion of the form: InstCo   -Rewrite one child of a coercion of the form: InstCo    Earlier versions of HERMIT used 0 as the crumb type. This translation maps an  to the corresponding v', for backwards compatibility purposes.DBuilds a path to the first child, based on the old numbering system._Walking over modules, programs, binding groups, definitions, expressions and case alternatives.!Walking over types and coercions.Walking over coercions (only).Walking over types (only)._Walking over modules, programs, binding groups, definitions, expressions and case alternatives.[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#'$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_^]\[`abcdefghijklmnopqrstuvwxyz{|}~[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None !"+234=K0"*The class of things that can be made into 's. To be an " there must exist an isomorphic # type that is an instance of .#An isomorphic wrapper.$Wrap a value in a #.%Unwrap a value from a #.&A & is a collection of s. Looking up a  (via an G/ key) returns a list, as there can be multiple s with the same name.'An ' is a C value with some associated meta-data (name, help string and tags).(Get the name of an '.)Get the  value stored in an '.*Get the list of help s s for an '.+ List all the 1s associated with an ',"Tags are meta-data that we add to ''s to make them sortable and searchable.-Add a , to an '.. Remove a , from an './ Check if an ' has the specified ,.0*A data type of logical operations on tags.17Requirement: commands cannot have the same name as any 1@ (or the help function will not find it). These should be  user facingV, because they give the user a way of sub-dividing our confusing array of commands.2sA command that will be removed in a future release; it has probably been renamed or subsumed by another command.3Things we are trying out.4+An incomplete or potentially buggy command.5#Commands related to proving lemmas.6wCommands that are not type safe (may cause Core Lint to fail), or may otherwise change the semantics of the program.72A command that uses its context, such as inlining.8 Version control for Core syntax.9(Commands specifically to help debugging.:4Operation has a (perhaps undocumented) precondition.;&Commute is when you swap nested terms.<%Introduce something, like a new name.=Something that passes or fails.>A question we ask.?Uses  or  to focus onto something.@+Command operates on local nodes only, O(1).A,Command may make a deep change, can be O(n).B#Command may operate multiple times.CDE command.D)The arrow of evaluation (reduces a term).EShell-specific command.FHelp information for 'Es is stored as a list of strings, designed for multi-line displaying.G' names are just strings.HILists all the tags paired with a short description of what they're about.I An "and" on ,s.J An "or" on ,s.K A "not" on ,s.LThe primitive way to build an '.M Get all the 'Qs which match a given tag predicate and box a Transform of the appropriate type.NBuild a FG from names to  values.PBuild a FG from names to help information.Q<Get a string representation of the (monomorphic) type of an 'Remove the word # from a string.x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR\'()*+GF()*QR&NOPL"#$%M1EDCBA@?>=<;:987654320,-./IJK+H !     @      !"#$%&'()*+,-./01EDCBA@?>=<;:98765432FGHIJKLMNOPQR-IJNone3SExposed debugging 's.TIf the g fails, print out the , with a message.UPrint out the , with a message.V3Just say something, every time the rewrite is done.W Show before and after a rewrite.STUVWSTUVWSWUTVSTUVWNone3XHExternals that reflect GHC functions, or are derived from GHC functions.YwSubstitute all occurrences of a variable with an expression, in either a program, an expression, or a case alternative.ZNSubstitute all occurrences of a variable with an expression, in an expression.JSubstitute all occurrences of a variable with an expression, in a program.[SSubstitute all occurrences of a variable with an expression, in a case alternative. from GHC documentationDe-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, becuase substitution returns a result that has no-shadowing guaranteed.(Actually, within a single type* there might still be shadowing, because @ is a no-op for the empty substitution, but that's probably OK.)\-Try to figure out the arity of an identifier.]cRun the Core Lint typechecker. Fails on errors, with error messages. Succeeds returning warnings.^Note: this can miss several things that a whole-module core lint will find. For instance, running this on the RHS of a binding, the type of the RHS will not be checked against the type of the binding. Running on the whole let expression will catch that however._Lifted version of .`Zap the  in a zombie identifier.aApply occurAnalyseExprR to all sub-expressions.biOccurrence analyse an expression, failing if the result is syntactically equal to the initial expression.coOccurrence analyse all sub-expressions, failing if the result is syntactically equal to the initial expression.d>Run GHC's occurrence analyser, and also eliminate any zombies.XYZ[\]^_`abcd XYZ[\]^_`abcd XY[Z_\^]acbd`XYZ[\]^_`abcdNone3Me;- This list contains reflections of the KURE strategies as 's.JTest if a rewrite would succeed, producing a string describing the result.f4Top-down traversal tuned to matching function calls.efefefefNoneg's for individual vs.ggggNone)234Mh*Language constructs that can be zoomed to.v')s involving navigating to named entities.w&Discard the last crumb of a non-empty .x&Find the path to the RHS of a binding.y1Find the path to the binding group of a variable.z+Find the path to the binding of a variable.{4Find the path to the first occurrence of a variable.|Find all possible targets of {.}Find all possible targets of z.~Find all possible targets of y.Find all possible targets of x.{Lookup table for constructs that can be considered; the keys are the arguments the user can give to the "consider" command..Find the path to the first matching construct.AConstruct a path to the (n-1)th argument in a nested sequence of  s.6Construct a path to the body of a sequence of lambdas.;Construct a path to the body of a sequence of let bindings.%Construct a path to end of a program.:Construct a path to teh end of a program, starting at the .3hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~v{zyxw|}~hutsrqponmlkji&h utsrqponmlkjivwxyz{|}~None SPossible results from name lookup. Invariant: One constructor for each NameSpace.A 4 is an optionally fully-qualified name, like GHC's , but without specifying which  the name is found in.5Make a RdrName for the given NameSpace and HermitName(Make a RdrName for each given NameSpace.!Parse a HermitName from a String.?Looks for Named in current GlobalRdrEnv. If not present, calls .:Looks for Named in package database, or built-in packages.4Helper to call GHC's lookupRdrNameInModuleForPlugins7Looks for Named amongst GHC's built-in DataCons/TyCons.-We have a name, find the corresponding Named.An instance of  for e#, which looks in the context first.,NB: we store TyVars in the context, but the 4 return type is not rich enough to return them. So R cannot be used to look up TyVars. TODO: add function for this, or modify GHC's ?#None3MT!9Apply a transformation to a value in the current context.Lift GHC's collectArgszSucceeds if we are looking at an application of given function returning zero or more arguments to which it is applied.>Succeeds if we are looking at a fully saturated function call.>Succeeds if we are looking at an application of given functionCSucceeds if we are looking at an application of a data constructor.ISucceeds if we are looking at an application of a named data constructor.aApply a rewrite to all applications of a given function in a top-down manner, pruning on success.~Apply a translate to all applications of a given function in a top-down manner, pruning on success, collecting the results.UList the identifiers bound by the top-level binding group at the head of the program.]List the identifiers bound by a recursive top-level binding group at the head of the program.\Return the identifier bound by a non-recursive top-level binding at the head of the program.<Return the variable bound by a non-recursive let expression.8List all identifiers bound in a recursive binding group.1Return the variable bound by a lambda expression.-List the variables bound by a let expression.9List the identifiers bound by a recursive let expression.<Return the variable bound by a non-recursive let expression.XList all variables bound by a case expression (in the alternatives and the case binder).Return the case binder.BList the variables bound by all alternatives in a case expression.'Find the depth of a variable's binding.Determine if the current variable matches the given variable, and is bound at the specified depth (helpful to detect shadowing).Determine if the current expression is an occurrence of the given variable, bound at the specified depth (helpful to detect shadowing).Lifted version of .gFind the unique variable bound in the context that matches the given name, failing if it is not unique.]Lookup the name in the context first, then, failing that, in GHC's global reader environment.]Lookup the name in the context first, then, failing that, in GHC's global reader environment.]Lookup the name in the context first, then, failing that, in GHC's global reader environment.]Lookup the name in the context first, then, failing that, in GHC's global reader environment.)Determine whether a variable is in scope.tModify transformation to apply to current expression as if it were the body of a lambda binding the given variables./Constructs a common error message. Argument s. should be the desired form of the expression.""""None3M!Externals for alpha-renaming.ACollect all visible variables (in the expression or the context).vIf a name is provided, use that as the name of the new variable. Otherwise modify the variable name making sure to not9 clash with the given variables or any visible variables.mUse the optional argument if given, otherwise generate a new name avoiding clashes with the set of variables.cInvent a new String based on the old one, but avoiding clashing with the given list of identifiers.UDiscard variables from the first set that do not shadow a variable in the second set.[Shadows are any duplicates in the list, or any occurrences of the list elements in the set.oRename local variables with manifestly unique names (x, x0, x1, ...). Does not rename top-level definitions.Replace all occurrences of a specified variable. Arguments are the variable to replace and the replacement variable, respectively.:Given a variable to replace, and a replacement, produce a  -> . function that acts as an identity for all zs except the one to replace, for which it returns the replacment. Don't export this, it'll likely just cause confusion.IGiven a lists of variables to replace, and their replacements, produce a  -> . function that acts as in identity for all {s except the ones to replace, for which it returns the replacment. Don't export this, it'll likely just cause confusion.EAlpha rename a lambda binder. Optionally takes a suggested new name.CAlpha rename a case binder. Optionally takes a suggested new name.\Rename the specified variable in a case alternative. Optionally takes a suggested new name.Rename the specified variables in a case alternative, using the suggested names where provided. Suggested names *must* be provided in left-to-right order matching the order of the alt binders.XRename the variables bound in a case alternative with the given list of suggested names.5Rename the specified variables in a case alternative.3Rename all identifiers bound in a case alternative.2Rename all identifiers bound in a case expression.PAlpha rename a non-recursive let binder. Optionally takes a suggested new name.}Alpha rename a non-recursive let binder if the variable appears in the argument list. Optionally takes a suggested new name.^Rename the specified identifiers in a recursive let, using the suggested names where provided.MRename the identifiers bound in a Let with the given list of suggested names..Rename the specified variables bound in a let.&Rename all identifiers bound in a Let.VAlpha rename a non-recursive top-level binder. Optionally takes a suggested new name.Alpha rename a non-recursive top-level binder if the identifier appears in the argument list. Optionally takes a suggested new name.Rename the specified identifiers in a recursive top-level binding at the head of a program, using the suggested names where provided.xRename the identifiers bound in the top-level binding at the head of the program with the given list of suggested names.YRename the specified variables bound in the top-level binding at the head of the program.QRename all identifiers bound in the top-level binding at the head of the program..Rename all identifiers bound at the top-level.sAlpha rename any bindings at this node. Note: does not rename case alternatives unless invoked on the alternative.&&None3HM*Traditional Static Argument TransformationOStatic Argument Transformation that only considers type arguments to be static._Static Argument Transformations which requires that arguments in the given position are static.YGeneralized Static Argument Transformation, which allows static arguments to be filtered.Cgiven list of static args and positions, decided which to transformNone3EM's for inlining variables.?If the current variable matches the given name, then inline it.GIf the current variable matches any of the given names, then inline it.AIf the current variable satisifies the predicate, then inline it.Inline the current variable.sInline the current identifier if it is a case binder, using the scrutinee rather than the case-alternative pattern.pInline the current identifier if is a case binder, using the case-alternative pattern rather than the scrutinee.uThe implementation of inline, an important transformation. This *only* works if the current expression has the form Var vw (it does not traverse the expression). It can trivially be prompted to more general cases using traversal strategies.cCheck that all free variables in an expression are bound. Fails, listing unbound variables if not.kEnsure all the free variables in an expression were bound above a given depth. Assumes minimum depth is 0.Return the unfolding of an identifier, and a predicate over the binding depths of all variables within that unfolding to determine if they have been captured in their new location.Convert lhs of case alternative to a constructor application expression, failing in the case of the DEFAULT alternative. Accepts a list of types to apply to the constructor before the value args. data T a b = C a b Int Pseudocode: Aalt2Exp (...) [a,b] (C, [x,y,z]) ==> C a b (x::a) (y::b) (z::Int)BGet list of possible inline targets. Used by shell for completion.$Build a CoreExpr for a DFunUnfolding4Only inline identifiers that satisfy this predicate.NoneGiven list of TyVars which can match any type (the holes), a pattern, and a concrete type, return mapping from hole to type for successful unification.!vars that can unify with anythingalpha equivalences, wherever there is binding note: we depend on behavior of lookup here, so new entries should always be added to the front of the list so we don't have to explicity remove them when shadowing occurspattern we are matching onexpression we are checking*mapping of vars to expressions, or failure!vars that can unify with anythingalpha equivalences, wherever there is binding note: we depend on behavior of lookup here, so new entries should always be added to the front of the list so we don't have to explicity remove them when shadowing occurspattern we are matching onexpression we are checking$mapping of vars to types, or failureNone3THExternals that reflect GHC functions, or are derived from GHC functions.7Compare the core fragments at the end of the specified s.>Compare the definitions of two identifiers for alpha-equality.HCompare the definitions of the two named identifiers for alpha-equality.  None *+-./02345689:;=?BCDGHJKMParse a  to a  R, using the current context.           !"#$%&'()*+,-./0123456 !789:;<=>?@ABCDEFGHIJ+      !+ !     Z"           !"#$%&'()*+,-./0123456 !789:;<=>?@ABCDEFGHIJ  None"#$"#$"#$"#$None%*Externals for manipulating binding groups.&  v e ==>   [(v,e)]'  [(v,e)] ==>   v e%&'%&'%&'%&'None3('Externals relating to Case expressions.KAttempts to tease a coercion apart into a type constructor and the application of a number of coercion arguments to that constructor(L)*+K,M()*+,()*+,(L)*+K,MNone3MTU-Externals relating to   expressions..=(let x = e1 in e2) ==> (e2[e1/x]), (x must not be free in e1)/As 1[, but attempting to convert a singleton recursive binding to a non-recursive binding first.0Let (NonRec v e) body ==>  body[e/v]1Currently we always substitute types and coercions, and use a heuristic to decide whether to substitute expressions. This may need revisiting.3/Remove an unused non-recursive let binding. let v = E1 in E2 ==> E2, if v is not free in E24>Remove all unused recursive let bindings in the current group.7,Remove all unused bindings at the top level.8let v = ev in e ==> case ev of v -> e9(let v = ev in e) x ==> let v = ev in e x:f (let v = ev in e) ==> let v = ev in f e;let v = (let bds in e1) in e2 ==> let bds in let v = e1 in e2<( v -> let binds in e2) ==> let binds in ( v1 -> e2) Fails if v occurs in the RHS of binds. If v is shadowed in binds, then v will be alpha-renamed.=!case (let bnds in e) of bndr alts ==> !let bnds in (case e of bndr alts)$ Fails if any variables bound in bnds occurs in alts.>cast (let bnds in e) co ==> let bnds in cast e co?Float a  - through an expression, whatever the context.@ (  v (  bds e)) p ==>  bds ( (  v e) p)A Float in a   if possible.Blet v = ev in case s of p -> e ==> .case (let v = ev in s) of p -> let v = ev in e, if v% does not shadow a pattern binder in pClet v = ev in f a ==> #(let v = ev in f) (let v = ev in a)Dlet v = ev in x -> e ==> x -> let v = ev in e if v does not shadow xERe-order a sequence of nested non-recursive let bindings. The argument list should contain the let-bound variables, in the desired order.FCombine nested non-recursive lets into case of a tuple. E.g. let {v1 = e1 ; v2 = e2 ; v3 = e3} in body ==> case (e1,e2,e3) of {(v1,v2,v3) -> body}Ge ==> let v = e in vHbody ==> let v = e in bodyIprog ==>  (v = e) progJEnonRecIntroR nm e = 'letNonRecIntroR nm e' <+ 'progNonRecIntroR nm e'KIntroduce a local definition for a (possibly imported) identifier. Rewrites occurences of the identifier to point to this new local definiton.!-./01N234567O89:;<=>?@ABCDEFGHIJK-./0123456789:;<=>?@ABCDEFGHIJK-01./234567GHIJK9:;<=>?@ACBDEF8!-./01N234567O89:;<=>?@ABCDEFGHIJKNone3MHTest if the current expression is an identifier matching the given name.Nprog ==>  (v = e) progLMNLMNLMNLMN None *+-./02345689:;=?BCDGHJKMOGParse a CoreString into a Type, where all type variables must be bound.PCParse a CoreString into a Type, any unbound variables are returned.QParse a  to a , using the current context.RParse a  to a >, using the current context, returning unbound type variables.YPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~OPQROPQROQPRRPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~OPQRR S !None )+2346=K o"Do you show fully qualified names?p-Do you hide types, and type arguments, as <>?qDo you hide coercions?r'Do you give the types for all bindings?s8This region should be highlighted (is the current focus)t-below this depth are ..., Nothing => infiniteunotes might be added to outputx!Context for PrettyH translations.6like vcat and hcat, only make the list syntax explicit6like vcat and hcat, only make the list syntax explicit!Use css to do the colors - - >  styletype="text/css"4 - > .hermit-syntax { - > color: red; - > /stylezSTUVAttr just popped, if any Attr stackWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WXYhlkji^gfedcba`_STUVW\]Z[~}xyz{|mnopqrstuvwASTUVWXYZ[\]^ gfedcba`_hlkjim nopqrstuvwxyz{|}~"None3EMTcleanupUnfoldR cleans a unfold operation (for example, an inline or rule application) It is used at the level of the top-redex. Invariant: will not introduce let bindingsA more powerful inlineo. Matches two cases: Var ==> inlines App ==> inlines the head of the function call for the app treeRStash a binding with a name for later use. Allows us to look at past definitions.XStash a binding with a name for later use. Allows us to look at past definitions. rememberR :: String -> Transform c m Core () rememberR label = contextfreeT $ core -> case core of DefCore def -> saveDef label def BindCore (NonRec i e) -> saveDef label (Def i e) _ -> fail "remember: not a binding"PApply a stashed definition (like inline, but looks in stash instead of context).    #None )+234=EKMpAn equality is represented as a set of universally quantified binders, and then the LHS and RHS of the equality.Flip the LHS and RHS of a ."f == g ==> forall x. f x == g xe ==> let v = lhs in ee ==> let v = rhs in e Create a K from a .The high level idea: create a temporary function with two definitions. Fold one of the defintions, then immediately unfold the other.Lift a transformation over  R4 into a transformation over the left-hand side of a .Lift a transformation over  R5 into a transformation over the right-hand side of a .Lift a transformation over  R, into a transformation over both sides of a .hLift a transformation over '[Var]' into a transformation over the universally quantified variables of a .Lift a rewrite over  R- into a rewrite over the left-hand side of a .Lift a rewrite over  R. into a rewrite over the right-hand side of a .Lift a rewrite over  R% into a rewrite over both sides of a .Verify that a T holds, by applying a rewrite to each side, and checking that the results are equal.0Verify that the left- and right-hand sides of a  are alpha equivalent.XGiven two expressions, and a rewrite from the former to the latter, verify that rewrite.gGiven two expressions, and a rewrite to apply to each, verify that the resulting expressions are equal.OGiven f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y and g (f x) ==> x.=Given f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y.PGiven f :: X -> Y and g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y.Given  f :: X -> Y and  g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y.=Instantiate one of the universally quantified variables in a . Note: assumes implicit ordering of variables, such that substitution happens to the right as it does in case alternatives. Only first variable that matches predicate is instantiated.;Instantiate a set of universally quantified variables in a i. It is important that all type variables appear before any value-level variables in the first argument.,##($None36Check if the current expression is an undefined value.6Check if the current expression is an undefined value. error ty string ==> undefined ty*Make an undefined value of the given type.Set the current expression to .9Replace all occurrences of the specified identifier with .vundefinedExprR = undefinedAppR <+ undefinedLamR <+ undefinedLetR <+ undefinedCastR <+ undefinedTickR <+ undefinedCaseR(undefined ty1) e ==>  undefined ty2( v -> undefined ty1) ==>  undefined ty2 (where v is not a )*let bds in (undefined ty) ==> undefined ty)Cast (undefined ty1) co ==> undefined ty2+Tick tick (undefined ty1) ==> undefined ty1>undefinedCaseR = undefinedCaseScrutineeR <+ undefinedCaseAltsR,case (undefined ty) of alts ==> undefined tyhcase e of {pat_1 -> undefined ty ; pat_2 -> undefined ty ; ... ; pat_n -> undefined ty} ==> undefined tyXVerify that the given rewrite is a proof that the given expression is a strict function.%NoneM(Externals for manipulating fixed points.f = e ==> f = fix (\ f -> e)fix ty f <==>  f (fix ty f)fix tyA (\ a -> f (g a)) <==> f (fix tyB (\ b -> g (f b))If f is strict, then (f (g a) == h (f a) ) ==> ( f (fix g) == fix h)If f is strict, then (f (g a) == h (f a) ) ==> ( f (fix g) == fix h)TCheck that the expression has the form "fix t (f :: t -> t)", returning "t" and "f". f ==> fix f  &None3 HExternals that reflect GHC functions, or are derived from GHC functions.?Lookup a rule and attempt to construct a corresponding rewrite.TReturn all the RULES (including specialization RULES on binders) currently in scope.AReturns the universally quantified binders, the LHS, and the RHS.9Run GHC's specConstr pass, and apply any rules generated.=Run GHC's specialisation pass, and apply any rules generated.gGet all the specialization rules on a binding. These are created by SpecConstr and other GHC passes.Promote  to CoreBind.1Find all specialization rules in a Core fragment.  'None3EMTU'Externals relating to Case expressions.:case s of w; C vs -> e ==> e if w and vs are not free in eM(case s of alt1 -> e1; alt2 -> e2) v ==> case s of alt1 -> e1 v; alt2 -> e2 v$f (case s of alt1 -> e1; alt2 -> e2) ==> $case s of alt1 -> f e1; alt2 -> f e2 Only safe if f is strict.case (case s1 of alt11 -> e11; alt12 -> e12) of alt21 -> e21; alt22 -> e22 ==> case s1 of alt11 -> case e11 of alt21 -> e21; alt22 -> e22 alt12 -> case e12 of alt21 -> e21; alt22 -> e22Glet v = case s of alt1 -> e1 in e ==> case s of alt1 -> let v = e1 in e7cast (case s of p -> e) co ==> case s of p -> cast e covcaseFloatR = caseFloatAppR <+ caseFloatCaseR <+ caseFloatLetR <+ caseFloatCastR Note: does NOT include caseFloatArg%Float in a Case whatever the context.Unimplemented!Inline the case scrutinee (if it is an identifier), and then perform case reduction. If first argument is True, perform substitution in RHS, if False, build let expressions.Inline the case scrutinee (if it is an identifier), and then perform case reduction. If first argument is True, perform substitution in RHS, if False, build let expressions.Case of Known Constructor. Eliminate a case if the scrutinee is a data constructor or a literal. If first argument is True, perform substitution in RHS, if False, build let expressions.Case of Known Constructor. Eliminate a case if the scrutinee is a literal. If first argument is True, perform substitution in RHS, if False, build let expressions. NB: LitAlt cases don't do evaluationCase of Known Constructor. Eliminate a case if the scrutinee is a data constructor. If first argument is True, perform substitution in RHS, if False, build let expressions..Case split a free identifier in an expression:0E.g. Assume expression e which mentions i :: [a];e ==> case i of i [] -> e (a:as) -> e YForce evaluation of an identifier by introducing a case. This is equivalent to adding (seq v) in the source code.e -> case v of v _ -> e pLike caseSplit, but additionally inlines the constructor applications for each occurance of the named variable. DcaseSplitInline idPred = caseSplit idPred >>> caseInlineAlternativeR QInline the case binder as the case scrutinee everywhere in the case alternatives. [Inline the case binder as the case-alternative pattern everywhere in the case alternatives. lMerge all case alternatives into a single default case. The RHS of each alternative must be the same. 3case s of {pat1 -> e ; pat2 -> e ; ... ; patn -> e} ==> case s of {_ -> e}[In the case alternatives, fold any occurrences of the case alt patterns to the case binder.A cleverer version of  mergeCaseAltsf that first attempts to abstract out any occurrences of the alternative pattern using the case binder.OEliminate a case, inlining any occurrences of the case binder as the scrutinee.Eliminate a case, merging the case alternatives into a single default alternative and inlining the case binder as the scrutinee (if possible).1Eliminate a case that corresponds to a pointless .NWill forcing the expression to WHNF always force one of the given identifiers? FMaybe the function to float past, and maybe a proof of its strictness.                     (None3 kExternals for local structural manipulations. (Many taken from Chapter 3 of Andre Santos' dissertation.)((\ v -> e1) e2) ==> (let v = e2 in e1)c This form of beta-reduction is safe if e2 is an arbitrary expression (won't duplicate work).$Perform one or more beta-reductions.%(let v = e1 in e2) ==> (\ v -> e2) e1(\ v -> f v) ==> fe1 ==> (\ v -> e1 v) Perform multiple eta-expansions.[Flatten all the top-level binding groups in the module to a single recursive binding group.oFlatten all the top-level binding groups in a program to a program containing a single recursive binding group.ZFlatten all the top-level binding groups in a program to a single recursive binding group.=Abstract over a variable using a lambda. e ==> ( x. e) xZPush a function through a Case or Let expression. Unsafe if the function is not strict.Oa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functionOa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functionI&')*+,./0123456789:;<=>?@ABCDEFGHIJK      )None3MFUnfold the current expression if it is one of the basic combinators: (), (), , , ,  or U. This is intended to be used as a component of simplification traversals such as   or !.#Like bashR, but outputs name of each successful sub-rewrite, providing a log. Also performs core lint on the result of a successful sub-rewrite. If core lint fails, shows core fragment before and after the sub-rewrite which introduced the problem. Note: core fragment which fails linting is still returned! Otherwise would behave differently than bashR. Useful for debugging the bash command itself.HAs bash, but with "let-nonrec-subst" instead of "let-nonrec-subst-safe". !"#$ !"#$ $!"# !"#$*None3MU%%%%+None&'()*+,&'()*+,(+*)&',&'(+*),,None-SExternals for manipulating fixed points, and for the worker/wrapper transformation..For any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then fix A f <==> )wrap (fix B (\ b -> unwrap (f (wrap b))))For any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then fix A f <==> )wrap (fix B (\ b -> unwrap (f (wrap b))))/Given wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then unwrap (wrap work) <==> workGiven wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then unwrap (wrap work) <==> work0XSave the recursive definition of work in the stash, so that we can later verify uses of /2. Must be applied to a definition of the form: work = unwrap (f (wrap work))9 Note that this is performed automatically as part of 1.1\ wrap unwrap -> ( prog = expr ==> Pprog = let f = \ prog -> expr in let work = unwrap (f (wrap work)) in wrap work)\ wrap unwrap -> ( prog = expr ==> Pprog = let f = \ prog -> expr in let work = unwrap (f (wrap work)) in wrap work)2As 5 but performs the static-argument transformation for n static arguments first, and optionally provides some of those arguments (specified by index) to all calls of wrap and unwrap. This is useful if, for example, the expression, and wrap and unwrap, all have a forall type.CConvert a proof of WW Assumption A into a proof of WW Assumption B.CConvert a proof of WW Assumption B into a proof of WW Assumption C.CConvert a proof of WW Assumption A into a proof of WW Assumption C.3wrap (unwrap a) <==> awrap (unwrap a) <==> a4wrap (unwrap (f a)) <==> f awrap (unwrap (f a)) <==> f a5!fix A ( a -> wrap (unwrap (f a))) <==> fix A f!fix A ( a -> wrap (unwrap (f a))) <==> fix A f-./0123WW Assumption AwrapunwrapWW Assumption Awrapunwrap4WW Assumption BwrapunwrapfWW Assumption Bwrapunwrapf5WW Assumption CwrapunwrapfWW Assumption CwrapunwrapfwrapunwrapfwrapunwrapWW Assumption AwrapunwrapfWW Assumption B wrapunwrapfWW Assumption C -./012345 -.120/345-./012345  -NoneE6SExternals for manipulating fixed points, and for the worker/wrapper transformation.7For any f :: (X -> A) -> (X -> A) , and given  abs :: B -> A and  rep :: A -> B as arguments, then fix A f <==> G\ x1 -> abs (fix (X->B) (\ h x2 -> rep (f (\ x3 -> abs (h x3)) x2)) x1) For any f :: (X -> A) -> (X -> A) , and given  abs :: B -> A and  rep :: A -> B as arguments, then fix A f <==> G\ x1 -> abs (fix (X->B) (\ h x2 -> rep (f (\ x3 -> abs (h x3)) x2)) x1)8Given  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then rep (abs (work x)) <==> work x Given  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then rep (abs (work x)) <==> work x9XSave the recursive definition of work in the stash, so that we can later verify uses of 82. Must be applied to a definition of the form: 1work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1)9 Note that this is performed automatically as part of :.:\ abs rep -> ( prog = expr ==> oprog = let f = \ prog -> expr in let work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1) in \ x0 -> abs (work x0)) \ abs rep -> ( prog = expr ==> pprog = let f = \ prog -> expr in let work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1) in \ x0 -> abs (work x0));As  5 but performs the static-argument transformation for n static arguments first, and optionally provides some of those arguments (specified by index) to all calls of abs and rep. This is useful if, for example, the expression, and abs and rep, all have a forall type.CConvert a proof of WW Assumption A into a proof of WW Assumption B.CConvert a proof of WW Assumption B into a proof of WW Assumption C.CConvert a proof of WW Assumption A into a proof of WW Assumption C.< abs (rep a) <==> a abs (rep a) <==> a=abs (rep (f h x)) <==> f h xabs (rep (f h x)) <==> f h x>&fix (X->A) ( h x -> abs (rep (f h x))) <==>  fix (X->A) f&fix (X->A) ( h x -> abs (rep (f h x))) <==>  fix (X->A) f67 8 9: ;<WW Assumption AabsrepWW Assumption Aabsrep=WW Assumption BabsrepfWW Assumption Babsrepf>WW Assumption CabsrepfWW Assumption CabsrepfabsrepfabsrepWW Assumption AabsrepfWW Assumption BabsrepfWW Assumption C 6789:;<=> 67:;98<=>67 8 9: ;<=>.None? List of all 's provided by HERMIT.?.TUVWYZ[\]^_`abcdfhijklmnopqrstuwxyz{|}~#$&')*+,./0123456789:;<=>?@ABCDEFGHIJKMN      !"#$./012345789:;<=>???/None!"EHM @A handle for a specific version of the . Currently @s are identified by an  label.AA A1 is a repository for complete Core syntax trees (). For now, operations on a A> are sequential, but later it will be possible to have two Ds running in parallel.B Halt the A9 and return control to GHC, which compiles the specified @.C Halt the A! and abort GHC without compiling.DApply a g to the specified @& and return a handle to the resulting @.EApply a _ to the @ and return the resulting value.F,Delete the internal record of the specified @.G List all the @s tracked by the A.HIStart a HERMIT client by providing an IO function that takes the initial A and inital @ handle. The Modguts to a Modguts' function required by GHC Plugins is returned. The callback is only ever called once.@ABCDEFGH @ABCDEFGH@ABCDEFGHBCDEFG@ABCDEFGH None)3HM IA handle for an @# combined with scoping information.K4An alternative HERMIT kernel, that provides scoping.YJA primitive means of denoting navigation of a tree (within a local scope).ZTop[Up\Right]Left^)Movement confined within the local scope.!sEnsures that the TMVar is replaced when an error is thrown, and all exceptions are lifted into MonadCatch failures._IStart a HERMIT client by providing an IO function that takes the initial K and inital I handle. The Modguts to 7 Modguts' function required by GHC Plugins is returned."IJKLMNOPQRSTUVWXYZ[\]#^$%&!_'IJKLMNOPQRSTUVWXYZ[\]^_Y]\[Z'^KLMNOPQRSTUVWXIJ_ "IJK LMNOPQRSTUVWXY]\[Z#^$%&!_0None!"+234=BKMThthe current ASTiwhich pretty printer to usej"the way of outputing to the screenkthe list of ticked messagesl3if true, run Core Lint on module after each rewritemJif true, show diffs rather than pp full code (TODO: move into pretty opts)n;if true, abort on *any* failure this should be in a reader`abcdefghijklmnopqrstuvwxyz{|}~`abcdefghijklmnopqrstuvwxyztqrsu~}fghijklmnopbedc|`a{vwxyz`abedcf ghijklmnopqrstuvwxyz{|}~1None32None3    3NoneTUJPretty print a fragment of GHC Core using HERMIT's "Clean" pretty printer.D'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`  <'/.-,+*)(0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`4None!")+368=BHKMTAccess to the enclosing plugin state. This is propagated back to the plugin after the CLT computation ends. We do it this way because nested StateT is a pain.console height, in lines3list of lemmas, with flag indicating whether provenkeyboard input the nav panelDpath to beginning of window, always a prefix of focus path in kernelCurrently visible externals`Nothing = no script running, otherwise the remaining script commands this should be in a readerThis type is similiar to PluginM, except that its exception and state types are supersets of those for PluginM, and it is a transformer. There are two functions:  and  for converting between the two. The reason we do this is to obtain a clean separation of plugin state from commandline state without nesting state transformers. Nesting StateT leads to a lot of awkward lifting and manual state management in the command line code._NB: an alternative to monad transformers, like Oleg's Extensible Effects, might be useful here.Run a CLT computation.KLift a CLT IO computation into a CLT computation over an arbitrary MonadIO..Lift a CLM computation into the PluginM monad..Lift a PluginM computation into the CLM monad.Create default CommandLineState from PluginState. Note: the dictionary (cl_dict) will be empty, and should be populated if needed.xOur own custom instance of Monad for CLT so we don't have to depend on newtype deriving to do the right thing for fail.c]c; 5None!"+36=BKMT&exit the shell, but don't abort/resumeModify shell state Abort GHC a  a6NonePretty print a fragment of GHC Core using HERMIT's "AST" pretty printer. This displays the tree of constructors using nested indentation.bcd    e fg            bcd    e fg7NoneJThis pretty printer is just a reflection of GHC's standard pretty printer. hi   hi8NoneM#Create a dictionary from a list of 's.!The pretty-printing dictionaries.jkljkl9None!")3=MAn  cmd is a possible means of converting a  value to a value of type cmd.!The primitive way of building an . Interpret an ) by looking up the appropriate (s) in the provided &, then interpreting the (s) with the provided Xs, returning the first interpretation to succeed (or an error string if none succeed). mnopqrstu mnopqrstu:None!"+3=KOKernelEffects are things that affect the state of the Kernel - Apply a rewrite (giving a whole new lower-level AST). - Change the current location using a computed path. - Change the currect location using directions. - Begin or end a scope. - Delete an AST - Run a precondition or other predicate that must not fail.  !"#$%&v !"#$%&%$#"! &%$#"! &v;None +36=KMT/wA composite meta-command for running a loaded script immediately. The script is given the same name as the filepath.6Insert a script into the &."wxyz{|}~'()*+,-./0123456'()*+,-./01234566/342105'.-,+*)(wzyx{}|~'.-,+*)(/0123456<None +2346=KM?KExternals that get us into the prover shell, or otherwise deal with lemmas.OExternals that are added to the dictionary only when in interactive proof mode.e ==> let v = lhs in e3 (also works in a similar manner at Program nodes)e ==> let v = rhs in e3 (also works in a similar manner at Program nodes)IVerify that the lemma has been proven. Throws an exception if it has not.0789:;<=>?@AB 789:;<=>?@AB ?8>=<;:9@7BA7 8>=<;:9?@AB=None3MC!There are five types of commands.DCommand that deals with proofs.E:Command that queries the AST with a Transform (read only).F-Command that modifies the state of the shell.G%Command that deals with script files.H7Command that modifies the state of the (scoped) kernel.IHInterpret a boxed thing as one of the four possible shell command types.CDEFGHIJKLMNOPQRSTCDEFGHIJKLMNOPQRSTCHGFEDIJKLMNOPQRST CHGFEDIJKLMNOPQRST>None !"3=KMTU4The first argument includes a list of files to load.Like w, but checks the  setting and does so if needed.UV UV UVUV?None!"3=BT)Run a kernel function on the current SAST>Run a kernel function on the current SAST and update ps_cursor#WXYZ[\]^_`abcdefghijWXYZ[\]^_`abcdefghijX]\[gij^_`abcdefhYWZWXYZ[\]^_`abcdefghij@NonekkkkHIJHIKHILHIMHINHIOHIPHIQHIRHSTHUVHWXHYZH[\H[]H^_H^`HabHcdHceHccHfgHfhHffHffHIiHjkHjlHjmHjnHjoHjjHjpHjqHjrHjsHjtHjuHjvwxyz{|}~      !"#$%&'()*+,-./0123456789: ; < = > ? @ A B C D E F G H 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 i k l j m n o p q r s t u v w x y z { | } ~                                                                                                                                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H H I I J J K K L L M M N O O P P Q Q R R S S T T U U V V W W X X Y Y Z Z [ [ \ ] ^ _ B ` a b c d e f g h i j k l m n o p q r s t u v w x y z { E | } ~                  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy z { | }!~!!!!!!!!!!!!!!!!!!!!!!^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""###################################$$$$$$$$$$$$$$$$%%%%% % % & && &&&&&&'''''''''''''' '!'"'#'$'%'&'''(')'*'+',((-(.(/(0(1(2(3(4(5(6(7))8)9):);)<)=*>+?+?+@+A+B+C+D,,E,F,G,H,I,J,K,L--M-N-O-P-Q-R-S-T./U/V/W/X/Y/Z/[/\/]^^__`abcdefghijklmnopqr0s0s0t0u0v0w0x0x0y0z0{0|0}0~00000000000000000111122222222222223333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555 5 5 5 5 556666666666777777777788999:::::l:::;;;;; ;!;";#;$;%;&;';(;);*;+<,<-<.</<0<1<2<3<<4<5<6=7=-=====8=9=:=;=<===>=?=@=A=B=C>D>E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U??V??W@XAYAZA[A\A]A^A_`abcdeffgh'ijkMlmnopqrstuvvwxyz{|}~JKCCCCCCCCCCCCC```a`aHHHHHHHHHHH     H !"#$%&'()*+,-./0123456789:;:<:=:=>`?@`?@`?A`?B`CD`EF`GHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHlHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHKHLHMHNHOHPHQHRHSHTHUHVHWHXHXHYHZH[H\H\H]H^H_H`HaHbHcHdHeHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H H HHHHHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H&H'H(H)H*H+H,H,H-H.H/H0H1H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHAHBCHDEHDFHDGHDHHDIHDJHDKHDLHDMHDNHDOHDPHDQHDRHDSHDTHDUHVWHVXHVYHVZHV[HV\HV]HV^HV_HV`HVaHVbHVcHVdHVeHVfHVgHVhHViHVjHVkHVlHVmHVnHVoHVpHVqHVrHVsHVtHVuHVvHVwHVxHVyHVzHV{HV|HV}HV~HVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H !H "H #H $H %H &H 'H (H )H *H +H ,H -H .H /H 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H :H ;H <H =H >H ?H @H AH BH CH DH EH FH GH HH IH J KH J LH J MH J NH J OH J PH J QH J RH J SH J TH J UH J VH J WH J XH J YH J ZH J [H J \H J ]H J ^H J _H J `H J aH J bH J cH J dH J eH J fH J gH J hH J iH J jH J kH J lH J mH J nH J oH J pH J qH J rH J sH J tH J uH J vH J wH J xH J yH J zH J {H J |H J |H J }H J ~H J H J H J H J H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H  H  H  H  H  H lH iH  H  H  H  H  H  H  H  H  H  H  H H H H  H H H  H H H  H  H H H H H H H H H H  H H H  H  H  H  H  H  H  H  H  H  H  H  H  H H H H  H H H H H H H H !H "H  #H  $H  %H  &H  'H  (H )H *H  +H ,H -H .H  /H  0H  1H  2H  3H  4H  5H  6H  7H  8H  9H  :H  ;H  <H  =H  >H  ?H  @H  AH  BH  CH  DH  EH  FH  GH  HH  IH  JH  KH  LH  MH NH OH PH QH RH SH TH UH VH WH XH YH ZH [H \H ]H ^H _H `H aH bH cH dH eH fH gH hH iH jH kH lH mH nH oH pH qH rH sH tH uH vH wH xH yH zH {H |H }H ~HH  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H H H H H H  H  H  H  H  H  H  H  H  H H H H H H !H "H #H $H %H &H 'H (H )H *H +H ,H -H .H /H 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H :H ;H <H =H >H ?H @H AH BH CH DH EH FH GH HH IH JH KH LH MH NH OH PH QH RH SH TH UH VH WH XH YH ZH [H \H ]H ^H _H `H aH bH cH dH eH fH gH hH iH jH kH lH mH nH oH pH qH rH sH tH uH  vH  wH  xH  yH  zH  {H  |H  }H  ~H  H  H  H  H  H  H  H  H  H  H  H  Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Hi Ha Ha Ha Ha Ha Ha Ha Ha Ha Ha Ha Ha HI HI HI HI HI HI HI HI !HI "HI #HI $HI %HI &HI 'HI (HI )HI *HI +HI ,HI -HI .HI /HI 0HI 1HI 2HI 3HI 4HI 5HI 6HI 7HI 8HI 9HI :HI ;HI <HI =HI >HI ?HI @HI AHI BHI CHI DHI EHI EHI FH G HH G IH G JH G KH G LH G MH G NH G OH G PH G QH G RH G SH G TH G UH G VH G WH G XH G YH G ZH G [H G \H G ]H G ^H G _H G `H G aH G bH G cH G dH G eH G fH G gH G hH G iH G jH G kH G lH G mH G nH G oH G pH G qH G rH G sH G tH G uH G vH G wH G xH G yH G zH G {H G |H G }H G ~H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G GH G H G H G H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H  H  H H H  H H H H H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  H  !H  "H  #H  $H  %H  &H  'H  'H  (H  )H  *H  +H  ,H  -Hc .Hc /Hc 0Hc 1H 2H 3H 4H 5H 6H 7H 8H 9H :H ;H <H =H >H ?H @H AH BH CH DH EH FH GH HH IH JH KH LH MH NH OH PH QH RH SH TH UH VH WH XH YH ZH [H \H ]H ^H _H `H aH bH cH dH eH fH gH hH iH jH kH lH mH nH oH pH qH rH sH tH uH vH wH xH yH zH {H |H }H ~H H H H H H H H H H H H H H  H  H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  H  H  H  H  H  H H H H H H H H H H H H H H H H H H H H H H H  H  H  H  H  H  H H H H H H  H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H Hi Hi Hi Hi Hi H H H H H H H HHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H pH"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHOHQHRHSTHSUHSVHSWHSXHSYHSZHS[HS\HS]HS^HS_HS`HSaHSbHScHSdHSeHSfHSgHShHSiHSjHSkHSlHSmHSnHSoHSpHSqHSrHSsHStHSuHSvHSwHSxHSyHSzHS{HS|HS}HS~HSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHDHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH JH JH J H J JH J H  H  H H H H H H H H H H H H H H H H H H H  H !H "H #H $H %H &H 'H (H )H *H +H ,H -H .H /H 0H 1H 2H 3H 4H 5H 6H 7H 8H 8H 9H  H :H ;H ;H <H =H pH >H ?H @HABHACHADHAEHAFHAGHAHHAIHAJHAKHALHAMHANHAOHAPHAQHARHASHATHAUHAVHAWHAXHAAHYZHY[HY\HY]HY^HYYH _H `H aH bH cH dH eH fH gH hH iH jH kH lH mH nH oH pH qH rH sH tH uH vH wH xH yH zH {H |H }H ~H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H6H8H9H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHtHuHvHwHxHyHzH{H|H}H~H~HIHIHI^HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHHH H!H"HH#H$%H$&H$'H$(H$)H$*H$+H$,H$-H$.H$/H$0H$1H$2H$3H$4H$5H$6H$7H$8H$9H$:H$;H$<H$=H$>H$?H$@H$AH$BH$CH$DH$EH$FH$GH$HH$IH$JH$KH$$H$$H$LHMNHMOHMPHMQHMRHMSHMTHMUHMVHMWHMXHMYHMZHM[HM\HM]HM^HM_HM`HMaHMbHMcHMdHMeHMfHMgHMhHMiHMjHMkHMlHMmHMnHMoHMpHMqHMrHMsHMtHMuHMvHMwHMxHMyHMzHM{HM|HM}HM~HMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMHMlHjHjHjHjHjHSSH H H H  H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHHHHHHHHHHHHH H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\HH]^_`abc d e fwxg h i j k l m ; n o p q r s t u v w x y z { | } ~                                wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxwxwxwxwxwxwxwxwxwxwxwxwxwwwwwwwwwwwwwwwwwww w w w w wwwwwwwwwwwwwwwww w!w"w#w$w%w&w'w(w)w*w+w,w-w./w.0w.1w.2w.3w.4w.5w.6w.7w.8w.9w.:w.;w<=w<>w<?w<@w<Aw<Bw<Cw<Dw<Ew<Fw<Gw<Hw<Iw<Jw<Kw<Lw<Mw<NwOPwOQwORwOSwOTwOUwVWwVXwVYwVZwV[wV\wV]wV^wV_wV`wVa`bc`de f ` g h i j e k l m n o p q r s t u v w x y z { | } ~     deffghuvvwxyz{|}~ d e f f g h      u v v w x y z { | } ~                                                               !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########t#u$`$$$$$% % % & & &&&&&&&''''''((`a`a`a `a!`a"`#$`#%)&)')()))*)+),)-).,/,0,1,2,3,4,5,6,7,8,9,:,;,<-/-0-1-=->-?-5-6-7-8-9-:-;-@/U/A/B/C/D/V/E/FGHIJKL3M3N3O3M3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c33d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~33333356e6m6s6|6t67s7|888999999999:;;;;;;;;;;;;;;;;;;<<<<<<<,<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>???F???w????}?????hermit-0.5.0.0 HERMIT.GHCHERMIT.GHC.TypecheckerHERMIT.Kernel.Scoped HERMIT.Parser HERMIT.DriverHERMIT.UtilitiesHERMIT.Plugin.Builder HERMIT.CoreHERMIT.ContextHERMIT.Kure.SumTypes HERMIT.Monad HERMIT.KureHERMIT.ExternalHERMIT.Dictionary.DebugHERMIT.Dictionary.GHCHERMIT.Dictionary.Kure#HERMIT.Dictionary.Navigation.CrumbsHERMIT.Dictionary.Navigation HERMIT.NameHERMIT.Dictionary.Common!HERMIT.Dictionary.AlphaConversionHERMIT.Dictionary.FunctionHERMIT.Dictionary.InlineHERMIT.Dictionary.FoldHERMIT.Dictionary.QueryHERMIT.ParserCoreHERMIT.Dictionary.UnsafeHERMIT.Dictionary.Local.BindHERMIT.Dictionary.Local.CastHERMIT.Dictionary.Local.LetHERMIT.Dictionary.NewHERMIT.ParserTypeHERMIT.PrettyPrinter.CommonHERMIT.Dictionary.UnfoldHERMIT.Dictionary.ReasoningHERMIT.Dictionary.UndefinedHERMIT.Dictionary.FixPointHERMIT.Dictionary.RulesHERMIT.Dictionary.Local.CaseHERMIT.Dictionary.LocalHERMIT.Dictionary.CompositeHERMIT.Dictionary.Induction&HERMIT.Dictionary.WorkerWrapper.Common#HERMIT.Dictionary.WorkerWrapper.Fix)HERMIT.Dictionary.WorkerWrapper.FixResultHERMIT.Dictionary HERMIT.KernelHERMIT.Plugin.TypesHERMIT.Plugin.DisplayHERMIT.Plugin.RendererHERMIT.PrettyPrinter.CleanHERMIT.Shell.TypesHERMIT.Shell.ShellEffectHERMIT.PrettyPrinter.ASTHERMIT.PrettyPrinter.GHCHERMIT.Shell.DictionaryHERMIT.Shell.InterpreterHERMIT.Shell.KernelEffectHERMIT.Shell.ScriptToRewriteHERMIT.Shell.ProofHERMIT.Shell.ExternalsHERMIT.Shell.Command HERMIT.PluginHERMIT HERMIT.Syntax Dictionary Paths_hermitLanguageKUREDataMap ghc-7.8.3TypeRepNumTyLitStrTyLitTyLitTyVarTyAppTyTyConAppFunTyForAllTyLitTyTcEnvtcLookupGlobalConvertthRdrNameGuesses CoreArity exprArity OccurAnaloccurAnalyseExprTcTypemkPhiTy mkSigmaTyKindisKindisLiftedTypeKindConTysPrim alphaTyVarsCoAxiom BranchIndexBranchedPairpSndpFstTypePanicthrowGhcException PhaseFailedSignal UsageError CmdLineErrorPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError GhcException kure-2.16.4Language.KURE.Path LocalPathScriptExprHListHCoreHAppHCmdNameSrcName parseScript unparseScript unparseExprHinitTcFromModGuts mk_type_env hermitVersionghcFlagsusage hermitDrivernodupsdupsBydups soleElement equivalentBy equivalentwhenJustmaybeM varNameNSgetHscEnvCoreMvarSetToStrings showVarSet coAxiomNameuqNamefqName var2StringcmpString2Name isQualified cmpString2VarfindNamesFromStringppIdInfo zapVarOccInfo notElemVarSetbndrRuleAndUnfoldingVars runTcMtoCoreM runDsMtoCoreM buildTypeablebuildDictionaryeqExprXlookupRdrNameInModuleForPlugins PhaseInfophaseNum phasesDone phasesLeftCorePassUnknownNoOp PluginPassPasses RuleCheck FloatOutwardsSimplifyPrepTidy DesugarOptDesugar VectorisationCSE SpecConstr Specialising WorkerWrapper Strictness StaticArgs PrintCore LiberateCase FloatInwards buildPlugin ghcPasses getCorePass getPhaseFlagCrumbLRCo_CoLRCo_LR InstCo_Type InstCo_CoNthCo_Co NthCo_Int TransCo_Right TransCo_LeftSymCo_CoUnsafeCo_Right UnsafeCo_LeftAxiomInstCo_ArgAxiomInstCo_IndexAxiomInstCo_Axiom CoVarCo_CoVar ForAllCo_BodyForAllCo_TyVar AppCo_Arg AppCo_FunTyConAppCo_ArgTyConAppCo_TyCon Refl_Type ForAllTy_Body ForAllTy_Var FunTy_CoDom FunTy_Dom TyConApp_ArgTyConApp_TyCon AppTy_Arg AppTy_Fun LitTy_TyLit TyVarTy_TyVarAlt_RHSAlt_VarAlt_ConCo_Co Type_Type Tick_Expr Tick_TickCast_Co Cast_ExprCase_Alt Case_Type Case_BinderCase_ScrutineeLet_BodyLet_BindLam_BodyLam_VarApp_ArgApp_FunLit_LitVar_IdDef_RHSDef_IdRec_Def NonRec_Var NonRec_RHS ProgCons_Tail ProgCons_Head ModGuts_ProgCoreDefDefCoreProgProgConsProgNil CoreTickish progToBinds bindsToProgbindToVarExprs defToIdExpr defsToRecBind progSyntaxEq bindSyntaxEq defSyntaxEq exprSyntaxEq altSyntaxEq typeSyntaxEqcoercionSyntaxEq progAlphaEq bindAlphaEq defAlphaEq exprAlphaEq altAlphaEq typeAlphaEqcoercionAlphaEqprogIdsbindVarsdefIdaltVars freeVarsExpr freeIdsExprlocalFreeVarsExprlocalFreeIdsExpr freeVarsBind freeVarsVar freeVarsDef freeVarsAltlocalFreeVarsAlt freeVarsProg freeVarsTypefreeVarsCoercionexprKindOrType exprTypeMisCoArgappCountmapAltssplitTyConAppM splitFunTypeM endoFunTypeendoFunExprTypefunExprArgResTypesfunExprsWithInverseTypes showCrumbsdeprecatedLeftSiblingdeprecatedRightSiblingHermitC LocalPathH AbsolutePathHHasEmptyContextsetEmptyContext HasCoreRuleshermitCoreRules ReadBindings hermitDepthhermitBindings BoundVars boundVars AddBindingsaddHermitBindings HermitBindinghbDepthhbSitehbPathHermitBindingSiteTOPLEVELFORALL CASEBINDERCASEALT MUTUALRECSELFRECRECNONRECLAM BindingDepthhermitBindingSiteExprhermitBindingSummaryhermitBindingExpraddBindingGroup addDefBindingaddDefBindingsExceptaddCaseBinderBindingaddLambdaBindingaddAltBindingsaddForallBinding findBoundVarsboundInlookupHermitBindinglookupHermitBindingDepthlookupHermitBindingSitetopLevelHermitCCoreTCTyCoCore CoercionCoreTypeCoreAltCoreExprCoreDefCoreBindCoreProgCoreGutsCore coreAlphaEq tyCoAlphaEq coreTCAlphaEq coreSyntaxEq tyCoSyntaxEqcoreTCSyntaxEq freeVarsCore freeVarsTyCofreeVarsCoreTCpromoteModGutsT promoteProgT promoteBindT promoteDefT promoteAltT promoteExprT promoteTypeTpromoteCoercionTpromoteModGutsR promoteProgR promoteBindR promoteDefR promoteAltR promoteExprR promoteTypeRpromoteCoercionRpromoteExprBiR DebugMessage DebugCore DebugTick HasHscEnv getHscEnv HasModGuts getModGuts HasHermitMEnv getHermitMEnvHermitM HermitMEnv hs_debugChanDefStashLabelrunHMgetStashsendDebugMessagesaveDef lookupDef liftCoreM newGlobalIdHnewIdH newTyVarH newCoVarHnewVarH cloneVarH mkHermitMEnvPathHLensH BiRewriteHRewriteH TransformHmodGutsTmodGutsRprogNilT progConsT progConsAllR progConsAnyR progConsOneRnonRecT nonRecAllR nonRecAnyR nonRecOneRrecTrecAllRrecAnyRrecOneRdefTdefAllRdefAnyRdefOneRaltTaltAllRaltAnyRaltOneRvarTvarRlitTlitRappTappAllRappAnyRappOneRlamTlamAllRlamAnyRlamOneRletTletAllRletAnyRletOneRcaseTcaseAllRcaseAnyRcaseOneRcastTcastAllRcastAnyRcastOneRtickTtickAllRtickAnyRtickOneRtypeTtypeR coercionT coercionR defOrNonRecTdefOrNonRecAllRdefOrNonRecAnyRdefOrNonRecOneRrecDefT recDefAllR recDefAnyR recDefOneR consNonRecTconsNonRecAllRconsNonRecAnyRconsNonRecOneRconsRecT consRecAllR consRecAnyR consRecOneR consRecDefTconsRecDefAllRconsRecDefAnyRconsRecDefOneR letNonRecT letNonRecAllR letNonRecAnyR letNonRecOneRletRecT letRecAllR letRecAnyR letRecOneR letRecDefT letRecDefAllR letRecDefAnyR letRecDefOneRcaseAltT caseAltAllR caseAltAnyR caseAltOneR progBindsT progBindsAllR progBindsAnyR progBindsOneRtyVarTtyVarRlitTyTlitTyRappTyT appTyAllR appTyAnyR appTyOneRfunTyT funTyAllR funTyAnyR funTyOneR forAllTyT forAllTyAllR forAllTyAnyR forAllTyOneR tyConAppT tyConAppAllR tyConAppAnyR tyConAppOneRreflTreflR tyConAppCoTtyConAppCoAllRtyConAppCoAnyRtyConAppCoOneRappCoT appCoAllR appCoAnyR appCoOneR forAllCoT forAllCoAllR forAllCoAnyR forAllCoOneRcoVarCoTcoVarCoR axiomInstCoTaxiomInstCoAllRaxiomInstCoAnyRaxiomInstCoOneRsymCoTsymCoRtransCoT transCoAllR transCoAnyR transCoOneRnthCoT nthCoAllR nthCoAnyR nthCoOneRlrCoTlrCoAllRlrCoAnyRlrCoOneRinstCoT instCoAllR instCoAnyR instCoOneRdeprecatedIntToCrumbTdeprecatedIntToPathTRewriteCoreListBox IntListBox StringListBox StringBoxCoreBox CoreString unCoreStringTransformCoreTCPathBoxTransformCorePathBoxPathBoxCrumbBoxTransformCoreCheckBoxTransformCoreTCCheckBoxTransformCoreStringBoxTransformCoreTCStringBoxBiRewriteCoreBoxRewriteCoreTCBoxRewriteCoreBoxIntBoxTagBoxExternBoxboxunboxExternal externName externDyn externHelp externTagsTag.+remTagtagMatchTagECmdTag Deprecated ExperimentTODOProofUnsafeContextVersionControlDebug PreConditionCommute Introduce PredicateQuery NavigationShallowDeepLoopEvalShell ExternalHelp ExternalNamedictionaryOfTags.&.||notTexternalmatchingExternals toDictionaryaddToDictionarytoHelpexternTypeStringexternTypeArgResString externalsobserveFailureRobserveRtraceRbracketRsubstR substCoreExpr substCoreAltarityOf lintModuleT lintExprT dynFlagsT dezombifyR occurAnalyseRoccurAnalyseExprChangedRoccurAnalyseChangedRoccurAnalyseAndDezombifyRanyCallRcrumbExternals Considerable CoercionExprTypeExprTickyCastyCaseOfLetExprLambda ApplicationLiteralVariableCaseAlt DefinitionBinding parentOfTrhsOfTbindingGroupOfT bindingOfT occurrenceOfToccurrenceOfTargetsTbindingOfTargetsTbindingGroupOfTargetsT rhsOfTargetsT considerablesconsiderConstructT nthArgPathNamed NamedTyVar NamedTyCon NamedDataConNamedId HermitName hnModuleName hnUnqualified varToNamed tyConClassNS dataConNStyVarNSvarNS allNameSpaces fromRdrName toRdrName toRdrNames parseNamefindIdfindVar findTyConfindTypefindInNameSpacesfindInNameSpaceapplyInContextTcallT callPredT callNameTcallSaturatedT callNameG callDataConTcallDataConNameTcallsRcallsT progConsIdsTprogConsRecIdsTprogConsNonRecIdT nonRecVarTrecIdsTlamVarTletVarsT letRecIdsT letNonRecVarT caseVarsT caseBinderIdT caseAltVarsTvarBindingDepthTvarIsOccurrenceOfTexprIsOccurrenceOfT boundVarsT findBoundVarTfindIdTfindVarT findTyConT findTypeTinScopewithVarsInScope wrongExprForm visibleVarsTcloneVarAvoidingTfreshNameGenAvoidingdetectShadowsM unshadowR unshadowExprR unshadowAltR unshadowProgR replaceVarR alphaLamRalphaCaseBinderR alphaAltWithR alphaAltVarsR alphaAltR alphaCaseR alphaLetWithR alphaLetVarsR alphaLetRalphaProgConsWithRalphaProgConsIdsRalphaProgConsR alphaProgRalphaR staticArgRstaticArgTypesR staticArgPosRstaticArgPredR InlineConfig AllBindersCaseBinderOnlyCaseBinderInlineOption Alternative Scrutinee inlineNameR inlineNamesRinlineMatchingPredRinlineRinlineCaseScrutineeRinlineCaseAlternativeRconfigurableInlineR ensureBoundT getUnfoldingTinlineTargetsT stashFoldR stashFoldAnyRfoldRfoldVarRfoldtyMatchesToCoreExpr unifyTypesinfoTcompareCoreAtTcompareBoundIdsTTokenTcharTstring TrationalTintegerTcnameTname Tsemicolon TquestionTdotTatTlambda TdoublearrowTarrowTstar Tcoloneqcolon TcoloncolonTcolonTeqThashTcbraceTobraceTcparenToparenTwildTlocal TexternalTnoteTcastTofTcaseTinTletTrecTforall parseErrorlexer parseCoreparseCoreExprTparse2beforeBiRparse3beforeBiRparse4beforeBiRparse5beforeBiRunsafeReplaceRunsafeReplaceStashR nonrecToRecR recToNonrecR castElimReflR castElimSymR castFloatAppRcastElimSymPlusR letSubstR letSubstSafeRletNonRecSubstRletNonRecSubstSafeRletElimRletNonRecElimR letRecElimR progBindElimRprogBindNonRecElimRprogBindRecElimR letToCaseR letFloatAppR letFloatArgR letFloatLetR letFloatLamR letFloatCaseR letFloatCastR letFloatExprR letFloatTopR letFloatInRletFloatInCaseRletFloatInAppRletFloatInLamRreorderNonRecLetsR letTupleR letIntroRletNonRecIntroRprogNonRecIntroR nonRecIntroRletIntroUnfoldingRisVar nonRecIntro parseTypeparseTypeWithHoles parseTypeTparseTypeWithHolesT RenderCoderStartrEnd rDoHighlightrPutStrHTMLUnicode RenderSpecial renderSpecial SpecialSymbol ForallSymbolTypeBindSymbol TypeSymbolCoercionBindSymbolCoercionSymbol CastSymbolRightArrowSymbol TypeOfSymbol LambdaSymbol ShowOptionOmitAbstractShow PrettyOptionspo_fullyQualified po_exprTypes po_coercionspo_typesForBinderspo_focuspo_depthpo_notes po_ribbonpo_widthPrettyC prettyC_path prettyC_varsprettyC_optionsPrettyH PrettyPrinterPPpForallpCoreTCpOptionsSyntaxForColor WarningColorLitColor TypeColor CoercionColorIdColor SyntaxColor KeywordColorAttr SpecialFontPathAttrColorBndrAttrTransformCoreTCDocHBox TransformDocHunTransformDocHDocHshowRoleattrPidColor typeColor coercionColor keywordColor syntaxColor markColor specialFontmarkBindingSite liftPrettyH liftPrettyC initPrettyCupdateTypeShowOptionupdateCoShowOptionupdateWidthOption renderCode coreRendersvlisthlistcleanupUnfoldRunfoldR unfoldPredR unfoldNameR unfoldNamesRunfoldSaturatedR specializeR rememberR unfoldStashR showStashTCoreExprEqualityProof"TransformCoreExprEqualityStringBoxRewriteCoreExprEqualityBoxCoreExprEqualityflipCoreExprEqualityextensionalityR eqLhsIntroR eqRhsIntroR birewritelhsTrhsTbothT forallVarsTlhsRrhsRbothRppCoreExprEqualityTproveCoreExprEqualityTverifyCoreExprEqualityTverifyEqualityLeftToRightTverifyEqualityCommonTargetTverifyIsomorphismTverifyRetractionT retractionBRinstantiateDictsRalphaEqualityRunshadowEqualityRinstantiateEqualityVarRinstantiateEqualityVarinstantiateEqualitydiscardUniVarsisUndefinedValTerrorToUndefinedRmkUndefinedValT replaceCurrentExprWithUndefinedRreplaceIdWithUndefinedRundefinedExprR undefinedAppR undefinedLamR undefinedLetRundefinedCastRundefinedTickRundefinedCaseRundefinedCaseScrutineeRundefinedCaseAltsR verifyStrictT fixIntroRfixComputationRuleBRfixRollingRuleBRfixFusionRuleBR isFixExprTmkFixTRuleNameStringruleRrulesRgetHermitRulesTgetHermitRuleTruleToEqualityTruleNameToEqualityT specConstrR caseElimR caseFloatAppR caseFloatArgRcaseFloatCaseR caseFloatLetRcaseFloatCastR caseFloatR caseFloatInRcaseFloatInAppRcaseFloatInArgsR caseReduceIdRcaseReduceUnfoldR caseReduceRcaseReduceLiteralRcaseReduceDataconR caseSplitR caseIntroSeqRcaseSplitInlineRcaseInlineScrutineeRcaseInlineAlternativeRcaseMergeAltsRcaseMergeAltsWithBinderRcaseElimInlineScrutineeRcaseElimMergeAltsR caseElimSeqR betaReduceRbetaReducePlusR betaExpandR etaReduceR etaExpandRmultiEtaExpandRflattenModuleRflattenProgramRflattenProgramT abstractRpushRunfoldBasicCombinatorR simplifyRbashRbashExtendedWithR bashDebugR bashUsingRinductionCaseSplit WWAssumptionWWAssumptionTagCBA workLabelwwFacBR wwFusionBRwwGenerateFusionRwwSplitRwwSplitStaticArgwwAssAwwAssBwwAssC wwResultFacBRwwResultFusionBRwwResultGenerateFusionRwwResultSplitRwwResultSplitStaticArg wwResultAssA wwResultAssB wwResultAssCASTKernelresumeKabortKapplyKqueryKdeleteKlistK hermitKernelSAST ScopedKernelresumeSabortSapplySquerySdeleteSlistSpathSmodPathS beginScopeS endScopeSkernelStoASTS DirectionTURL moveLocally scopedKernelPSBox PExceptionPErrorPResumePAbort PluginState ps_cursor ps_pretty ps_renderps_tick ps_corelint ps_diffonly ps_failhard ps_kernelps_phasePluginT unPluginTPluginM runPluginTtick mkKernelEnviokm'iokmiokm''$fExternPluginState$fErrorPException$fMonadCatchPluginT$fMonadTransPluginT getFocusPathdisplay ps_putStr ps_putStrLnUnicodeTerminalchangeRenderershellRenderersunicodeConsoledoSGR undoSGRWith setHighlightdiffDocHdiffR$fRenderCodeUnicodeTerminal$fMonoidUnicodeTerminal$fRenderSpecialUnicodeTerminalprettyppCoreTC ppModGuts ppCoreProg ppCoreBind ppCoreAlt ppCoreExpr ppKindOrTypeppForallQuantification ppCoercionCompletionType AmbiguousCCommandCInlineC OccurrenceOfCRhsOfCBindingGroupOfC BindingOfC ConsiderCLemma LemmaName ScriptNameCLSBoxCommandLineState cl_pstate cl_height cl_scripts cl_lemmascl_nav cl_version cl_window cl_externalscl_running_script cl_initSAST VersionStorevs_graphvs_tagsCLTunCLT CLExceptionCLError CLContinueCLResumeCLAbort VersionCmdAddTagGotoTagGotoStepBackQueryFunCorrectnessCriteraInquiryDisplayDiff QueryDocH QueryStringmessage performQueryppWholeProgramabortresumecontinue rethrowCLE rethrowPErunCLTclm2cltclmpluginMnewSAST cl_corelint setCoreLint cl_cursor setCursor cl_diffonly setDiffOnly cl_failhard setFailHard cl_kernel cl_kernel_env cl_pretty setPrettycl_pretty_opts setPrettyOpts cl_rendermkCLSgetTermDimensions cl_putStr cl_putStrLnisRunningScriptsetRunningScriptputStrToConsole shellCompletecompletionTypecompletionQuery fixWindow showWindow showGraph$fExternCommandLineState$fMonadCatchCLT $fMonadCLT$fMonadTransCLT$fErrorCLException$fExternQueryFun ShellEffectResumeDumpContinue PluginComp CLSModifyAbortperformShellEffectdumpmkDict pp_dictionaryInterpinterp interpExprH KernelEffectDeleteEndScope BeginScope PathfinderApplyperformKernelEffect ScriptEffectSeqMetaScriptToRewrite SaveScriptSaveFile RunScriptLoadFile DefineScript loadAndRun runScript popScriptLineperformScriptEffect lookupScriptparseScriptCLTscriptToRewriteaddScriptToDictUserProofTechnique ProofCommand DumpLemma ShowLemmas QueryLemma ModifyLemmaInteractiveProof RuleToLemmaperformProofCommandppLemmaTuserProofTechnique ShellCommandinterpShellCommandshell_externalsgc setWindow showRenderers versionCmdshowDerivationTreeshowRefactorTraildisplayScripts showScriptstestAllT testRewrites commandLine evalScriptHPM hermitPlugindefPShpmToIO interactiverunqueryatphaseafterbeforeuntil allPhases firstPhase lastPhase getPhaseInfo modifyCLSsetPrettyOptionspluginisScriptIdFirstCharisScriptIdCharisScriptInfixIdCharisCoreIdFirstChar isCoreIdCharisCoreInfixIdCharinfixOperatorSymbolsbaseGHC.BaseStringtest HappyAddrHappyA#HappyStk Happy_IntList HappyConsInfixOpIdentQuoteTickStmtEndListEnd ListDelim ListStartScopeEnd ScopeStart ParenRight ParenLeftHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'parserhappySeqlexError lexStringlexCore unparseAtom happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq mk_field_env mk_dfun_ncatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName extraGHCArgsmain2main3main4 getPlugin matchArgs Data.MaybeJustMaybereturnfailVarvarNameVarSetName NamedThing BasicTypesOccInfoIdTyVarCoVarRdrNameModule ModuleNamethrowCmdLineErrorSshowAttributes locallyBoundL locallyBoundRthrowCmdLineError CoreMonadPluginghc-primGHC.Prim+#-#*#Cabal-1.18.1.3!Distribution.InstalledPackageInfo haddockHTMLshaddockInterfaces frameworks frameworkDirs ldOptions ccOptions hugsOptionsdependsincludes includeDirsextraGHCiLibrariesextraLibraries hsLibraries libraryDirs importDirstrusted hiddenModulesexposedModulesexposedcategory descriptionsynopsispkgUrlhomepage stabilityauthor maintainer copyrightlicensesourcePackageIdinstalledPackageIdInstalledPackageInfoInstalledPackageInfo_Distribution.Package pkgVersionpkgNamePackageIdentifierDistribution.Text Data.VersionVersion versionBranch versionTags Debug.Tracetrace Data.Data mkNoRepType Data.Listfoldl1'thNameToGhcName dumpIfSet_dyn debugTraceMsgdebugTraceMsgS fatalErrorMsgfatalErrorMsgSerrorMsg errorMsgSputMsgputMsgSgetFirstAnnotationsgetAnnotationsreinitializeGlobalsgetPackageFamInstEnvgetOrigNameCache addSimplCount getRuleBaseliftIOWithCountrunCoreM pprSimplCountplusSimplCount doSimplTickdoFreeSimplTickhasDetailedCountsisZeroSimplCountzeroSimplCount simplCountN bindsOnlyPass defaultPlugindumpSimplPhaserunMayberunWhenpprPassDetailslintInteractiveExprlintPassResultdumpPassResult dumpIfSetendPassshowPassCoreDoSimplifyCoreDoPluginPassCoreDoFloatInwardsCoreDoFloatOutwardsCoreLiberateCaseCoreDoPrintCoreCoreDoStaticArgsCoreDoStrictnessCoreDoWorkerWrapperCoreDoSpecialisingCoreDoSpecConstrCoreCSECoreDoRuleCheckCoreDoVectorisation CoreDoNothing CoreDoPasses CoreDesugarCoreDesugarOptCoreTidyCorePrepCoreToDo sm_eta_expand sm_case_case sm_inlinesm_rulessm_phasesm_names SimplModeSimplifierModefloatOutPartialApplicationsfloatOutConstantsfloatOutLambdasFloatOutSwitchesCommandLineOptioninstallCoreToDos SimplCountPreInlineUnconditionallyPostInlineUnconditionally UnfoldingDone RuleFiredLetFloatFromLet EtaExpansion EtaReduction BetaReduction CaseOfCase KnownBranch CaseMergeAltMergeCaseElim CaseIdentityFillInCaseDefault BottomFoundSimplifierDoneCoreMMkCore uNDEFINED_ID undefinedNameeRROR_IDaBSENT_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_IDnO_METHOD_BINDING_ERROR_ID pAT_ERROR_IDrEC_CON_ERROR_IDiRREFUT_PAT_ERROR_IDrUNTIME_ERROR_IDrEC_SEL_ERROR_IDerrorIdsmkImpossibleExprmkRuntimeErrorApp mkBuildExpr mkFoldrExpr mkListExpr mkConsExpr mkNilExprmkSmallTupleCase mkTupleCasemkSmallTupleSelectormkTupleSelector wrapFloatmkBigCoreTupTy mkBigCoreTupmkBigCoreVarTupTymkBigCoreVarTup mkCoreTupmkCoreVarTupTy mkCoreVarTup mkChunkifiedmkEqBoxmkStringExprFS mkStringExpr mkCharExpr mkDoubleExpr mkFloatExpr mkIntegerExprmkWordExprWord mkWordExpr mkIntExprInt mkIntExpr mkCoreLamscastBottomExpr mkIfThenElse mkWildCasemkWildValBindermkWildEvBinder mkCoreConApps mkCoreApps mkCoreApp mkCoreLets mkCoreLet sortQuantVarsFloatLet FloatCase FloatBindHscTypesemptyModBreaksbyteCodeOfObject nameOfObjectisInterpretableisObject linkableObjsisObjectLinkablenumToTrustInfotrustInfoToNumnoIfaceTrustInfo setSafeMode getSafeModeisNoIfaceVectInfonoIfaceVectInfo plusVectInfo noVectInfo isHpcUsed emptyHpcInfo showModMsg isBootSummary msObjFilePath msHiFilePath msHsFilePathms_imps ms_mod_nameemptyMGsoExt mkHsSONamemkSOName addEpsInStatsnoDependencies lookupFixityemptyFixityEnvmkIfaceFixCache plusWarnsemptyIfaceWarnCachemkIfaceWarnCache tyThingIdtyThingDataContyThingCoAxiom tyThingTyConlookupTypeHscEnv lookupTypeextendTypeEnvWithIdsextendTypeEnvList extendTypeEnv lookupTypeEnvtypeEnvFromEntitiesmkTypeEnvWithImplicits mkTypeEnvtypeEnvClassestypeEnvDataConstypeEnvPatSyns typeEnvIdstypeEnvCoAxioms typeEnvTyCons typeEnvElts emptyTypeEnvtyThingAvailInfotyThingsTyVarstyThingParent_maybeisImplicitTyThingimplicitTyConThingsimplicitClassThingsimplicitTyThingsmkPrintUnqualifiedsubstInteractiveContexticExtendGblRdrEnvsetInteractivePrintNamesetInteractivePackageextendInteractiveContext icPrintUnqual icInScopeTTsicInteractiveModuleemptyInteractiveContext appendStubCemptyModDetailsmkIfaceHashCache emptyModIfaceprepareAnnotationshptObjshptRules hptVectInfo hptInstanceslookupIfaceByModulepprHPTemptyPackageIfaceTableemptyHomePackageTable pprTargetId pprTargethscEPShandleFlagWarningsprintOrThrowWarningshandleSourceError throwOneErrormkApiErrsrcErrorMessagesmkSrcErrrunInteractiveHscrunHscHscNotGeneratingCode HscUpToDate HscUpdateBoot HscRecomp HscStatusHsc SourceError GhcApiErrorhsc_type_env_varhsc_MLChsc_FChsc_NChsc_EPShsc_HPThsc_IC hsc_mod_graph hsc_targets hsc_dflagsHscEnvtargetContentstargetAllowObjCodetargetIdTarget TargetModule TargetFileTargetIdHomePackageTablePackageIfaceTable hm_linkable hm_detailshm_iface HomeModInfo FinderCacheFound NoPackage FoundMultiplefr_suggestionsfr_pkgs_hiddenfr_mods_hiddenfr_pkgfr_pathsNotFound FindResultModLocationCache mi_trust_pkgmi_trustmi_hpc mi_hash_fn mi_fix_fn mi_warn_fn mi_vect_infomi_orphan_hashmi_rules mi_fam_instsmi_insts mi_globalsmi_declsmi_annsmi_warns mi_fixities mi_used_th mi_exp_hash mi_exports mi_usagesmi_depsmi_boot mi_finsts mi_orphan mi_flag_hash mi_mod_hash mi_iface_hash mi_moduleModIface IfaceExport md_vect_infomd_annsmd_rules md_fam_instsmd_instsmd_types md_exports ModDetails ImportedModsImportedModsValmg_dependent_files mg_trust_pkgmg_safe_haskellmg_fam_inst_env mg_inst_env mg_vect_info mg_vect_decls mg_modBreaks mg_hpc_infomg_annsmg_warns mg_foreignmg_bindsmg_rules mg_patsyns mg_fam_instsmg_instsmg_tcs mg_fix_env mg_rdr_env mg_used_th mg_used_names mg_dir_impsmg_deps mg_exportsmg_boot mg_moduleModGuts cg_modBreaks cg_hpc_info cg_dep_pkgs cg_foreigncg_binds cg_tycons cg_moduleCgGutsNoStubs ForeignStubsic_cwd ic_int_printic_monad ic_resume ic_default ic_fix_env ic_instances ic_rn_gbl_env ic_tythings ic_imports ic_mod_index ic_dflagsInteractiveContextIIDeclIIModuleInteractiveImportTypeEnv lookupTyCon lookupDataConlookupId lookupThing MonadThings NoWarningsWarnAllWarnSomeWarnings FixityEnvFixItemWhetherHasOrphansIsBootInterface dep_finsts dep_orphsdep_pkgsdep_modsDeps Dependenciesusg_safe usg_mod_hashusg_modUsagePackageModule usg_exports usg_entities usg_mod_nameUsageHomeModule usg_file_hash usg_file_path UsageFileUsagePackageTypeEnvPackageRuleBasePackageInstEnvPackageFamInstEnv eps_statseps_mod_fam_inst_env eps_ann_env eps_vect_info eps_rule_baseeps_fam_inst_env eps_inst_enveps_PTEeps_PIT eps_is_bootEPSExternalPackageState n_insts_out n_insts_in n_rules_out n_rules_in n_decls_out n_decls_in n_ifaces_inEpsStatsnsNamesnsUniqs NameCache OrigNameCache ModuleGraph ms_hspp_buf ms_hspp_opts ms_hspp_filems_textual_imps ms_srcimps ms_obj_date ms_hs_date ms_location ms_hsc_srcms_mod ModSummarySourceModifiedSourceUnmodifiedSourceUnmodifiedAndStable hpcInfoHashhpcInfoTickCountHpcInfohpcUsed NoHpcInfo AnyHpcUsagevectInfoParallelTyConsvectInfoParallelVarsvectInfoDataCon vectInfoTyCon vectInfoVarVectInfoifaceVectInfoParallelTyConsifaceVectInfoParallelVarsifaceVectInfoTyConReuseifaceVectInfoTyConifaceVectInfoVar IfaceVectInfo IsSafeImportIfaceTrustInfo hpm_src_files hpm_moduleHsParsedModulelinkableUnlinkedlinkableModule linkableTimeLMLinkableDotODotADotDLLBCOsUnlinked BreakIndexmodBreaks_declsmodBreaks_varsmodBreaks_locsmodBreaks_flags ModBreaks ByteCodeAsmCompiledByteCodeRulesruleCheckProgram lookupRule pprRuleBase unionRuleBaseextendRuleBaseList mkRuleBase emptyRuleBasegetRules rulesOfBindsaddIdSpecialisations addSpecInfoextendSpecInfo mkSpecInfopprRulesForUser roughTopNamesmkRuleRuleBase CoreSubstexprIsLiteral_maybeexprIsConApp_maybe simpleOptPgmsimpleOptExprWith simpleOptExpr substTickish substVarSetsubstRulesForImportedIds substSpec substIdOccsubstUnfoldingsubstUnfoldingSCsubstCosubstTycloneRecIdBndrs cloneBndr cloneBndrs cloneIdBndrs cloneIdBndr substRecBndrs substBndrs substBndr deShadowBinds substBind substBindSC substExpr substExprSC setInScopeextendInScopeIdsextendInScopeList extendInScope addInScopeSet isInScope mkOpenSubstdelBndrsdelBndr lookupCvSubst lookupTvSubst lookupIdSubstextendSubstListextendSubstWithVar extendSubstextendCvSubstList extendCvSubstextendTvSubstList extendTvSubstextendIdSubstList extendIdSubst zapSubstEnv substInScopemkSubst mkEmptySubst emptySubst isEmptySubstSubst IdSubstEnv CoreUtils rhsIsStatic tryEtaReduceexprSize coreBindsSizecoreBindsStatseqExpr exprIsBig cheapEqExprdataConRepFSInstPatdataConRepInstPat exprIsConLike exprIsHNFexprOkForSideEffectsexprOkForSpeculationisExpandableApp isCheapApp exprIsCheap'exprIsExpandable exprIsCheapexprIsWorkFree exprIsDupable exprIsBottomgetIdFromTrivialExpr exprIsTrivial filterAlts trimConArgs mergeAltsfindAlt isDefaultAlt findDefault mkAltExprneedsCaseBinding bindNonRec tickHNFArgs mkTickNoHNFmkTickmkCastapplyTypeToArgsapplyTypeToArg coreAltsType coreAltTypeexprType CheapAppFuncs_cocs_tycs_tmCS CoreStatsPackages dumpPackages isDllNamegetPreloadPackagesAndlookupModuleWithSuggestionslookupModuleInAllPackagesgetPackageFrameworksgetPackageFrameworkPathgetPackageExtraCcOpts packageHsLibscollectLinkOptsgetPackageLinkOptscollectLibraryPathsgetPackageLibraryPathcollectIncludeDirsgetPackageIncludePath initPackagesgetPackageDetailsextendPackageConfigMap lookupPackageemptyPackageConfigMapinstalledPackageIdMapmoduleToPkgConfAllpreloadPackagespkgIdMap PackageStatePackageConfigMapCoreFVsfreeVarsstableUnfoldingVarsidUnfoldingVars idRuleVarsidRuleAndUnfoldingVars idFreeVars varTypeTyVars freeVarsOf vectsFreeVarsruleLhsFreeIds rulesFreeVars idRuleRhsVarsruleRhsFreeVarsruleLhsOrphNamesexprsSomeFreeVarsexprSomeFreeVars exprsFreeVarsInterestingVarFunCoreBindWithFVsCoreExprWithFVstransferPolyIdInfozapDemandIdInfozapFragileIdInfo zapLamIdInfoupdOneShotInfosetIdOneShotInfoclearOneShotLambdasetOneShotLambdaisProbablyOneShotLambdaisOneShotLambdaisStateHackType typeOneShotstateHackOneShot isOneShotBndr idOneShotInfo isConLikeIdidRuleMatchInfosetInlineActivationidInlineActivationmodifyInlinePragmasetInlinePragmaidInlinePragma zapIdOccInfo setIdOccInfo idOccInfo setIdCafInfo idCafInfosetIdSpecialisation idHasRules idCoreRulesidSpecialisationsetIdDemandInfo idDemandInfosetIdUnfoldingsetIdUnfoldingLazilyrealIdUnfolding idUnfolding isStrictIdzapIdStrictnesssetIdStrictness idStrictness isBottomingId idRepArity setIdArityidArityisDictIdisEvVar isDeadBinderidIsFrom isImplicitId hasNoBinding idDataConisDataConId_maybeisDataConWorkId_maybeisDataConWorkIdisFCallId_maybe isFCallIdisPrimOpId_maybe dfunNSilentisDFunId isPrimOpIdisClassOpId_maybeisNaughtyRecordSelectorisRecordSelectorrecordSelectorFieldLabelmkTemplateLocalsNummkTemplateLocalsmkTemplateLocal mkWorkerIdmkWiredInIdName mkUserLocalM mkUserLocal mkSysLocalM mkSysLocalmkExportedLocalIdmkLocalIdWithInfo mkLocalIdmkVanillaGlobalWithInfomkVanillaGlobal mkGlobalIdmaybeModifyIdInfo modifyIdInfo setIdInfo localiseId setIdType setIdUnique setIdNameidTypeidUniqueidNameIdInfozapFragileInfo zapDemandInfo zapLamInfo ppCafInfomayHaveCafRefs seqSpecInfosetSpecInfoHead specInfoRulesspecInfoFreeVarsisEmptySpecInfo emptySpecInfo pprStrictness ppArityInfo unknownArity noCafIdInfosetStrictnessInfo setDemandInfosetOneShotInfo setCafInfo setArityInfosetUnfoldingInfosetUnfoldingInfoLazily setOccInfosetInlinePragInfo setSpecInfo megaSeqIdInfo seqIdInfo VanillaId sel_naughty sel_tyconRecSelId DataConWorkId DataConWrapId ClassOpIdPrimOpIdFCallId TickBoxOpIdDFunId demandInfostrictnessInfooccInfoinlinePragInfo oneShotInfocafInfo unfoldingInfospecInfo arityInfo ArityInfoInlinePragInfoSpecInfoMayHaveCafRefs NoCafRefsCafInfo TickBoxIdTickBox TickBoxOpCoreSyncollectAnnBndrsdeAnnAlt deAnnotate' deAnnotatecollectAnnArgsseqRulesseqExprsseqExpr valArgCount valBndrCount isTypeArg isTyCoArgisValArg isRuntimeArg isRuntimeVar collectArgscollectValBinderscollectTyBinderscollectTyAndValBinderscollectBinders flattenBinds rhssOfAlts rhssOfBindbindersOfBinds bindersOfvarsToCoreExprs varToCoreExprmkCoBindmkTyBindmkLetsmkLamsmkDoubleLitDouble mkDoubleLitmkFloatLitFloat mkFloatLit mkStringLit mkCharLitmkInt64LitInt64mkWord64LitWord64 mkWordLitWord mkWordLit mkIntLitIntmkIntLit mkConApp2mkConApp mkVarAppsmkCoAppsmkTyAppsmkApps deTagExpr cmpAltConltAltcmpAlt canUnfoldneverUnfoldGuidancehasSomeUnfoldingisClosedUnfoldingunfoldingArityisStableUnfoldingisCompulsoryUnfoldingisStableCoreUnfolding_maybeexpandUnfolding_maybeisExpandableUnfoldingisCheapUnfoldingisConLikeUnfoldingisEvaldUnfoldingisValueUnfolding otherConsmaybeUnfoldingTemplatesetUnfoldingTemplateunfoldingTemplateisStableSource seqUnfolding mkOtherConevaldUnfolding noUnfoldingboringCxtNotOk boringCxtOk unSaturatedOk needSaturated setRuleIdName isLocalRule ruleIdNameruleActivationruleName ruleArity isBuiltinRuletickishCanSplit tickishIsCode mkNoScope mkNoCount tickishScoped tickishCountsLitAppLamLetCaseCastCoercionExprArgAltDataAltLitAltDEFAULTAltConNonRecRecBind profNoteScope profNoteCount profNoteCCProfNotetickId tickModuleHpcTick breakpointFVs breakpointId BreakpointTickishru_localru_autoru_rhsru_argsru_bndrsru_roughru_fnru_actru_nameRuleru_tryru_nargs BuiltinRuleCoreRuleRuleFun InScopeEnvIdUnfoldingFunVectNoVectVectType VectClassVectInstCoreVect NoUnfoldingOtherCondf_argsdf_condf_bndrs DFunUnfolding uf_guidance uf_expandableuf_is_work_free uf_is_conlike uf_is_valueuf_arity uf_is_topuf_srcuf_tmpl CoreUnfolding Unfolding InlineRhs InlineStableInlineCompulsoryUnfoldingSource ug_boring_ok ug_unsat_okUnfWhenug_resug_sizeug_args UnfIfGoodArgsUnfNeverUnfoldingGuidance CoreProgramCoreBndrCoreExprCoreArgCoreBindCoreAltTB TaggedBndr TaggedBind TaggedExpr TaggedArg TaggedAltAnnExprAnnVarAnnLitAnnLamAnnAppAnnCaseAnnLetAnnCastAnnTickAnnType AnnCoercionAnnExpr'AnnAlt AnnNonRecAnnRecAnnBind hashLiteral pprLiteralabsentLiteralOf literalType litIsLifted litFitsInChar litIsDupable litIsTrivial nullAddrLitdouble2FloatLitfloat2DoubleLit int2DoubleLit double2IntLit int2FloatLit float2IntLit int2CharLit char2IntLitnarrow32WordLitnarrow16WordLitnarrow8WordLitnarrow32IntLitnarrow16IntLit narrow8IntLit int2WordLit word2IntLit isZeroLit inCharRange inWordRange inIntRange mkLitInteger mkMachString mkMachChar mkMachDouble mkMachFloat mkMachWord64 mkMachInt64 mkMachWord mkMachIntMachCharMachStr MachNullAddrMachInt MachInt64MachWord MachWord64 MachFloat MachDouble MachLabel LitInteger TysWiredInpromotedGTDataConpromotedEQDataConpromotedLTDataConpromotedOrderingTyConpromotedFalseDataConpromotedTrueDataConpromotedBoolTyCon isPArrFakeCon parrFakeCon isPArrTyCon parrTyConmkPArrTyunitTy mkTupleTy consDataCon nilDataConmkPromotedListTy listTyConmkListTy gtDataConId eqDataConId ltDataConId gtDataCon eqDataCon ltDataCon trueDataConIdfalseDataConId trueDataCon falseDataCon boolTyConboolTy doubleDataCon doubleTyCondoubleTy floatDataCon floatTyConfloatTy wordDataCon wordTyConwordTy intDataConintTyConintTyintegerGmpSDataConstringTy charDataCon charTyConcharTycoercibleClasscoercibleDataCon eqBoxDataConunboxedPairDataConunboxedPairTyConunboxedSingletonDataConunboxedSingletonTyConunboxedUnitDataConunboxedUnitTyCon pairTyCon unitDataConId unitDataCon unitTyContupleConpromotedTupleDataConpromotedTupleTyCon tupleTyConisBuiltInOcc_maybetypeSymbolKindContypeNatKindCon eqTyCon_RDR parrTyCon_RDRconsDataCon_RDR listTyCon_RDRintDataCon_RDR charTyCon_RDR intTyCon_RDRtrue_RDR false_RDR boolTyCon_RDR parrTyConNamedoubleTyConNamefloatTyConName wordTyConNameconsDataConNamenilDataConName listTyConName boolTyConName intTyConName charTyConName eqTyConNamemkWiredInTyConName wiredInTyConsDataCon tyConsOfTyConsplitDataProductType_maybe promoteKindpromoteDataCon_maybepromoteDataCon buildAlgTyCondataConCannotMatch classDataConisUnboxedTupleConisTupleDataCondataConIdentitydataConRepArgTysdataConOrigArgTysdataConInstOrigArgTysdataConInstArgTysdataConUserTypedataConStupidThetadataConOrigResTydataConFullSig dataConSig dataConBoxerdataConRepBangsdataConRepStrictnessisNullaryRepDataConisNullarySrcDataCondataConRepRepAritydataConRepAritydataConSourceAritydataConStrictMarksdataConFieldTypedataConFieldLabelsdataConImplicitIds dataConWrapIddataConWrapId_maybe dataConWorkId dataConTheta dataConEqSpecdataConAllTyVarsdataConExTyVarsdataConUnivTyVarsdataConIsInfixdataConRepTypedataConOrigTyCon dataConTag eqSpecPreds mkDataConisMarkedStrictisBangedeqHsBang NoDataConRep dcr_bangs dcr_stricts dcr_arg_tys dcr_boxer dcr_wrap_idDCR HsUserBangHsNoBangHsUnpackHsStrictHsBang MarkedStrictNotMarkedStrictStrictnessMarkapplyCo coercionRole coercionKinds coercionKind coercionTypeseqCo liftCoMatchliftCoSubstTyVarliftCoSubstWith lookupCoVar substCoVars substCoVarsubstCossubstCoWithTys substCoWithTyzipOpenCvSubst mkCvSubstsubstCoVarBndrextendCvSubstAndInScopeextendTvSubstAndInScope tvCvSubst cvTvSubst zapCvSubstEnv getCvInScopeisEmptyCvSubst emptyCvSubstemptyCvSubstEnvcoreEqCoercion2coreEqCoerciontopNormaliseNewType_maybeinstNewTyCon_maybemkCoCastmkPiComkPiCos mkNewTypeConextRoleltRolenthRole tyConRolesX mkPhantomCo maybeSubCo2 maybeSubComkSubCo mkAxiomRuleComkUnivCo mkUnsafeComkInstComkLRComkNthCo mkNthCoRole mkTransComkSymCo mkForAllComkFunCo mkTyConAppComkAppCoFlexiblemkAppComkUnbranchedAxInstRHS mkAxInstRHS mkAxInstLHSmkUnbranchedAxInstCo mkAxInstComkReflCo mkCoVarCoisReflCo_maybeisReflComkCoercionType coVarRole coVarKindsplitForAllCo_maybesplitAppCo_maybegetCoVar_maybe decomposeCopprCoAxBranchHdr pprCoAxBranch pprCoAxiom pprParendCopprCotidyCostidyCo coercionSize coVarsOfCo tyCoVarsOfCos tyCoVarsOfCo isCoVarTypeisCoVar setCoVarNamesetCoVarUnique coVarNamepickLRRefl TyConAppCoAppCoForAllCoCoVarCo AxiomInstCoUnivCoSymCoTransCo AxiomRuleCoNthCoLRCoInstCoSubCoCLeftCRight LeftOrRight CvSubstEnvCvSubstcloneTyVarBndrsubstTyVarBndr lookupTyVar substTyVars substTyVar deShadowTy substThetasubstTys substKisWith substTysWith substTyWithzipTyEnv zipTopTvSubst mkTopTvSubstzipOpenTvSubst mkOpenTvSubst unionTvSubstextendTvInScopeListextendTvInScope zapTvSubstEnv setTvSubstEnvnotElemTvSubst getTvInScope getTvSubstEnv mkTvSubstisEmptyTvSubst emptyTvSubstcomposeTvSubstemptyTvSubstEnvcmpPredcmpTypescmpType eqTyVarBndrseqPredXeqPredeqTypeseqTypeXeqTypeseqTypesseqTypeisPrimitiveType isStrictTypeisClosedAlgType isAlgTypeisUnboxedTupleTypeisUnLiftedTypepprSourceTyCon coAxNthLHSmkFamilyTyConApptypeSize getEqPredRolegetEqPredTys_maybe getEqPredTysgetClassPredTys_maybegetClassPredTysclassifyPredType isDictLikeTyisDictTy mkClassPredmkReprPrimEqPred mkPrimEqPredmkCoerciblePredmkEqPredisIPPred_maybe isIPClass isIPTyConisIPPredisEqPred isClassPred applyTysDapplyTysapplyTy dropForAllssplitForAllTyssplitForAllTy_maybe isForAllTy mkPiTypesmkPiType mkPiKinds mkForAllTys mkForAllTyisVoidTy typeRepArity typePrimRep tyConsOfTyperepTypeflattenRepTypenewTyConInstRhssplitTyConApp_maybe splitTyConApp tyConAppArgN tyConAppArgstyConAppArgs_maybe tyConAppTyContyConAppTyCon_maybe mkTyConAppfunArgTy funResultTy zipFunTys splitFunTysN splitFunTyssplitFunTy_maybe splitFunTyisFunTymkFunTysmkFunTy isStrLitTy mkStrLitTy isNumLitTy mkNumLitTy splitAppTys splitAppTyrepSplitAppTy_maybesplitAppTy_maybemkAppTysmkAppTygetTyVar_maybe isTyVarTygetTyVarexpandTypeSynonymstcViewcoreView UnaryType UbxTupleRepUnaryRepRepType ClassPredEqPred TuplePred IrredPredPredTree MetaKindVar SimpleKindconstraintKind openTypeKindunliftedTypeKindliftedTypeKindanyKind superKindconstraintKindTyConunliftedTypeKindTyConopenTypeKindTyConliftedTypeKindTyCon anyKindTyConfunTyContidyKind tidyOpenKind tidyTopType tidyOpenTypes tidyOpenTypetidyType tidyTypes tidyTyVarOcc tidyOpenTyVartidyOpenTyVarstidyFreeTyVars tidyTyVarBndrtidyTyVarBndrs pprTypeApp pprTvBndr pprTvBndrs pprForAll pprSigmaTypepprThetaArrowTypprTheta pprClassPred pprEqPred pprParendKindpprKind pprParendTypepprTypepprTyThingCategory pprTyThingvarSetElemsKvsFirstcloseOverKinds tyVarsOfTypes tyVarsOfType isKindVar isTypeVar mkTyConTy mkTyVarTys mkTyVarTy KindOrType ThetaTypeAnIdAConLikeATyConACoAxiomTvSubst TvSubstEnvVarEnvmodifyVarEnv_Directly modifyVarEnvlookupVarEnv_NF zipVarEnvrestrictVarEnvpartitionVarEnvfilterVarEnv_DirectlylookupVarEnv_Directly foldVarEnv isEmptyVarEnv unitVarEnv varEnvKeys varEnvElts emptyVarEnvmkVarEnv mapVarEnvlookupWithDefaultVarEnv filterVarEnv lookupVarEnv plusVarEnvintersectsVarEnv minusVarEnv delVarEnv delVarEnvList plusVarEnv_CD plusVarEnv_CextendVarEnvListextendVarEnv_AccextendVarEnv_C extendVarEnv alterVarEnvelemVarEnvByKey elemVarEnv emptyTidyEnv nukeRnEnvR nukeRnEnvLlookupRnInScopeinRnEnvRinRnEnvL rnOccR_maybe rnOccL_maybernOccRrnOccL delBndrsR delBndrsLdelBndrRdelBndrLrnEtaRrnEtaLrnBndrRrnBndrLrnBndr2rnBndrs2 rnInScopeSet rnInScopeaddRnInScopeSetmkRnEnv2uniqAway unionInScopelookupInScope_Directly lookupInScopeelemInScopeSet delInScopeSetextendInScopeSetSetextendInScopeSetListextendInScopeSet mkInScopeSetgetInScopeVarsemptyInScopeSet InScopeSetRnEnv2TidyEnvIdEnvTyVarEnvCoVarEnvTyCon checkRecTc initRecTcpprPromotionQuotetyConFamilyCoercion_maybetyConFamInst_maybetyConFamInstSig_maybeisFamInstTyCon tyConParenttyConTuple_maybetyConClass_maybe isClassTyContyConSingleAlgDataCon_maybetyConSingleDataCon_maybesynTyConRhs_maybesynTyConDefn_maybetyConStupidTheta tyConPrimRep newTyConConewTyConCo_maybenewTyConEtadRhsnewTyConEtadArity newTyConRhs tyConRoles algTyConRhstyConFamilySizetyConDataCons_maybe tyConDataCons tyConKindcoreExpandTyCon_maybetcExpandTyCon_maybetyConCType_maybeisImplicitTyConisPromotedDataCon_maybeisPromotedDataConisPromotedTyCon_maybeisPromotedTyConisForeignTyCon promoteTyConpromotableTyCon_maybeisRecursiveTyContupleTyConAritytupleTyConSorttupleTyConBoxityisBoxedTupleTyContyConAssoc_maybe isTyConAssocisDataFamilyTyConisBuiltInSynFamTyCon_maybeisClosedSynFamilyTyCon_maybeisOpenSynFamilyTyConisSynFamilyTyConisOpenFamilyTyCon isFamilyTyConisEnumerationTyConisGadtSyntaxTyConisDecomposableTyCon isSynTyConisTypeSynonymTyConisDataProductTyCon_maybeisProductTyConunwrapNewTyCon_maybe isNewTyConisDistinctAlgRhsisDistinctTyCon isDataTyCon isAlgTyConisUnLiftedTyCon isPrimTyConmakeTyConAbstractisAbstractTyConmkPromotedTyConmkPromotedDataCon mkSynTyConmkLiftedPrimTyCon mkKindTyCon mkPrimTyConmkForeignTyCon mkTupleTyCon mkClassTyCon mkAlgTyCon mkFunTyConprimElemRepSizeB primRepSizeW isGcPtrRep isVoidRep isNoParentvisibleDataCons tyConArity tyConCType tyConTyVars tyConExtName FieldLabel AbstractTyConDataFamilyTyConis_enum data_cons DataTyConnt_co nt_etad_rhsnt_rhsdata_conNewTyCon AlgTyConRhs NoParentTyCon ClassTyConAssocFamilyTyCon FamInstTyCon TyConParent SynonymTyConOpenSynFamilyTyConClosedSynFamilyTyConAbstractClosedSynFamilyTyConBuiltInSynFamTyCon SynTyConRhsVoidRepPtrRepIntRepWordRepInt64Rep Word64RepAddrRepFloatRep DoubleRepVecRepPrimRep Int8ElemRep Int16ElemRep Int32ElemRep Int64ElemRep Word8ElemRep Word16ElemRep Word32ElemRep Word64ElemRep FloatElemRep DoubleElemRep PrimElemRep RecTcChecker AnnotationsdeserializeAnnsfindAnns plusAnnEnvextendAnnEnvListmkAnnEnv emptyAnnEnvgetAnnTargetName_maybe ann_value ann_target Annotation AnnPayload NamedTarget ModuleTarget AnnTarget CoreAnnTargetAnnEnvNominalRepresentationalPhantomRolepprNameProvenanceisExplicitItemimportSpecModule importSpecLoc qualSpecOK unQualSpecOKfindLocalDupsRdrEnvextendGlobalRdrEnv transformGREsmkGlobalRdrEnvplusGlobalRdrEnvpickGREsunQualOK isLocalGREgetGRE_NameQualifier_maybeslookupGRE_NamelookupGRE_RdrNamelookupGlobalRdrEnvpprGlobalRdrEnvglobalRdrEnvEltsemptyGlobalRdrEnv gresFromAvailgresFromAvailsdelLocalRdrEnvListinLocalRdrEnvScopelocalRdrEnvEltselemLocalRdrEnvlookupLocalRdrOcclookupLocalRdrEnvextendLocalRdrEnvListextendLocalRdrEnvemptyLocalRdrEnv isExact_maybeisExact isOrig_maybeisOrig isQual_maybeisQualisUnqual isSrcRdrNameisRdrTc isRdrTyVar isRdrDataCon nameRdrName getRdrNamemkQual mkVarUnqualmkUnqualmkOrig mkRdrQual mkRdrUnqual demoteRdrNamesetRdrNameSpace rdrNameSpace rdrNameOccUnqualQualOrigExact LocalRdrEnv GlobalRdrEnvgre_provgre_pargre_nameGRE GlobalRdrEltNoParentParentIsParentLocalDefImported Provenanceis_itemis_declImpSpec ImportSpecis_dlocis_qualis_asis_mod ImpDeclSpecImpAllis_iloc is_explicitImpSome ImpItemSpec dataConName dataConTyConisVanillaDataCon DataConRepNameSetfindUsesduUsesallUsesduDefsplusDUmkDUsusesOnlyemptyDUsdelFVsdelFVunitFVaddOneFVmkFVsplusFVplusFVsemptyFVs isEmptyFVsintersectsNameSetdelListFromNameSetintersectNameSet filterNameSet foldNameSetdelFromNameSet nameSetToList elemNameSet minusNameSetunionManyNameSets unionNameSetsaddOneToNameSetaddListToNameSet mkNameSet unitNameSet emptyNameSetisEmptyNameSetFreeVarsDefsUsesDefUseDefUsesNameEnvlookupNameEnv_NF filterNameEnvdelListFromNameEnvdelFromNameEnvextendNameEnvList_CextendNameEnv_AccnameEnvUniqueElts mapNameEnvextendNameEnv_C plusNameEnv_C plusNameEnv foldNameEnv elemNameEnv mkNameEnv alterNameEnv lookupNameEnvextendNameEnvList extendNameEnv unitNameEnv emptyNameEnv nameEnvEltsdepAnalcoercibleTyConeqTyContypeSymbolKind typeNatKindmkBoxedTupleTy tyConName tyConUnique isTupleTyConisUnboxedTupleTyCon isFunTyCon seqVarSet fixVarSet subVarSetdisjointVarSetintersectsVarSetpartitionVarSetelemVarSetByKeydelVarSetByKeyextendVarSet_C filterVarSet sizeVarSet mapVarSet lookupVarSet foldVarSetmkVarSet isEmptyVarSet delVarSetList delVarSet minusVarSet elemVarSet varSetElems unionVarSets unionVarSetintersectVarSetextendVarSetList extendVarSet unitVarSet emptyVarSetIdSetTyVarSetCoVarSet noParenPredisPredTytypeKind substKiWitheqKind isExportedIdmustHaveLocalBinding isGlobalId isLocalVar isLocalIdisId isTcTyVarisTKVarisTyVarsetIdNotExported setIdExported globaliseId setIdDetails lazySetIdInfomkExportedLocalVarmkCoVar mkLocalVar mkGlobalVar idDetailsidInfo mkKindVarsetTcTyVarDetailstcTyVarDetails mkTcTyVarmkTyVarupdateTyVarKindMupdateTyVarKind setTyVarKind setTyVarNamesetTyVarUnique tyVarKind tyVarName setVarType setVarName setVarUnique varUniqueTKVarTypeVarKindVarEvIdEvVarDictIdIpIdEqVarvarType pprPrefixName pprInfixName getOccString getSrcSpan getSrcLocpprNameDefnLoc pprDefinedAtpprModulePrefix stableNameCmphashNamemkLocalisedOccName localiseName tidyNameOcc setNameUnique mkFCallName mkSysTvNamemkSystemVarNamemkSystemNameAt mkSystemName mkWiredInNamemkExternalNamemkDerivedInternalNamemkClonedInternalNamemkInternalName isSystemName isVarName isValName isDataConName isTyConName isTyVarNamenameIsLocalOrFromnameModule_maybeisInternalNameisExternalNameisBuiltInSyntaxwiredInNameTyThing_maybe isWiredInName nameSrcSpan nameSrcLoc nameOccName nameUnique BuiltInSyntax UserSyntaxgetName getOccNameOccName startsConId startsVarId startsConSym startsVarSym isLexVarSym isLexConSym isLexVarId isLexConIdisLexSymisLexIdisLexVarisLexCon tidyOccNameinitTidyOccEnvemptyTidyOccEnv mkMethodOcc mkDFunOcc mkInstTyTcOcc mkLocalOccmkSuperDictSelOccmkDataConWorkerOccmkPDatasDataConOccmkPDataDataConOccmkPDatasTyConOccmkPDataTyConOccmkPReprTyConOcc mkPADFunOcc mkVectIsoOccmkVectDataConOccmkVectTyConOcc mkVectOcc mkDataCOcc mkDataTOccmkGenRComkGen1RmkGenRmkGenSmkGenCmkGenD mkGenOcc2 mkGenOcc1 mkMaxTagOcc mkTag2ConOcc mkCon2TagOcc mkEqPredCoOcc mkInstTyCoOcc mkNewTyCoOccmkForeignExportOcc mkSpecOccmkIPOcc mkDictOccmkClassDataConOccmkDerivedTyConOccmkClassOpAuxOccmkGenDefMethodOccmkDefaultMethodOcc mkMatcherOcc mkWorkerOccmkDataConWrapperOccisDerivedOccNamestartsWithUnderscore parenSymOccisSymOcc isDataSymOcc isDataOccisValOccisTcOccisTvOccisVarOccsetOccNameSpace occNameStringintersectsOccSetintersectOccSet isEmptyOccSet foldOccSet occSetElts elemOccSet minusOccSetunionManyOccSets unionOccSetsextendOccSetList extendOccSetmkOccSet unitOccSet emptyOccSet pprOccEnv alterOccEnv filterOccEnvdelListFromOccEnv delFromOccEnv mkOccEnv_C mapOccEnvextendOccEnv_AccextendOccEnv_C plusOccEnv_C plusOccEnv occEnvElts foldOccEnv elemOccEnvmkOccEnv lookupOccEnvextendOccEnvList extendOccEnv unitOccEnv emptyOccEnv demoteOccName mkClsOccFSmkClsOcc mkTcOccFSmkTcOcc mkTyVarOccFS mkTyVarOcc mkDataOccFS mkDataOcc mkVarOccFSmkVarOcc mkOccNameFS mkOccName pprOccNamepprNameSpaceBriefpprNonVarNameSpace pprNameSpaceisValNameSpaceisVarNameSpace isTvNameSpaceisTcClsNameSpaceisDataConNameSpacetvName srcDataNamedataName tcClsNameclsNametcName NameSpace occNameFS occNameSpaceoccName HasOccNameOccEnvOccSet TidyOccEnvDynFlagsisAvx512pfEnabledisAvx512fEnabledisAvx512erEnabledisAvx512cdEnabled isAvx2Enabled isAvxEnabledisSse4_2Enabled isSse2Enabled isSseEnabledsetUnsafeGlobalDynFlagstARGET_MAX_WORDtARGET_MAX_INTtARGET_MIN_INT mAX_PTR_TAGtAG_MASKwORD_SIZE_IN_BITS bLOCK_SIZE_WiLDV_STATE_USEiLDV_STATE_CREATEiLDV_CREATE_MASK lDV_SHIFTdYNAMIC_BY_DEFAULTwORDS_BIGENDIANtAG_BITSbITMAP_BITS_SHIFTcLONG_LONG_SIZE cLONG_SIZE cINT_SIZE dOUBLE_SIZE wORD_SIZEaP_STACK_SPLIMrESERVED_STACK_WORDSrESERVED_C_STACK_BYTESmAX_Real_Long_REGmAX_Real_XMM_REGmAX_Real_Double_REGmAX_Real_Float_REGmAX_Real_Vanilla_REG mAX_XMM_REG mAX_Long_REGmAX_Double_REG mAX_Float_REGmAX_Vanilla_REGmUT_ARR_PTRS_CARD_BITS mAX_CHARLIKE mIN_CHARLIKE mAX_INTLIKE mIN_INTLIKEmIN_PAYLOAD_SIZEmAX_SPEC_AP_SIZEmAX_SPEC_SELECTEE_SIZEoFFSET_StgFunInfoExtraRev_aritysIZEOF_StgFunInfoExtraRevoFFSET_StgFunInfoExtraFwd_arityoFFSET_StgUpdateFrame_updateeoFFSET_StgStack_stackoFFSET_StgStack_spoFFSET_StgTSO_stackobjoFFSET_StgTSO_cccssIZEOF_StgArrWords_NoHdroFFSET_StgMutArrPtrs_sizeoFFSET_StgMutArrPtrs_ptrssIZEOF_StgMutArrPtrs_NoHdrsIZEOF_StgUpdateFrame_NoHdr oFFSET_StgEntCounter_entry_countoFFSET_StgEntCounter_link oFFSET_StgEntCounter_registeredpoFFSET_StgEntCounter_allocdoFFSET_StgEntCounter_allocssIZEOF_StgSMPThunkHeaderoFFSET_StgHeader_ldvwoFFSET_StgHeader_ccs oFFSET_CostCentreStack_scc_count oFFSET_CostCentreStack_mem_allocsIZEOF_CostCentreStackoFFSET_bdescr_blocksoFFSET_bdescr_freeoFFSET_bdescr_startoFFSET_Capability_roFFSET_stgGCFunoFFSET_stgGCEnter1oFFSET_stgEagerBlackholeInfooFFSET_StgRegTable_rHpAlloc"oFFSET_StgRegTable_rCurrentNurseryoFFSET_StgRegTable_rCurrentTSOoFFSET_StgRegTable_rCCCSoFFSET_StgRegTable_rHpLimoFFSET_StgRegTable_rHpoFFSET_StgRegTable_rSpLimoFFSET_StgRegTable_rSpoFFSET_StgRegTable_rL1oFFSET_StgRegTable_rZMM6oFFSET_StgRegTable_rZMM5oFFSET_StgRegTable_rZMM4oFFSET_StgRegTable_rZMM3oFFSET_StgRegTable_rZMM2oFFSET_StgRegTable_rZMM1oFFSET_StgRegTable_rYMM6oFFSET_StgRegTable_rYMM5oFFSET_StgRegTable_rYMM4oFFSET_StgRegTable_rYMM3oFFSET_StgRegTable_rYMM2oFFSET_StgRegTable_rYMM1oFFSET_StgRegTable_rXMM6oFFSET_StgRegTable_rXMM5oFFSET_StgRegTable_rXMM4oFFSET_StgRegTable_rXMM3oFFSET_StgRegTable_rXMM2oFFSET_StgRegTable_rXMM1oFFSET_StgRegTable_rD6oFFSET_StgRegTable_rD5oFFSET_StgRegTable_rD4oFFSET_StgRegTable_rD3oFFSET_StgRegTable_rD2oFFSET_StgRegTable_rD1oFFSET_StgRegTable_rF6oFFSET_StgRegTable_rF5oFFSET_StgRegTable_rF4oFFSET_StgRegTable_rF3oFFSET_StgRegTable_rF2oFFSET_StgRegTable_rF1oFFSET_StgRegTable_rR10oFFSET_StgRegTable_rR9oFFSET_StgRegTable_rR8oFFSET_StgRegTable_rR7oFFSET_StgRegTable_rR6oFFSET_StgRegTable_rR5oFFSET_StgRegTable_rR4oFFSET_StgRegTable_rR3oFFSET_StgRegTable_rR2oFFSET_StgRegTable_rR1bLOCKS_PER_MBLOCK bLOCK_SIZE pROF_HDR_SIZE sTD_HDR_SIZE compilerInfopicPOpts picCCOpts setTmpDirsetPackageNameaddWay' dynamicGhc rtsIsProfiledglasgowExtsFlagsxFlagssupportedLanguagesAndExtensions fLangFlagsfFlags fWarningFlags flagsPackage flagsDynamicflagsAllallFlags updateWaysparseDynamicFlagsFullparseDynamicFilePragmaparseDynamicFlagsCmdLine getStgToDo updOptLevelshowOpt getVerbFlagsgetOpts unsafeFlagssafeImplicitImpsReqsafeDirectImpsReq safeImportsOn safeInferOnsafeLanguageOn safeHaskellOnpackageTrustOndynFlagDependencieslang_set xopt_unsetxopt_setxopt wopt_unsetwopt_setwopt gopt_unsetgopt_setgopt dopt_unsetdopt_setdoptlanguageExtensionsprintInfoForUserprintOutputForUserdefaultFlushErrdefaultFlushOutdefaultLogActionHPutStrDocdefaultLogActionHPrintDocdefaultLogActiondefaultFatalMessager interpWays defaultWaysdefaultDynFlags initDynFlagsdynamicTooMkDynamicDynFlagswhenCannotGenerateDynamicTooifGeneratingDynamicToowhenGeneratingDynamicToowayUnsetGeneralFlagswayGeneralFlags wayRTSOnly mkBuildTagmkTablesNextToCodetablesNextToCodedefaultObjectTargetisNoLink isOneShottargetRetainsAllBindingsisObjectTargetopt_lcopt_lo opt_windresopt_lopt_aopt_copt_Fopt_Popt_Lpgm_lcpgm_lo pgm_libtool pgm_windres pgm_sysmanpgm_Tpgm_dllpgm_lpgm_apgm_spgm_cpgm_Fpgm_Ppgm_LsystemPackageConfigextraGccViaCFlags rawSettingstmpDirtopDir ghciUsagePath ghcUsagePathOpt_D_dump_cmmOpt_D_dump_cmm_rawOpt_D_dump_cmm_cfgOpt_D_dump_cmm_cbeOpt_D_dump_cmm_procOpt_D_dump_cmm_sinkOpt_D_dump_cmm_spOpt_D_dump_cmm_procmapOpt_D_dump_cmm_splitOpt_D_dump_cmm_infoOpt_D_dump_cmm_cpsOpt_D_dump_asmOpt_D_dump_asm_nativeOpt_D_dump_asm_livenessOpt_D_dump_asm_regallocOpt_D_dump_asm_regalloc_stagesOpt_D_dump_asm_conflictsOpt_D_dump_asm_statsOpt_D_dump_asm_expandedOpt_D_dump_llvmOpt_D_dump_core_statsOpt_D_dump_deriv Opt_D_dump_dsOpt_D_dump_foreignOpt_D_dump_inliningsOpt_D_dump_rule_firingsOpt_D_dump_rule_rewritesOpt_D_dump_simpl_traceOpt_D_dump_occur_analOpt_D_dump_parsed Opt_D_dump_rnOpt_D_dump_core_pipelineOpt_D_dump_simplOpt_D_dump_simpl_iterationsOpt_D_dump_simpl_phasesOpt_D_dump_specOpt_D_dump_prepOpt_D_dump_stgOpt_D_dump_stranalOpt_D_dump_strsigs Opt_D_dump_tcOpt_D_dump_typesOpt_D_dump_rulesOpt_D_dump_cseOpt_D_dump_worker_wrapperOpt_D_dump_rn_traceOpt_D_dump_rn_statsOpt_D_dump_opt_cmmOpt_D_dump_simpl_statsOpt_D_dump_cs_traceOpt_D_dump_tc_traceOpt_D_dump_if_traceOpt_D_dump_vt_traceOpt_D_dump_splicesOpt_D_dump_BCOsOpt_D_dump_vectOpt_D_dump_tickedOpt_D_dump_rttiOpt_D_source_statsOpt_D_verbose_stg2stg Opt_D_dump_hiOpt_D_dump_hi_diffsOpt_D_dump_mod_cycles!Opt_D_dump_view_pattern_commoningOpt_D_verbose_core2coreDumpFlagOpt_DumpToFileOpt_D_faststring_statsOpt_D_dump_minimal_importsOpt_DoCoreLintingOpt_DoStgLintingOpt_DoCmmLintingOpt_DoAsmLintingOpt_NoLlvmManglerOpt_WarnIsErrorOpt_PrintExplicitForallsOpt_PrintExplicitKindsOpt_StrictnessOpt_LateDmdAnalOpt_KillAbsenceOpt_KillOneShotOpt_FullLaziness Opt_FloatInOpt_Specialise Opt_StaticArgumentTransformationOpt_CSEOpt_LiberateCaseOpt_SpecConstrOpt_DoLambdaEtaExpansionOpt_IgnoreAssertsOpt_DoEtaReduction Opt_CaseMergeOpt_UnboxStrictFieldsOpt_UnboxSmallStrictFieldsOpt_DictsCheapOpt_EnableRewriteRules Opt_VectoriseOpt_VectorisationAvoidance Opt_RegsGraphOpt_RegsIterativeOpt_PedanticBottoms Opt_LlvmTBAAOpt_LlvmPassVectorsInRegistersOpt_IrrefutableTuples Opt_CmmSinkOpt_CmmElimCommonBlocksOpt_OmitYieldsOpt_SimpleListLiteralsOpt_FunToThunkOpt_DictsStrictOpt_DmdTxDictSelOpt_LoopificationOpt_IgnoreInterfacePragmasOpt_OmitInterfacePragmasOpt_ExposeAllUnfoldingsOpt_AutoSccsOnIndividualCafsOpt_ProfCountEntriesOpt_PpOpt_ForceRecompOpt_ExcessPrecisionOpt_EagerBlackHoling Opt_NoHsMain Opt_SplitObjs Opt_StgStatsOpt_HideAllPackagesOpt_PrintBindResult Opt_HaddockOpt_HaddockOptionsOpt_Hpc_No_AutoOpt_BreakOnExceptionOpt_BreakOnErrorOpt_PrintEvldWithShowOpt_PrintBindContentsOpt_GenManifestOpt_EmbedManifestOpt_EmitExternalCoreOpt_SharedImplibOpt_BuildingCabalPackageOpt_IgnoreDotGhciOpt_GhciSandboxOpt_GhciHistoryOpt_HelpfulErrorsOpt_DeferTypeErrors Opt_ParallelOpt_GranMacrosOpt_PICOpt_SccProfilingOn Opt_TickyOpt_Ticky_Allocd Opt_Ticky_LNEOpt_Ticky_Dyn_Thunk Opt_Static Opt_RPathOpt_RelativeDynlibPathsOpt_Hpc Opt_FlatCacheOpt_SimplPreInliningOpt_ErrorSpansOpt_PprCaseAsLetOpt_SuppressCoercionsOpt_SuppressVarKindsOpt_SuppressModulePrefixesOpt_SuppressTypeApplicationsOpt_SuppressIdInfoOpt_SuppressTypeSignaturesOpt_SuppressUniques Opt_RunCPS Opt_RunCPSZOpt_AutoLinkPackagesOpt_ImplicitImportQualifiedOpt_KeepHiDiffsOpt_KeepHcFilesOpt_KeepSFilesOpt_KeepTmpFilesOpt_KeepRawTokenStreamOpt_KeepLlvmFilesOpt_BuildDynamicTooOpt_DistrustAllPackagesOpt_PackageTrust GeneralFlagOpt_WarnDuplicateExportsOpt_WarnDuplicateConstraintsOpt_WarnHiShadowsOpt_WarnImplicitPreludeOpt_WarnIncompletePatternsOpt_WarnIncompleteUniPatterns Opt_WarnIncompletePatternsRecUpdOpt_WarnOverflowedLiteralsOpt_WarnEmptyEnumerationsOpt_WarnMissingFieldsOpt_WarnMissingImportListOpt_WarnMissingMethodsOpt_WarnMissingSigsOpt_WarnMissingLocalSigsOpt_WarnNameShadowingOpt_WarnOverlappingPatternsOpt_WarnTypeDefaultsOpt_WarnMonomorphismOpt_WarnUnusedBindsOpt_WarnUnusedImportsOpt_WarnUnusedMatchesOpt_WarnWarningsDeprecationsOpt_WarnDeprecatedFlags Opt_WarnAMPOpt_WarnDodgyExportsOpt_WarnDodgyImportsOpt_WarnOrphansOpt_WarnAutoOrphansOpt_WarnIdentities Opt_WarnTabsOpt_WarnUnrecognisedPragmasOpt_WarnDodgyForeignImportsOpt_WarnLazyUnliftedBindingsOpt_WarnUnusedDoBindOpt_WarnWrongDoBind)Opt_WarnAlternativeLayoutRuleTransitionalOpt_WarnUnsafe Opt_WarnSafeOpt_WarnPointlessPragmas%Opt_WarnUnsupportedCallingConventionsOpt_WarnUnsupportedLlvmVersionOpt_WarnInlineRuleShadowingOpt_WarnTypedHoles WarningFlag Haskell98 Haskell2010Sf_None Sf_UnsafeSf_TrustworthySf_SafeSf_SafeInferredSafeHaskellModeOpt_CppOpt_OverlappingInstancesOpt_UndecidableInstancesOpt_IncoherentInstancesOpt_MonomorphismRestrictionOpt_MonoPatBindsOpt_MonoLocalBindsOpt_RelaxedPolyRecOpt_ExtendedDefaultRulesOpt_ForeignFunctionInterfaceOpt_UnliftedFFITypesOpt_InterruptibleFFI Opt_CApiFFIOpt_GHCForeignImportPrimOpt_JavaScriptFFIOpt_ParallelArrays Opt_ArrowsOpt_TemplateHaskellOpt_QuasiQuotesOpt_ImplicitParamsOpt_ImplicitPreludeOpt_ScopedTypeVariablesOpt_AllowAmbiguousTypesOpt_UnboxedTuplesOpt_BangPatternsOpt_TypeFamiliesOpt_OverloadedStringsOpt_OverloadedListsOpt_NumDecimalsOpt_DisambiguateRecordFieldsOpt_RecordWildCardsOpt_RecordPunsOpt_ViewPatterns Opt_GADTsOpt_GADTSyntaxOpt_NPlusKPatternsOpt_DoAndIfThenElseOpt_RebindableSyntaxOpt_ConstraintKinds Opt_PolyKinds Opt_DataKindsOpt_InstanceSigsOpt_StandaloneDerivingOpt_DeriveDataTypeableOpt_AutoDeriveTypeableOpt_DeriveFunctorOpt_DeriveTraversableOpt_DeriveFoldableOpt_DeriveGenericOpt_DefaultSignaturesOpt_TypeSynonymInstancesOpt_FlexibleContextsOpt_FlexibleInstancesOpt_ConstrainedClassMethodsOpt_MultiParamTypeClassesOpt_NullaryTypeClassesOpt_FunctionalDependenciesOpt_UnicodeSyntaxOpt_ExistentialQuantification Opt_MagicHashOpt_EmptyDataDeclsOpt_KindSignaturesOpt_RoleAnnotationsOpt_ParallelListCompOpt_TransformListCompOpt_MonadComprehensionsOpt_GeneralizedNewtypeDerivingOpt_RecursiveDoOpt_PostfixOperatorsOpt_TupleSectionsOpt_PatternGuardsOpt_LiberalTypeSynonymsOpt_RankNTypesOpt_ImpredicativeTypesOpt_TypeOperatorsOpt_ExplicitNamespacesOpt_PackageImportsOpt_ExplicitForAllOpt_AlternativeLayoutRule%Opt_AlternativeLayoutRuleTransitionalOpt_DatatypeContextsOpt_NondecreasingIndentationOpt_RelaxedLayoutOpt_TraditionalRecordSyntaxOpt_LambdaCaseOpt_MultiWayIfOpt_NegativeLiterals Opt_EmptyCaseOpt_PatternSynonyms ExtensionFlagrtccInfortldInfoavx512pfavx512favx512eravx512cdavx2avx sseVersionnextWrapperNum llvmVersioninteractivePrintprofAuto traceLevel ghciScriptshaddockOptionsflushErrflushOut log_action ghciHistSize maxWorkerArgsufDearOpufKeenessFactorufDictDiscountufFunAppDiscountufUseThresholdufCreationThresholdextensionFlags extensionswarnUnsafeOnLoc warnSafeOnLoc pkgTrustOnLoc newDerivOnLocthOnLoc safeHaskelllanguage warningFlags generalFlags dumpFlagsgeneratedDumpsnextTempSuffixfilesToNotIntermediateClean dirsToClean filesToCleanpkgState pkgDatabase packageFlags extraPkgConfs depSuffixesdepExcludeModsdepIncludePkgDeps depMakefilehookspluginModNameOptspluginModNameshpcDirrtsOptsEnabledrtsOptscmdlineFrameworksframeworkPaths libraryPaths includePathsldInputsdumpPrefixForce dumpPrefix dynLibLoaderoutputHi dynOutputFile outputFiledllSplit dllSplitFiledynHiSuf dynObjectSufcanGenerateDynamicToohiSufhcSuf objectSufdumpDirstubDirhiDirdylibInstallName objectDir splitInfo rtsBuildTagbuildTagways thisPackage tyFunStkDepth ctxtStkDepth mainFunIs mainModIs importPathscmdlineHcIncludes historySize floatLamArgsliberateCaseThresholdspecConstrRecursivespecConstrCountspecConstrThresholdsimplTickFactormaxRelevantBinds ghcHeapSizeenableTimeStats parMakeCountstrictnessBefore ruleCheckshouldDumpSimplPhasemaxSimplIterations simplPhasesoptLevel verbositysettings hscTargetghcLinkghcMode getDynFlags HasDynFlagsreplaceDynFlagsextractDynFlagsContainsDynFlags NoProfAuto ProfAutoAll ProfAutoTopProfAutoExports ProfAutoCallsProfAutosPlatformConstantssOpt_lcsOpt_lo sOpt_windressOpt_lsOpt_asOpt_csOpt_FsOpt_PsOpt_LsPgm_lcsPgm_lo sPgm_libtool sPgm_windres sPgm_sysmansPgm_TsPgm_dllsPgm_lsPgm_asPgm_ssPgm_csPgm_FsPgm_PsPgm_L sLdIsGnuLdsLdSupportsFilelistsLdSupportsBuildIdsLdSupportsCompactUnwindsSystemPackageConfigsExtraGccViaCFlags sRawSettingssTmpDirsTopDirsGhciUsagePath sGhcUsagePathsTargetPlatformSettingsHscCHscAsmHscLlvmHscInterpreted HscNothing HscTarget CompManagerOneShotMkDependGhcModeNoLink LinkBinary LinkInMemory LinkDynLib LinkStaticLibGhcLink ExposePackageExposePackageId HidePackage IgnorePackage TrustPackageDistrustPackage PackageFlag DeployableSystemDependent DynLibLoader RtsOptsNoneRtsOptsSafeOnly RtsOptsAllRtsOptsEnabled WayCustom WayThreadedWayDebugWayProf WayEventLogWayParWayGranWayNDPWayDynWay FatalMessager LogActionFlushOutFlushErr FileOptionOptionStgDoMassageForProfiling D_stg_statsStgToDo GlobalPkgConf UserPkgConf PkgConfFile PkgConfRefGnuLDGnuGoldDarwinLD SolarisLD UnknownLD LinkerInfoGCCClang AppleClang AppleClang51 UnknownCC CompilerInfo DriverPhasesisHsBoothscSourceString HsSrcFile HsBootFile ExtCoreFile HscSource SerializeddeserializeWithDataserializeWithData seqSerializedfromSerialized toSerialized vanillaIdInfo coVarDetails pprIdDetails IdDetailsSrcLoc isSubspanOfspansleftmost_largestleftmost_smallest rightmost cmpLocated eqLocatedaddCLoc combineLocsmkGeneralLocatednoLocgetLocunLoc showUserSpansrcSpanFileName_mayberealSrcSpanEndrealSrcSpanStart srcSpanEnd srcSpanStart srcSpanEndColsrcSpanStartColsrcSpanEndLinesrcSpanStartLine isOneLineSpan isGoodSrcSpancombineSrcSpans mkSrcSpan mkRealSrcSpanrealSrcLocSpan srcLocSpanmkGeneralSrcSpanwiredInSrcSpan noSrcSpan sortLocated advanceSrcLoc srcLocCol srcLocLine srcLocFilemkGeneralSrcLocinteractiveSrcLocgeneratedSrcLocnoSrcLoc mkRealSrcLocmkSrcLoc RealSrcLoc UnhelpfulLoc srcSpanFile RealSrcSpan UnhelpfulSpanSrcSpan GenLocatedLocated RealLocatedUniqSet uniqSetToList lookupUniqSetisEmptyUniqSet sizeUniqSetpartitionUniqSet filterUniqSetelemUniqSet_DirectlyelementOfUniqSet mapUniqSet foldUniqSetintersectUniqSets minusUniqSetunionManyUniqSets unionUniqSetsdelListFromUniqSetdelOneFromUniqSet_DirectlydelOneFromUniqSetaddListToUniqSetaddOneToUniqSet_CaddOneToUniqSet mkUniqSet unitUniqSet emptyUniqSet PackageConfig#installedPackageInfoToPackageConfig#packageConfigToInstalledPackageInfopackageConfigId mkPackageIddefaultPackageConfig elemModuleSet moduleSetEltsextendModuleSet mkModuleSetemptyModuleSet foldModuleEnvisEmptyModuleEnv unitModuleEnvmoduleEnvToList moduleEnvElts moduleEnvKeysemptyModuleEnv mkModuleEnv mapModuleEnvlookupWithDefaultModuleEnvlookupModuleEnv plusModuleEnv delModuleEnvdelModuleEnvListplusModuleEnv_CextendModuleEnvList_CextendModuleEnvListextendModuleEnvWithextendModuleEnv elemModuleEnvfilterModuleEnvisInteractiveModule mainPackageIdinteractivePackageIdthisGhcPackageIddphParPackageIddphSeqPackageId thPackageId rtsPackageId basePackageIdintegerPackageId primPackageIdstringToPackageId packageIdFS fsToPackageIdstablePackageIdCmp pprModulemkModulestableModuleCmpmoduleNameColonsmoduleNameSlashesmkModuleNameFS mkModuleNamemoduleNameString moduleNameFS pprModuleNamestableModuleNameCmpaddBootSuffixLocnaddBootSuffix_maybe addBootSuffix ml_obj_file ml_hi_file ml_hs_file ModLocation extractModuleContainsModule getModule HasModule ModuleEnv ModuleSet ModuleNameEnvUniqFM pprUniqFMjoinUFM ufmToListeltsUFMkeysUFMlookupWithDefaultUFM_DirectlylookupWithDefaultUFMlookupUFM_Directly lookupUFMsplitUFMelemUFM_DirectlyelemUFMsizeUFM partitionUFMfilterUFM_Directly filterUFMmapUFM_DirectlymapUFMfoldUFM_DirectlyfoldUFMintersectUFM_C intersectUFMminusUFM plusUFM_CD plusUFM_CplusUFMdelFromUFM_DirectlydelListFromUFM delFromUFMadjustUFM_Directly adjustUFMaddListToUFM_C addToUFM_Acc addToUFM_CaddToUFM_DirectlyaddListToUFM_Directly addListToUFMaddToUFMalterUFM listToUFM_ClistToUFM_Directly listToUFMunitDirectlyUFMunitUFM isNullUFMemptyUFM UniqSupply lazyMapUs getUniqueUsgetUs lazyThenUsinitUs_initUstakeUniqFromSupplyuniqsFromSupplyuniqFromSupplylistSplitUniqSupplysplitUniqSupplymkSplitUniqSupplyUniqSM getUniquesM getUniqueMgetUniqueSupplyM MonadUniqueUnique getUnique UniquableintegralFractionalLitnegateFractionalLit isEarlyActiveisAlwaysActive isNeverActive isActiveInisActivesetInlinePragmaRuleMatchInfosetInlinePragmaActivationinlinePragmaRuleMatchInfoinlinePragmaActivationinlinePragmaSatisAnyInlinePragmaisInlinablePragmaisInlinePragmaisDefaultInlinePragmadfunInlinePragmainlinePragmaSpecneverInlinePragmaalwaysInlinePragmadefaultInlinePragmaisEmptyInlineSpec isFunLike isConLikefailed succeeded successIf zapFragileOccisOneOcc isDeadOccisStrongLoopBreakerisWeakLoopBreakerweakLoopBreakerstrongLoopBreaker notOneBranch oneBranch notInsideLam insideLam seqOccInfoisNoOcc tupleParensboxityNormalTupleSorttupleSortBoxity isGenerated boolToRecFlagisNonRecisRecisBoxed isTopLevel isNotTopLevel compareFixity funTyFixity negateFixity defaultFixity minPrecedence maxPrecedenceinitialVersion bumpVersionunSwap isSwappedflipSwap bestOneShot worstOneShothasNoOneShotInfo isOneShotInfo noOneShotInfo fIRST_TAGArityRepArityConTag Alignment NoOneShotInfo ProbOneShot OneShotLam OneShotInfo NotSwapped IsSwappedSwapFlag IsFunctionIsDataFunctionOrData WarningTxt DeprecatedTxtRuleNameFixityInfixLInfixRInfixNFixityDirectionTopLevel NotTopLevel TopLevelFlagBoxedUnboxedBoxity Recursive NonRecursiveRecFlag FromSource GeneratedOrigin isSafeOverlap NoOverlap OverlapOk Incoherent OverlapFlag BoxedTuple UnboxedTupleConstraintTuple TupleSorttoEPfromEPEP NoOccInfoIAmDeadOneOccIAmALoopBreakerInterestingCxt InsideLam OneBranchNoDM VanillaDM GenericDM DefMethSpec SucceededFailed SuccessFlagPhaseNumPhase InitialPhase CompilerPhase NeverActive AlwaysActive ActiveBefore ActiveAfter ActivationConLikeFunLike RuleMatchInfoinl_ruleinl_actinl_sat inl_inline InlinePragmaInline InlinableNoInlineEmptyInlineSpec InlineSpecfl_valuefl_textFL FractionalLitHValueTyThingPredType OutputablepprDebugAndThenassertPprPanic warnPprTracepprPanicFastIntpprTrace pprPgmErrorpprSorrypprPanicisOrAreplural speakNTimesspeakNOfspeakNspeakNth intWithCommasquotedListWithOr pprQuotedList interpp'SP interppSP pprWithCommaspprFastFilePath pprInfixVar pprPrefixVar pprHsBytes pprHsString pprHsCharkeywordboldcoloured colBinder colDataConcolCoerccolTypeppUnlessppWhen punctuatehangfcatfsepcatsepvcathsephcat$+$$$<+><>nestrbracelbracerbracklbrackrparenlparendot underscorespaceequalscoloncommasemidarrowarrowdcolon blankLinequotescparen paBrackets angleBrackets doubleQuotesquotebracketsbracesparensrationaldoublefloatintegerintztextptextftexttextcharempty docToSDocshowPprshowSDocDumpOneLine showSDocDebug showSDocDumpshowSDocUnqualshowSDocForUsershowSDocOneLinerenderWithStyleshowSDoc mkCodeStylepprCode printForAsm printForCprintForUserPartWay printForUser ifPprDebug userStyle debugStyle dumpStyleasmStyle codeStyle qualModulequalNamesdocWithPlatformsdocWithDynFlags getPprStyle pprSetDepth pprDeeperList pprDeeperwithPprStyleDoc withPprStyleinitSDocContextcmdlineParserStyle mkUserStyledefaultErrStyle mkErrStyledefaultDumpStyledefaultUserStyle neverQualify alwaysQualifyneverQualifyModulesalwaysQualifyModulesneverQualifyNamesalwaysQualifyNamesPprStyleCStyleAsmStyle CodeStyle AllTheWayPartWayDepthPrintUnqualified NameUnqualNameQualNameNotInScope1NameNotInScope2 QualifyNamerunSDoc PprColourpprPrecppr LambdaBindCaseBindLetBind BindingSite pprInfixOcc pprPrefixOccpprBndrOutputableBndrtargetPlatform pprUserLengthpprColsunsafeGlobalDynFlagsuseUnicodeQuotes nameModule FastStringfsLitsLitlengthLSunpackLitString mkLitString mkLitString#hPutFSgetFastStringTablenilFS uniqueOfFSconsFStailFSheadFSconcatFSappendFS zEncodeFSbytesFSunpackFSnullFS hasZEncodinglengthFSmkFastStringByteList mkFastStringmkFastStringByteStringmkFastStringForeignPtrmkFastStringBytes mkFastString# lengthFZSzStringhPutFZShashByteStringunsafeMkByteStringfastZStringToByteStringfastStringToByteString FastZStringfs_reffs_bsn_charsuniq LitStringUtil hashStringcharToCabstractDataTypeabstractConstrmakeRelativeToreslashparseSearchPath escapeSpacessplitLongestPrefixmodificationTimeIfExistsgetModificationUTCTimedoesDirNameExistmaybeReadFuzzy maybeRead readRationaltoArgs toCmdArgsgetCmdlooksLikeModuleNameglobalM consIORefglobalseqList unzipWith fuzzyLookup fuzzyMatch removeSpacescmpList eqMaybeByeqListBythenCmpisEqualsplitsnocViewdropTail splitAtListdropListtakeListcountall2foldl2transitiveClosureminWithsortWithisn'tInisInonlynotNull isSingleton singleton compareLength equalLength listLengthCmplengthIs lengthAtLeast lengthExceedsatLengthnOfThem mapAccumL2zipWithAndUnzip mapAndUnzip3 mapAndUnzipmapSndmapFststretchZipWithzipLazy zipWith4Equal zipWith3Equal zipWithEqualzipEqual chkAppend splitEithers partitionWith filterOutfirst3MfirstMuncurry3third3thirdOf3sndOf3fstOf3nTimes isDarwinHost isWindowsHostghciTablesNextToCode ncgDebugIsOn debugIsOn ghciSupportedSuffixForwards Backwards assertPanic panicFastIntpgmErrorsorrypanic moduleNamemodulePackageIdpackageIdString PackageIdSDoc MonadUtilsliftIO4liftIO3liftIO2liftIO1 FastTypes maxFastInt minFastInt castFastPtrpUnboxpBox eqFastCharfastChrfastOrdcUnboxcBox_CLIT bitOrFastInt bitAndFastIntshiftRAFastIntshiftRLFastIntshiftR_FastInt shiftLFastInt negateFastInt quotFastIntiUnboxiBox_ILITFastIntFastCharFastPtr FiniteMapfoldRightWithKey foldRight deleteListinsertListWith insertList ExtsCompat46<=#<#/=#==#>=#>#PlatformConstantspc_ILDV_STATE_USEpc_ILDV_STATE_CREATEpc_ILDV_CREATE_MASK pc_LDV_SHIFTpc_DYNAMIC_BY_DEFAULTpc_WORDS_BIGENDIAN pc_TAG_BITSpc_BITMAP_BITS_SHIFTpc_CLONG_LONG_SIZE pc_CLONG_SIZE pc_CINT_SIZEpc_DOUBLE_SIZE pc_WORD_SIZEpc_AP_STACK_SPLIMpc_RESERVED_STACK_WORDSpc_RESERVED_C_STACK_BYTESpc_MAX_Real_Long_REGpc_MAX_Real_XMM_REGpc_MAX_Real_Double_REGpc_MAX_Real_Float_REGpc_MAX_Real_Vanilla_REGpc_MAX_XMM_REGpc_MAX_Long_REGpc_MAX_Double_REGpc_MAX_Float_REGpc_MAX_Vanilla_REGpc_MUT_ARR_PTRS_CARD_BITSpc_MAX_CHARLIKEpc_MIN_CHARLIKEpc_MAX_INTLIKEpc_MIN_INTLIKEpc_MIN_PAYLOAD_SIZEpc_MAX_SPEC_AP_SIZEpc_MAX_SPEC_SELECTEE_SIZEpc_REP_StgFunInfoExtraRev_arity"pc_OFFSET_StgFunInfoExtraRev_aritypc_SIZEOF_StgFunInfoExtraRevpc_REP_StgFunInfoExtraFwd_arity"pc_OFFSET_StgFunInfoExtraFwd_arity pc_OFFSET_StgUpdateFrame_updateepc_OFFSET_StgStack_stackpc_OFFSET_StgStack_sppc_OFFSET_StgTSO_stackobjpc_OFFSET_StgTSO_cccspc_SIZEOF_StgArrWords_NoHdrpc_OFFSET_StgMutArrPtrs_sizepc_OFFSET_StgMutArrPtrs_ptrspc_SIZEOF_StgMutArrPtrs_NoHdrpc_SIZEOF_StgUpdateFrame_NoHdr#pc_OFFSET_StgEntCounter_entry_countpc_OFFSET_StgEntCounter_link#pc_OFFSET_StgEntCounter_registeredppc_REP_StgEntCounter_allocdpc_OFFSET_StgEntCounter_allocdpc_REP_StgEntCounter_allocspc_OFFSET_StgEntCounter_allocspc_SIZEOF_StgSMPThunkHeaderpc_OFFSET_StgHeader_ldvwpc_OFFSET_StgHeader_ccs pc_REP_CostCentreStack_scc_count#pc_OFFSET_CostCentreStack_scc_count pc_REP_CostCentreStack_mem_alloc#pc_OFFSET_CostCentreStack_mem_allocpc_SIZEOF_CostCentreStackpc_OFFSET_bdescr_blockspc_OFFSET_bdescr_freepc_OFFSET_bdescr_startpc_OFFSET_Capability_rpc_OFFSET_stgGCFunpc_OFFSET_stgGCEnter1pc_OFFSET_stgEagerBlackholeInfopc_OFFSET_StgRegTable_rHpAlloc%pc_OFFSET_StgRegTable_rCurrentNursery!pc_OFFSET_StgRegTable_rCurrentTSOpc_OFFSET_StgRegTable_rCCCSpc_OFFSET_StgRegTable_rHpLimpc_OFFSET_StgRegTable_rHppc_OFFSET_StgRegTable_rSpLimpc_OFFSET_StgRegTable_rSppc_OFFSET_StgRegTable_rL1pc_OFFSET_StgRegTable_rZMM6pc_OFFSET_StgRegTable_rZMM5pc_OFFSET_StgRegTable_rZMM4pc_OFFSET_StgRegTable_rZMM3pc_OFFSET_StgRegTable_rZMM2pc_OFFSET_StgRegTable_rZMM1pc_OFFSET_StgRegTable_rYMM6pc_OFFSET_StgRegTable_rYMM5pc_OFFSET_StgRegTable_rYMM4pc_OFFSET_StgRegTable_rYMM3pc_OFFSET_StgRegTable_rYMM2pc_OFFSET_StgRegTable_rYMM1pc_OFFSET_StgRegTable_rXMM6pc_OFFSET_StgRegTable_rXMM5pc_OFFSET_StgRegTable_rXMM4pc_OFFSET_StgRegTable_rXMM3pc_OFFSET_StgRegTable_rXMM2pc_OFFSET_StgRegTable_rXMM1pc_OFFSET_StgRegTable_rD6pc_OFFSET_StgRegTable_rD5pc_OFFSET_StgRegTable_rD4pc_OFFSET_StgRegTable_rD3pc_OFFSET_StgRegTable_rD2pc_OFFSET_StgRegTable_rD1pc_OFFSET_StgRegTable_rF6pc_OFFSET_StgRegTable_rF5pc_OFFSET_StgRegTable_rF4pc_OFFSET_StgRegTable_rF3pc_OFFSET_StgRegTable_rF2pc_OFFSET_StgRegTable_rF1pc_OFFSET_StgRegTable_rR10pc_OFFSET_StgRegTable_rR9pc_OFFSET_StgRegTable_rR8pc_OFFSET_StgRegTable_rR7pc_OFFSET_StgRegTable_rR6pc_OFFSET_StgRegTable_rR5pc_OFFSET_StgRegTable_rR4pc_OFFSET_StgRegTable_rR3pc_OFFSET_StgRegTable_rR2pc_OFFSET_StgRegTable_rR1pc_BLOCKS_PER_MBLOCK pc_BLOCK_SIZEpc_PROF_HDR_SIZEpc_STD_HDR_SIZEpc_platformConstantstransformers-0.3.0.0Control.Monad.IO.ClassliftIO modFilter filterOpts flattenTodos showCrumbhermitC_bindings hermitC_depth hermitC_path AbsolutePathhermitC_specRules$fExtendPathHermitCCrumb$fReadPathHermitCCrumb$fHasEmptyContextHermitC$fAddBindingsExtendContext$fAddBindingsSnocPathHB$fHasCoreRulesHermitC$fReadBindingsHermitC$fBoundVarsHermitC$fAddBindingsHermitC$fHasCoreRules[]$fBoundVarsUniqFM$fReadPathExtendContextCrumb$fInjectionCoercionCoreTC$fInjectionTypeCoreTC$fInjectionExprCoreTC$fInjection(,,)CoreTC$fInjectionCoreDefCoreTC$fInjectionBindCoreTC$fInjectionCoreProgCoreTC$fInjectionModGutsCoreTC$fInjectionTyCoCoreTC$fInjectionCoreCoreTC$fInjectionCoercionTyCo$fInjectionTypeTyCo$fInjectionExprCore$fInjection(,,)Core$fInjectionCoreDefCore$fInjectionBindCore$fInjectionCoreProgCore$fInjectionModGutsCoreputStash runHermitMnewName$fHasDynFlagsHermitM$fMonadThingsHermitM$fMonadUniqueHermitM$fMonadIOHermitM$fMonadCatchHermitM$fMonadHermitM$fApplicativeHermitM$fFunctorHermitM$fHasHscEnvHermitM$fHasHscEnvCoreM$fHasModGutsHermitM$fHasHermitMEnvHermitM GHC.TypesInt$fWalkercCoreTC $fWalkercTyCo$fWalkercCoercion $fWalkercType $fWalkercCore<$><*>Language.KURE.PathfinderuniquePrunePathToT uniquePathToToneNonEmptyPathToT onePathToT prunePathsToTpathsToTacceptLocalPathTexposeLocalPathTwithLocalPathT WithLocalPathLanguage.KURE.WalkersummandIsTypeT oneLargestT allLargestT oneLargestR anyLargestR allLargestR testPathT localPathT localPathRpathTpathR repeatPathL exhaustPathL localPathLpathL innermostRprunetdRonebuRonetdRanyduRanybuRanytdRallduRallbuRalltdR collectPruneTcollectTcrushbuTcrushtdTprunetdTonebuTonetdTfoldbuTfoldtdTchildRchildT childrenTchildLoneRanyRoneTallTallRWalkerLanguage.KURE.LensprojectLinjectLpureLbidirectionalLcatchLfailL testLensTfocusTfocusRlenslensTLensLanguage.KURE.ExtendableContext extendContext extraContext baseContext ExtendContext lastCrumbTabsPathT lastCrumbsingletonSnocPathsnocPathToPathpathToSnocPathPathSnocPath@@ ExtendPathabsPathReadPath#Language.KURE.Combinators.Transform unwrapOneRwrapOneR unwrapAnyRwrapAnyRguardTjoinTcatchesTrepeatRchangedR changedByRtryR accepterRacceptRacceptWithFailMsgRorR>+>andRresultTreaderT sideEffectRmapT liftContextexposeTcontextTsuccessTidRAnyROneRLanguage.KURE.BiTransformafterBiR beforeBiR invertBiT whicheverR bidirectional backwardTforwardT BiTransform BiTranslate BiRewriteLanguage.KURE.InjectionpromoteRpromoteWithFailMsgRextractRextractWithFailMsgRpromoteTpromoteWithFailMsgTextractTprojectTinjectTprojectMprojectWithFailMsgMinjectMprojectinject InjectionLanguage.KURE.Transform effectfreeTconstT contextonlyT contextfreeTapplyapplyRrewrite translate transformapplyT Transform TranslateRewriteLanguage.KURE.MonadCatchliftAndCatchIOwithPatFailMsg prefixFailMsg setFailMsg modFailMsgnotMtestMattemptMmtryMtryMcatchesM<+ liftKureM fromKureMrunKureMcatchM MonadCatchKureMLanguage.KURE.Combinators.MonadunlessMwhenMifM guardMsgMguardMguardMsgLanguage.KURE.Combinators.Arrow parallelise serialiseconstant forkSecond forkFirstforkswaptoSndtoFstargumentresultData.Typeable.InternalTypeable Data.DynamicDynamicdeBoxifytoTagEOrTagAndTagNotTagtoEntrysplitExternFunTypesplitFunTyArgssplitFunTyMaybe $fExtern[] $fExtern[]0 $fExtern[]1 $fExtern[]2$fExternCoreString$fExternTransform$fExternTransform0$fExternSnocPath $fExternCrumb$fExternTransform1$fExternTransform2$fExternTransform3$fExternTransform4$fExternBiTransform$fExternTransform5$fExternTransform6 $fExternInt $fExternTagE $fExtern(->) $fTagCmdTag $fTagTagE substTopBindR deShadowProgRoccurrenceAnalysisR testQueryhfocusRhfocusT lamsBodyT letsBodyTprogEndT gutsProgEndTbindingGroupOf bindingOfbinders bindersCore binderBind binderDef binderExpr binderTypebinderCoercion occurrenceOf varOccurrencevarOccurrenceExprvarOccurrenceTypevarOccurrenceCoercionrecognizedConsiderablesconsiderConstructstring2considerableunderConsiderationexhaustRepeatCrumbT$fHasEmptyContextExtendContextfindInNSModGutsfindInNSPackageDB lookupNamefindNamedBuiltIn nameToNamed$fMonadThingsTransform mkQualified mkUnqualifiedparseQualified $fShowNamed inventNames shadowedBy replaceVar replaceVars alphaAltVarRalphaAltVarsWithRalphaLetNonRecRalphaLetNonRecVarsRalphaLetRecIdsWithRalphaProgConsNonRecRalphaProgConsNonRecIdsRalphaProgConsRecIdsWithRdupVarswrongFormForAlphacommas ensureDepthTalt2ExpdFunExpr countBinderscollectNBinders unifyHolesaddAlphamatchWithTypes foldMatch foldMatchTypecompareBoundIds coreTCNodecoreNodecoreTCConstructorcoreConstructortypeConstructorcoercionConstructor CoreParseM mkIntExpr'splitTyConAppCo_maybe castElimRcastElimUnsafeR<$chaseDependencies TypeParseMTPState tpContexttpUsed catchFrees getContextaddTyVar$fRenderCodeHTML DebugPrettyLaTeXASCII HermitMarkPopAttrPushAttrattrrenderSpecialFontspecialFontMap latexToStringlistify$fRenderCodeDebugPretty$fMonoidDebugPretty$fRenderSpecialDebugPretty$fRenderCodeASCII$fRenderCodeLaTeX$fRenderSpecialHTML $fMonoidHTML$fRenderSpecialLaTeX $fMonoidLaTeX$fRenderSpecialUnicode$fRenderSpecialASCII $fMonoidASCII$fRenderSpecialChar$fDefaultPrettyOptions$fHasEmptyContextPrettyC$fBoundVarsPrettyC$fAddBindingsPrettyC$fExtendPathPrettyCCrumb$fReadPathPrettyCCrumb$fExternTransformDocH retraction BuildEquality mkEqualityfreeVarsEqualitynoAdds$fBuildEquality(->)$fBuildEquality(,) isErrorValTGHC.Err undefinedundefinedLocationfindUndefinedIdT errorLocation findErrorIdTreplaceIdWithUndefined fixFusionRule fixLocation findFixId specialise idSpecRules bindSpecRules specRulesrulesToRewriteHrulesHelpListT ruleHelpTmakeRuleaddCoreBindAsRulecaseFoldBinderRseq isForcedIn caseFloatArgmatchingFreeIdTcaseInlineBinderR altVarsUnusedmultiBetaReduceRpush$.idflipconst Data.TuplefstsndsmashComponents1basicCombinatorssmashRsmashExtendedWithR smashUsingRbashHelpbashComponents smashHelpsmashComponents2wwFacwwFusionwwSplitwwAssAimpliesAssBwwAssBimpliesAssCwwAssAimpliesAssCwwAwwBwwC verifyWWAss verifyAssA verifyAssB verifyAssCwrapUnwrapTypeswwResultAssAimpliesAssBwwResultAssBimpliesAssCwwResultAssAimpliesAssC absRepTypes KernelStateMsgDoneReqfindWithErrMsgfind safeTakeTMVar SASTStorepathStack2PathspathStackToLenstestPathStackTgetRetExprRetEmptyRetAtom RetArrowType RetForAllRetAppRetLetRetLamretAppretAppsretLamretLet retForAll retArrowTypeisAtom normalExpr cleanParens normalParensnormalParensExceptApp parenExprparenExprExceptApp specialSymbolsymbolidTextcoTextcoCharcoSymbol castSymbolcoercionSymbolcoercionBindSymbol coKeywordtyChartyTexttySymbol typeSymboltypeBindSymbol typeOfSymbol typeArrowppSDocppVarppVarOccvarColorppNameppLitTyppTyCon ppTyConCo ppBinderMode ppCoreDefppDef ppCoreExprR ppTypeModeR ppKindOrTypeRppCoercionModeR ppCoercionRppCoKind ppTypeSig$fExternShellEffect keywordText make_help help_command layoutTxt runInterp interpExpr fromDynList toBoxedList interpExpr' provideState dynCrossApply$fFunctorInterp$fExternKernelEffect PrimScriptRScriptTransformHCorePath ScriptPathScriptRewriteHCore ScopedScriptR ScriptPrimSc ScriptScopeUnscopedScriptRScriptUnsupported ScriptPrimUnScriptEndScopeScriptBeginScope RewriteNameunscopedToScopedScriptR interpScriptRscopedScriptsToRewrite$fExternScriptEffectproof_externalslemmaLhsIntroRlemmaRhsIntroRendProofUserProofTechniqueBoxProofShellCommand PCUnsupportedPCEndPCDumpPCUserPCProofCommandPCQueryPCScriptPCShell PCInduction PCTransform PCRewritegetLemmaByNamedeleteLemmaByNamelemmalemmaNameToEqualityT printLemma completeProofinteractiveProofaddProofExternalsevalProofScriptrunExprHperformProofShellCommandperformInduction addLemmas interpProof$fExternUserProofTechnique$fExternProofShellCommand$fExternProofCommand catchFailHardbanner getNavCmdrunKrunSunHPMHPMInstRRFocusGuardrunHPMeval resetScopingrestoreScopingguard