YH       !"#$%&'()*+,-./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 S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h ijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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+{+|+},~,,,,,,,,-.////////////0000000000000000000000000000000111122222222222223333333333444444444444444444444444444444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<5=5>5?5@5A5B5C5D5E6F6G6H6I6J6K6L6M6N6O7P7Q7R7S7T7U7V7W7X7Y8Z8[8\9]9^9_9`9a9b:c;d;e;f;g;h;i;j;k;l;m;n;o<p<q<r<s<t<u<v<w<x<y<z<{<|<}<~<=========>>>>>>>>>>>???@@@@@@@@@@@@@@@@@@@@ACB Safe-InferredWCharacters that are valid as the leading character of an identifier in a HERMIT script.=Characters that are valid identifier elements (a superset of ) in a HERMIT script.@Characters that are valid in infix operators in a HERMIT script.RChars that are valid as the leading character of an identifier in a Core fragment.=Characters that are valid identifier elements (a superset of ) in a Core fragment.@Characters that are valid in infix operators in a Core fragment.None *+-./02345689:;=?BCDGHJKM+9A simple expression language AST, for things parsed from  or JSON structures.,List of expressions- Core Fragment. Application./Commands (to be looked up in AC).0'Variable names (refers to source code).-Use ghci Parser.hs to run this test function.*+,-./0      !"#$%1234&'()*+,-./0123456789: *+,-./01234 *134+0/.-,2}* +0/.-,      !"#$%1234&'()*+,-./0123456789:  NoneHM54Re-Setup the typechecking environment from a ModGuts56;< 5656 56;<D Safe-Inferred =>?@ABCDEFGHI>DEFGHI =>?@ABCDEFGHI Safe-Inferred ;cEntry point for HERMIT driver executable. First String in list is expected to be target file name.J:See if the given HERMIT args imply any additional GHC args 789:;KLMNJO789:;78;:9 789:;KLMNJO Safe-Inferred<4Determine if a list contains no duplicated elements.=Generalisation 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 A! to any equivalence relation. equivalent = equivalentBy (==)A.Determine if all elements of a list are equal.B'Perform the monadic action only in the P case.CLift a Q into an arbitrary monad, using R or S.<=>?@ABC<=>?@ABC<>=?@ABC<=>?@ABCNone)24 DRename this namespace, as T is already a function in Var.F Convert a U$ to a list of user-readable strings.G#Show a human-readable version of a U.I Get the unqualified name from a V.J$Get the fully qualified name from a W.K Compare a  to a W for equality. Strings containing a period are assumed to be fully qualified names. (Except for ".", which is an unqualified reference to composition.)M Compare a  to a X for equality. See K.NPretty-print an identifier.O Erase all Y in a variable if it is is an Z, or do nothing if it's a [ or \ (which have no Y).PDetermine if a X is not an element of a U.S Finds the W corresponding to the given ] in the context of the ^ . Returns Nothing if no such W= 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 moduleThis is adapted from GHC's function called lookupRdrNameInModuleForPlugins, but using initTcFromModGuts instead of initTcInteractive. Also, we ImportBySystem instead of ImportByPlugin, so the EPS gets populated with RULES and instances from the loaded module.TODO: consider importing by plugin first, then only importing by system when a name is successfully found... as written we will load RULES/instances if the module loads successfully, even if the name is not found._/Also copied from GHC because it is not exposed.DEFGHIJKLMN`OPQRabS_cdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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 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{|}~UZ[\TXV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Y !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop !"#$%&'qrstu^vwxyz{|}~(      DEFGHIJKLMNOPQRS8NO DLKMJI' !"#$%& PFGQHR S (EDEFGHIJKLMN`OPQRabS_cNoneY%An enumeration type for GHC's passes.oGiven a list of s, produce the P to P% function required to build a plugin.p;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 pass info here"KFilter options to those pertaining to this module, stripping module prefix.snIf HERMIT user specifies the -pN flag, get the N TODO: as written will discard other flags that start with -p#TUVWXYZ[\]^_`abcdefghijklmnop!"qr#s TUVWXYZ[\]^_`abcdefghijklmnopqrs opYnmlkjihgfedcba`_^]\[ZrqTUVWXs TUVWXYnmlkjihgfedcba`_^]\[Zop!"qr#sNoneT6tKCrumbs 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 (Z,  )) 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 [ #]. 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   Z# 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 A 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.FGet the quantified variables, domain, and codomain of 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 t into the t+ pointing to its left-sibling, if a such a tY exists. This is for backwards compatibility purposes with the old Int representation. Converts a t into the t, pointing to its right-sibling, if a such a tY exists. This is for backwards compatibility purposes with the old Int representation.vtuvwxyz{|}~$utuvwxyz{|}~ut~}|{zyxwvu6t=~}|{zyxwvu$ 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.GList all variables bound in the context that match the given predicate..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     1234*+,56-7.-     0     '/%&')0      1234*+,56-7. 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 P.-Promote a translate on ..Promote a translate on  ./Promote a translate on .0Promote a translate on  .1Promote a translate on  .2Promote a translate on .3Promote a translate on  +.4Promote a rewrite on P.5Promote a rewrite on .6Promote a rewrite on  .7Promote a rewrite on .8Promote a rewrite on  .9Promote a rewrite on  .:Promote a rewrite on .;Promote a rewrite on  +.<#Promote a bidirectional rewrite on  .9 !"#$%&'()*+,-./0123456789:;<89:;<=>?@ABCDEFGHI' !"#$%&'()*+,-./0123456789:;<'"! &'(#$%)*+,-./1023456798:;</"! #$%&'()*+,-./0123456789:;<89:;<=>?@ABCDEFGHI None!")+3==A message packet.A can be lifted to this monad.CAdd (or replace) a named lemma.HGet the debugging channelJGet the HermitMEnvL#Get the stash of saved definitions.M'Replace the stash of saved definitions.N"The HERMIT monad is kept abstract.dIt provides a reader for ModGuts, state for DefStash and Lemmas, and access to a debugging channel.OThe HermitM result record.TThe HermitM reader environment.VXNote: this is a snapshot of the ModGuts from before the current transformation.YA collectin of named lemmas.Z!An equality with a proven status._AA name for lemmas. Use a newtype so we can tab-complete in shell.akAn equality is represented as a set of universally quantified binders, and the LHS and RHS of the equality.cA store of saved definitions.dRA label for individual definitions. Use a newtype so we can tab-complete in shell.gEliminator for N.hGAllow HermitM to be embedded in another monad with proper capabilities.i!Save a definition for future use.j%Lookup a previously saved definition.m+Only adds a lemma if doesn't already exist.K=>?@ABCDEFGHIJKLMJNKLOPQRSTUVWXYZ[\]^_`abcdefMNghijklmnoOPQRSTUVWXYZ[\]^_`a3=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno3NghTUVWXOPQRS@AnodecijKLMab_`Z[\]^YmIJfkEFBCDGH=?>l0=?>@ABCDEFGHIJKLMJNKLOPQRSTUVWXYZ[\]^_`abcdefMNghijklmnoOPQRSTUVWXYZ[\]^_`a None )2346MTu\Transform a module. Slightly different to the other congruence combinators: it passes in all0 of the original to the reconstruction function.v Rewrite the  child of a module.wTransform an empty list.x"Transform a program of the form: (  : )y0Rewrite all children of a program of the form: (  : )z0Rewrite any children of a program of the form: (  : ){-Rewrite one child of a program of the form: (  : )|'Transform a binding group of the form: NonRec X  }5Rewrite all children of a binding group of the form: NonRec X  ~5Rewrite any children of a binding group of the form: NonRec X  2Rewrite one child of a binding group of the form: NonRec X  'Transform a binding group of the form: Rec []5Rewrite all children of a binding group of the form: Rec []5Rewrite any children of a binding group of the form: Rec []2Rewrite one child of a binding group of the form: Rec [].Transform a recursive definition of the form: Def Z  <Rewrite all children of a recursive definition of the form: Def Z  <Rewrite any children of a recursive definition of the form: Def Z  9Rewrite one child of a recursive definition of the form: Def Z  +Transform a case alternative of the form: ( , [X],  )9Rewrite all children of a case alternative of the form: ( , Z,  )9Rewrite any children of a case alternative of the form: ( , Z,  )6Rewrite one child of a case alternative of the form: ( , Z,  )%Transform an expression of the form: Var Z Rewrite the Z% child in an expression of the form: Var Z%Transform an expression of the form: Lit  ' Rewrite the  '% child in an expression of the form: Lit  '%Transform an expression of the form: App    3Rewrite all children of an expression of the form: App    3Rewrite any children of an expression of the form: App    0Rewrite one child of an expression of the form: App    %Transform an expression of the form: Lam X  3Rewrite all children of an expression of the form: Lam X  3Rewrite any children of an expression of the form: Lam X  0Rewrite one child of an expression of the form: Lam X  %Transform an expression of the form: Let    3Rewrite all children of an expression of the form: Let    3Rewrite any children of an expression of the form: Let    0Rewrite one child of an expression of the form: Let    %Transform an expression of the form: Case   Z  [ ]3Rewrite all children of an expression of the form: Case   Z  [ ]3Rewrite any children of an expression of the form: Case   Z  [ ]0Rewrite one child of an expression of the form: Case   Z  [ ]%Transform an expression of the form: Cast    +3Rewrite all children of an expression of the form: Cast    +3Rewrite any children of an expression of the form: Cast    +0Rewrite one child of an expression of the form: Cast    +%Transform an expression of the form: Tick   3Rewrite all children of an expression of the form: Tick   3Rewrite any children of an expression of the form: Tick   3Rewrite any children of an expression of the form: Tick   %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 X   or Def Z  1Rewrite all children of a definition of the form NonRec X   or Def Z  1Rewrite any children of a definition of the form NonRec X   or Def Z  .Rewrite one child of a definition of the form NonRec X   or Def Z  'Transform a binding group of the form: Rec [(Z,  )]5Rewrite all children of a binding group of the form: Rec [(Z,  )]5Rewrite any children of a binding group of the form: Rec [(Z,  )]2Rewrite one child of a binding group of the form: Rec [(Z,  )]"Transform a program of the form: (NonRec X  ) : 4Rewrite all children of an expression of the form: (NonRec X  ) : 4Rewrite any children of an expression of the form: (NonRec X  ) : 1Rewrite one child of an expression of the form: (NonRec X  ) : &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 [(Z,  )]) : 4Rewrite all children of an expression of the form: (Rec [(Z,  )]) : 4Rewrite any children of an expression of the form: (Rec [(Z,  )]) : 1Rewrite one child of an expression of the form: (Rec [(Z,  )]) : %Transform an expression of the form: Let (NonRec X  )  3Rewrite all children of an expression of the form: Let (NonRec X  )  3Rewrite any children of an expression of the form: Let (NonRec X  )  0Rewrite one child of an expression of the form: Let (NonRec X  )  %Transform an expression of the form: Let (Rec [])  3Rewrite all children of an expression of the form: Let (Rec [])  3Rewrite any children of an expression of the form: Let (Rec [])  0Rewrite one child of an expression of the form: Let (Rec [])  %Transform an expression of the form: Let (Rec [(Z,  )])  3Rewrite all children of an expression of the form: Let (Rec [(Z,  )])  3Rewrite any children of an expression of the form: Let (Rec [(Z,  )])  0Rewrite one child of an expression of the form: Let (Rec [(Z,  )])  %Transform an expression of the form: Case   Z  [( , [X],  )]3Rewrite all children of an expression of the form: Case   Z  [( , [X],  )]3Rewrite any children of an expression of the form: Case   Z  [( , [X],  )]0Rewrite one child of an expression of the form: Case   Z  [( , [X],  )]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 X ,Rewrite all children of a type of the form: ForAllTy X ,Rewrite any children of a type of the form: ForAllTy X )Rewrite one child of a type of the form: ForAllTy X 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    Rewrite the " child of a coercion of the form: Refl   "Transform a coercion of the form:  TyConAppCo    [ +]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 b  +0Rewrite all children of a coercion of the form: NthCo b  +0Rewrite any children of a coercion of the form: NthCo b  +-Rewrite one child of a coercion of the form: NthCo b  +"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 b0 as the crumb type. This translation maps an b to the corresponding t', for backwards compatibility purposes.DBuilds a path to the first child, based on the old numbering system.c_Walking over modules, programs, binding groups, definitions, expressions and case alternatives.d!Walking over types and coercions.eWalking over coercions (only).fWalking over types (only).g_Walking over modules, programs, binding groups, definitions, expressions and case alternatives.pqrsthiuvwxyz{|}~     jcdefgklmnopqrstuvwxyz{|}~()      !" !"#$%&'()*+,-./0123456789:;<pqrstuvwxyz{|}~     tsrqpuvwxyz{|}~     pqrsthiuvwxyz{|}~     jcdefg None !"+234=K/9*The class of things that can be made into =s. To be an 9 there must exist an isomorphic : type that is an instance of #.:An isomorphic wrapper.;Wrap a value in a :.<Unwrap a value from a :.=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 for an =.A List all the Gs associated with an =B"Tags are meta-data that we add to ='s to make them sortable and searchable.CAdd a B to an =.D Remove a B from an =.E Check if an = has the specified B.F*A data type of logical operations on tags.G7Requirement: commands cannot have the same name as any G@ (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.HsA command that will be removed in a future release; it has probably been renamed or subsumed by another command.IThings we are trying out.J+An incomplete or potentially buggy command.K#Commands related to proving lemmas.LwCommands that are not type safe (may cause Core Lint to fail), or may otherwise change the semantics of the program.M2A command that uses its context, such as inlining.N Version control for Core syntax.O(Commands specifically to help debugging.P(Alters the strictness of the expression.Q4Operation has a (perhaps undocumented) precondition.R&Commute is when you swap nested terms.S%Introduce something, like a new name.TSomething that passes or fails.U'Extract information from an expression.VUses  or  to focus onto something.W+Command operates on local nodes only, O(1).X,Command may make a deep change, can be O(n).Y#Command may operate multiple times.ZEF command.[)The arrow of evaluation (reduces a term).\Shell-specific command.]Help information for =Es is stored as a list of strings, designed for multi-line displaying.^= names are just strings._ILists all the tags paired with a short description of what they're about.` An "and" on Bs.a An "or" on Bs.b A "not" on Bs.cThe primitive way to build an =.d Get all the =Qs which match a given tag predicate and box a Transform of the appropriate type.eBuild a GH from names to help information.f<Get a string representation of the (monomorphic) type of an =%Remove the word : from a string.{ !"#$%&'()*+,-./0123456789:;<=&>?@AB'CDEF()*+GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef%g,h-./0123456789:;<=>?@ABCDEFY !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh]=>?@A^]>?@fghec9:;<dG\[ZYXWVUTSRQPONMLKJIHFBCDE`abA_/0%&56#$341278'(!"+,)* -.A !"#$%&'()*+,-./0123456789:;<=&>?@AB'CDEF+*)(G\[ZYXWVUTSRQPONMLKJIH]^_`abcdef%g,h-./0123456789:;<=>?@ABCDEFC`aNone3iExposed debugging =s.jIf the  fails, print out the , with a message.kPrint out the , with a message.l3Just say something, every time the rewrite is done.m Show before and after a rewrite.ijklmijklmimkjlijklmNone3Mn;- This list contains reflections of the KURE strategies as =s.GJTest if a rewrite would succeed, producing a string describing the result.o4Top-down traversal tuned to matching function calls.pCbetweenR x y rr -> perform rr at least x times and at most y times.nHIGopnopnopnHIGopNoneq=s for individual ts.qqqqNone+24=K}A }4 is an optionally fully-qualified name, like GHC's ], but without specifying which  the name is found in.RPossible results from name lookup. Invariant: One constructor for each NameSpace.Compare a HermitName to a Var.Only compare module names if the HermitName is fully qualified. Otherwise match variables from any module with appropriate occurrence name.JvMake a qualified HermitName from a String representing the module name and a String representing the occurrence name.K-Make an unqualified HermitName from a String.!Parse a HermitName from a String.L+Parse a qualified HermitName from a String.;Turn a HermitName into a (possibly fully-qualified) String. Make a HermitName from a RdrName5Make a RdrName for the given NameSpace and HermitName(Make a RdrName for each given NameSpace.M?Looks for Named in current GlobalRdrEnv. If not present, calls N.N:Looks for Named in package database, or built-in packages.O$Helper to call lookupRdrNameInModuleP7Looks for Named amongst GHC's built-in DataCons/TyCons.Q-We have a name, find the corresponding Named.RMake a W from a string.LMake a unique global identifier for a specified type, using a provided name.EMake a unique identifier for a specified type, using a provided name.HMake a unique type variable for a specified kind, using a provided name.LMake a unique coercion variable for a specified type, using a provided name.#Experimental, use at your own risk.CMake a new variable of the same type, with a modified textual name.SAn instance of s for #, 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 rQ cannot be used to look up TyVars. TODO: add function for this, or modify GHC's ??Brstuvwxyz{|}T~JKLMNOPQRSUVWXYZ[\/rstuvwxyz{|}~1}~~wxyuvz{|rst4rstuvwxyz{|}T~JKLMNOPQRSUVWXYZ[\None3MT 9apply a transformation to a value in the current context.Lift GHC's collectArgsJSucceeds if we are looking at an application matching the given predicate.zSucceeds if we are looking at an application of given function returning zero or more arguments to which it is applied.-Note: comparison is performed with cmpHN2Var.>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.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 . should be the desired form of the expression.    None*Externals for manipulating binding groups.  v e ==>   [(v,e)]  [(v,e)] ==>   v eNone3'Externals relating to Case expressions.]Attempts to tease a coercion apart into a type constructor and the application of a number of coercion arguments to that constructor^]_^]_None3HExternals that reflect GHC functions, or are derived from GHC functions.wSubstitute all occurrences of a variable with an expression, in either a program, an expression, or a case alternative.NSubstitute 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.a 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 Y in a zombie identifier.Apply occurAnalyseExprR to all sub-expressions.iOccurrence analyse an expression, failing if the result is syntactically equal to the initial expression.oOccurrence analyse all sub-expressions, failing if the result is syntactically equal to the initial expression.>Run GHC's occurrence analyser, and also eliminate any zombies. Build a dictionary for the given`ab`abNone3MExternals 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.ccInvent a new String based on the old one, but avoiding clashing with the given list of identifiers.dUDiscard 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.EAlpha rename a lambda binder. Optionally takes a suggested new name.CAlpha rename a case binder. Optionally takes a suggested new name.e\Rename the specified variable in a case alternative. Optionally takes a suggested new name.fRename 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.gPAlpha rename a non-recursive let binder. Optionally takes a suggested new name.h}Alpha rename a non-recursive let binder if the variable appears in the argument list. Optionally takes a suggested new name.i^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.jVAlpha rename a non-recursive top-level binder. Optionally takes a suggested new name.kAlpha rename a non-recursive top-level binder if the identifier appears in the argument list. Optionally takes a suggested new name.lRename 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.%cdmnefghijklo%cdmnefghijkloNone3HM *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.LGet the nth argument of an application. Arg 0 is the function being applied.#Build composition of two functions.MGiven expression for f and for x, build f x, figuring out the type arguments.$Given expression for f, build fix f.GBuild an expression that is the monomorphic id function for given type.p>Like mkCoreApps, but automatically beta-reduces when possible. Cgiven list of static args and positions, decided which to transformqp   qpNone3EM=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.rkEnsure 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.sConvert 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.t$Build a CoreExpr for a DFunUnfolding4Only inline identifiers that satisfy this predicate. r s t       r s tNone=KGiven 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.  uvwxyz!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 failure      uvwxyz{None )+234=KM*Language constructs that can be zoomed to."=)s involving navigating to named entities.#&Discard the last crumb of a non-empty .$&Find the path to the RHS of a binding.%1Find the path to the binding group of a variable.&+Find the path to the binding of a variable.'4Find the path to the first occurrence of a variable.|4Find the path to an application of a given function.(Find all possible targets of '.)Find all possible targets of &.*Find all possible targets of %.+Find all possible targets of $.,{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 P.4 !"#$%&'|()*+,-./}~ !"#$%&'()*+,-./"'&%$#()*+! ,-/.' ! "#$%&'|()*+,-./}~None3T0HExternals that reflect GHC functions, or are derived from GHC functions.27Compare the core fragments at the end of the specified s.3>Compare the definitions of two identifiers for alpha-equality.HCompare the definitions of the two named identifiers for alpha-equality. 012301230123 0123None *+-./02345689:;=?BCDGHJKMZParse a  to a  , using the current context.456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`-456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`-YZ[\]^_`4VUTSRQPONMLKJIHGFEDCBA@?>=<;:98765WX\4"VUTSRQPONMLKJIHGFEDCBA@?>=<;:98765WXYZ[\]^_`  NoneabcabcabcabcNone3MTUdExternals relating to   expressions.e=(let x = e1 in e2) ==> (e2[e1/x]), (x must not be free in e1)fAs h[, but attempting to convert a singleton recursive binding to a non-recursive binding first.gLet (NonRec v e) body ==>  body[e/v]hCurrently we always substitute types and coercions, and use a heuristic to decide whether to substitute expressions. This may need revisiting.j/Remove an unused non-recursive let binding. let v = E1 in E2 ==> E2, if v is not free in E2k>Remove all unused recursive let bindings in the current group.n,Remove all unused bindings at the top level.olet v = ev in e ==> case ev of v -> ep(let v = ev in e) x ==> let v = ev in e xqf (let v = ev in e) ==> let v = ev in f erlet v = (let bds in e1) in e2 ==> let bds in let v = e1 in e2s( 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.t!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.uocase e of w { ... ; p -> let b = rhs in body ; ... } ==> let b = rhs in case e of { ... ; p -> body ; ... }where no variable in p or w occurs freely in rhs , and where bB does not capture a free variable in the overall case, and where w is not rebound in b.vcast (let bnds in e) co ==> let bnds in cast e cowFloat a  - through an expression, whatever the context.x (  v (  bds e)) p ==>  bds ( (  v e) p)y Float in a   if possible.zlet 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 p{let v = ev in f a ==> #(let v = ev in f) (let v = ev in a)|let v = ev in x -> e ==> x -> let v = ev in e if v does not shadow x}Re-order a sequence of nested non-recursive let bindings. The argument list should contain the let-bound variables, in the desired order.~Combine 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}e ==> let v = e in vbody ==> let v = e in bodyprog ==>  (v = e) progEnonRecIntroR nm e = 'letNonRecIntroR nm e' <+ 'progNonRecIntroR nm e'Introduce a local definition for a (possibly imported) identifier. Rewrites occurences of the identifier to point to this new local definiton."defghijklmnopqrstuvwxyz{|}~ defghijklmnopqrstuvwxyz{|}~ dghefijklmnpqrstuvwxy{z|}~o"defghijklmnopqrstuvwxyz{|}~None3HTest if the current expression is an identifier matching the given name.prog ==>  (v = e) prog None *+-./02345689:;=?BCDGHJKMGParse a CoreString into a Type, where all type variables must be bound.CParse a CoreString into a Type, any unbound variables are returned.Parse a  to a , using the current context.Parse a  to a >, using the current context, returning unbound type variables.Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFR      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF  !None )+2346=K "Do you show fully qualified names?-Do you hide types, and type arguments, as <>?Do you hide coercions?'Do you give the types for all bindings?+Append uniques to OccNames? (Like GHC does)8This region should be highlighted (is the current focus)-below this depth are ..., Nothing => infinitenotes might be added to output!Context for PrettyH translations.6like vcat and hcat, only make the list syntax explicit6like vcat and hcat, only make the list syntax explicitwrap a document in spacesG!Use css to do the colors - - >  styletype="text/css"4 - > .hermit-syntax { - > color: red; - > /style|HIAttr just popped, if any Attr stackJKLMNOPQRSTUVWXYGZ[\]^_`abcdefghiYYBHIJKLM  NPOQRSTUVWXYGZ[\]^_`abcdefghi"None3EMT$Perform one or more beta reductions.A 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=EKMFlip the LHS and RHS of a a."f == g ==> forall x. f x == g xe ==> let v = lhs in ee ==> let v = rhs in e Create a  from a 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  4 into a transformation over the left-hand side of a a.Lift a transformation over  5 into a transformation over the right-hand side of a a.Lift a transformation over  , into a transformation over both sides of a a.hLift a transformation over '[Var]' into a transformation over the universally quantified variables of a a.Lift a rewrite over  - into a rewrite over the left-hand side of a a.Lift a rewrite over  . into a rewrite over the right-hand side of a a.Lift a rewrite over  % into a rewrite over both sides of a a.Verify that a aT 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 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.jGiven  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 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 ai. It is important that all type variables appear before any value-level variables in the first argument.ke ==> let v = lhs in e3 (also works in a similar manner at Program nodes)le ==> let v = rhs in e3 (also works in a similar manner at Program nodes)-mnjo p    modify lemma namerewrite the equalitymodify proven statusmodify used statusqklrs#     #     ,mnjo p    qklrs$None36Check if the current expression is an undefined value.t6Check 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 u.9Replace all occurrences of the specified identifier with u.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 ty hcase e of {pat_1 -> undefined ty ; pat_2 -> undefined ty ; ... ; pat_n -> undefined ty} ==> undefined ty!XVerify that the given rewrite is a proof that the given expression is a strict function.v<Apply the given expression to undefined, at the proper type."VAdd a lemma for the strictness of a function. Note: assumes added lemma has been usedwxyzt{ !v" !""! wxyzt{ !v"%None3M#(Externals for manipulating fixed points.&f = e ==> f = fix (\ f -> e)|pHelper for fixIntroNonRecR and fixIntroRecR. Argument is function name. Meant to be applied to RHS of function.'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". #$%&|'()}*~#$%&'()*#$%&'()* #$%&|'()}*~&None+=K1%New Worker/Wrapper-related externals.+,-./01234567 +,-./01234567 1-0/.+,345672 +,-0/.1234567'None +234=K<)Externals dealing with GHC rewrite rules.=ZLookup a rule by name, attempt to apply it. If successful, record it as an unproven lemma.?\Return all in-scope CoreRules (including specialization RULES on binders), with their names.@Get a GHC CoreRule by name.%List names of all CoreRules in scope.pPrint a named CoreRule using GHC's pretty printer for rewrite rules. TODO: use our own Equality pretty printer.A0Build an Equality from a named GHC rewrite rule.B*Transform GHC's CoreRule into an Equality.C9Run GHC's specConstr pass, and apply any rules generated.D=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.Turn a list of rules into a rewrite which succeeds on the first successful rule. Note: this should only be used for built-in and compiler-generated rules which we assume are correct, because it does not record a lemma obligation for the rules used.89:;<=>?@ABCD 89:;<=>?@ABCD <:;89=>BA@?CD89:;<=>?@ABCD(None3EMTUE'Externals relating to Case expressions.F:case s of w; C vs -> e ==> e if w and vs are not free in eGM(case s of alt1 -> e1; alt2 -> e2) v ==> case s of alt1 -> e1 v; alt2 -> e2 vH$f (case s of alt1 -> e1; alt2 -> e2) ==> $case s of alt1 -> f e1; alt2 -> f e2 Only safe if f is strict.I$f (case s of alt1 -> e1; alt2 -> e2) ==> $case s of alt1 -> f e1; alt2 -> f e2 Only safe if f+ is strict, so introduces a lemma to prove.Jcase (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 -> e22KGlet v = case s of alt1 -> e1 in e ==> case s of alt1 -> let v = e1 in eL7cast (case s of p -> e) co ==> case s of p -> cast e coMvcaseFloatR = caseFloatAppR <+ caseFloatCaseR <+ caseFloatLetR <+ caseFloatCastR Note: does NOT include caseFloatArgN%Float in a Case whatever the context.OUnimplemented!QUnfold the case scrutinee and then perform case reduction. If first argument is True, perform substitution in RHS, if False, build let expressions.RCase 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.SCase 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 evaluationTCase 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.U.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) -> eVYForce evaluation of an identifier by introducing a case. This is equivalent to adding (seq v) in the source code.e -> case v of v _ -> eWpLike caseSplit, but additionally inlines the constructor applications for each occurance of the named variable. DcaseSplitInline idPred = caseSplit idPred >>> caseInlineAlternativeRXQInline the case binder as the case scrutinee everywhere in the case alternatives.Y[Inline the case binder as the case-alternative pattern everywhere in the case alternatives.ZlMerge 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? EFGHFMaybe the function to float past, and maybe a proof of its strictness.IJKLMNOPQRSTUVWXYZ[\]^EFGHIJKLMNOPQRSTUVWXYZ[\]^EGHIJLKMNOPRTSQUWXYZ[F\]V^ EFGHIJKLMNOPQRSTUVWXYZ[\]^)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).a%(let v = e1 in e2) ==> (\ v -> e2) e1b(\ v -> f v) ==> fce1 ==> (\ v -> e1 v)d Perform multiple eta-expansions.e[Flatten all the top-level binding groups in the module to a single recursive binding group.foFlatten all the top-level binding groups in a program to a program containing a single recursive binding group.gZFlatten all the top-level binding groups in a program to a single recursive binding group.h=Abstract over a variable using a lambda. e ==> ( x. e) xiZPush a function through a Case or Let expression. Unsafe if the function is not strict. _`abcdefghOa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functioniOa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functionIefghijklmnopqrstuvwxyz{|}~FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi _hi`abcdefg _`abcdefghi*None3MkGUnfold the current expression if it is one of the basic combinators: (), (), , , , , , , and U. This is intended to be used as a component of simplification traversals such as l or m.mBash is intended as a general-purpose cleanup/simplification command. It performs rewrites such as let floating, case floating, and case elimination, when safe. It also performs dead binding elimination and case reduction, and unfolds a number of basic combinators. See  for a list of rewrites performed. Bash also performs occurrence analysis and de-zombification on the result, to update IdInfo attributes relied-upon by GHC.nMAn extensible bash. Given rewrites are performed before normal bash rewrites.oLike m, 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.p Perform the bash) algorithm with a given list of rewrites.qSmash is a more powerful but less efficient version of bash. Unlike bash, smash is not concerned with whether it duplicates work, and is intended for use during proving tasks.HAs bash, but with "let-nonrec-subst" instead of "let-nonrec-subst-safe".jklmnopqrs jklmnopqrs jklpmnoqsrjklmnopqrs+NonetSExternals for manipulating fixed points, and for the worker/wrapper transformation.uFor 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))))vGiven 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) <==> workwXSave the recursive definition of work in the stash, so that we can later verify uses of v2. Must be applied to a definition of the form: work = unwrap (f (wrap work))9 Note that this is performed automatically as part of x.x\ 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)yAs 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.zwrap (unwrap a) <==> awrap (unwrap a) <==> a{wrap (unwrap (f a)) <==> f awrap (unwrap (f a)) <==> f a|!fix A ( a -> wrap (unwrap (f a))) <==> fix A f!fix A ( a -> wrap (unwrap (f a))) <==> fix A ftuvwxyzWW Assumption AwrapunwrapWW Assumption Awrapunwrap{WW Assumption BwrapunwrapfWW Assumption Bwrapunwrapf|WW Assumption CwrapunwrapfWW Assumption CwrapunwrapfwrapunwrapfwrapunwrapWW Assumption AwrapunwrapfWW Assumption BwrapunwrapfWW Assumption C tuvwxyz{| tuxywvz{|tuvwxyz{|,NoneE}SExternals for manipulating fixed points, and for the worker/wrapper transformation.~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)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)Given  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then rep (abs (work x)) <==> work xGiven  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then rep (abs (work x)) <==> work xXSave 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: 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) <==> aabs (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) f}~WW Assumption AabsrepWW Assumption AabsrepWW Assumption BabsrepfWW Assumption BabsrepfWW Assumption CabsrepfWW Assumption CabsrepfabsrepfabsrepWW Assumption AabsrepfWW Assumption BabsrepfWW Assumption C }~ }~}~-None List of all =s provided by HERMIT.Kjklmop     !#$%&'()*+,-./123bcefghijklmnopqrstuvwxyz{|}~      !"$%&'()*+,-./023456789:;=>?@ABCDFGHIJKLMNOPQRSTUVWXYZ[\]^`abcdefghiklmnopqrsuvwxyz{|~.None3MU/None!"EHM A handle for a specific version of the P. Currently s are identified by an b label.A 1 is a repository for complete Core syntax trees (P). For now, operations on a > are sequential, but later it will be possible to have two s running in parallel. Halt the 9 and return control to GHC, which compiles the specified . Halt the ! and abort GHC without compiling.Apply a  to the specified & and return a handle to the resulting .Apply a t to the  and return the resulting value.,Delete the internal record of the specified . List all the s tracked by the .IStart a HERMIT client by providing an IO function that takes the initial  and inital  handle. The Modguts to a Modguts' function required by GHC Plugins is returned. The callback is only ever called once.  None)3HM A handle for an # combined with scoping information.4An alternative HERMIT kernel, that provides scoping.JA primitive means of denoting navigation of a tree (within a local scope).TopUpRightLeft)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  and inital  handle. The Modguts to 7 Modguts' function required by GHC Plugins is returned.))  0None!"+234=BKMTthe current ASTwhich pretty printer to use"the way of outputing to the screenthe list of ticked messages3if true, run Core Lint on module after each rewriteJif true, show diffs rather than pp full code (TODO: move into pretty opts);if true, abort on *any* failure this should be in a reader 1None32None3    3NoneTUJPretty print a fragment of GHC Core using HERMIT's "Clean" pretty printer.H       >     4None!"&)+368=BHKMT Access 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 lineskeyboard 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.6xOur own custom instance of Monad for CLT so we don't have to depend on newtype deriving to do the right thing for fail.W      !"#$%&'()*+,-./0123456789:;O      !"#$%&'()*+,-./0123W     ;:98765 !"#$%&'()*4+,-./01238       !"#$%&'()*+,-./0123456789:;5None!"+36=BKMT?&exit the shell, but don't abort/resumeAModify shell stateB Abort GHC <=>?@ABCD <=>?@ABCD <BA@?>=CD<BA@?>=CD6NoneFPretty print a fragment of GHC Core using HERMIT's "AST" pretty printer. This displays the tree of constructors using nested indentation.EFGHIJKLMN EFGHIJKLMN EFGHJIKLMNEFGHIJKLMN7NonePJThis pretty printer is just a reflection of GHC's standard pretty printer. OPQRSTUVWX OPQRSTUVWX OPQRTSUVWX OPQRSTUVWX8NoneMA  is a collection of $s. Looking up a $ (via an ^2 key) returns a list, as there can be multiple $s with the same name.Build a GH from names to $ values.Z#Create a dictionary from a list of =s.[!The pretty-printing dictionaries. YZ[YZ[ZY[ YZ[9None !"&)3=M\An \ cmd is a possible means of converting a # value to a value of type cmd.]An \ with no effects.^An \ which can affect the shell._Like InterpM-, but with access to the original expression.` Execute an + using a given interpreter. The given interpretations are tried in order. The first one to match (have the proper type) will be executed.\ ]^_`!a"#$%&'\]^_`a\]^_`a \ ]^_`!a"#$%&':None3T(Take a reversed string, find substring back to first unmatched open paren (or the end). Returns that substring (unreversed), and remaining (reversed) string.ex 1. toUnmatched "zab rab( oof" ==> ("bar baz" , "( oof") ex 2. toUnmatched ")xuuq zab( rab( oof" ==> ("bar (baz quux)", "( oof"))*+,-./012345678b9:;<(bb)876543210/.-,+*b9:;<(;None&+3=KTc<KernelEffects are things that affect the state of the Kernel cdefghijklmn= cdefghijklmn cgfedhijklmn cgfedhijklmn=<None &+36=KMTwwA composite meta-command for running a loaded script immediately. The script is given the same name as the filepath.~Insert a script into the  Dictionary.">?@ABCDEFGHIopqrstuvJwxyz{|KLM}~NO/opqrstuvwxyz{|}~~w{|zyx}/ovutsrqp>A@?BDCEIHGFovutsrqpJwxyz{|KLM}~NO=None&+2346=KMTExternals that get us into the prover shell, or otherwise deal with lemmas. TODO: InteractiveProof is the only one that should be here, rest in ReasoningPOExternals that are added to the dictionary only when in interactive proof mode.QIVerify that the lemma has been proven. Throws an exception if it has not.'RSTUVWXYZ[\]^_`aPbcdefQghijklm  RSTU `_^]\[ZYXWVaPbcdefQghijklm>None3M    ?None !"&3=KMT4The first argument includes a list of files to load.nLike , but checks the   setting and does so if needed.HInterpret a boxed thing as one of the four possible shell command types.onpq #b #bonpq@None!"3=BTr)Run a kernel function on the current SASTs>Run a kernel function on the current SAST and update ps_cursor#tuvwxyz{|}~rstuv{zyxw|}~rsANoneIJKIJLIJMIJNIJOIJPIJQIJRIJSITUIVWIXYIZ[I\]I^_I`aI`bIcdIefIegIeeIhiIjkIjlIjjIjjIJmInoInpInqInrInsInnIntInuInvInwInxInyInzI{|}~      !"#$%&'()*+,-./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 k l k m n l 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 a b b c d d e e f f g g h h i i j j k k l l m m n n o o p p q r s t u v w x y z { | } ~                    F                    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    !!!!!!!!!!!!!!!!!!!!!!!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""" " " # ## ################### #!#"###$#%#&#'#(#)#*#+#,#-$$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=%%>%?%@%A%B%C%D&E&E&F&G&H&I&&J&K&L&M&N&O'P'P'Q'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){)|**}*~*******+++++++++,,,,,,,,,-.////////////0000000000000000000000000000000111122222222222223333333333444444444444444444444444444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.44/404142434445464748494:4;4<4=4>5?5@5A5B5C5D5E5F5G666666666677777777778H8I8J9K9L9M9N9O9P: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>{>|>}>~>???@@@@@@@@@@@@@@@@@@@)@ABBBBBBB\b      !"#D$D%D&D'D(D)D*D+D,D-D.D/D01234567879:;I<=I>>I?@I??I<<IABI<CI<DI<EIFFIGHIJKLMINOPQRPQSPQTUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`UVaUVbUVcUVdUVeUVfUVgUVhUViUVjUVkUVlUVmUVnUVoUVpUVqUVrUVsUVtUVuUVvUVwUxyUxzUx{Ux{U|}~}~}}ININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININININOININININININININININININININININININININIIVIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,-I,.I,/I,0I,1I,2I,3I,4I,5I,6I,7I,8I,9I,:I,;I,<I,=I,>I,?I,@I,AI,BI,CI,DI,EI,FI,GI,HI,II,JI,KI,LI,MI,NI,OI,PI,QI,RI,SI,TI,UI,VI,WI,XI,YI,ZI,[I,\I,]I,^I,_I,`I,aI,bI,cI,dI,eI,fI,gI,hI,iI,jI,kIlmIlnIloIlpIlqIlrIlsIltIluIlvIlwIlxIlyIlzIl{Il|Il}Il~IlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIl Il Il Il Il IlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIl Il!Il"Il"Il#Il$Il%Il&Il'Il(Il)Il*Il+Il,Il-Il.Il/Il0Il1Il2Il3Il4Il5Il6Il7Il8Il9Il:Il;Il<Il=Il>Il?Il@Il@IlAIlBIlCIlDIlEIlFIlGIlHIlHIlIIlJIlJIlKIlLIlMIlNIlOIlPIlQIlRIlSIlTIlUIlVIlWIlWIlXIlYIlZIl[Il\Il]Il^Il_Il`IlaIlbIlcIldIleIlfIlfIlgIlhIliIljIlkIllIlmIlnIloIlpIlqIlrIlsIltIluIlvIlwIlxIlyIlzIl{Il|Il}Il~IlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIlIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I I I I I I I I I I I I I I I I I I I I I I I I  I  I  I  I  I  I  !I  "I  #I  $I  %I  &I  'I  (I  )I  *I  +I  ,I  -I  .I  /I  0I  1I  2I  3I  4I  5I  6I  7I  8I  9I  :I  ;I  <I  =I  >I  ?I  @I  AI  BI  CI  DI  EI  FI  GI  HI  II  JI K LI K MI K NI K OI K PI K QI K RI K SI K TI K UI K VI K WI K XI K YI K ZI K [I K \I K ]I K ^I K _I K `I K aI K bI K cI K dI K eI f gI f hI f iI f jI f kI f lI f mI f nI f oI f pI f qI f rI f sI f tI f uI f vI f wI f xI f yI f zIC {IC |IC }IC ~IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC IC I I I I I I I I I I I I I I I I I I I I I I I I I I I I  I I I  I  I  I  I  I  I  I  I I I I I I I I I I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  !I  "I  #I  $I  %I  &I  'I  (I  )I  *I  +I  ,I  -I  .I  /I  0I  1I  2I  3I  4I  5I  6I  7I  8I  9I  :I  ;I  <I  =I  >I  ?I  @I  AI  BI  CI  DI  EI  FI  GI  HI  II  JI  KI  LI  MI  NI  OI  PI  QI  RI  SI  TI  UI  VI  WI  XI  YI  ZI  [I  \I  ]I  ^I  _I  `I  aI  bI  cI  dI  eI  fI  gI  hI  iI  jI  kI <I  lI  mI  nI  oI  pI  qI I mI  rI  sI  tI  uI  vI  wI  xI  yI  zI  {I  |I  }I  ~I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I I I IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IG IGGI  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  !I  "I  #I  $I  %I  &I  'I  (I  )I  *I  +I  ,I  -I  .I  /I  0I  1I  2I  3I  4I  5I  6I  7I  8I  9I  :I  ;I  <I  =I  >I  ?I  @I  AI  BI  CI  DI  EI  FI  GI  HI  II  JI  KI  LI  MI  NI  OI  PI  QI  RI  SI  TI  UI  VI  WI  XI  YI  ZI  [I  \I  ]I  ^I  _I  `I  aI  bI  cI  dI  eI  fI  gI  hI  iI  jI k lI k mI k nI k oI k pI k qI k rI k sI k tI k uI k vI k wI k xI k yI k zI k {I k |I k }I k ~I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I k I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r I r rI r I r I r I r I r I r I  I  I  I  Im Im Im Im !Im "Im #Im $Im %Im &Im 'Im (Im )Im *Im +Im ,Im -Im .Im /Im 0Im 1Im 2Im 3Im 4Im 5Im 6Im 7Im 8Im 9Im :Im ;Im <Im =Im >Im ?Im @Im AIm BIm CIm DIm EIm FIm GIm HIm IIm JIm KIm LIm MIm NIm OIm PIm QIm RIm SIm TIm UIm VIm WIm XIm YIm ZIm [Im \Im ]Im ^Im _Im `Im aIm bIm cIm dIm eIm fIm gIm hIm iIm jIm kIm lIm mIm nIm oIm pIm qIm rIm sIm tIm uIm vIm wIm xIm yIm zIm {Im |Im }Im ~Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Im Ic Ic Ic Ic Ic Ic Ic Ic Ic Ic Ic Ic IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ IJ I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I !I  "I  #I  $I  I  %I  &I  'I ( )I ( *I ( +I ( ,I ( -I ( .I ( /I ( 0I ( 1I ( 2I ( 3I ( 4I ( 5I ( 6I ( 7I ( 8I ( 9I ( :I ( ;I ( <I ( =I ( >I ( ?I ( @I ( AI ( BI ( CI ( DI ( EI ( FI ( GI ( HI ( II ( JI ( KI ( LI ( MI ( NI ( OI ( PI ( QI ( RI ( SI ( TI ( UI ( VI ( WI ( XI ( YI ( ZI ( [I ( \I ( ]I ( ^I ( _I ( `I ( aI ( bI ( cI ( dI ( eI ( fI ( gI ( hI ( iI ( jI ( kI ( lI ( mI ( nI ( oI ( pI ( qI ( rI ( sI ( tI ( uI ( vI ( wI ( xI ( yI ( zI ( {I ( |I ( }I ( ~I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I ( I I I I I I I I I I I  I  I  I  I  I  I  I  I Ie Ie Ie Ie IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IFIFIFIFIFIFIFIFIFIF IF IF IF IF IFIFIFIFIFIFIFIFIFIFIFIFIFIFIFIFIFIFIFIF I k!I k"I k#I k kI k$I%&I%'I%(I%)I%*I%+I%,I%-I%.I%/I%0I%1I%2I%3I%4I%5I%6I%7I%8I%9I%:I%;I%<I%=I%>I%?I%@I%AI%BI%CI%DI%EI%FI%GI%%I%HI%II%JI%KI%LIMNIMOIMPIMQIMRIMSIMTIMUIMVIMWIMXIMYIMZIM[IM\IM]IM^IM_IM`IMaIMbIMcIMMI dI eI fI gI hI (iI (jI (kI (lI (mI ( (I>nI>oI>pI>qI>rI>sI>tI>uI>vI>wI>xI>yI>zI>{I>|I>}I>~I>I>I>I>I>I>I>I>I>I>I>I>I>I>ImImImImImI<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I<I< I<I<I<I<I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?IIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIz{Iz|Iz}Iz~IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz Iz Iz Iz IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz!Iz"Iz#Iz$Iz%Iz&Iz'Iz(Iz)Iz*Iz+Iz,Iz-Iz.Iz/Iz0Iz1Iz2Iz3Iz4Iz5Iz6Iz7Iz8Iz9Iz:Iz;Iz<Iz=Iz>Iz?Iz@IzAIzBIzCIzDIzEIzFIzGIzHIzIIzJIzKIzLIzMIzNIzOIzPIzQIzRIzSIzTIzUIzVIzWIzXIzYIzZIz[Iz\Iz]Iz^Iz_Iz`IzaIzbIzcIzdIzeIzfIzgIzhIziIzjIzkIzlIzmIznIzoIzpIzqIzrIzsIztIzuIzvIzwIzxIzyIzzIz{Iz|Iz}Iz~IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz Iz Iz Iz IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz!Iz"Iz#Iz$Iz%Iz&Iz'Iz(Iz)Iz*Iz+Iz,Iz-Iz.Iz/Iz0Iz1Iz2Iz3Iz4Iz5Iz6Iz7Iz8Iz9Iz:Iz;Iz<Iz=Iz>Iz?Iz@IzAIzBIzCIzDIzEIzFIzGIzHIzIIzJIzKIzLIzMIzNIzEIzOIzPIzQIzRIzSIzTIzUIzVIzWIzXIzYIzZIz[Iz\Iz]Iz^Iz_Iz`IzaIzbIzcIzdIzeIzfIzgIzhIziIzjIzkIzlIzmIznIzoIzpIzqIzrIzsIztIzuIzvIzwIzxIzyIzzIz{Iz|Iz}Iz~IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz Iz Iz Iz IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIz Iz!IzzIz"Iz#Iz$Iz%Iz&Iz'Iz(Iz)Iz*Iz+Iz,Iz-Iz.Iz/Iz0Iz1Iz2Iz3Iz4Iz5Iz6Iz7Iz8Iz9Iz:Iz;Iz<Iz=Iz>Iz?Iz@IzAIzBIzCIzDIzEIzFIzGIzHIzIIzJIzKIzLIzMIzNIzOIzPIzQIzQIzRIzSIzTIzUIzVIzWIzXIzYIzZIz[Iz\Iz]Iz^Iz_Iz`IzaIzbIzcIzdIzeIzfIzgIzhIziIzjIzkIzlIzmIznIzoIzpIzqIzrIzsIztIzuIzvIzwIzxIzyIzzIz{Iz|Iz|Iz}Iz}Iz~IzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIzIIIIIIIIIIIII I I I  I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIG IG IG IG IG IGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIG IG!IG"IG#IG$IG%IG&IG'IG(IG)IG*IG+IG,IG-IG.IG/IG0IG1IG2IG2IG3IG4IG5IG6IG7IG8IG9I:;I:<I:=I:>I:?I:@I:AI:BI:CI:DI:EI:FI:GI:HI:II:JI:KI:LI:MI:NI:OI:PI:QI:RI:SI:TI:UI:VI:WI:XI:YI:ZI:[I:\I:]I:^I:_I:`I:aI:bI:cI:dI:eI:fI:gI:hI::IijIikIilIimIinIioIipIiqIirIisIitIiuIiiIivIiwIixIiyIizI{{I{|I{}IA~IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA IA IA IA IA IA IAIAIAIAIAIAIAIAIAIAIJIJIJ`IIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIzIzIzIzIzIzzI?IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;I<I=I>I?I@IInAInBInCInDInEIIGFIGGIGHIGGIGIIJIKLIKMIKNIKOIPQIPRIPSIPTIPUIPVIPWIPXIPYIPZIP[IP\IP]IP^IP_IP`IPaIPbIPcIPdIPeIPfIPgIPhIPiIjkIjlIjmIjnIjoI K dIpqIprIpsIptIpuIpvIwxIwyIwzIw{Iw|Iw}Iw~IwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwIwwIww   }~       =                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6P78 9 : ; < = > ? @}AB}AC}AD}AE}AF}AG}AH}AI}AJ}AK}LM}LN}LO}LP}LQ}LR}LS}LT}LU}LV}LW}LX}LY}LZ}L[}L\}L]}L^}L_}L`}La}Lb}Lc}Ld}Le}Lf}Lg}Lh}Li}Lj}Lk}Ll}Lm}Ln}Lo}Lp}Lq}Lr}Ls}Lt}Lu}Lv}Lw}Lx}yz}y{}y|}y}}y~}y}y}y}y}y}y}y}}}}}~}~}~}~}~}~}~}~}~}~}~}~}~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}  u     z                      ! " # $ % &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ~/ !               z {                   | }                          /                       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##########$$$$$$$%%%&&''''''''''(PQ((((()******++++++++++++++,,,,,,,,,,,,,,///////////////33333 3 33 3 3 333333333333333334333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@5A66)6/68606B7/788C8C8D8E8F8G9K9H9I9J9K9L9M9N: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=x=m=y=z={=|=}=~===================????@@@@@@@@@@@@@@@hermit-0.6.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.Kure#HERMIT.Dictionary.Navigation.Crumbs HERMIT.NameHERMIT.Dictionary.CommonHERMIT.Dictionary.Local.BindHERMIT.Dictionary.Local.CastHERMIT.Dictionary.GHC!HERMIT.Dictionary.AlphaConversionHERMIT.Dictionary.FunctionHERMIT.Dictionary.InlineHERMIT.Dictionary.FoldHERMIT.Dictionary.NavigationHERMIT.Dictionary.QueryHERMIT.ParserCoreHERMIT.Dictionary.UnsafeHERMIT.Dictionary.Local.LetHERMIT.Dictionary.NewHERMIT.ParserTypeHERMIT.PrettyPrinter.CommonHERMIT.Dictionary.UnfoldHERMIT.Dictionary.ReasoningHERMIT.Dictionary.UndefinedHERMIT.Dictionary.FixPoint&HERMIT.Dictionary.WorkerWrapper.CommonHERMIT.Dictionary.RulesHERMIT.Dictionary.Local.CaseHERMIT.Dictionary.LocalHERMIT.Dictionary.Composite#HERMIT.Dictionary.WorkerWrapper.Fix)HERMIT.Dictionary.WorkerWrapper.FixResultHERMIT.DictionaryHERMIT.Dictionary.Induction HERMIT.KernelHERMIT.Plugin.TypesHERMIT.Plugin.DisplayHERMIT.Plugin.RendererHERMIT.PrettyPrinter.CleanHERMIT.Shell.TypesHERMIT.Shell.ShellEffectHERMIT.PrettyPrinter.ASTHERMIT.PrettyPrinter.GHCHERMIT.Shell.DictionaryHERMIT.Shell.InterpreterHERMIT.Shell.CompletionHERMIT.Shell.KernelEffectHERMIT.Shell.ScriptToRewriteHERMIT.Shell.ProofHERMIT.Shell.ExternalsHERMIT.Shell.Command HERMIT.PluginHERMIT HERMIT.Syntax Dictionary Paths_hermitLanguageKUREDataMap ghc-7.8.3TypeRepNumTyLitStrTyLitTyLitTyVarTyAppTyTyConAppFunTyForAllTyLitTyTcErrorsreportAllUnsolvedTcEnvtcLookupGlobal LoadIfaceloadSysInterfaceConvertthRdrNameGuesses CoreArity exprArity OccurAnaloccurAnalyseExpr_NoBinderSwapKindisKindisLiftedTypeKindConTysPrim alphaTyVarsCoAxiom BranchIndexBranchedBagfoldBagPairpSndpFstTypePanicthrowGhcException PhaseFailedSignal UsageError CmdLineErrorPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError GhcExceptionEncoding zEncodeString kure-2.16.4Language.KURE.Path LocalPathScriptExprHListHCoreHAppHCmdNameSrcName parseScript parseExprH unparseScript unparseExprHinitTcFromModGuts mk_type_env hermitVersionghcFlags usageOutputusage hermitDrivernodupsdupsBydups soleElement equivalentBy equivalentwhenJustmaybeM varNameNSgetHscEnvCoreMvarSetToStrings showVarSet coAxiomNameunqualifiedName qualifiedNamecmpString2Name isQualified cmpString2VarppIdInfo zapVarOccInfo notElemVarSetbndrRuleAndUnfoldingVarseqExprXlookupRdrNameInModulePassInfopassNum passesDone passesLeftCorePassUnknownNoOp PluginPassPasses RuleCheck FloatOutwardsSimplifyPrepTidy DesugarOptDesugar VectorisationCSE SpecConstr Specialising WorkerWrapper Strictness StaticArgs PrintCore LiberateCase FloatInwards buildPlugin ghcPasses getCorePass getPassFlagCrumbLRCo_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 endoFunTypeMendoFunExprTypeMfunExprArgResTypesMfunExprsWithInverseTypes 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 LiftCoreM liftCoreM HasLemmas insertLemma getLemmas HasHscEnv getHscEnv HasDebugChan getDebugChan HasHermitMEnv getHermitMEnvHasStashgetStashputStashHermitM HermitMResult hResStash hResLemmashResult HermitMEnv hEnvModGuts hEnvStash hEnvLemmasLemmasLemmalemmaEqlemmaPlemmaU LemmaNameEqualityDefStashRememberedNamemkEnvrunHM embedHermitMsaveDef lookupDef getModGutssendDebugMessageaddLemmarunTcMrunDsMPathHLensH 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 instCoOneRdeprecatedIntToCrumbTdeprecatedIntToPathTTransformEqualityStringBoxRewriteEqualityBoxRewriteCoreListBox IntListBox StringListBox StringBox CoreString unCoreStringTransformCoreTCPathBoxTransformCorePathBoxPathBoxCrumbBoxTransformCoreCheckBoxTransformCoreTCCheckBoxTransformCoreStringBoxTransformCoreTCStringBoxBiRewriteCoreBoxRewriteCoreTCBoxRewriteCoreBoxIntBoxTagBoxExternBoxboxunboxExternal externName externDyn externHelp externTagsTag.+remTagtagMatchTagECmdTag Deprecated ExperimentTODOProofUnsafeContextVersionControlDebug PreConditionCommute Introduce PredicateQuery NavigationShallowDeepLoopEvalShell ExternalHelp ExternalNamedictionaryOfTags.&.||notTexternalmatchingExternalstoHelpexternTypeStringexternTypeArgResStringsplitFunTyArgs externalsobserveFailureRobserveRtraceRbracketRanyCallRbetweenRcrumbExternals RhsOfName unRhsOfNameOccurrenceNameListBoxOccurrenceNameunOccurrenceName BindingName unBindingName HermitName hnModuleName hnUnqualifiedNamed NamedTyVar NamedTyCon NamedDataConNamedId varToNamed tyConClassNS dataConNStyVarNSvarNS allNameSpaces cmpHN2Var cmpHN2Name parseNameshowName fromRdrName toRdrName toRdrNames mkBindingPred mkOccPred mkRhsOfPredfindIdfindVar findTyConfindTypefindInNameSpacesfindInNameSpace newGlobalIdHnewIdH newTyVarH newCoVarHnewVarH cloneVarHapplyInContextTcallT callPredT callNameTcallSaturatedT callNameG callDataConTcallDataConNameT progConsIdsTprogConsRecIdsTprogConsNonRecIdT nonRecVarTrecIdsTlamVarTletVarsT letRecIdsT letNonRecVarT caseVarsT caseBinderIdT caseAltVarsTvarBindingDepthTvarIsOccurrenceOfTexprIsOccurrenceOfT boundVarsT findBoundVarTfindIdTfindVarT findTyConT findTypeTinScopewithVarsInScope wrongExprForm nonrecToRecR recToNonrecR castElimReflR castElimSymR castFloatAppRcastElimSymPlusRsubstR substCoreExpr substCoreAltarityOf lintModuleT lintExprT dynFlagsT dezombifyR occurAnalyseRoccurAnalyseExprChangedRoccurAnalyseChangedRoccurAnalyseAndDezombifyR buildTypeablebuildDictionarybuildDictionaryT visibleVarsTcloneVarAvoidingTfreshNameGenAvoidingdetectShadowsM unshadowR unshadowExprR unshadowAltR unshadowProgR replaceVarR alphaLamRalphaCaseBinderR alphaAltWithR alphaAltVarsR alphaAltR alphaCaseR alphaLetWithR alphaLetVarsR alphaLetRalphaProgConsWithRalphaProgConsIdsRalphaProgConsR alphaProgRalphaR staticArgRstaticArgTypesR staticArgPosRstaticArgPredRappArgMbuildCompositionTbuildApplicationM buildFixTbuildIdT InlineConfig AllBindersCaseBinderOnlyCaseBinderInlineOption Alternative Scrutinee inlineNameR inlineNamesRinlineMatchingPredRinlineRinlineCaseScrutineeRinlineCaseAlternativeRconfigurableInlineR ensureBoundT getUnfoldingTinlineTargetsT stashFoldR stashFoldAnyRfoldRfoldVarRfoldtyMatchesToCoreExpr unifyTypes Considerable CoercionExprTypeExprTickyCastyCaseOfLetExprLambda ApplicationLiteralVariableCaseAlt DefinitionBinding parentOfTrhsOfTbindingGroupOfT bindingOfT occurrenceOfToccurrenceOfTargetsTbindingOfTargetsTbindingGroupOfTargetsT rhsOfTargetsT considerablesconsiderConstructTstring2considerable nthArgPathinfoTcompareCoreAtTcompareBoundIdsTTokenTcharTstring TrationalTintegerTcnameTname Tsemicolon TquestionTdotTatTlambda TdoublearrowTarrowTstar Tcoloneqcolon TcoloncolonTcolonTeqThashTcbraceTobraceTcparenToparenTwildTlocal TexternalTnoteTcastTofTcaseTinTletTrecTforall parseErrorlexer parseCoreparseCoreExprT parse2BeforeT parse3BeforeTparse2beforeBiRparse3beforeBiRparse4beforeBiRparse5beforeBiRunsafeReplaceRunsafeReplaceStashR letSubstR letSubstSafeRletNonRecSubstRletNonRecSubstSafeRletElimRletNonRecElimR letRecElimR progBindElimRprogBindNonRecElimRprogBindRecElimR letToCaseR letFloatAppR letFloatArgR letFloatLetR letFloatLamR letFloatCaseRletFloatCaseAltR 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_showUniquespo_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 coreRendersvlisthlistpadbetaReducePlusRunfoldR unfoldPredR unfoldNameR unfoldNamesRunfoldSaturatedR specializeR rememberR unfoldStashR showStashT EqualityProof flipEqualityextensionalityR eqLhsIntroR eqRhsIntroR birewritelhsTrhsTbothT forallVarsTlhsRrhsRbothR ppEqualityTproveEqualityTverifyEqualityTverifyEqualityLeftToRightTverifyEqualityCommonTargetTverifyIsomorphismTverifyRetractionT retractionBRinstantiateDictsRalphaEqualityRunshadowEqualityRinstantiateEqualityVarRinstantiateEqualityVarinstantiateEqualitydiscardUniVars getLemmasTgetLemmaByNameTlemmaR insertLemmaR modifyLemmaRmarkLemmaUsedRisUndefinedValTerrorToUndefinedRmkUndefinedValT replaceCurrentExprWithUndefinedRreplaceIdWithUndefinedRundefinedExprR undefinedAppR undefinedLamR undefinedLetRundefinedCastRundefinedTickRundefinedCaseRundefinedCaseScrutineeRundefinedCaseAltsR verifyStrictTbuildStrictnessLemmaT fixIntroRfixIntroNonRecR fixIntroRecRfixComputationRuleBRfixRollingRuleBRfixFusionRuleBR isFixExprT WWAssumptionWWAssumptionTagCBA workLabelassumptionAEqualityTassumptionBEqualityTassumptionCEqualityT split1BetaR split2BetaRRuleNameListBoxRuleNameruleRrulesRgetHermitRulesTgetHermitRuleTruleNameToEqualityTruleToEqualityT specConstrR specialiseR caseElimR caseFloatAppR caseFloatArgRcaseFloatArgLemmaRcaseFloatCaseR caseFloatLetRcaseFloatCastR caseFloatR caseFloatInRcaseFloatInAppRcaseFloatInArgsRcaseReduceUnfoldR caseReduceRcaseReduceLiteralRcaseReduceDataconR caseSplitR caseIntroSeqRcaseSplitInlineRcaseInlineScrutineeRcaseInlineAlternativeRcaseMergeAltsRcaseMergeAltsWithBinderRcaseElimInlineScrutineeRcaseElimMergeAltsR caseElimSeqR betaReduceR betaExpandR etaReduceR etaExpandRmultiEtaExpandRflattenModuleRflattenProgramRflattenProgramT abstractRpushRunfoldBasicCombinatorR simplifyRbashRbashExtendedWithR bashDebugR bashUsingRsmashRsmashExtendedWithR smashUsingRwwFacBR wwFusionBRwwGenerateFusionRwwSplitRwwSplitStaticArgwwAssAwwAssBwwAssC wwResultFacBRwwResultFusionBRwwResultGenerateFusionRwwResultSplitRwwResultSplitStaticArg wwResultAssA wwResultAssB wwResultAssCinductionCaseSplit KernelEnvkEnvChanASTKernelresumeKabortKapplyKqueryKdeleteKlistK hermitKernelSAST ScopedKernelresumeSabortSapplySquerySdeleteSlistSpathSmodPathS beginScopeS endScopeSkernelStoASTS DirectionTURL moveLocally scopedKernelPSBox PExceptionPErrorPResumePAbort PluginState ps_cursor ps_pretty ps_renderps_tick ps_corelint ps_diffonly ps_failhard ps_kernelps_passPluginT unPluginTPluginM runPluginTtick mkKernelEnviokm'iokmiokm''$fExternPluginState$fErrorPException$fMonadCatchPluginT$fMonadTransPluginT getFocusPathdisplay ps_putStr ps_putStrLnUnicodeTerminalchangeRenderershellRenderersunicodeConsoledoSGR undoSGRWith setHighlightdiffDocHdiffR$fRenderCodeUnicodeTerminal$fMonoidUnicodeTerminal$fRenderSpecialUnicodeTerminalprettyppCoreTC ppModGuts ppCoreProg ppCoreBind ppCoreAlt ppCoreExpr ppKindOrTypeppForallQuantification ppCoercion ScriptNameCLSBoxCommandLineState cl_pstate cl_height cl_scriptscl_nav cl_version cl_window cl_externalscl_running_script cl_initSAST VersionStorevs_graphvs_tagsCLMonadCLTunCLT 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 fixWindow showWindow showGraph$fExternCommandLineState$fMonadCatchCLT $fMonadCLT$fMonadTransCLT$fMonadExceptionStateT$fMonadExceptionCLT$fErrorCLException$fExternQueryFun ShellEffectResumeDumpContinue PluginComp CLSModifyAbortperformShellEffectdumpaddToDictionary mkDictionary pp_dictionaryInterpinterpinterpMinterpEM interpExprH exprToDyns shellComplete KernelEffectDeleteEndScope BeginScopeperformKernelEffect applyRewritesetPath goDirection beginScopeendScope deleteSAST ScriptEffectSeqMetaScriptToRewrite SaveScriptSaveFile RunScriptLoadFile DefineScript loadAndRun runScript popScriptLineperformScriptEffect lookupScriptparseScriptCLTscriptToRewriteaddScriptToDictUserProofTechnique ProofCommand DumpLemma ShowLemmasInteractiveProofperformProofCommandppLemmaTuserProofTechniqueshell_externalsgc setWindow showRenderers versionCmdshowDerivationTreeshowRefactorTraildisplayScripts showScriptstestAllT testRewrites commandLine evalScriptinterpShellCommandHPM hermitPlugindefPShpmToIO interactiverunqueryatpassafterbeforeuntil allPasses firstPasslastPass getPassInfo modifyCLSsetPrettyOptionspluginisScriptIdFirstCharisScriptIdCharisScriptInfixIdCharisCoreIdFirstChar isCoreIdCharisCoreInfixIdCharinfixOperatorSymbolsbaseGHC.BaseStringtest HappyAddrHappyA#HappyStk Happy_IntList HappyConsInfixOpIdentQuoteTickStmtEndListEnd ListDelim ListStartScopeEnd ScopeStart ParenRight ParenLeftHappyAny HappyAbsSynhappyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms 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_25happyReduce_26happyReduction_26 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'parser exprParserhappySeqlexError 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 BottomFoundSimplifierDoneCoreM TcSimplifysolveWantedsTcM tcLookupClassDsBinds dsEvBindsDsMonadinitDsTcTcMTypenewWantedEvVar TcRnMonad initIfaceTcRngetCtLocMkCore 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 FloatBindDsM TcRnTypesmkFlatWCmkNonCanonicalTcMctev_loc ctev_evtm ctev_predCtGiven ctev_evarCtWanted CtDerived CtEvidenceSigSkolClsSkolInstSkolDataSkol FamInstSkolPatSkol ArrowSkolIPSkolRuleSkol InferSkol BracketSkolUnifyForAllSkolUnkSkol SkolemInfo GivenOriginFlatSkolOrigin OccurrenceOf AppOriginSpecPragOrigin uo_expected uo_actual TypeEqOrigin KindEqOrigin IPOccOrigin LiteralOrigin NegateOriginArithSeqOrigin PArrSeqOrigin SectionOrigin TupleOrigin AmbigOrigin ExprSigOrigin PatSigOrigin PatOriginRecordUpdOrigin ViewPatOriginScOrigin DerivOrigin DerivOriginDCDerivOriginCoerceStandAloneDerivOrigin DefaultOriginDoOrigin MCompOriginIfOrigin ProcOrigin AnnOrigin FunDepOrigin HoleOriginUnboundOccurrenceOf ListOriginCtOriginHscTypesemptyModBreaksbyteCodeOfObject 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 AnnNonRecAnnRecAnnBindErrUtils pprErrMsgBagTcTypemkPhiTy mkSigmaTy 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 CvSubstEnvCvSubstUnify tcUnifyTysBindMeSkolemBindFlagcloneTyVarBndrsubstTyVarBndr 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 PrelNamestypeableClassName AnnotationsdeserializeAnnsfindAnns plusAnnEnvextendAnnEnvListmkAnnEnv emptyAnnEnvgetAnnTargetName_maybe ann_value ann_target Annotation AnnPayload NamedTarget ModuleTarget AnnTarget CoreAnnTargetAnnEnvClass classTyConNominalRepresentationalPhantomRolepprNameProvenanceisExplicitItemimportSpecModule 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 DeprecatedTxtFixityInfixLInfixRInfixNFixityDirectionTopLevel 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$fInjectionModGutsCore DebugChan runHermitMmkResult mkResultEnv$fLiftCoreMHermitM$fHasLemmasHermitM$fHasHscEnvHermitM$fHasHscEnvCoreM$fHasDebugChanHermitM$fHasHermitMEnvHermitM$fHasStashHermitM$fHasDynFlagsHermitM$fMonadThingsHermitM$fMonadUniqueHermitM$fMonadIOHermitM$fMonadCatchHermitM$fMonadHermitM$fApplicativeHermitM$fFunctorHermitM$fShowLemmaName$fIsStringLemmaName$fShowRememberedName$fIsStringRememberedName GHC.TypesInt$fWalkercCoreTC $fWalkercTyCo$fWalkercCoercion $fWalkercType $fWalkercCore<$><*>$fHasDynFlagsTransformLanguage.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.DynamicDynamicdeBoxifytoTagEOrTagAndTagNotTagsplitExternFunTypesplitFunTyMaybe$fExternTransform$fExternTransform0$fExternLemmaName$fExternRememberedName $fExtern[] $fExtern[]0 $fExtern[]1 $fExtern[]2$fExternCoreString$fExternTransform1$fExternTransform2$fExternSnocPath $fExternCrumb$fExternTransform3$fExternTransform4$fExternTransform5$fExternTransform6$fExternBiTransform$fExternTransform7$fExternTransform8 $fExternInt $fExternTagE $fExtern(->) $fTagCmdTag $fTagTagE testQueryhfocusRhfocusT mkQualified mkUnqualifiedparseQualifiedfindInNSModGutsfindInNSPackageDB lookupNamefindNamedBuiltIn nameToNamednewName$fMonadThingsTransform$fExternRhsOfName$fExternOccurrenceName$fExternBindingName$fShowHermitName$fIsStringHermitName$fExternHermitName $fShowNamedsplitTyConAppCo_maybe castElimRcastElimUnsafeR substTopBindR deShadowProgRoccurrenceAnalysisR inventNames shadowedBy alphaAltVarRalphaAltVarsWithRalphaLetNonRecRalphaLetNonRecVarsRalphaLetRecIdsWithRalphaProgConsNonRecRalphaProgConsNonRecIdsRalphaProgConsRecIdsWithRdupVarsreplaceRecBindVarRwrongFormForAlpha substOrApplycommas ensureDepthTalt2ExpdFunExpr countBinderscollectNBinders unifyHolesaddAlphamatchWithTypes foldMatch foldMatchTypeapplicationOfT lamsBodyT letsBodyTprogEndT gutsProgEndTbindingGroupOf bindingOfbinders bindersCore binderBind binderDef binderExpr binderTypebinderCoercion occurrenceOf varOccurrencevarOccurrenceExprvarOccurrenceTypevarOccurrenceCoercionrecognizedConsiderablesunderConsiderationexhaustRepeatCrumbT$fHasEmptyContextExtendContext$fExternConsiderablecompareBoundIds coreTCNodecoreNodecoreTCConstructorcoreConstructortypeConstructorcoercionConstructor CoreParseMhappyIn4 happyOut4 happyReduce_1happyReduction_1 mkIntExpr'<$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 retractionlemmaLhsIntroRlemmaRhsIntroR BuildEquality mkEqualityfreeVarsEqualitynoAddslemmaNameToEqualityT$fBuildEquality(->)$fBuildEquality(,) isErrorValTGHC.Err undefinedapplyToUndefinedTundefinedLocationfindUndefinedIdT errorLocation findErrorIdTreplaceIdWithUndefinedpolyFixT fixFusionRule fixLocationwwFusionEqualityT$fExternWWAssumptionTagrulesHelpListT ruleHelpT idSpecRules bindSpecRules specRulesrulesToRewrite$fShowRuleName$fIsStringRuleName$fExternRuleNamecaseFoldBinderRseq isForcedIn caseFloatArgmatchingFreeIdTcaseInlineBinderR altVarsUnusedpush$.idflipconst Data.TuplefstsndcurryuncurrybashComponentssmashComponents1basicCombinatorsbashHelp smashHelpsmashComponents2wwFacwwFusionwwSplitwwAssAimpliesAssBwwAssBimpliesAssCwwAssAimpliesAssCwwAwwBwwC verifyWWAss verifyAssA verifyAssB verifyAssCwrapUnwrapTypeswwResultAssAimpliesAssBwwResultAssBimpliesAssCwwResultAssAimpliesAssC absRepTypes KernelState_ksStash _ksLemmasksGutsASTMapMsgDoneReqfromHermitMResultsideEffectsOnlyfindWithErrMsgfind safeTakeTMVar SASTStorepathStack2PathspathStackToLenstestPathStackTget ArrowType ATCoercionATTypeRetExprRetEmptyRetAtom RetArrowType RetForAllRetAppRetLetRetLamretAppretAppsretLamretLet retForAll retArrowType normalExpr cleanParens normalParensnormalParensExceptApp parenExprparenExprExceptApp specialSymbolsymbolidTextcoTextcoCharcoSymbol castSymbolcoercionSymbolcoercionBindSymbol coKeywordcoArrow coTypeSymboltyChartyTexttySymbol typeSymboltypeBindSymbol typeOfSymbol typeArrowppSDocppVarppVarOccvarColorppNameppLitTyppTyCon ppTyConCo ppBinderMode ppCoreDefppDef ppCoreExprR ppTypeModeR ppKindOrTypeRppCoercionModeR ppCoercionRppCoKind ppTypeSig$fExternShellEffect keywordText toDictionarytoEntry make_help help_command layoutTxt runInterp fromDynList toBoxedList exprToDyns' provideState dynCrossApply$fFunctorInterp toUnmatchedCompletionTypeUnknownCStringCStashCRuleCNothingCCoreCCommandCLemmaCInScopeCInlineC OccurrenceOfCRhsOfCBindingGroupOfC BindingOfC ConsiderCcompletionsForcompletionTypefilterUnknownscompletionQuery$fExternKernelEffect PrimScriptRScriptTransformHCorePath ScriptPathScriptRewriteHCore ScopedScriptR ScriptPrimSc ScriptScopeUnscopedScriptRScriptUnsupported ScriptPrimUnScriptEndScopeScriptBeginScope RewriteNameunscopedToScopedScriptR interpScriptRscopedScriptsToRewrite$fExternScriptEffectproof_externalsendProofUserProofTechniqueBoxProofShellCommand PCUnsupportedPCEndPCDumpPCUserPCProofCommandPCQueryPCScriptPCShell PCInduction PCTransform PCRewrite NamedLemma printLemmainteractiveProofaddProofExternalsevalProofScriptrunExprHperformProofShellCommandperformInduction addLemmas interpProof$fExternUserProofTechnique$fExternProofShellCommand$fExternProofCommand catchFailHardbanner getNavCmdrunKrunSunHPMHPMInstRRFocusGuardrunHPMeval resetScopingrestoreScopingguard