`]7      !"#$%&'()*+,-./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 { | } ~                          !"#$%&'()*+,-./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&{&|&}&~&&&&&'''''''(((((((((((((((())))))))))))))))))********++++++++++++++++++++++++++++,,-----------........../////////////000000000111111111233 3 3 3 3 3333333333333444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V6W6X6Y7Z7[7\7]7^7_7`7a7b7c7d7e7f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999::::::::;;;;;;;;;<<<<<<<<<<<<<<<<<<=== = = = = ===>???????????@@@A A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5B6CED Safe-Inferred7WCharacters that are valid as the leading character of an identifier in a HERMIT script.8=Characters that are valid identifier elements (a superset of 7) in a HERMIT script.9@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.789:;<=>789:;<>789:;<=>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 CE)./'Variable names (refers to source code).@-Use ghci Parser.hs to run this test function.ABCDEF)GHIJKLMNOPQRST*+,-./UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@0123 )*+,-./0123 )023*/.-,+1}ABCDEF)G TSRQPONMLKJIH*/.-,+UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@0123C D NoneHM44Re-Setup the typechecking environment from a ModGuts45 4545 45F Safe-Inferred   Safe-Inferred :cEntry point for HERMIT driver executable. First String in list is expected to be target file name.:See if the given HERMIT args imply any additional GHC args 6789:6789:67:98 6789: 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 @! to any equivalence relation. equivalent = equivalentBy (==)@.Determine if all elements of a list are equal.A'Perform the monadic action only in the  case.BLift a  into an arbitrary monad, using  or .;<=>?@AB;<=>?@AB;=<>?@AB;<=>?@ABNone)24 CRename this namespace, as  is already a function in Var.E Convert a $ to a list of user-readable strings.F#Show a human-readable version of a .H Get the unqualified name from a .I$Get the fully qualified name from a .J Compare a ? to a  for equality. Strings containing a period are assumed to be fully qualified names. (Except for ".", which is an unqualified reference to composition.)L Compare a ? to a  for equality. See J.MPretty-print an identifier.N Erase all  in a variable if it is is an , or do nothing if it's a  or  (which have no ).ODetermine if a  is not an element of a .R Finds the  corresponding to the given  in the context of the  . Returns Nothing if no such = could be found. Any other condition results in an exception: If the module could not be found3If we could not determine the imports of the 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.S/Also copied from GHC because it is not exposed.TMPopulate the EPS with a module, as if it were imported in the target program.CDEFGHIJKLMNOPQRST      !"#$%&'()*+,-./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{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'      !"#$%&'()(*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGHIJKLMNOPQRST:MN CKJLIH' !"#$%&S OEFPGQ RT (DCDEFGHIJKLMNOPQRSTNoneT:UKCrumbs 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 (,  h)) 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 [ j#]. 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  0 # 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 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 variables in an expression.^Find all free identifiers in a binding group, which excludes any variables bound in the group.aFind all free variables on a binder. Equivalent to idFreeVars, but safe to call on type bindings.UFind all free variables in a recursive definition, which excludes the bound variable.eFind all free variables in a case alternative, which excludes any variables bound in the alternative.kFind all free local variables in a case alternative, which excludes any variables bound in the alternative.%Find all free variables in a program."Find all free variables in a type.&Find all free variables in a coercion.GHC's  * function throws an error if applied to a . This function returns the  of a , but otherwise behaves as  .GHC's  * function throws an error if applied to a F. This function catches that case as failure in an arbitrary monad.Returns True iff the expression is a   expression at its top level.(Count the number of nested applications.5Map a function over the RHS of each case alternative.As  , catching failure in a monad.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 U into the U+ pointing to its left-sibling, if a such a U$ exists. This is used for moving left in the shell. Converts a U into the U, pointing to its right-sibling, if a such a U$ exists. This is used for moving right in the shell.NSubstitute all occurrences of a variable with an expression, in an expression.SSubstitute all occurrences of a variable with an expression, in a case alternative./Beta-reduce as many lambda-binders as possible.nBuild a constructor application. Accepts a list of types to which the type constructor is instantiated. Ex. data T a b = C a b Int Pseudocode: NmkDataConApp [a',b'] C [x,y,z] ==> C a' b' (x::a') (y::b') (z::Int) :: T a' b'UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ւU~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWV;UF~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVNone)+A LemmaName, Lemma pair.A collection of named lemmas.+name for the antecedent when it is in scope?used, but can be proven later (only introduced in unsafe shell)this MUST be proven immediatelyAssumed by library/HERMITAssumed by user&An equality with a proven/used status.AA name for lemmas. Use a newtype so we can tab-complete in shell. Build a Clause from a list of universally quantified binders and two expressions. If the head of either expression is a lambda expression, it's binder will become a universally quantified binder over both sides. It is assumed the two expressions have the same type.Ex. mkClause [] (x. foo x) bar === forall x. foo x = bar x mkClause [] (baz y z) (x. foo x x) === forall x. baz y z x = foo x x mkClause [] (x. foo x) (y. bar y) === forall x. foo x = bar xfAssumes Var is free in Clause. If not, no substitution will happen, though uniques might be freshened.{Note: Subst must be properly set up with an InScopeSet that includes all vars in scope in the *range* of the substitution.=Instantiate one of the universally quantified variables in a . Note: assumes implicit ordering of variables, such that substitution happens to the right as it does in case alternatives. Only first variable that matches predicate is instantiated.The function which 'bubbles up' after the instantiation takes place, replacing any type variables that were instantiated as a result of specialization.;Instantiate a set of universally quantified variables in a i. It is important that all type variables appear before any value-level variables in the first argument.Syntactic Equality of clauses.1''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.0Local lemmas as we pass implications in a proof.PA class of contexts that can store local Lemmas as we descend past implications.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.*)Determine whether a variable is in scope.+/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..=Build a HermitC out of any context that has the capabilities./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.G      !"#$%&'()*+,-./2      !"#$%&'()*+,-./5/.  !"#%&$'  )(  +,-*,       !"#$%&'()*+,-./ None)2346T10iLCoreTC is a KURE universe for traversing HERMIT lemmas and the Core expressions they contain. Unlike 3A, types and coercions are also traversed. LCore = LCore + TyCo3LCore is a KURE universe for traversing HERMIT lemmas and the Core expressions they contain. Types and coercions are not traversed (for that, use 0). LCore = Core + Clause6gCore is a KURE universe for traversing GHC Core, including types and coercions. CoreTC = Core + TyCo9UTyCo is a KURE universe for traversing types and coercions. TyCo = Type + Coercion: A coercion.;A type.<Core is a KURE universe for traversing GHC Core, excluding types and coercions. Core = ModGuts + CoreProg + CoreBind + CoreDef + CoreExpr + CoreAlt=A case alternative.>An expression.?A recursive definition.@A binding group.A4A program (a telescope of top-level binding groups).B The module.CAlpha equality of < fragments.DAlpha equality of 9 fragments.EAlpha equality of 6 fragments.FSyntactic equality of < fragments.GSyntactic equality of 9 fragments.HSyntactic equality of 6 fragments.ISyntactic equality of 3 fragments.JSyntactic equality of 0 fragments.KFind all free variables in a < node.LFind all free variables in a 9 node.MFind all free variables in a 6 node.NPromote a translate on .OPromote a translate on .PPromote a translate on  j.QPromote a translate on .RPromote a translate on  k.SPromote a translate on  h.TPromote a translate on .UPromote a translate on  .VPromote a translate on .WPromote a translate on <.XPromote a translate on 3.YPromote a translate on 6.ZPromote a rewrite on .[Promote a rewrite on .\Promote a rewrite on  j.]Promote a rewrite on .^Promote a rewrite on  k._Promote a rewrite on  h.`Promote a rewrite on .aPromote a rewrite on  .bPromote a rewrite on .cPromote a rewrite on <.dPromote a rewrite on <.ePromote a rewrite on 6.f#Promote a bidirectional rewrite on  h.^0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef70123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef7<BA@?>=9;:354021687FGHIJCDEKLMNOPQSRTUVWXYZ[\]_^`abcdefP0213546879;:<BA@?>=CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef None!")3=gA message packet.l can be lifted to this monad.qGet the HermitMEnvr"The HERMIT monad is kept abstract.WIt provides a reader for ModGuts, state for Lemmas, and access to a debugging channel.sThe HermitM result record.uWhether Lemmas have changedxThe HermitM environment.Whether Lemmas have changedXNote: this is a snapshot of the ModGuts from before the current transformation.zEliminator for r.{GAllow HermitM to be embedded in another monad with proper capabilities.Insert or replace a lemma.+Only adds a lemma if doesn't already exist.4Find a lemma by name. Fails if lemma does not exist.4ghijklmnopqrstuvwxyz{|}~     ghijklmnopqrstuvwxyz{|}~rz{xstuvwklmnopqy|}gjih~"gjihklmnopqrstuvwxyz{|}~     None )2346MT\Transform a module. Slightly different to the other congruence combinators: it passes in all0 of the original to the reconstruction function. Rewrite the  child of a module.Transform an empty list."Transform a program of the form: ( j : )0Rewrite all children of a program of the form: ( j : )0Rewrite any children of a program of the form: ( j : )-Rewrite one child of a program of the form: ( j : )'Transform a binding group of the form: NonRec   h5Rewrite all children of a binding group of the form: NonRec   h5Rewrite any children of a binding group of the form: NonRec   h2Rewrite one child of a binding group of the form: NonRec   h'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   h<Rewrite all children of a recursive definition of the form: Def   h<Rewrite any children of a recursive definition of the form: Def   h9Rewrite one child of a recursive definition of the form: Def   h+Transform a case alternative of the form: ( ", [],  h)9Rewrite all children of a case alternative of the form: ( ", ,  h)9Rewrite any children of a case alternative of the form: ( ", ,  h)6Rewrite one child of a case alternative of the form: ( ", ,  h)%Transform an expression of the form: Var  Rewrite the % child in an expression of the form: Var %Transform an expression of the form: Lit   Rewrite the  % child in an expression of the form: Lit  %Transform an expression of the form: App  h  h3Rewrite all children of an expression of the form: App  h  h3Rewrite any children of an expression of the form: App  h  h0Rewrite one child of an expression of the form: App  h  h%Transform an expression of the form: Lam   h3Rewrite all children of an expression of the form: Lam   h3Rewrite any children of an expression of the form: Lam   h0Rewrite one child of an expression of the form: Lam   h%Transform an expression of the form: Let  j  h3Rewrite all children of an expression of the form: Let  j  h3Rewrite any children of an expression of the form: Let  j  h0Rewrite one child of an expression of the form: Let  j  h%Transform an expression of the form: Case  h   [ k]3Rewrite all children of an expression of the form: Case  h   [ k]3Rewrite any children of an expression of the form: Case  h   [ k]0Rewrite one child of an expression of the form: Case  h   [ k]%Transform an expression of the form: Cast  h  3Rewrite all children of an expression of the form: Cast  h  3Rewrite any children of an expression of the form: Cast  h  0Rewrite one child of an expression of the form: Cast  h  %Transform an expression of the form: Tick   h3Rewrite all children of an expression of the form: Tick   h3Rewrite any children of an expression of the form: Tick   h3Rewrite any children of an expression of the form: Tick   h%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   h or Def   h1Rewrite all children of a definition of the form NonRec   h or Def   h1Rewrite any children of a definition of the form NonRec   h or Def   h.Rewrite one child of a definition of the form NonRec   h or Def   h'Transform a binding group of the form: Rec [(,  h)]5Rewrite all children of a binding group of the form: Rec [(,  h)]5Rewrite any children of a binding group of the form: Rec [(,  h)]2Rewrite one child of a binding group of the form: Rec [(,  h)]"Transform a program of the form: (NonRec   h) : 4Rewrite all children of an expression of the form: (NonRec   h) : 4Rewrite any children of an expression of the form: (NonRec   h) : 1Rewrite one child of an expression of the form: (NonRec   h) : &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 [(,  h)]) : 4Rewrite all children of an expression of the form: (Rec [(,  h)]) : 4Rewrite any children of an expression of the form: (Rec [(,  h)]) : 1Rewrite one child of an expression of the form: (Rec [(,  h)]) : %Transform an expression of the form: Let (NonRec   h)  h3Rewrite all children of an expression of the form: Let (NonRec   h)  h3Rewrite any children of an expression of the form: Let (NonRec   h)  h0Rewrite one child of an expression of the form: Let (NonRec   h)  h%Transform an expression of the form: Let (Rec [])  h3Rewrite all children of an expression of the form: Let (Rec [])  h3Rewrite any children of an expression of the form: Let (Rec [])  h0Rewrite one child of an expression of the form: Let (Rec [])  h%Transform an expression of the form: Let (Rec [(,  h)])  h3Rewrite all children of an expression of the form: Let (Rec [(,  h)])  h3Rewrite any children of an expression of the form: Let (Rec [(,  h)])  h0Rewrite one child of an expression of the form: Let (Rec [(,  h)])  h%Transform an expression of the form: Case  h   [( ", [],  h)]3Rewrite all children of an expression of the form: Case  h   [( ", [],  h)]3Rewrite any children of an expression of the form: Case  h   [( ", [],  h)]0Rewrite one child of an expression of the form: Case  h   [( ", [],  h)]4Transform all top-level binding groups in a program.2Rewrite all top-level binding groups in a program.2Rewrite any top-level binding groups in a program.2Rewrite any top-level binding groups in a program.Transform a type of the form: TyVarTy  Rewrite the  child of a type of the form: TyVarTy Transform a type of the form: LitTy  Rewrite the  child of a type of the form: LitTy Transform a type of the form: AppTy  ,Rewrite all children of a type of the form: AppTy  ,Rewrite any children of a type of the form: AppTy  )Rewrite one child of a type of the form: AppTy  Transform a type of the form: FunTy  ,Rewrite all children of a type of the form: FunTy  ,Rewrite any children of a type of the form: FunTy  )Rewrite one child of a type of the form: FunTy  Transform a type of the form: ForAllTy  ,Rewrite all children of a type of the form: ForAllTy  ,Rewrite any children of a type of the form: ForAllTy  )Rewrite one child of a type of the form: ForAllTy  Transform a type of the form: TyConApp  [ {],Rewrite all children of a type of the form: TyConApp  [ {],Rewrite any children of a type of the form: TyConApp  [ {])Rewrite one child of a type of the form: TyConApp  [ {]"Transform a coercion of the form: Refl o  Rewrite the " child of a coercion of the form: Refl o "Transform a coercion of the form:  TyConAppCo o  [ ]0Rewrite all children of a coercion of the form:  TyConAppCo  [ ]0Rewrite any children of a coercion of the form:  TyConAppCo  [ ]-Rewrite one child of a coercion of the form:  TyConAppCo  [ ]"Transform a coercion of the form: AppCo    0Rewrite all children of a coercion of the form: AppCo    0Rewrite any children of a coercion of the form: AppCo     -Rewrite one child of a coercion of the form: AppCo     "Transform a coercion of the form: ForAllCo    0Rewrite all children of a coercion of the form: ForAllCo    0Rewrite any children of a coercion of the form: ForAllCo    -Rewrite one child of a coercion of the form: ForAllCo   "Transform a coercion of the form: CoVarCo  Rewrite the " child of a coercion of the form: CoVarCo "Transform a coercion of the form:  AxiomInstCo ( )  [ ]0Rewrite all children of a coercion of the form:  AxiomInstCo ( )  [ ]0Rewrite any children of a coercion of the form:  AxiomInstCo ( )  [ ]-Rewrite one child of a coercion of the form:  AxiomInstCo ( )  [ ]"Transform a coercion of the form: SymCo   Rewrite the  " child of a coercion of the form: SymCo  "Transform a coercion of the form: TransCo    0Rewrite all children of a coercion of the form: TransCo    0Rewrite any children of a coercion of the form: TransCo    -Rewrite one child of a coercion of the form: TransCo    "Transform a coercion of the form: NthCo   0Rewrite all children of a coercion of the form: NthCo   0Rewrite any children of a coercion of the form: NthCo   -Rewrite one child of a coercion of the form: NthCo   "Transform a coercion of the form: LRCo    2Transform all children of a coercion of the form: LRCo     2Transform any children of a coercion of the form: LRCo    !/Transform one child of a coercion of the form: LRCo    ""Transform a coercion of the form: InstCo   #0Rewrite all children of a coercion of the form: InstCo   $0Rewrite any children of a coercion of the form: InstCo   %-Rewrite one child of a coercion of the form: InstCo   & Transform a clause of the form: Conj  '0Rewrite all children of a clause of the form: : Conj  ( Transform a clause of the form: Disj  )0Rewrite all children of a clause of the form: : Disj  * Transform a clause of the form: Impl   +0Rewrite all children of a clause of the form: : Impl  , Transform a clause of the form: Equiv  h  h-0Rewrite all children of a clause of the form: : Equiv  h  h. Transform a clause of the form: Forall '[CoreBndr]' /"Rewrite the a clause of the form: Forall '[CoreBndr]' qWalking over modules, programs, binding groups, definitions, expressions, case alternatives, types and coercions.Walking over modules, programs, binding groups, definitions, expressions, case alternatives, types, coercions, lemma quantifiers and lemma clauses.Walking over modules, programs, binding groups, definitions, expressions, case alternatives, lemma quantifiers and lemma clauses.!Walking over types and coercions.Walking over coercions (only).Walking over types (only)._Walking over modules, programs, binding groups, definitions, expressions and case alternatives.      !"#$%&'()*+,-./0 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef      !"#$%&'()*+,-./00     "#$% !&'()*+,-./      !"#$%&'()*+,-./0 None !"+234=K0\*The class of things that can be made into `s. To be an \ there must exist an isomorphic ] type that is an instance of .]An isomorphic wrapper.^Wrap a value in a ]._Unwrap a value from a ].`An ` is a C value with some associated meta-data (name, help string and tags).aGet the name of an `.bGet the  value stored in an `.cGet the list of help ? s for an `.d List all the js associated with an `e"Tags are meta-data that we add to `'s to make them sortable and searchable.fAdd a e to an `.g Remove a e from an `.h Check if an ` has the specified e.i*A data type of logical operations on tags.j7Requirement: commands cannot have the same name as any j@ (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.ksA command that will be removed in a future release; it has probably been renamed or subsumed by another command.lThings we are trying out.m+An incomplete or potentially buggy command.n#Commands related to proving lemmas.o0Include in Strict Safety mode (currently unused)pCommands that are not type safe (may cause Core Lint to fail), or may otherwise change the semantics of the program. Only available in unsafe mode!q2A command that uses its context, such as inlining.r Version control for Core syntax.s(Commands specifically to help debugging.t(Alters the strictness of the expression.u4Operation has a (perhaps undocumented) precondition.v&Commute is when you swap nested terms.w%Introduce something, like a new name.xSomething that passes or fails.y'Extract information from an expression.zUses c or X to focus onto something.{+Command operates on local nodes only, O(1).|,Command may make a deep change, can be O(n).}#Command may operate multiple times.~GH 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 es. An "or" on es. A "not" on es.The primitive way to build an `. Get all the `Qs which match a given tag predicate and box a Transform of the appropriate type.Build a IJ from names to help information.<Get a string representation of the (monomorphic) type of an `Remove the word ] from a string.~123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~``abcdabc\]^_j~}|{zyxwvutsrqponmlkiefghdQRSVWXYKLTUOPMNZ[GHEFCDIJAB?@;<9:7856=>3412B123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij~}|{zyxwvutsrqponmlkf None3Exposed debugging `s.If the  fails, print out the <, with a message.Print out the <, with a message.3Just say something, every time the rewrite is done. Show before and after a rewrite.None3MT;- This list contains reflections of the KURE strategies as `s.JTest if a rewrite would succeed, producing a string describing the result.4Top-down traversal tuned to matching function calls.4Top-down traversal tuned to matching function calls.CbetweenR x y rr -> perform rr at least x times and at most y times.None`s for individual Us.None+24=KA 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.vMake a qualified HermitName from a String representing the module name and a String representing the occurrence name.-Make an unqualified HermitName from a String.!Parse a HermitName from a String.+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.?Looks for Named in current GlobalRdrEnv. If not present, calls .:Looks for Named in package database, or built-in packages.$Helper to call lookupRdrNameInModule7Looks for Named amongst GHC's built-in DataCons/TyCons.-We have a name, find the corresponding Named. Make a  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.CMake a new variable of the same type, with a modified textual name. An instance of   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  Q cannot be used to look up TyVars. TODO: add function for this, or modify GHC's ?C     025     None3MT9apply 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.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  None3HM *Traditional Static Argument TransformationOStatic Argument Transformation that only considers type arguments to be static._Static Argument Transformations which requires that arguments in the given position are static.YGeneralized Static Argument Transformation, which allows static arguments to be filtered.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.>Like mkCoreApps, but automatically beta-reduces when possible. Cgiven list of static args and positions, decided which to transform   None3MTA LemmaLibrary is a transformation that produces a set of lemmas, which are then added to the lemma store. It is not allowed to insert its own lemmas directly (if it tries they are throw away), but can certainly read the existing store.HExternals 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.JSubstitute all occurrences of a variable with an expression, in a program. from GHC documentationDe-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, becuase substitution returns a result that has no-shadowing guaranteed.(Actually, within a single type* there might still be shadowing, because  @ is a no-op for the empty substitution, but that's probably OK.)-Try to figure out the arity of an identifier.cRun the Core Lint typechecker. Fails on errors, with error messages. Succeeds returning warnings.Note: this can miss several things that a whole-module core lint will find. For instance, running this on the RHS of a binding, the type of the RHS will not be checked against the type of the binding. Running on the whole let expression will catch that however.Lifted version of .Zap the  in a zombie identifier.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        None3M Externals for alpha-renaming. ACollect all visible variables (in the expression or the context). vIf a name is provided, use that as the name of the new variable. Otherwise modify the variable name making sure to not9 clash with the given variables or any visible variables.mUse the optional argument if given, otherwise generate a new name avoiding clashes with the set of variables.cInvent a new String based on the old one, but avoiding clashing with the given list of identifiers.UDiscard variables from the first set that do not shadow a variable in the second set.[Shadows are any duplicates in the list, or any occurrences of the list elements in the set.oRename local variables with manifestly unique names (x, x0, x1, ...). Does not rename top-level definitions.Replace all occurrences of a specified variable. Arguments are the variable to replace and the replacement variable, respectively.EAlpha rename a lambda binder. Optionally takes a suggested new name.CAlpha rename a case binder. Optionally takes a suggested new name. \Rename the specified variable in a case alternative. Optionally takes a suggested new name.!Rename the specified variables in a case alternative, using the suggested names where provided. Suggested names *must* be provided in left-to-right order matching the order of the alt binders.XRename the variables bound in a case alternative with the given list of suggested names.5Rename the specified variables in a case alternative.3Rename all identifiers bound in a case alternative.2Rename all identifiers bound in a case expression."PAlpha rename a non-recursive let binder. Optionally takes a suggested new name.#}Alpha rename a non-recursive let binder if the variable appears in the argument list. Optionally takes a suggested new name.$^Rename the specified identifiers in a recursive let, using the suggested names where provided.MRename the identifiers bound in a Let with the given list of suggested names..Rename the specified variables bound in a let.&Rename all identifiers bound in a Let.%VAlpha rename a non-recursive top-level binder. Optionally takes a suggested new name.&Alpha rename a non-recursive top-level binder if the identifier appears in the argument list. Optionally takes a suggested new name.'Rename the specified identifiers in a recursive top-level binding at the head of a program, using the suggested names where provided.xRename the identifiers bound in the top-level binding at the head of the program with the given list of suggested names.YRename the specified variables bound in the top-level binding at the head of the program. QRename all identifiers bound in the top-level binding at the head of the program.!.Rename all identifiers bound at the top-level."sAlpha rename any bindings at this node. Note: does not rename case alternatives unless invoked on the alternative.%   () !"#$%&' !"*    !" " !  %   () !"#$%&' !"*None3EM)`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.0uThe 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.1cCheck that all free variables in an expression are bound. Fails, listing unbound variables if not.+kEnsure all the free variables in an expression were bound above a given depth. Assumes minimum depth is 0.2Return the unfolding of an identifier, and a predicate over the binding depths of all variables within that unfolding to determine if they have been captured in their new location.,Convert lhs of case alternative to a constructor application expression, failing in the case of the DEFAULT alternative. Accepts a list of types to apply to the constructor before the value args. data T a b = C a b Int Pseudocode: Aalt2Exp (...) [a,b] (C, [x,y,z]) ==> C a b (x::a) (y::b) (z::Int)4BGet list of possible inline targets. Used by shell for completion.-$Build a CoreExpr for a DFunUnfolding#$%&'()*+,-./04Only inline identifiers that satisfy this predicate.1+23,4-#$%&'()*+,-./01234)#%$&('231-*+,./04#%$&(')*+,-./01+23,4-None )+234=KMT5*Language constructs that can be zoomed to.C`)s involving navigating to named entities.D&Discard the last crumb of a non-empty .E&Find the path to the RHS of a binding.F1Find the path to the binding group of a variable.G+Find the path to the binding of a variable.H4Find the path to the first occurrence of a variable..4Find the path to an application of a given function.IFind all possible targets of H.JFind all possible targets of G.KFind all possible targets of F.LFind all possible targets of E.M{Lookup table for constructs that can be considered; the keys are the arguments the user can give to the "consider" command.N.Find the path to the first matching construct.PAConstruct 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.0;Construct a path to the body of a sequence of let bindings.1%Construct a path to end of a program.2:Construct a path to the end of a program, starting at the .556789:;<=>?@ABCDEFGH.3456789:;<=>?@IJKLAMNOBCPD/012EF56789:;<=>?@ABCDEFGHIJKLMNOPCHGFEDIJKL5BA@?>=<;:9876MNPO(5 BA@?>=<;:9876CDEFGH.3456789:;<=>?@IJKLAMNOBCPD/012EFNone3TQHExternals that reflect GHC functions, or are derived from GHC functions.S7Compare the core fragments at the end of the specified s.T>Compare the definitions of two identifiers for alpha-equality.GHCompare the definitions of the two named identifiers for alpha-equality. QRHIJKLMSTGQRSTQRST QRHIJKLMSTGNone3EMTV$Perform one or more beta reductions.WA more powerful inlineo. Matches two cases: Var ==> inlines App ==> inlines the head of the function call for the app treeUVWXYZ[\UVWXYZ[\UVWXYZ[\UVWXYZ[\None *+-./02345689:;=?BCDEGHJKMParse a Q to a  h, using the current context.NOPQRS]^_`abcdefghijklmnopqrstuvwxyz{|}~TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-]^_`abcdefghijklmnopqrstuvwxyz{|}~-]~}|{zyxwvutsrqponmlkjihgfedcba`_^\NOPQRS]"~}|{zyxwvutsrqponmlkjihgfedcba`_^TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~P Q NoneNone )+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 spaces!Use css to do the colors - - >  styletype="text/css"4 - > .hermit-syntax { - > color: red; - > /styleAttr just popped, if any Attr stackggL  None )+24=EK kAn equality is represented as a set of universally quantified binders, and the LHS and RHS of the equality.Rewrite using a compiled fold. Useful inside traversal strategies like anytdR, because you can compile the fold once outside the traversal, then apply it everywhere in the tree.Attempt to apply a list of Equalitys to the given expression, folding the left-hand side into an application of the right-hand side. This implementation depends on Z being well-formed. That is, both the LHS and RHS are NOT lambda expressions. Always use  to ensure this is the case.8Compile a list of Equality's into a single fold matcher.AAttempt to fold an expression using a matcher in a given context.Attempt to fold an expression using a matcher in a given context. Return resulting expression and a map of what when in the holes in the pattern.2Determine if two expressions are alpha-equivalent.Determine if the left Clause  the right Clause. Here,  means that the clause is a substitution instance of the left one, where the top-level binders of the left clause are the holes.}Determine if the right Clause is a substitution instance of the left Clause (which is a pattern with a given set of holes).Build an equality from a list of universally quantified binders and two expressions. If the head of either expression is a lambda expression, it's binder will become a universally quantified binder over both sides. It is assumed the two expressions have the same type.Ex. mkEquality [] (x. foo x) bar === forall x. foo x = bar x mkEquality [] (baz y z) (x. foo x x) === forall x. baz y z x = foo x x mkEquality [] (x. foo x) (y. bar y) === forall x. foo x = bar xFlip the LHS and RHS of a .p      !"#$%&6       !"#$%&NonePretty print a fragment of GHC Core using HERMIT's "AST" pretty printer. This displays the tree of constructors using nested indentation.'()    * +,            '()    * +, NoneTUJPretty print a fragment of GHC Core using HERMIT's "Clean" pretty printer.G-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh  =-/.0876543219:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh!NoneJThis pretty printer is just a reflection of GHC's standard pretty printer. i !"j#$%  !"#$% ! "#$% i !"j#$%"NoneMkA k 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.lBuild a IJ from names to  values.'#Create a dictionary from a list of `s.(!The pretty-printing dictionaries. klm&'(nop&'('&( klm&'(nop#None3MTU)Externals relating to   expressions.*=(let x = e1 in e2) ==> (e2[e1/x]), (x must not be free in e1)+As -[, but attempting to convert a singleton recursive binding to a non-recursive binding first.,Let (NonRec v e) body ==>  body[e/v]-Currently we always substitute types and coercions, and use a heuristic to decide whether to substitute expressions. This may need revisiting.//Remove an unused non-recursive let binding. let v = E1 in E2 ==> E2, if v is not free in E20>Remove all unused recursive let bindings in the current group.3,Remove all unused bindings at the top level.4let v = ev in e ==> case ev of v -> e5(let v = ev in e) x ==> let v = ev in e x6f (let v = ev in e) ==> let v = ev in f e7let v = (let bds in e1) in e2 ==> let bds in let v = e1 in e28( 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.9!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.:ocase 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.;cast (let bnds in e) co ==> let bnds in cast e co<Float a  - through an expression, whatever the context.= ( # v (  bds e)) p ==>  bds ( ( # v e) p)> Float in a   if possible.?let 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)Alet v = ev in x -> e ==> x -> let v = ev in e if v does not shadow xBRe-order a sequence of nested non-recursive let bindings. The argument list should contain the let-bound variables, in the desired order.CCombine 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}De ==> let v = e in vEbody ==> let v = e in bodyFprog ==>  (v = e) progGEnonRecIntroR nm e = 'letNonRecIntroR nm e' <+ 'progNonRecIntroR nm e'HIntroduce a local definition for a (possibly imported) identifier. Rewrites occurences of the identifier to point to this new local definiton.")*+,-q./0123r456789:;<=>?@ABCDEFGH )*+,-./0123456789:;<=>?@ABCDEFGH ),-*+./0123DEFGH56789:;<=>@?ABC4")*+,-q./0123r456789:;<=>?@ABCDEFGH$None3JHTest if the current expression is an identifier matching the given name.Kprog ==>  (v = e) progIJKIJKIJKIJK%None *+-./02345689:;=?BCDGHJKMLGParse a CoreString into a Type, where all type variables must be bound.MCParse a CoreString into a Type, any unbound variables are returned.NParse a Q to a , using the current context.OParse a Q to a >, using the current context, returning unbound type variables.Ystuvwxyz{|}~LMNOLMNOLNMORstuvwxyz{|}~LMNOu v &None)+234=EKMTT"f == g ==> forall x. f x == g xUe ==> let v = lhs in eVe ==> let v = rhs in eW Create a  from a .XLift a transformation over 04 into a transformation over the left-hand side of a .YLift a transformation over 05 into a transformation over the right-hand side of a .ZLift a transformation over 0, into a transformation over both sides of a .[Lift a rewrite over 0- into a rewrite over the left-hand side of a .\Lift a rewrite over 0. into a rewrite over the right-hand side of a .]Lift a rewrite over 0% into a rewrite over both sides of a .iXGiven two expressions, and a rewrite from the former to the latter, verify that rewrite.jgGiven two expressions, and a rewrite to apply to each, verify that the resulting expressions are equal.kOGiven f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y and g (f x) ==> x.l=Given f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y.mPGiven f :: X -> Y and g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y.Given  f :: X -> Y and  g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y.qOReplace all occurrences of the given expression with a new quantified variable.e ==> let v = lhs in e3 (also works in a similar manner at Program nodes)e ==> let v = rhs in e3 (also works in a similar manner at Program nodes)MPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxmodify lemma namerewrite the quantified clausemodify proven statusmodify used statusyz{|}~3PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3SRUVWTrsvwtuyzx_^`baXYZ[\]cdheijklfgmonpq|{}~PQLPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{|}~ 'None3EMTTRemember a binding with a name for later use. Allows us to look at past definitions.UUnfold a remembered definition (like unfoldR, but looks in stash instead of context).QFold a remembered definition (like foldR, but looks in stash instead of context).'Fold any of the remembered definitions.GCompile all remembered definitions into something that can be run with (None+234=K)Externals dealing with GHC rewrite rules.hLookup a rule by name, attempt to apply it left-to-right. If successful, record it as an unproven lemma.wLookup a set of rules by name, attempt to apply them left-to-right. Record an unproven lemma for the one that succeeds.hLookup a rule by name, attempt to apply it left-to-right. If successful, record it as an unproven lemma.wLookup a set of rules by name, attempt to apply them left-to-right. Record an unproven lemma for the one that succeeds.TCan be used with runFoldR. Note: currently doesn't create a lemma for the rule used.\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.4Print a named CoreRule using the quantified printer..Build an Clause from a named GHC rewrite rule.(Transform GHC's CoreRule into an Clause.9Run GHC's specConstr pass, and apply any rules generated.=Run GHC's specialisation pass, and apply any rules generated.gGet all the specialization rules on a binding. These are created by SpecConstr and other GHC passes.Promote  to CoreBind.1Find all specialization rules in a Core fragment.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.)None36Check if the current expression is an undefined value.6Check if the current expression is an undefined value. error ty string ==> undefined ty*Make an undefined value of the given type.Set the current expression to .9Replace all occurrences of the specified identifier with .vundefinedExprR = undefinedAppR <+ undefinedLamR <+ undefinedLetR <+ undefinedCastR <+ undefinedTickR <+ undefinedCaseR(undefined ty1) e ==>  undefined ty2( v -> undefined ty1) ==>  undefined ty2 (where v is not a )*let bds in (undefined ty) ==> undefined ty)Cast (undefined ty1) co ==> undefined ty2+Tick tick (undefined ty1) ==> undefined ty1>undefinedCaseR = undefinedCaseScrutineeR <+ undefinedCaseAltsR,case (undefined ty) of alts ==> undefined tyhcase e of {pat_1 -> undefined ty ; pat_2 -> undefined ty ; ... ; pat_n -> undefined ty} ==> undefined tyXVerify that the given rewrite is a proof that the given expression is a strict function.<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 used*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".  +None3EMTU'Externals relating to Case expressions.:case s of w; C vs -> e ==> e if w and vs are not free in eM(case s of alt1 -> e1; alt2 -> e2) v ==> case s of alt1 -> e1 v; alt2 -> e2 v$f (case s of alt1 -> e1; alt2 -> e2) ==> $case s of alt1 -> f e1; alt2 -> f e2 Only safe if f is strict.$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.case (case s1 of alt11 -> e11; alt12 -> e12) of alt21 -> e21; alt22 -> e22 ==> case s1 of alt11 -> case e11 of alt21 -> e21; alt22 -> e22 alt12 -> case e12 of alt21 -> e21; alt22 -> e22Glet v = case s of alt1 -> e1 in e ==> case s of alt1 -> let v = e1 in e7cast (case s of p -> e) co ==> case s of p -> cast e covcaseFloatR = caseFloatAppR <+ caseFloatCaseR <+ caseFloatLetR <+ caseFloatCastR Note: does NOT include caseFloatArg%Float in a Case whatever the context.Unimplemented!Unfold the case scrutinee and then perform case reduction. If first argument is True, perform substitution in RHS, if False, build let expressions.Case of Known Constructor. Eliminate a case if the scrutinee is a data constructor or a literal. If first argument is True, perform substitution in RHS, if False, build let expressions.Case of Known Constructor. Eliminate a case if the scrutinee is a literal. If first argument is True, perform substitution in RHS, if False, build let expressions. NB: LitAlt cases don't do evaluationCase of Known Constructor. Eliminate a case if the scrutinee is a data constructor. If first argument is True, perform substitution in RHS, if False, build let expressions.SCase split on an arbitrary scrutinee s. All free variables in s should be in scope.*E.g. If s has type [a], then case-split s:Ee ==> case s of w [] -> e[w/s] (a:as) -> e[w/s]BNote that occurrences of s in e are replaced with the case binder.YForce evaluation of an identifier by introducing a case. This is equivalent to adding (seq v) in the source code.e -> case v of v _ -> epLike caseSplit, but additionally inlines the constructor applications for each occurance of the named variable. DcaseSplitInline idPred = caseSplit idPred >>> caseInlineAlternativeRQInline the case binder as the case scrutinee everywhere in the case alternatives.[Inline the case binder as the case-alternative pattern everywhere in the case alternatives.lMerge all case alternatives into a single default case. The RHS of each alternative must be the same. 3case s of {pat1 -> e ; pat2 -> e ; ... ; patn -> e} ==> case s of {_ -> e}[In the case alternatives, fold any occurrences of the case alt patterns to the case binder.A cleverer version of  mergeCaseAltsf that first attempts to abstract out any occurrences of the alternative pattern using the case binder.OEliminate a case, inlining any occurrences of the case binder as the scrutinee.Eliminate a case, merging the case alternatives into a single default alternative and inlining the case binder as the scrutinee (if possible).1Eliminate a case that corresponds to a pointless .NWill forcing the expression to WHNF always force one of the given identifiers?"FMaybe the function to float past, and maybe a proof of its strictness.",None3EMU-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).%(let v = e1 in e2) ==> (\ v -> e2) e1(\ v -> f v) ==> fe1 ==> (\ v -> e1 v) Perform multiple eta-expansions.[Flatten all the top-level binding groups in the module to a single recursive binding group.oFlatten all the top-level binding groups in a program to a program containing a single recursive binding group.ZFlatten all the top-level binding groups in a program to a single recursive binding group.=Abstract over a variable using a lambda. e ==> ( x. e) xZPush a function through a Case or Let expression. Unsafe if the function is not strict. Oa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functionOa proof that the function (after being applied to its type arguments) is strict$a predicate to identify the functionL*+,-./0123456789:;<=>?@ABCDEFGH  .None3MGUnfold 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  or .Bash 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.MAn extensible bash. Given rewrites are performed before normal bash rewrites.Like , 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. Perform the bash) algorithm with a given list of rewrites.Smash 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".           /None+3=K%New Worker/Wrapper-related externals.   0NoneSExternals for manipulating fixed points, and for the worker/wrapper transformation.For any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then fix A f <==> )wrap (fix B (\ b -> unwrap (f (wrap b))))For any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then fix A f <==> )wrap (fix B (\ b -> unwrap (f (wrap b))))Given wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then unwrap (wrap work) <==> workGiven wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then unwrap (wrap work) <==> workXSave the recursive definition of work in the stash, so that we can later verify uses of 2. Must be applied to a definition of the form: work = unwrap (f (wrap work))9 Note that this is performed automatically as part of .\ 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)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 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.wrap (unwrap a) <==> awrap (unwrap a) <==> awrap (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 fWW Assumption AwrapunwrapWW Assumption AwrapunwrapWW Assumption BwrapunwrapfWW Assumption BwrapunwrapfWW Assumption CwrapunwrapfWW Assumption CwrapunwrapfwrapunwrapfwrapunwrapWW Assumption AwrapunwrapfWW Assumption BwrapunwrapfWW Assumption C  1NoneESExternals 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 x%abs (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 Aabsrep$WW Assumption AabsrepWW Assumption Babsrepf%WW Assumption BabsrepfWW Assumption Cabsrepf&WW Assumption Cabsrepf'absrepf(absrepWW Assumption A)absrepfWW Assumption B*absrepfWW Assumption C+   !"#$%&'()*+2None List of all `s provided by HERMIT.r     !"#$%&'(*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPRSTVWXYZ[\*+,-./0123456789:;<=>?@ABCDEFGHJKPQRTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3None !"+3=EHKM ,Internal API. The  object wraps these calls. A handle for a specific version of the .- Currently  s are identified by an  label.A 1 is a repository for complete Core syntax trees ( ) and Lemmas. 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  to the  4, return the resulting value, and potentially a new  .,Delete the internal record of the specified  . List all the  s tracked by the , including version data.4Log a new AST with same Lemmas/ModGuts as given AST..Put a / in the  , returning the   to which it was assigned.LStart a HERMIT client by providing an IO callback that takes the initial  and inital   handle. The callback is only ever called once. The 'Modguts -> CoreM Modguts' function required by GHC Plugins is returned.-,0123 /45678 9:; -  <=>.?!Global (across passes) AST store.Last GHC pass nameCallback@ABCDE          ,3210 /45678 9:; -  <=>.?@ABCDE4None%An enumeration type for GHC's passes.5Given a list of ms, produce the  to % function required to build a plugin.6;Build a plugin. This mainly handles the per-module options.FDetermine whether to act on this module, selecting global store. NB: we have the ability to stick module info in the pass info hereGKFilter options to those pertaining to this module, stripping module prefix.9nIf HERMIT user specifies the -pN flag, get the N TODO: as written will discard other flags that start with -p# !"#$%&'()*+,-./0123456FG78H9  !"#$%&'()*+,-./0123456789 5643210/.-,+*)('&%$#"! 879 43210/.-,+*)('&%$#"! 56FG78H95None!"+234=BKMTFthe current ASTGwhich pretty printer to useH"the way of outputing to the screenIthe list of ticked messagesJ3if true, run Core Lint on module after each rewrite:;<=>?@ABCDEFGHIJKLMNOPQRSTU:;<=>?@ABCDEFGHIJKLMNOPQNKLMOUTSDEFGHIJ@ABC<?>=:;RPQ :;<?>=@ABCDEFGHIJKLMNOPQRSTU6None3VWXVWXVWXVWX7None3 YZ[\]^_`abcde YZ[\]^_`ab [\YZed]^_`cab YZ[\]^_`abcde8None!"&)+368=BHKMTfJA primitive means of denoting navigation of a tree (within a local scope).gTophUprlemma we are provingt&context in which lemma is being provedupath into lemma to focus onyAccess 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.zconsole height, in lines|keyboard input the nav panel}focus assigned to each AST~list of tags on an AST"stack of todos for the proof shellDpath to beginning of window, always a prefix of focus path in kernelCurrently visible externalsDNothing = no script running, otherwise the remaining script commands'which level of safety we are running in0updated by kernel env with temporary obligations"Any exception will cause an abort."Print diffs instead of full focus.This 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.ELift a CLT IO computation into a computation in an arbitrary CLMonad..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. Always returns a non-empty list.xOur own custom instance of Monad for CLT so we don't have to depend on newtype deriving to do the right thing for fail.wfghijklmnopqrstuvwxyz{|}~ofghijklmnopqrstuvwxyz{|}~wwxyz{|}~vpqrstulonmjkifhgLfhgijklonmpqrstuvwxyz{|}~9None !"&)3=MAn  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.IJKLMNOP IJKLMNOP:None &+3=KMT<KernelEffects are things that affect the state of the Kernel QRSTU QRSTU;None!"&+36=BKMT V  V<None &+36=KMTwA 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.$WXYZ[\]^_`abcdefghWZYX[]\^ba`_cdefgh=None&+2346=EKMTi!Check for alpha-equivalence firstjAssume*Run the technique, mark Proven if succeeds ,Externals that get us into the prover shell.kOExternals that are added to the dictionary only when in interactive proof mode.lTop level entry point!mIVerify that the lemma has been proven. Throws an exception if it has not.nij   kl  mop             nji   kl  mop>None&3TqTake 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")rstuvwxyz{|}~qr~}|{zyxwvutsq?None3M    @None!"&3=KMTU4The first argument includes a list of files to load.Like , but checks the  setting and does so if needed.HInterpret a boxed thing as one of the four possible shell command types. ]ab ]abANone !"3=BET>Run a PluginM function on the current AST and update ps_cursorJRun a PluginM function on the current AST, update ps_cursor, return result !"#$%&'()*+,-./01234 !"#$%&'()*+,-./01234"#%$'&(!234)*+,-./10  !"#$%&'()*+,-./01234BNone5555CNone6666KLMKLNKLOKLPKLQKLRKLSKLTKLUKVWKXYKZ[K\]K^_K`aKbcKbdKefKghKgiKggKjkKlmKlnKllKllKLoKpqKprKpsKptKpuKppKpvKpwKpxKpyKpzKp{Kp|K}~      !"#$%&'()*+,-./0123456789:;<=:>>?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`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 { | } ~                                                                               H                         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~b      !"#$%&'()*+,  # $ % & ( ) ' * , +!!#!$!%!&!'!(!)!*!+!,"-"."/##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&{&|&}&~&&&&&&&&'''''''(((((((((((((((())))))))))))))))))********++++++++++++++++++++++++++++,,-----------........../////////////0000000001111111112333333333333333 3 3 3 3 444444444444444444444 4!4"4#4$4%4&4'4(4)4*4+5,5,5-5.5/5051515253545455565758595:5:5;5<5=5>5?5@5A5B5C6D6E6F7G7G7H7I7J7K7L7M7N7O7P7Q7R8S8T8U8V8W8W8X8Y8Z8[8\8]8^8_8`8a8b8c8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8s8t8u8v8w8x8y8z88{8|8}8~8888888888888888888888888888888888>8888888888888888888888888888888888888999999:::::S:::;;;;;;;;;<<<<<<<<<<<<<<<<<<==========>???????????@@@AAAAAAA A A A A AAAAAAAAADAABCDDDDDDDD !"#$%&''()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~FFFFFFFFFFFFF!!!"!"KKKKKKKKKKKKD!!!!!!! K  K  K  KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKUKVKWKKKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiK-KjKklKXmKnoKpqKrsKtuKtvKwxKwyKwzKw{Kw|Kw}Kw~KwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKpKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K]K^K_K`KaKbKcKdKeKfKgKhKiKjKjKkKlKmKnKnKoKpKqKrKsKtKuKvKwKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K !K "K #K $K %K &K 'K (K )K )K *K +K ,K *K -K .K /K 0K 1K /K 2K 3K 4K 5K 6K 7K 8K 8K 9K :K ;K <K =K >K >K ?K @K AK BK CK CK DK EK FK GK HK IK JK KK LK MK NK OK PK QK RK SK SK T UK V WK V XK V YK V ZK V [K V \K V ]K V ^K V _K V `K V aK V bK V cK V dK V eK V fK V gK h iK h jK h kK h lK h mK h nK h oK h pK h qK h rK h sK h tK h uK h vK h wK h xK h yK h zK h {K h |K h }K h ~K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K h K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K  K K K K  K  K K K K K K K K K K K K K K K K K K K K K K K K K  K  K K K K K K K K K K K K K K K K K  K  K  K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K !K "K #K $K %K &K 'K (K )K *K +K ,K -K .K /K 0K 1K 2K 3K 4K 5K 6K 7K 8K 9K :K ;K <K =K >K ?K @K AK BK CK DK EK FK GK HK IK JK KK LK MK NK OK PK QK RK SK TK UK VK WK XK YK ZK [ \K [ ]K [ ^K [ _K [ `K [ aK [ bK [ cK [ dK [ eK [ fK [ gK [ hK [ iK [ jK [ kK [ lK [ mK [ nK [ oK [ pK [ qK [ rK [ sK [ tK [ uK [ vK [ wK [ xK [ yK [ zK [ {K [ |K [ }K [ ~K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K [ K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K  K  K  K  K  K  K -K oK  K  K  K  K  K  K  K  K  K  K  K K K K  K K K  K K K  K  K K K K K K K K K K  K K K  K  K  K  K  K  K  K  !K  "K  #K  $K  %K  &K 'K (K )K  *K +K ,K -K .K /K 0K 1K 2K 3K  4K  5K  6K  7K  8K  9K :K ;K  <K =K >K ?K  @K  AK  BK  CK  DK  EK  FK  GK  HK  IK  JK  KK  LK  MK  NK  OK  PK  QK  RK  SK  TK  UK  VK  WK  XK  YK  ZK  [K  \K  ]K  ^K _ `K a bK a cKl dKl eKl fKl gKl hKl iKl jKl kKl lKl mKl nKl oKl pKl qKl rKl sKl tKl uKl vKl wKl xKl yKl zKl {Kl |Kl }Kl ~Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl Kl KllK K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K !K "K  #K $K %K &K 'K (K  )K  *K  +K  ,K  -K  .K  /K  0K  1K 2K 3K 4K 5K 6K 7K 8K 9K :K ;K <K =K >K ?K @K AK BK CK DK EK FK GK HK IK JK KK LK MK NK OK PK QK RK SK TK UK VK WK XK YK ZK [K \K ]K ^K _K `K aK bK cK dK eK fK gK hK iK jK kK lK mK nK oK pK qK rK sK tK uK vK wK xK yK zK {K |K }K ~K K K K K K K K K K K K K K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K K  K  K  Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko Ko !Ko "Ko #Ko $Ko %Ko &Ko 'Ko (Ke )Ke *Ke +Ke ,Ke -Ke .Ke /Ke 0Ke 1Ke 2Ke 3Ke 4KL 5KL 6KL 7KL 8KL 9KL :KL ;KL <KL =KL >KL ?KL @KL AKL BKL CKL DKL EKL FKL GKL HKL IKL JKL KKL LKL MKL NKL OKL PKL QKL RKL SKL TKL UKL VKL WKL XKL YKL ZKL [KL \KL ]KL ^KL _KL `KL `KL aK b cK b dK b eK b fK b gK b hK b iK b jK b kK b lK b mK b nK b oK b pK b qK b rK b sK b tK b uK b vK b wK b xK b yK b zK b {K b |K b }K b ~K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b K b bK b K b K b K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K  K  K  K  K  K K K K K K K K K K K K K K K K K K K  K !K "K #K $K %K &K 'K (K )K *K +K ,K -K .K /K 0K 1K 2K 3K 4K 5K 6K 7K89K:;K:<K:=K:>K:?K:@K:AK:BK:CK:DK:DK:EK:FK:GK:HK:IK:JKKLKgMKgNKgOKgPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K  K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K K K K K K K  KKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKoKoKoKoKoKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@K KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKnKpKqKrsKrtKruKrvKrwKrxKryKrzKr{Kr|Kr}Kr~KrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKrKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKGKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKK !K "K #K $K %K  K [&K ['K [(K [ [K [)K*+K*,K*-K*.K*/K*0K*1K*2K*3K*4K*5K*6K*7K*8K*9K*:K*;K*<K*=K*>K*?K*@K*AK*BK*CK*DK*EK*FK*GK*HK*IK*JK*KK*LK*MK*NK*OK*PK*QK*RK*SK*TK*UK*VK*WK*WK*XK**K*YK*ZK*ZK*[K*\K*]K*^K*_K*`KabKacKadKaeKafKagKahKaiKajKakKalKamKanKaoKapKaqKarKasKatKauKavKawKaxKaaKyzKy{Ky|Ky}Ky~KyyKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKVKXKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLKLKLbKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2KK3K4K5K6K7K8K9K:K;K<K=K>K?KK@KABKACKADKAEKAFKAGKAHKAIKAJKAKKALKAMKANKAOKAPKAQKARKASKATKAUKAVKAWKAXKAYKAZKA[KA\KA]KA^KA_KA`KAaKAbKAcKAdKAeKAfKAgKAhKAAKAAKAiKjkKjlKjmKjnKjoKjpKjqKjrKjsKjtKjuKjvKjwKjxKjyKjzKj{Kj|Kj}Kj~KjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjSKpKpKpKpKpKrrKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK  KKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKKKKKKK K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;K<K=K>K?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKKz{|}~Q                                                                          !"#$%&'()*)+),)-./01234556789:;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;WXYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjklkmknkokpkqkrksktkukvkwkxkykzk{|}|~|||||||||||!!                                        !%&''()"677#$89:;<=>?@AHIJKLMNOPQ%&RSTUVWXYZ[\]^_`abcde'())**+,-./0123456789:;<=>?@ABCDEFGHIJJKKLLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                            !!"E"""""##%%%&%'%'%(%)%%%%%%6%7%7%#%$%8%9%:%;%<%=%>%?%H%I%J%K%L%M%N%O%P%Q%%%&%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&((((((((((( ) !  ) ))))***++++++-!"!"!"!" !"!!"#!"$!"%!"&.'.(.).*.+.,/-/.0/000102030405060708090:0;0<1/10111=1>1?15161718191:1;1@3A33B3C3D33E3F3C3G3H3I3J33K3L33M3N3O3P3Q3R3S3T3U4V4W4X99Y9Z9[9\9]9^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={=|==}=~>>>>>>>>>>>>>>>>>>>>>@@@@AAAAhermit-1.0.0.0 HERMIT.GHCHERMIT.GHC.Typechecker HERMIT.Parser HERMIT.DriverHERMIT.Utilities HERMIT.Core HERMIT.LemmaHERMIT.ContextHERMIT.Kure.Universes HERMIT.Monad HERMIT.KureHERMIT.ExternalHERMIT.Dictionary.DebugHERMIT.Dictionary.Kure#HERMIT.Dictionary.Navigation.Crumbs HERMIT.NameHERMIT.Dictionary.CommonHERMIT.Dictionary.Local.BindHERMIT.Dictionary.Local.CastHERMIT.Dictionary.FunctionHERMIT.Dictionary.GHC!HERMIT.Dictionary.AlphaConversionHERMIT.Dictionary.InlineHERMIT.Dictionary.NavigationHERMIT.Dictionary.QueryHERMIT.Dictionary.UnfoldHERMIT.ParserCoreHERMIT.Dictionary.UnsafeHERMIT.PrettyPrinter.CommonHERMIT.Dictionary.FoldHERMIT.PrettyPrinter.ASTHERMIT.PrettyPrinter.CleanHERMIT.PrettyPrinter.GHCHERMIT.Shell.DictionaryHERMIT.Dictionary.Local.LetHERMIT.Dictionary.NewHERMIT.ParserTypeHERMIT.Dictionary.ReasoningHERMIT.Dictionary.RememberedHERMIT.Dictionary.RulesHERMIT.Dictionary.UndefinedHERMIT.Dictionary.FixPointHERMIT.Dictionary.Local.CaseHERMIT.Dictionary.InductionHERMIT.Dictionary.LocalHERMIT.Dictionary.Composite&HERMIT.Dictionary.WorkerWrapper.Common#HERMIT.Dictionary.WorkerWrapper.Fix)HERMIT.Dictionary.WorkerWrapper.FixResultHERMIT.Dictionary HERMIT.KernelHERMIT.Plugin.BuilderHERMIT.Plugin.TypesHERMIT.Plugin.DisplayHERMIT.Plugin.RendererHERMIT.Shell.TypesHERMIT.Shell.InterpreterHERMIT.Shell.KernelEffectHERMIT.Shell.ShellEffectHERMIT.Shell.ScriptToRewriteHERMIT.Shell.ProofHERMIT.Shell.CompletionHERMIT.Shell.ExternalsHERMIT.Shell.Command HERMIT.PluginHERMIT.Libraries.IntHERMIT HERMIT.Syntax Dictionary Paths_hermitLanguageKUREDataMap ghc-7.8.3TypeRepNumTyLitStrTyLitTyLitTyVarTyAppTyTyConAppFunTyForAllTyLitTyTcErrorsreportAllUnsolvedTcEnvtcLookupGlobal LoadIfaceloadSysInterfaceConvertthRdrNameGuesses CoreArity exprArity OccurAnaloccurAnalyseExpr_NoBinderSwapKindisKindisLiftedTypeKindConTysPrim alphaTyVarsCoAxiom BranchIndexBranchedBagfoldBagPairpSndpFstTypePanicthrowGhcException PhaseFailedSignal UsageError CmdLineErrorPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError GhcExceptionEncoding zEncodeStringScriptExprHListHCoreHAppHCmdNameSrcName parseScript parseExprH unparseScript unparseExprHinitTcFromModGuts mk_type_env hermitVersionghcFlags usageOutputusage hermitDrivernodupsdupsBydups soleElement equivalentBy equivalentwhenJustmaybeM varNameNSgetHscEnvCoreMvarSetToStrings showVarSet coAxiomNameunqualifiedName qualifiedNamecmpString2Name isQualified cmpString2VarppIdInfo zapVarOccInfo notElemVarSetbndrRuleAndUnfoldingVarseqExprXlookupRdrNameInModulethrowCmdLineErrorSinjectDependencyCrumbEq_RhsEq_LhsImpl_RhsImpl_LhsDisj_RhsDisj_LhsConj_RhsConj_Lhs Forall_BodyLRCo_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 freeIdsExprlocalFreeVarsExprlocalFreeIdsExpr freeVarsExpr freeVarsBind freeVarsVar freeVarsDef freeVarsAltlocalFreeVarsAlt freeVarsProg freeVarsTypefreeVarsCoercionexprKindOrType exprTypeMisCoArgappCountmapAltssplitTyConAppM splitFunTypeM endoFunTypeMendoFunExprTypeMfunExprArgResTypesMfunExprsWithInverseTypes showCrumbs leftSibling rightSibling substCoreExpr substCoreAlt betaReduceAll mkDataConApp NamedLemmaLemmasClauseCTrueEquivImplDisjConjForallUsedNotUsed UnsafeUsed ObligationProven NotProvenBuiltInAssumedLemmalemmaClemmaPlemmaU LemmaNamemkClausefreeVarsClause dropBindersmkForallforallQsandPorPdiscardUniVars substClause substClausesredundantDicts instClause instsClauseclauseSyntaxEqHermitC LocalPathH AbsolutePathH LemmaContext addAntecedentgetAntecedentsHasEmptyContextsetEmptyContext HasCoreRuleshermitCoreRules ReadBindings hermitDepthhermitBindings BoundVars boundVars AddBindingsaddHermitBindings HermitBindinghbDepthhbSitehbPathHermitBindingSiteTOPLEVELFORALL CASEBINDERCASEALT MUTUALRECSELFRECRECNONRECLAM BindingDepthhermitBindingSiteExprhermitBindingSummaryhermitBindingExpraddBindingGroup addDefBindingaddDefBindingsExceptaddCaseBinderBindingaddLambdaBindingaddAltBindingsaddForallBinding findBoundVarsboundIninScopelookupHermitBindinglookupHermitBindingDepthlookupHermitBindingSite toHermitCtopLevelHermitCLCoreTCLTCTyCoLTCCoreLCoreLClauseCoreTCTyCoCore CoercionCoreTypeCoreAltCoreExprCoreDefCoreBindCoreProgCoreGutsCore coreAlphaEq tyCoAlphaEq coreTCAlphaEq coreSyntaxEq tyCoSyntaxEqcoreTCSyntaxEq lcoreSyntaxEqlcoreTCSyntaxEq freeVarsCore freeVarsTyCofreeVarsCoreTCpromoteModGutsT promoteProgT promoteBindT promoteDefT promoteAltT promoteExprT promoteTypeTpromoteCoercionTpromoteClauseT promoteCoreT promoteLCoreTpromoteCoreTCTpromoteModGutsR promoteProgR promoteBindR promoteDefR promoteAltR promoteExprR promoteTypeRpromoteCoercionRpromoteClauseR promoteCoreR promoteLCoreRpromoteCoreTCRpromoteExprBiR KEnvMessage AddObligation DebugCore DebugTick LiftCoreM liftCoreM HasLemmas getLemmas putLemmas HasHermitMEnv getHermitMEnvHermitM HermitMResult hResChanged hResLemmashResult HermitMEnvmkEnvrunHM embedHermitM getModGuts getDebugChansendKEnvMessage insertLemmaaddLemma findLemma deleteLemma getHscEnvrunTcMrunDsMPathHLensH BiRewriteHRewriteH TransformH<$><*>modGutsTmodGutsRprogNilT 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 instCoOneRconjTconjAllRdisjTdisjAllRimplTimplAllRequivT equivAllRforallTforallR inContextMRewriteLCoreTCListBoxBiRewriteLCoreTCBoxTransformLCoreTCPathBoxTransformLCoreTCLCoreBoxTransformLCoreTCUnitBoxTransformLCoreTCStringBoxRewriteLCoreTCBoxRewriteLCoreListBoxBiRewriteLCoreBoxTransformLCorePathBoxTransformLCoreUnitBoxTransformLCoreStringBoxRewriteLCoreBox IntListBox StringListBox StringBox CoreString unCoreStringPathBoxCrumbBoxIntBoxTagBoxExternBoxboxunboxExternal externName externDyn externHelp externTagsTag.+remTagtagMatchTagECmdTag Deprecated ExperimentTODOProofSafeUnsafeContextVersionControlDebug Strictness 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 cloneVarH cloneVarFSHapplyInContextTcallT callPredT callNameTcallSaturatedT callNameG callDataConTcallDataConNameT progConsIdsTprogConsRecIdsTprogConsNonRecIdT nonRecVarTrecIdsTlamVarTletVarsT letRecIdsT letNonRecVarT caseVarsT caseBinderIdT caseAltVarsTvarBindingDepthTvarIsOccurrenceOfTexprIsOccurrenceOfT boundVarsT findBoundVarTfindIdTfindVarT findTyConT findTypeTwithVarsInScope wrongExprForm nonrecToRecR recToNonrecR castElimReflR castElimSymR castFloatAppR castFloatLamRcastElimSymPlusR staticArgRstaticArgTypesR staticArgPosRstaticArgPredRappArgMbuildCompositionT buildAppsM buildAppM buildFixTbuildIdT LemmaLibrarysubstRarityOf lintModuleT lintExprT dynFlagsT dezombifyR occurAnalyseRoccurAnalyseExprChangedRoccurAnalyseChangedRoccurAnalyseAndDezombifyR buildTypeablebuildDictionarybuildDictionaryT lintClauseTloadLemmaLibraryTinjectDependencyT visibleVarsTcloneVarAvoidingTfreshNameGenAvoidingdetectShadowsM unshadowR unshadowExprR unshadowAltR unshadowProgR replaceVarR alphaLamRalphaCaseBinderR alphaAltWithR alphaAltVarsR alphaAltR alphaCaseR alphaLetWithR alphaLetVarsR alphaLetRalphaProgConsWithRalphaProgConsIdsRalphaProgConsR alphaProgRalphaR InlineConfig AllBindersCaseBinderOnlyCaseBinderInlineOption Alternative Scrutinee inlineNameR inlineNamesRinlineMatchingPredRinlineRinlineCaseScrutineeRinlineCaseAlternativeRconfigurableInlineR ensureBoundT getUnfoldingTgetUnfoldingsTinlineTargetsT Considerable CoercionExprTypeExprTickyCastyCaseOfLetExprLambda ApplicationLiteralVariableCaseAlt DefinitionBinding parentOfTrhsOfTbindingGroupOfT bindingOfT occurrenceOfToccurrenceOfTargetsTbindingOfTargetsTbindingGroupOfTargetsT rhsOfTargetsT considerablesconsiderConstructTstring2considerable nthArgPathinfoTcompareCoreAtTcompareBoundIdsTbetaReducePlusRunfoldR unfoldPredR unfoldNameR unfoldNamesRunfoldSaturatedR specializeRTokenTcharTstring TrationalTintegerTcnameTname Tsemicolon TquestionTdotTatTlambda TdoublearrowTarrowTstar Tcoloneqcolon TcoloncolonTcolonTeqThashTcbraceTobraceTcparenToparenTwildTlocal TexternalTnoteTcastTofTcaseTinTletTrecTforall parseErrorlexer parseCoreparseCoreExprT parse2BeforeT parse3BeforeTparse2beforeBiRparse3beforeBiRparse4beforeBiRparse5beforeBiRunsafeReplaceR RenderCoderStartrEnd rDoHighlightrPutStrHTMLUnicodeASCII RenderSpecial renderSpecial SpecialSymbol EquivSymbol ImplSymbol DisjSymbol ConjSymbol ForallSymbolTypeBindSymbol TypeSymbolCoercionBindSymbolCoercionSymbol CastSymbolRightArrowSymbol TypeOfSymbol LambdaSymbol ShowOptionOmitDetailedAbstractShow PrettyOptionspo_fullyQualified po_exprTypes po_coercionspo_typesForBinderspo_showUniquespo_focuspo_depthpo_notes po_ribbonpo_widthPrettyC prettyC_path prettyC_varsprettyC_optionsprettyC_lemmasTransformLCoreTCDocHBoxPrettyHLCoreTCBoxTransformLCoreDocHBoxPrettyHLCoreBoxPrettyH PrettyPrinterPPpForallpCoreTCpOptionsSyntaxForColor WarningColorLitColor TypeColor CoercionColorIdColor SyntaxColor KeywordColorAttr SpecialFontPathAttrColorBndrAttrDocHshowRoleattrPidColor typeColor coercionColor keywordColor syntaxColor markColor specialFont specialSymbolsymbolkeywordmarkBindingSite liftPrettyH liftPrettyC initPrettyCupdateTypeShowOptionupdateCoShowOptionupdateWidthOption renderCode coreRendersvlisthlistpadEquality CompiledFoldfoldRfoldVarRfoldVarConfigRrunFoldRfold compileFoldrunFoldrunFoldMatchesproves lemmaMatch toEqualities ppEqualityT flipEqualityfreeVarsEqualityprettyppCoreTC ppModGuts ppCoreProg ppCoreExpr ppCoreBind ppCoreAlt ppKindOrType ppCoercionppForallQuantificationaddToDictionary mkDictionary pp_dictionary letSubstR letSubstSafeRletNonRecSubstRletNonRecSubstSafeRletElimRletNonRecElimR letRecElimR progBindElimRprogBindNonRecElimRprogBindRecElimR letToCaseR letFloatAppR letFloatArgR letFloatLetR letFloatLamR letFloatCaseRletFloatCaseAltR letFloatCastR letFloatExprR letFloatTopR letFloatInRletFloatInCaseRletFloatInAppRletFloatInLamRreorderNonRecLetsR letTupleR letIntroRletNonRecIntroRprogNonRecIntroR nonRecIntroRletIntroUnfoldingRisVar nonRecIntro parseTypeparseTypeWithHoles parseTypeTparseTypeWithHolesT ToCoreExprtoCE EqualityProofextensionalityR eqLhsIntroR eqRhsIntroR birewritelhsTrhsTbothTlhsRrhsRbothR showLemmasT showLemmaTppLemmaT ppLCoreTCT ppClauseT verifyClauseTlemmaRverifyOrCreateT reflexivityRsimplifyClauseRquantIdentitiesRverifyEqualityLeftToRightTverifyEqualityCommonTargetTverifyIsomorphismTverifyRetractionT retractionBRinstantiateDictsRunshadowClauseRinstantiateClauseVarRabstractClauseR getLemmasTgetLemmaByNameTlemmaBiRlemmaConsequentR insertLemmaT insertLemmasT modifyLemmaTmarkLemmaUsedTmarkLemmaProvenT-->==>/\\/===$$$$$newLemmaprefixRemembered rememberRunfoldRememberedRfoldRememberedRfoldAnyRememberedRcompileRememberedTRuleNameListBoxRuleName foldRuleR foldRulesR unfoldRuleR unfoldRulesR compileRulesTgetHermitRulesTgetHermitRuleTruleNameToClauseT ruleToClauseT specConstrR specialiseRisUndefinedValTerrorToUndefinedRmkUndefinedValT replaceCurrentExprWithUndefinedRreplaceIdWithUndefinedRundefinedExprR undefinedAppR undefinedLamR undefinedLetRundefinedCastRundefinedTickRundefinedCaseRundefinedCaseScrutineeRundefinedCaseAltsR verifyStrictTapplyToUndefinedTbuildStrictnessLemmaT fixIntroRfixIntroNonRecR fixIntroRecRfixComputationRuleBRfixRollingRuleBRfixFusionRuleBR isFixExprT caseElimR caseFloatAppR caseFloatArgRcaseFloatArgLemmaRcaseFloatCaseR caseFloatLetRcaseFloatCastR caseFloatR caseFloatInRcaseFloatInAppRcaseFloatInArgsRcaseReduceUnfoldR caseReduceRcaseReduceLiteralRcaseReduceDataconR caseSplitR casesForM caseExprsForM caseIntroSeqRcaseSplitInlineRcaseInlineScrutineeRcaseInlineAlternativeRcaseMergeAltsRcaseMergeAltsWithBinderRcaseElimInlineScrutineeRcaseElimMergeAltsR caseElimSeqR caseSplitOnR betaReduceR betaExpandR etaReduceR etaExpandRmultiEtaExpandRflattenModuleRflattenProgramRflattenProgramT abstractRpushRunfoldBasicCombinatorR simplifyRbashRbashExtendedWithR bashDebugR bashUsingRsmashRsmashExtendedWithR smashUsingR WWAssumptionWWAssumptionTagCBA workLabelassumptionAClauseTassumptionBClauseTassumptionCClauseT split1BetaR split2BetaRwwFacBR wwFusionBRwwGenerateFusionTwwSplitRwwSplitStaticArgwwAssAwwAssBwwAssC wwResultFacBRwwResultFusionBRwwResultGenerateFusionTwwResultSplitRwwResultSplitStaticArg wwResultAssA wwResultAssB wwResultAssC KernelEnvkEnvChanASTMapAST CommitMsgNeverChangedAlwaysKernelresumeKabortKapplyKqueryKdeleteKlistKtellKfirstAST hermitKernelPassInfopassNum passesDone passesLeftCorePassUnknownNoOp PluginPassPasses WorkerWrapper VectorisationTidy StaticArgs Specialising SpecConstrSimplify RuleCheck PrintCorePrep LiberateCase FloatOutwards FloatInwards DesugarOptDesugarCSE HERMITPass buildPlugin ghcPasses getCorePass getPassFlagPSBox PExceptionPErrorPResumePAbort PluginReader pr_kernelpr_pass PluginState ps_cursor ps_pretty ps_renderps_tick ps_corelintPluginT unPluginTPluginM runPluginTtick mkKernelEnv$fExternPluginState$fMonadCatchPluginT$fMonadTransPluginT$fMonadPluginTdisplay ps_putStr ps_putStrLnUnicodeTerminalchangeRenderershellRenderersunicodeConsoledoSGR undoSGRWith setHighlightdiffDocHdiffR$fRenderCodeUnicodeTerminal$fMonoidUnicodeTerminal$fRenderSpecialUnicodeTerminal DirectionTU ScriptNameCLSBoxSafetyNoSafety NormalSafety StrictSafety ProofTodoUnprovenptNameptLemma ptContextptPath PathStackCommandLineState cl_pstate cl_height cl_scriptscl_navcl_focicl_tags cl_proofstack cl_window cl_externalscl_running_script cl_safety cl_templemmas cl_failhard cl_diffonlyCLMonadCLTunCLT CLExceptionCLError CLContinueCLResumeCLAbort VersionCmdGotoTagGotoStepBackTagNameQueryFun QueryUnitInquiryDiff QueryPrettyH QueryDocH QueryStringmessage performQueryppWholeProgramabortresumecontinue rethrowCLE rethrowPErunCLTclm2cltclmpluginM filterSafety cl_corelint setCoreLint cl_cursor setCursor cl_kernel_env cl_pretty setPrettycl_pretty_opts setPrettyOpts cl_rendermkCLSgetTermDimensions cl_putStr cl_putStrLnisRunningScriptsetRunningScriptputStrToConsolepathStack2PathpathStackToLens getPathStack getFocusPath addFocusT addFocusRaddASTmodifyLocalPathrequireDifferent copyPathStackcopyProofStackpushProofStack popProofStackannounceUnprovens getProofStackgetProofStackEmpty fixWindow showWindowshowWindowAlways printLemma queryInFocus inProofFocusT inProofFocusRqueryInContext$fExternCommandLineState$fMonadCatchCLT $fMonadCLT$fMonadTransCLT$fMonadExceptionStateT$fMonadExceptionCLT$fMonadExceptionExceptT$fExternQueryFunInterpinterpinterpMinterpEM interpExprH exprToDyns KernelEffectDeleteEndScope BeginScopeperformKernelEffect applyRewritesetPath ShellEffectResumeContinue PluginComp CLSModifyAbortperformShellEffectdumpTdump ScriptEffectSeqMetaScriptToRewrite SaveScriptSaveFile RunScriptLoadFile DefineScript loadAndRun popScriptLinepushScriptLine pushScript fileToScriptperformScriptEffect lookupScriptparseScriptCLTscriptToRewriteaddScriptToDictUserProofTechnique ProofReason UserProofProofShellCommandPCEndwithProofExternals forceProofsperformProofShellCommanduserProofTechnique completershell_externalsgc setWindow showRenderers versionCmdshowDerivationTreeshowRefactorTraildisplayScripts showScriptstestAllT testRewrites commandLine evalScript interpShell hermitPlugindefPS interactiveapplyquerylistdeletetellpassafterbeforeuntil allPasses firstPasslastPass getKernel getPassInfosetPrettyOptionslemmaspluginisScriptIdFirstCharisScriptIdCharisScriptInfixIdCharisCoreIdFirstChar isCoreIdCharisCoreInfixIdCharinfixOperatorSymbols quoteShowbaseGHC.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 ModuleNameshowAttributes 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'DynamicLoadinglookupRdrNameInModuleForPluginsgetValueSafelyforceLoadTyConthNameToGhcName 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 idRuleRhsVarsruleRhsFreeVarsruleLhsOrphNamesexprsSomeFreeVars 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 UnhelpfulSpanSrcSpanL 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 pprHsCharboldcoloured 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 freeVarsTick showCrumbsubstClauseSubst replaceVars addBinder $fShowUsed $fOrdProven $fEnumProven $fShowProven$fShowLemmaName$fIsStringLemmaName$fMonoidLemmaNamehermitC_bindings hermitC_depth hermitC_path kure-2.16.10Language.KURE.Path AbsolutePathhermitC_specRuleshermitC_lemmas$fExtendPathHermitCCrumb$fReadPathHermitCCrumb$fHasEmptyContextHermitC$fAddBindingsExtendContext$fAddBindingsSnocPathHB$fLemmaContextHermitC$fHasCoreRulesHermitC$fReadBindingsHermitC$fBoundVarsHermitC$fAddBindingsHermitC$fLemmaContextExtendContext$fHasCoreRules[]$fBoundVarsUniqFM$fReadPathExtendContextCrumb$fInjectionCoreTCLCoreTC$fInjectionCoercionCoreTC$fInjectionTypeCoreTC$fInjectionExprCoreTC$fInjection(,,)CoreTC$fInjectionCoreDefCoreTC$fInjectionBindCoreTC$fInjectionCoreProgCoreTC$fInjectionModGutsCoreTC$fInjectionTyCoCoreTC$fInjectionCoreCoreTC$fInjectionCoercionLCoreTC$fInjectionTypeLCoreTC$fInjection(,,)LCoreTC$fInjectionCoreDefLCoreTC$fInjectionBindLCoreTC$fInjectionExprLCoreTC$fInjectionCoreProgLCoreTC$fInjectionModGutsLCoreTC$fInjectionCoreLCoreTC$fInjectionClauseLCoreTC$fInjection(,,)LCore$fInjectionCoreDefLCore$fInjectionBindLCore$fInjectionExprLCore$fInjectionCoreProgLCore$fInjectionModGutsLCore$fInjectionTyCoLCoreTC$fInjectionLCoreLCoreTC$fInjectionClauseLCore$fInjectionCoreLCore$fInjectionCoercionTyCo$fInjectionTypeTyCo$fInjectionExprCore$fInjection(,,)Core$fInjectionCoreDefCore$fInjectionBindCore$fInjectionCoreProgCore$fInjectionModGutsCore hEnvChanged hEnvModGuts runHermitM DebugChan hEnvDebug hEnvLemmas changedResultmkResult$fLiftCoreMHermitM$fHasLemmasHermitM$fHasHermitMEnvHermitM$fHasDynFlagsHermitM$fMonadThingsHermitM$fMonadUniqueHermitM$fMonadIOHermitM$fMonadCatchHermitM$fMonadHermitM$fApplicativeHermitM$fFunctorHermitM GHC.TypesInt$fWalkercCoreTC$fWalkercLCoreTC$fWalkercLCore $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@@ ExtendPath LocalPathabsPathReadPath#Language.KURE.Combinators.Transform unwrapOneRwrapOneR unwrapAnyRwrapAnyRguardTjoinTcatchesTrepeatRchangedR changedByRtryR accepterRacceptRacceptWithFailMsgRorR>+>andRresultTreaderT sideEffectRmapT liftContextexposeTcontextTsuccessTidRAnyROneRLanguage.KURE.BiTransform promoteBiRpromoteWithFailMsgBiR extractBiRextractWithFailMsgBiR promoteBiTpromoteWithFailMsgBiT extractBiTextractWithFailMsgBiTafterBiR beforeBiR invertBiT whicheverR bidirectional backwardTforwardT BiTransform BiTranslate BiRewriteLanguage.KURE.InjectionpromoteRpromoteWithFailMsgRextractRextractWithFailMsgRpromoteTpromoteWithFailMsgTextractTprojectTprojectWithFailMsgTinjectTprojectMprojectWithFailMsgMinjectMprojectinject InjectionLanguage.KURE.Transform effectfreeTconstT contextonlyT contextfreeTapplyRrewrite 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 $fExtern[]$fExternBiTransform$fExternTransform$fExternTransform0$fExternTransform1$fExternTransform2$fExternTransform3 $fExtern[]0$fExternBiTransform0$fExternTransform4$fExternTransform5$fExternTransform6$fExternTransform7$fExternLemmaName $fExtern[]1 $fExtern[]2 $fExtern[]3$fExternCoreString$fExternSnocPath $fExternCrumb $fExternInt $fExternTagE $fExtern(->) $fTagCmdTag $fTagTagE testQueryanyCallR_LCorehfocusRhfocusT mkQualified mkUnqualifiedparseQualifiedfindInNSModGutsfindInNSPackageDB lookupNamefindNamedBuiltIn nameToNamednewName$fMonadThingsTransform$fExternRhsOfName$fExternOccurrenceName$fExternBindingName$fShowHermitName$fIsStringHermitName$fExternHermitName $fShowNamedsplitTyConAppCo_maybe castElimRcastElimUnsafeR substOrApplycommas substTopBindR deShadowProgRoccurrenceAnalysisRloadLemmaLibrarylookupHermitNameForPlugins inventNames shadowedBy alphaAltVarRalphaAltVarsWithRalphaLetNonRecRalphaLetNonRecVarsRalphaLetRecIdsWithRalphaProgConsNonRecRalphaProgConsNonRecIdsRalphaProgConsRecIdsWithRdupVarsreplaceRecBindVarRwrongFormForAlpha ensureDepthTalt2ExpdFunExprapplicationOfT lamsBodyT letsBodyTprogEndT gutsProgEndTbindingGroupOf bindingOfbinders bindersCore binderBind binderDef binderExpr binderTypebinderCoercion occurrenceOf varOccurrencevarOccurrenceExprvarOccurrenceTypevarOccurrenceCoercionrecognizedConsiderablesunderConsiderationLCoreunderConsiderationexhaustRepeatCrumbT$fHasEmptyContextExtendContext$fExternConsiderablecompareBoundIds coreTCNodecoreNodecoreTCConstructorcoreConstructortypeConstructorcoercionConstructor CoreParseMhappyIn4 happyOut4 happyReduce_1happyReduction_1 mkIntExpr'$fRenderCodeHTML DebugPrettyLaTeX HermitMarkPopAttrPushAttrattrrenderSpecialFontspecialFontMap latexToStringlistify$fRenderCodeDebugPretty$fMonoidDebugPretty$fRenderSpecialDebugPretty$fRenderCodeASCII$fRenderCodeLaTeX$fRenderSpecialHTML $fMonoidHTML$fRenderSpecialLaTeX $fMonoidLaTeX$fRenderSpecialUnicode$fRenderSpecialASCII $fMonoidASCII$fRenderSpecialChar$fDefaultPrettyOptions$fLemmaContextPrettyC$fHasEmptyContextPrettyC$fBoundVarsPrettyC$fAddBindingsPrettyC$fExtendPathPrettyCCrumb$fReadPathPrettyCCrumb$fExternPrettyPrinter mkEqualitysameExprTransformEqualityUnitBoxTransformEqualityStringBoxRewriteEqualityBoxCLMapCLM clmForallclmConjclmDisjclmImplclmEquivclmTrueCLMEmptyAMapAMamDefamDataamLitAMEmptyListMaplmNillmConsEMapEMemHoleemVaremLitemCoemTypeemCastemAppemLamemLetNemLetRemCaseemECaseEMEmptyTyLitMapTLM tlmNumber tlmStringTyMapTyMtmHoletmVartmApptmFuntmTcApptmForalltmTyLitTyMEmptyVMapVMEmptyVMbvmapfvmapFoldKeyfEmptyfAlterfFoldBMapLMapAlphaEnvAE_aeNext_aeEnv insertFoldfindFoldfilterOutOfScope emptyAlphaEnvextendAlphaEnvlookupAlphaEnvtoAemptyEMapWrapper extendResultemptyCLMapWrapper $fFoldCLMap $fFoldAMap $fFoldListMap $fFoldEMap$fFoldTyLitMap $fFoldTyMap $fFoldVMapcoTexttyTextppSDoc ppCoreDefppVar keywordText ArrowType ATCoercionATTypeRetExprRetEmptyRetAtom RetArrowType RetForAllRetAppRetLetRetLamretAppretAppsretLamretLet retForAll retArrowType normalExpr cleanParens normalParensnormalParensExceptApp parenExprparenExprExceptAppidTextcoCharcoSymbol castSymbolcoercionSymbolcoercionBindSymbol coKeywordcoArrow coTypeSymboltyChartySymbol typeSymboltypeBindSymbol typeOfSymbol typeArrowppVarOccvarColorppNameppLitTyppTyCon ppTyConCo ppDetailedVar ppBinderModeppDef ppCoreExprR ppTypeModeR ppKindOrTypeRppCoercionModeR ppCoercionRppCoKind ppTypeSig toDictionarytoEntry make_help help_command layoutTxt<$chaseDependencies TypeParseMTPState tpContexttpUsed catchFrees getContextaddTyVar retractionlemmaLhsIntroRlemmaRhsIntroR trueConjLR trueConjRR trueDisjLR trueDisjRR trueImpliesR impliesTrueR forallTrueR aImpliesARsplitAntecedentRconjunctLemmasTdisjunctLemmasT implyLemmasTmergeQuantifiersRmergeQuantifiersunshadowClause csInQBodyTlemmaConsequentBiR lemmaExistsTlemmaNameToClauseT$fToCoreExprType$fToCoreExprVar$fToCoreExprExprrulesHelpListT ruleHelpT idSpecRules bindSpecRules specRulesrulesToRewrite ruleToLemmaT$fShowRuleName$fIsStringRuleName$fExternRuleName isErrorValTGHC.Err undefinedundefinedLocationfindUndefinedIdT errorLocation findErrorIdTreplaceIdWithUndefinedpolyFixT fixFusionRule fixLocationcaseFoldBinderRseq isForcedIn caseFloatArgmatchingFreeIdTcaseInlineBinderR altVarsUnusedpush$.idflipconst Data.TuplefstsndcurryuncurrybashComponentssmashComponents1basicCombinatorsbashHelp smashHelpsmashComponents2wwFusionClauseT$fExternWWAssumptionTagwwFacwwFusionwwSplitwwAssAimpliesAssBwwAssBimpliesAssCwwAssAimpliesAssCwwAwwBwwC verifyWWAss verifyAssA verifyAssB verifyAssCwrapUnwrapTypeswwResultAssAimpliesAssBwwResultAssBimpliesAssCwwResultAssAimpliesAssC absRepTypesMsg insertAST KernelStateDoneReadApplyksLemmasksGuts _ksParent _ksCommitastNextastMapmsg emptyASTMapfindAST abortKernelfind $fExternAST $fReadAST $fShowAST $fEnumAST modFilter filterOpts flattenTodos runInterp fromDynList toBoxedList exprToDyns' provideState dynCrossApply$fFunctorInterpgoUp beginScopeendScope deleteAST$fExternKernelEffect$fExternShellEffect PrimScriptRScriptTransformHCorePath ScriptPathScriptRewriteHCore ScopedScriptR ScriptPrimSc ScriptScopeUnscopedScriptRScriptUnsupported ScriptPrimUnScriptEndScopeScriptBeginScope RewriteName getFragmentunscopedToScopedScriptR interpScriptRscopedScriptsToRewrite$fExternScriptEffect Reflexivity UserAssumeproof_externalsinteractiveProofendProof$fExternUserProofTechnique$fExternProofShellCommand toUnmatchedCompletionTypeUnknownCStringCRuleCNothingCCoreCCommandCLemmaCInScopeCInlineC OccurrenceOfCRhsOfCBindingGroupOfC BindingOfC ConsiderC shellCompletecompletionsForcompletionTypefilterUnknownscompletionQuery catchFailHardbannerrunExprH getNavCmdrunArunQlpNameguard