2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` 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{|}~(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com>Safe&',7<>?FQSTVM &This class is parameterized by a kind k. (typically a data kind), a type constructor f of kind k -> *2 (typically a GADT of singleton types indexed by k), and an index parameter ctx of kind k.7A parameterized type that is hashable on all instances.Hash with default salt.)Parameterized generalization of the lens At class.Given an index into a container, build a lens that points into the given position in the container, whether or not it currently exists. Setting values of atF to a Just= value will insert the value if it does not already exist.)Parameterized generalization of the lens IxedF class, but with the guarantee that indexes exist in the container.eGiven an index into a container, build a lens that points into the given element in the container.)Parameterized generalization of the lens Ixed class.sGiven an index into a container, build a traversal that visits the given element in the container, if it exists.8A parameterized type that can be shown on all instances. To implement  g#, one should implement an instance  (g tp) for all argument types tp , then write an empty instance  instance  g.'Provides a show instance for each type.@A parameterized type that can be compared on distinct instances.compareF compares two keys with different type parameters. Instances must ensure that keys are only equal if the type parameters are equal.#=Ordering over two distinct types with a proof they are equal.'1A polymorphic equality operator that generalizes  .*EqF provides a method eqF8 for testing whether two parameterized types are equal.Unlike  , this only works when the type arguments are the same, and does not provide a proof that the types have the same type when they are equal. Thus this can be implemented over parameterized types that are unable to provide evidence that their type arguments are equal.,An instance of , gives a way to coerce between all the types of a family. We generally use this to witness the fact that the type parameter to rtpQ is a phantom type by giving an implementation in terms of Data.Coerce.coerce./Convert # to standard ordering.0Convert standard ordering to #.1U`joinOrderingF x y` first compares on x, returning an equivalent value if it is not %. If it is EQF, it returns y.2_Compare two values, and if they are equal compare the next values, otherwise return LTF or GTF-A default salt used in the implementation of .,  !"#$%&'()*+,-./012- *+'() !"2#$%&1./0,-   !"#$%&'()*+,-Type-level lists.(c) Galois, Inc 2015!Joe Hendrix <jhendrix@galois.com>Safe +,-FST_ 7sUpdate the value in a context by number, from the left. If the index is out of range, the context is unchanged.8mLookup the value in a context by number, from the left. Produce a type error if the index is out of range.9tUpdate the value in a context by number, from the right. If the index is out of range, the context is unchanged.:7Lookup the value in a context by number, from the right;@ is a snoc-list. In order to use the more intuitive left-to-right ordering of elements the desired index is subtracted from the total number of elements.<&A constraint that checks that the nat n& is a valid index into the context ctx!, and raises a type error if not.=oHelper type family used to generate descriptive error messages when an index is larger than the length of the @ being indexed.>6This type family computes the number of elements in a @?Append two type-level contexts.@Kind @ k" comprises lists of types of kind k.789:;<=>?@ABCDE@ABECD?>87:9=<;@AB(c) Galois, Inc 2015!Joe Hendrix <jhendrix@galois.com>None,FSTa3FGFGA counter in the ST monad.(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com> provisionalUnsafe,FGKh!H"An index generated by the counter.J4A simple type that for getting fresh indices in the  monad. The type parameter s is used for the  monad parameter.KCreate a new counter.L,Get a fresh index and increment the counter.M^Return true if counter has reached the limit, and can't be incremented without risk of error.HIJKLMJKLMHIIHIJ(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com>Safe&',FQVkQXProject out of Some.YApply function to inner value.ZModify the inner value.[Modify the inner value.VWXYZ[VWXYZ[VW (c) Galois, Inc 2014-2016!Joe Hendrix <jhendrix@galois.com> Trustworthy ,-CEFGKQVua"An index generated by the counter.c8Provides a monadic action for getting fresh typed names.The first type parameter mC is the monad used for generating names, and the second parameter s is used for the counter.eCreate a new counter.f-Create a new nonce generator in the ST monad.g-Create a new nonce generator in the ST monad.h@Run a ST computation with a new nonce generator in the ST monad.i-Create a new nonce generator in the IO monad.j7A nonce generator that uses a globally-defined counter. `abcdefghij cddabbfgihe`jabcd (c) Galois, Inc 2014-2016%Eddy Westbrook <westbrook@galois.com>None,FKQTV~sHelper type to build a x from the  monad.tHelper type to build a x from the  monad.u9This transformer adds a nonce generator to a given monad.xA x$ is a monad that can generate fresh a?s in a given set (where we view the phantom type parameter of a& as a designator of the set that the a came from).{Return the actual c used in an  computation.|Run a t computation with a fresh c.}Run a s computation with a fresh c inside .`abcdefghijstuvwxyz{|} xyzuvwts{|}uvwxyz(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy&'-;=>?FKOQSTV! LeqProof m n0 is a type whose values are only inhabited when m is less than or equal to n. Result of comparing two numbers.'A runtime presentation of a type-level .PThis can be used for performing dynamic checks on a type-level natural numbers.+The underlying integer value of the number.+Return the value of the nat representation.3This generates a NatRepr from a type-level context. Decrement a NatReprGet the predicessor of a nat Increment a NatReprHReturn minimum unsigned value for bitvector with given width (always 0).=Return maximum unsigned value for bitvector with given width.EReturn minimum value for bitvector in 2s complement with given width.EReturn maximum value for bitvector in 2s complement with given width.toUnsigned w i maps i to a i  2^w. toSigned w i" interprets the least-significant w bits in iI as a signed number in two's complement notation and returns that value.unsignedClamp w i rounds i to the nearest value between 0 and 2^w-i (inclusive).signedClamp w i rounds i to the nearest value between -2^(w-1) and  2^(w-1)-i (inclusive)..Return the maximum of two nat representations.'Produce evidence that + is commutative.#Cancel an add followed b a subtractx  y checks whether x is less than or equal to y.Apply reflexivity to LeqProofApply transitivity to LeqProof"Add both sides of two inequalities#Subtract sides of two inequalities.#Create a leqProof using two proxies(Test whether natural number is positive."Congruence rule for multiplication>Multiplying two positive numbers results in a positive number.QProduce proof that adding a value to the larger element in an LeqProof is largerKProduce proof that subtracting a value from the smaller element is smaller.QApply a function to each element in a range; return the list of values obtained.Recursor for natural numbeers.H VI V(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com> Trustworthy,F&A hash table mapping nonces to values.Create a new empty table.!Create a new empty table to hold n elements.6Create a hash table that is a copy of the current one.Lookup value of key in table.,Insert new key and value mapping into table.,Return true if the key is in the hash table.&Delete an element from the hash table.  (c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy&'-;=>?FKOQSTV4A runtime representation of a GHC type-level symbol.0The underlying text representation of the symbolpGenerate a symbol representative at runtime. The type-level symbol will be abstract, as it is hidden by the V constructor.:Generate a value representative for the type level symbol. (c) Galois, Inc 2013-2014!Joe Hendrix <jhendrix@galois.com>None &')>?STcݠThe application of a type.Match any type.:Match the ith argument of the data type we are traversing.Match a ground type.Given a constructor and string, this generates a pattern for matching the expression, and the names of variables bound by pattern in order they appear in constructor.Return an expression corresponding to the constructor. Note that this will have the type of a function expecting the argumetns given.GFind value associated with first pattern that matches given pat if any.declareStructuralEquality* declares a structural equality predicate.Match equational form.structuralTypeEquality fP returns a function with the type: forall x y . f x -> f y -> Maybe (x :~: y)structuralTypeEquality fN returns a function with the type: forall x y . f x -> f y -> OrderingF x y%This implementation avoids matching on both the first and second parameters in a simple case expression in order to avoid stressing GHC's coverage checker. In the case that the first and second parameters have unique constructors, a simple numeric comparison is done to compute the result.mGenerate a list of fresh names using the base name numbered 1 to n to make them useful in conjunction with -dsuppress-unqiues.ICompare two variables and use following comparison if they are different.This returns an  instance.Match equational form."Find the first recurseArg f var tp applies f to var where var has type tp@.traverseAppMatch f cC builds a case statement that matches a term with the constructor c and applies f to each argument.structuralTraversal tp0 generates a function that applies a traversal f( to the subterms with free variables in tp.structuralHash tp% generates a function with the type Int -> tp -> Int that hashes type.structuralShow tp% generates a function with the type  tp -> ShowS that shows the constructor. constructor information generated name prefix pattern and bound names Types bound by data arguments.Patterns for matching argumentsName of constructor.Data declaration typesPatterns for matching argumentswildcard case requiredData declaration.wildcard case required List of type patterns to match. base name quantity list of names: base1, base2.. Types bound by data argumentsPatterns for matching argumentsName of constructor.Names bound in data declarationTypes for constructors Variables bound in first pattern!Variables bound in second patternData declaration typesPatterns for matching arguments(Information about the second constructorFirst constructor's index#Optional second constructor's indexName from first patternData declaration.Patterns for matching argumentsoptional right constructr indexFunction to apply/Function to apply to each argument recursively.Constructor to match.Match expression that'()'() (c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy,FQV This is a generalization of the Foldable/ class to structures over parameterized terms.HMap each element of the structure to a monoid, and combine the results.&Right-associative fold of a structure.%Left-associative fold of a structure.TRight-associative fold of a structure, but with strict application of the operator.NLeft-associative fold of a parameterized structure with a strict accumulator.Convert structure to list.9A parameterized type that is a function on all instances.RThis is a coercision used to avoid overhead associated with function composition.Return ! if all values satisfy predicate.Return ! if any values satisfy predicate.)This function may be used as a value for  in a  instance.)This function may be used as a value for  in a  instance.qMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results. (c) Galois, Inc 2017Safe&',FQV`Like a 2-tuple, but with an existentially quantified parameter that both of the elements share.$Extract the first element of a pair. %Extract the second element of a pair. Project out of Pair.    (c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy,FQSTV Z This is a generalization of the Foldable/ class to structures over parameterized terms.HMap each element of the structure to a monoid, and combine the results.&Right-associative fold of a structure.%Left-associative fold of a structure.TRight-associative fold of a structure, but with strict application of the operator.NLeft-associative fold of a parameterized structure with a strict accumulator.Convert structure to list.~A parameterized class for types which can be tested for parameterized ordering, when given an comparison test for subterms.|A parameterized class for types which can be tested for parameterized equality, when given an equality test for subterms.lA parameterized class for types which can be hashed, when given functions to hash parameterized subterms.kA parameterized class for types which can be shown, when given functions to show parameterized subterms. 9A parameterized type that is a function on all instances.RThis is a coercision used to avoid overhead associated with function composition."Return ! if all values satisfy predicate.#Return ! if any values satisfy predicate.$"Return number of elements in list.%)This function may be used as a value for fmapF in a FunctorF instance.&)This function may be used as a value for  in a  instance.'qMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results.(qMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results. !"#$%&'( !'(%&"#$ !(c) Galois, Inc 2017!Joe Hendrix <jhendrix@galois.com>Safe&',-0<>?FQSTVh )Represents an index into a type-level list. Used in place of integers to 1. ensure that the given index *does* exist in the list 2. guarantee that it has the given kind,Parameterized list of elements./Return the index as an integer.0Index 01Index 12Index 23Index 34+Return the value in a list at a given index5 Update the , at an index6@Provides a lens for manipulating the element at the given index.7jMap over the elements in the list, and provide the index into each element along with the element itself.8$Right-fold with an additional index.9"Traverse with an additional index.)*+,.-/0123456789,-.)*+/4567890123)*+,-..5 Trustworthy&',-.;=>?EFGQSTVPS7IFView an assignment as either empty or an assignment with one appended.L;An assignment is a sequence that maps each index with type tp to a value of type 'f tp'.8A balanced tree where all leaves are at the same height.VThe first parameter is the height of the tree. The second is the parameterized value.M.This represents a contiguous range of indices.NKAn index is a reference to a position with a particular type in a context.P@A difference that can be automatically inferred at compile time.UmDifference in number of elements between two contexts. The first context must be a sub-context of the other.V=A context that can be determined statically at compiler time.XAllows interpreting a size.[!Represents the size of a context.]The size of an empty context.^%Increment the size to the next value.`Project a sizeaThe identity difference.b9Extend the difference to a sub-context of the right side.c&Extend the size by a given difference.d,The total size of two concatenated contexts.f#Index for first element in context.g-Increase context while staying at same index.h0Return the index of a element one past the size.i#Return the last index of a element.l Given a size n, an initial value v0, and a function f&, 'forIndex n v0 f' is equivalent to v0 when n6 is zero, and 'f (forIndex (n-1) v0) (n-1)' otherwise.mGiven an index i, size n , a function f, value v, and a function f', 'forIndex i n f v' is equivalent to vH when 'i >= sizeInt n', and 'f i (forIndexRange (i+1) n v0)' otherwise.n'forIndexM sz f' calls f on indices '[0..sz-1]'.oEReturn index at given integer or nothing if integer is out of bounds.p5Return a range containing all indices in the context.qq# returns the only index in a range.r#`dropTailRange r n` drops the last n elements in r.s$`dropHeadRange r n` drops the first n elements in r.Lookup index in tree.Update value at index in tree. Zip two balanced trees together.0Concatenate a binomial tree and a balanced tree.Map over a binary tree.:'bal_drop x y' returns the tree formed 'append x (init y)'Lookup value in tree.Lookup value in tree.t(Return number of elements in assignment.u@Generate an assignment with some context type that is not known.v@Generate an assignment with some context type that is not known.w replicate nE make a context with different copies of the same polymorphic value.xGenerate an assignmentyGenerate an assignmentzReturn empty assignment{#Return true if assignment is empty.>Unexported index that returns an arbitrary type of expression.}Return value of assignment.~]Return value of assignment, where the index is into an initial sequence of the assignment.8Modify the value of an assignment at a particular index.8Modify the value of an assignment at a particular index.,Update the assignment at a particular index.FView an assignment as either empty or an assignment with one appended..Return assignment with all but the last block.*Return the last element in the assignment.+Create an assignment from a list of values. Height of tree to generateStarting offset for entries.Height of tree to generateStarting offset for entries.Tree to lookup.Index to lookup.Height of treeTree to updateIndex to lookup.Height of treeSize of tree to generateHeight of each element.Size of tree to generateHeight of each element.BinaTree to lookup in. Size of treeTree to lookup in. Size of treeQ789:;<=>?@ABCDEIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~D[\\]^_cdXYZ`VWUabPQRSTeNOOfgihjklmnoMpqsrLtwxyuvz{|IJK}~IJKLMN OPQRSTU  VWXYZ[ \(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com>None&',-.;<=>?CFKQSTVr"FView an assignment as either empty or an assignment with one appended.;An assignment is a sequence that maps each index with type tp to a value of type 'f tp'.KAn index is a reference to a position with a particular type in a context.@A difference that can be automatically inferred at compile time.mDifference in number of elements between two contexts. The first context must be a sub-context of the other.=A context that can be determined statically at compiler time.Allows interpreting a size.=An indexed singleton type representing the size of a context.Convert a context size to an  .The size of an empty context.%Increment the size to the next value.,The total size of two concatenated contexts.6View a size as either zero or a smaller size plus one.The identity difference.9Extend the difference to a sub-context of the right side.&Extend the size by a given difference.Convert an index to an  <, where the index of the left-most type in the context is 0.#Index for first element in context.-Increase context while staying at same index.1Return the index of an element one past the size.#Return the last index of a element. Given a size n, an initial value v0, and a function f, forIndex n v0 f calls f on each index less than n starting from 0 and v0, with the value v obtained from the last call.EReturn index at given integer or nothing if integer is out of bounds.(Return number of elements in assignment.Generate an assignmentGenerate an assignment  replicate nE make a context with different copies of the same polymorphic value. Create empty indexec vector. #Return true if assignment is empty..Return assignment with all but the last block.Return value of assignment.]Return value of assignment, where the index is into an initial sequence of the assignment.Map assignmentConvert assignment to list.G789:;<=>?@ABCDE     8      (c) Galois, Inc 2014-16!Joe Hendrix <jhendrix@galois.com> Trustworthy%+,-.;<=>?AFQSTVdhejThis class implements two methods that witness the isomorphism between curried and uncurried functions.fxTransform a function that accepts an assignment into one with a separate variable for each element of the assignment.gGTransform a curried function into one that accepts an assignment value.hThis type family is used to define currying/uncurrying operations on assignments. It is best understood by seeing its evaluation on several examples: CurryAssignment EmptyCtx f x = x CurryAssignment (EmptyCtx ::> a) f x = f a -> x CurryAssignment (EmptyCtx ::> a ::> b) f x = f a -> f b -> x CurryAssignment (EmptyCtx ::> a ::> b ::> c) f x = f a -> f b -> f c -> xClass for computing N values for positions in a @.i'Constraint synonym used for getting an N into a @. n? is the zero-based, left-counted index into the list of types ctx which has the type r.rContext embedding.v8Pattern synonym for extending an assignment on the rightw(Pattern synonym for the empty assignmentx Create a single element context.y#Convert the assignment to a vector.Get an element from an LN by zero-based, left-to-right position. The position must be specified using TypeApplications for the n parameter.!Get a lens for an position in an LN by zero-based, left-to-right position. The position must be specified using TypeApplications for the n parameter. Compute an N& value for a particular position in a @. The TypeApplicationsB extension will be needed to disambiguate the choice of the type n.This version of ! is suitable for use without the TypeApplications extension.Inductive-step Base-caseq789:;<=>?@ABCDEIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~efghijklmnopqrstuvwxyz{|}~ xyvwrstulmjkpqno|}~z{ihefgefgjklmnopqrstuv Safed  !"#$%&'()*+,-./012789:;<=>?@ABCDEVWXYZ[   !"#$%&'($Utilities for balanced binary trees.(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com>Safe %&'+<>?AV A Strict pair]Updated a contains a value that has been flagged on whether it was modified by an operation.A strict version of  Insert a new maximal element.!Insert a new minimal element.Glink is called to insert a key and value between two disjoint subtrees.BConcatenate two trees that are ordered with respect to each other. insert p m inserts the binding into ms. It returns an Unchanged value if the map stays the same size and an updated value if a new entry was inserted.'glue l r' concatenates l and r.It assumes that l and r1 are already balanced with respect to each other.xReturns only entries that are less than predicate with respect to the ordering and Nothing if no elements are discared. filterLt' k m returns submap of m3 that only contains entries that are smaller than k1. If no entries are deleted then return Nothing.Union two sets"]Hedge union where we only add elements in second map if key is strictly above a lower bound.#]Hedge union where we only add elements in second map if key is strictly below a upper bound.$iHedge union where we only add elements in second map if key is strictly between a lower and upper bound.Predicate that returns whether the entry is less than, greater than, or equal to the key we are entry that we are looking for.(c) Galois, Inc 2014-2017 Trustworthy%&',.;=>?AFOQSTV!"*Update request tells when to do with valueKeep the current value.Set the value to a new value.Delete a value.DA map from parameterized keys to values with the same paramter type.Return empty mapReturn true if map is empty&Return map containing a single elementModify elements in a mapRun partial map over elements.%Traverse elements in a mapTraverse elements in a map4Traverse elements in a map without returning result.Lookup value in map.#Return true if key is bound in map.'Return true if key is not bound in map..Return all keys of the map in ascending order.DReturn all elements of the map in the ascending order of their keys.*Perform a fold with the key also provided. filterGt k m returns submap of m2 that only contains entries that are larger than k. filterLt k m returns submap of m3 that only contains entries that are smaller than k.HInsert a binding into the map, replacing the existing binding if needed.&HInsert a binding into the map, replacing the existing binding if needed.insertWith f new m inserts the binding into m. It inserts  f new old if m& already contains an equivaltn value old, and new} otherwise. It returns an Unchanged value if the map stays the same size and an updated value if a new entry was inserted.'Delete a value from the map if present.Union two sets\Log-time algorithm that allows a value at a specific key to be added, replaced, or deleted."Create a Map from a list of pairs.VGenerate a map from a foldable collection of keys and a function from keys to values.^Generate a map from a foldable collection of keys and a monadic function from keys to values.*Merge bindings in two maps to get a third.'<Returns only entries that are strictly between the two keys.NTurn a map key into a lens that points into the indicated position in the map.[Turn a map key into a traversal that visits the indicated element in the map, if it exists.((Function to call if no element is found. Key to update"Action to call if nothing is found!Action to call if value is found. Map to update)Function for evaluating a register value.Set of X86 registers)Function for evaluating a register value.Set of X86 registersQ  !"#$%&'()*+,-./012%)*+,-./0 ! " # $%&%'%(%)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcbadefghijklmnopqrsttuvwxyz{| } f g h j ~  l m n o p q r s                                           !"#$%&'()*+,-./0123456789:;<g=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ7[\]^_`abcdefghijklmnopqrstuvwxyz{|}~BSTQPRUVWXY7\]^_`abcdefghijkplmnoq[rstuvwzBSTQPRU       !"#$%&'()*+,-./01 2!3456789:;<=>?@ABCDEFfh f hGHIJ K L M N O P Q R S T U VWXVYZ[\]^_`abcdefYghijklmnopqZ7args*tuvwxyz{89|}~0parameterized-utils-1.0.0-8c5MwHl0jBUByt5ExxQ2ssData.Parameterized.SymbolReprData.Parameterized.HashTableData.Parameterized.NatReprData.Parameterized.ClassesData.Parameterized.CtxData.Parameterized.Ctx.ProofsData.Parameterized.Nonce.UnsafeData.Parameterized.SomeData.Parameterized.Nonce%Data.Parameterized.Nonce.TransformersData.Parameterized.TH.GADTData.Parameterized.TraversableFData.Parameterized.Pair Data.Parameterized.TraversableFCData.Parameterized.List!Data.Parameterized.Context.UnsafeData.Parameterized.Context.SafeData.Parameterized.Context Data.Parameterized.Utils.BinTreeData.Parameterized.Map Data.FoldablefoldMapData.Parameterizedbase GHC.TypeLits KnownSymbolghc-primGHC.Prim RealWorld GHC.TypesSymbol GHC.TypeNats+*-<=Data.Type.EqualityRefl:~: testEquality TestEquality Data.MaybeisJust KnownRepr knownRepr HashableF hashWithSaltFhashFAtFatFIxedF'ixF'IxedFixFIxValueFIndexFShowFwithShowshowFshowsFOrdFcompareFleqFltFgeqFgtF OrderingFLTFEQFGTFPolyEqpolyEqFpolyEqEqFeqF CoercibleFcoerceForderingF_refl toOrdering fromOrdering joinOrderingF lexCompareF$fCoercibleFkConst $fEqFkConst $fShowFkConst$fHashableFkConst CtxUpdate CtxLookupCtxUpdateRightCtxLookupRightFromLeftValidIxCheckIxCtxSize<+>CtxEmptyCtx::> SingleCtxleftIdassocNonce indexValueNonceGeneratornewNonceGenerator freshNonceatLimit $fShowFkNonce$fHashableFkNonce $fOrdFkNonce$fTestEqualitykNonce $fEqNonce $fOrdNonce$fHashableNonce $fShowNonceSomeviewSomemapSome traverseSome traverseSome_ $fShowSome$fHashableSome $fOrdSome$fEqSomeGlobalNonceGeneratorwithGlobalSTNonceGeneratornewSTNonceGeneratornewIONonceGeneratorwithSTNonceGeneratorwithIONonceGeneratorglobalNonceGeneratorNonceIONonceSTNonceT runNonceT MonadNonceNonceSet freshNonceM getNonceSTGen runNonceST runNonceIO$fMonadNonceStateT$fMonadNonceNonceT$fMonadTransNonceT$fFunctorNonceT$fApplicativeNonceT $fMonadNonceTNatCases NatCaseLT NatCaseEQ NatCaseGTLeqProof IsZeroNatZeroNat NonZeroNat NatComparisonNatLTNatEQNatGTNatReprnatValuewidthVal compareNatknownNat withKnownNat isZeroNatdecNatpredNatincNathalfNataddNatsubNat withDivModNat natMultiply minUnsigned maxUnsigned minSigned maxSigned toUnsignedtoSigned unsignedClamp signedClampsomeNatmaxNatplusCommplusMinusCancelwithAddMulDistribRight testStrictLeq testNatCasestestLeqleqReflleqTransleqAdd2leqSub2leqProof withLeqProofisPosNat leqMulCongr leqMulPosleqAddleqSubaddIsLeqaddPrefixIsLeq dblPosIsPos addIsLeqLeft1withAddPrefixLeq withAddLeq natForEachnatRec$fKnownReprNatNatReprn$fHashableFNatNatRepr$fShowFNatNatRepr $fShowNatRepr$fPolyEqNatReprNatRepr$fTestEqualityNatNatRepr $fEqNatRepr$fOrdFNatNatRepr$fHashableNatRepr HashTablenewnewSizedclonelookupinsertmemberdeleteclear SymbolRepr symbolRepr someSymbol knownSymbol$fShowFSymbolSymbolRepr$fShowSymbolRepr$fHashableSymbolRepr$fHashableFSymbolSymbolRepr$fOrdSymbolRepr$fEqSymbolRepr$fOrdFSymbolSymbolRepr$fTestEqualitySymbolSymbolRepr$fKnownReprSymbolSymbolReprsTypePatTypeAppAnyTypeDataArgConTypeDataDlookupDataType'conPatdataParamTypes assocTypePatsstructuralEqualitystructuralTypeEqualitystructuralTypeOrdstructuralTraversal asTypeConstructuralHashstructuralShowsPrec TraversableF traverseF FoldableFfoldMapFfoldrFfoldlFfoldrF'foldlF'toListFFunctorFfmapFallFanyF fmapFDefaultfoldMapFDefault traverseF_$fFunctorFkConst$fFoldableFkConst$fTraversableFkConstPairfstPairsndPairviewPair$fFoldableFkPair$fFunctorFkPair$fEqPair TraversableFC traverseFC FoldableFC foldMapFCfoldrFCfoldlFCfoldrFC'foldlFC'toListFCOrdFC compareFCTestEqualityFCtestEqualityFC HashableFChashWithSaltFCShowFCshowFC showsPrecFC FunctorFCfmapFCallFCanyFClengthFC fmapFCDefaultfoldMapFCDefault traverseFC_forMFC_Index IndexHere IndexThereListNil:<index0index1index2index3!!updateindexedimapifoldr itraverse$fKnownRepr[]List:$fKnownRepr[]List[] $fOrdF[]List$fTestEquality[]List$fTraversableFCk[]List$fFoldableFCk[]List$fFunctorFCk[]List $fShowF[]List $fShowList $fOrdIndex $fOrdFkIndex$fTestEqualitykIndex $fShowFkIndex $fShowIndex $fEqIndex AssignView AssignEmpty AssignExtend Assignment IndexRangeindexVal KnownDiff knownDiffDiffViewNoDiffExtendRightDiffDiff KnownContext knownSizeSizeViewZeroSizeIncSizeSizesizeIntzeroSizeincSizedecSizeviewSizenoDiff extendRightextSizeaddSizeviewDiffskip nextIndex lastIndex extendIndex extendIndex'forIndex forIndexRange forIndexMintIndexallRange indexOfRange dropTailRange dropHeadRangesize generateSome generateSomeM replicategenerate generateMemptynullextend!!^adjustMadjustviewinitlast decomposezipWithzipWithMtraverseWithIndexfromList<++> $fShowSize$fKnownContextk::>$fKnownContextkEmptyCtx$fCategoryCtxDiff$fKnownDiffkl::>$fKnownDiffkll$fHashableIndex$fHashableFkIndex$fShowFCtxBalancedTree$fShowBalancedTree$fHashableFCtxBalancedTree$fOrdFCkCtxBalancedTree $fTestEqualityFCkCtxBalancedTree$fHashableFCtxBinomialTree$fOrdFCkCtxBinomialTree $fTestEqualityFCkCtxBinomialTree $fKnownReprCtxAssignmentEmptyCtx$fKnownReprCtxAssignment::>$fTraversableFCkCtxAssignment$fFoldableFCkCtxAssignment$fFunctorFCkCtxAssignment$fIxedF'kAssignment$fIxedFkAssignment$fShowFCtxAssignment$fShowAssignment$fHashableFCtxAssignment$fHashableAssignment$fOrdAssignment$fOrdFCtxAssignment$fOrdFCkCtxAssignment$fEqAssignment$fTestEqualityCtxAssignment$fTestEqualityFCkCtxAssignment$fNFDataAssignment$fField1AssignmentAssignmentff$fField2AssignmentAssignmentff$fField1AssignmentAssignmentff0$fField3AssignmentAssignmentff$fField2AssignmentAssignmentff0$fField1AssignmentAssignmentff1$fField4AssignmentAssignmentff$fField3AssignmentAssignmentff0$fField2AssignmentAssignmentff1$fField1AssignmentAssignmentff2$fField5AssignmentAssignmentff$fField4AssignmentAssignmentff0$fField3AssignmentAssignmentff1$fField2AssignmentAssignmentff2$fField1AssignmentAssignmentff3$fField6AssignmentAssignmentff$fField5AssignmentAssignmentff0$fField4AssignmentAssignmentff1$fField3AssignmentAssignmentff2$fField2AssignmentAssignmentff3$fField1AssignmentAssignmentff4$fField7AssignmentAssignmentff$fField6AssignmentAssignmentff0$fField5AssignmentAssignmentff1$fField4AssignmentAssignmentff2$fField3AssignmentAssignmentff3$fField2AssignmentAssignmentff4$fField1AssignmentAssignmentff5$fField8AssignmentAssignmentff$fField7AssignmentAssignmentff0$fField6AssignmentAssignmentff1$fField5AssignmentAssignmentff2$fField4AssignmentAssignmentff3$fField3AssignmentAssignmentff4$fField2AssignmentAssignmentff5$fField1AssignmentAssignmentff6$fField9AssignmentAssignmentff$fField8AssignmentAssignmentff0$fField7AssignmentAssignmentff1$fField6AssignmentAssignmentff2$fField5AssignmentAssignmentff3$fField4AssignmentAssignmentff4$fField3AssignmentAssignmentff5$fField2AssignmentAssignmentff6$fField1AssignmentAssignmentff7toList$fPolyEqAssignmentAssignmentCurryAssignmentClasscurryAssignmentuncurryAssignmentCurryAssignmentIdxExtendContext'extendContext' ExtendContext extendContextApplyEmbedding'applyEmbedding'ApplyEmbeddingapplyEmbedding CtxEmbedding _ctxeSize_ctxeAssignment:>Empty singletontoVectorctxeSizectxeAssignmentidentityEmbeddingextendEmbeddingRightDiffextendEmbeddingRightextendEmbeddingBothgetCtxsetCtxfieldnatIndex natIndexProxy$fApplyEmbedding'k'k'Index$fExtendContext'k'k'Index $fIdx'kn::>r $fIdx'k0::>x$fCurryAssignmentClassk::>$fCurryAssignmentClasskEmptyCtxPairS IsBinTreeasBintipbinTreeAppBinTreeTipTreeUpdated UnchangedMaybeSJustSNothingS fromMaybeS updatedValuebalanceLbalanceRlinkmergegluefilterGtfilterLtunion$fApplicativeMaybeS$fAlternativeMaybeS$fFunctorMaybeS UpdateRequestKeepSetDeleteMapFmapmapMaybetraverseWithKeytraverseWithKey_ notMemberkeyselems foldrWithKey insertWith updateAtKeyfromKeys fromKeysM mergeWithKeyM $fShowMapF$fTraversableFkMapF$fFoldableFkMapF$fFunctorFkMapF$fEqMapF$fIsBinTreeMapFPair $fAtFaMapF $fIxedFaMapFGHC.ShowShow defaultSalt'hashable-1.2.6.1-JDYnvpSucMf1h1i2CUUtVbData.Hashable.ClasshashGHC.STSTIONatGHC.RealmodconExprmkEqFnewNamesjoinCompareToOrdFmkOrdF recurseArgtraverseAppMatchmatchEqArguments mkSimpleEqFmatchOrdArguments mkSimpleOrdF#.TrueFoldable BalancedTreeunsafe_bal_indexunsafe_bal_adjust bal_zipWithMappendfmap_binbal_dropunsafe_bin_indexunsafe_bin_adjust unsafeIndexunsafe_bal_generateunsafe_bal_generateMunsafe_bin_generateunsafe_bin_generateM DropResult DropEmptyDropExt BinomialTreePlusOnePlusZeroBalLeafBalPairHeightZeroSucc_contextExtSizeInt MyNatReprMyZRMySRMyNatMyZMySAssignmentEmptyAssignmentExtendDiffHere DiffThereSizeZeroSizeSuccIdx' natIndex'GHC.BaseMaybe insertMax insertMin hedgeUnion_LB hedgeUnion_UBhedgeUnion_LB_UBtraverseinsertWithImpl filterMiddleatKey' AtKeyResultAtKeyUnchanged AtKeyInserted AtKeyModified AtKeyDeletedBinTip