!}Q      !"#$%&'()*+,-./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<>?FQSTVWA parameterized-utils&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.parameterized-utils7A parameterized type that is hashable on all instances.parameterized-utilsHash with default salt.parameterized-utils)Parameterized generalization of the lens At class.parameterized-utilsGiven 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-utils)Parameterized generalization of the lens IxedF class, but with the guarantee that indexes exist in the container.parameterized-utilseGiven an index into a container, build a lens that points into the given element in the container.parameterized-utils)Parameterized generalization of the lens Ixed class.parameterized-utilssGiven an index into a container, build a traversal that visits the given element in the container, if it exists.parameterized-utils8A 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.parameterized-utils'Provides a show instance for each type.parameterized-utilsLike , the precedence argument is one more/ than the precedence of the enclosing context.parameterized-utils@A parameterized type that can be compared on distinct instances.parameterized-utilscompareF compares two keys with different type parameters. Instances must ensure that keys are only equal if the type parameters are equal.#parameterized-utils=Ordering over two distinct types with a proof they are equal.'parameterized-utils1A polymorphic equality operator that generalizes  .*parameterized-utilsEqF 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.,parameterized-utilsAn 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./parameterized-utilsConvert # to standard ordering.0parameterized-utilsConvert standard ordering to #.1parameterized-utilsU`joinOrderingF x y` first compares on x, returning an equivalent value if it is not %. If it is EQF, it returns y.2parameterized-utils_Compare two values, and if they are equal compare the next values, otherwise return LTF or GTFparameterized-utils-A default salt used in the implementation of .-  !"#$%&'()*+,-./0123- *+'() !"2#$%&1./03,- Type-level lists.(c) Galois, Inc 2015!Joe Hendrix <jhendrix@galois.com>Safe +,-FSTl* 8parameterized-utilssUpdate the value in a context by number, from the left. If the index is out of range, the context is unchanged.9parameterized-utilsmLookup the value in a context by number, from the left. Produce a type error if the index is out of range.:parameterized-utilstUpdate the value in a context by number, from the right. If the index is out of range, the context is unchanged.;parameterized-utils7Lookup the value in a context by number, from the right<parameterized-utilsA 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.=parameterized-utils&A constraint that checks that the nat n& is a valid index into the context ctx!, and raises a type error if not.>parameterized-utilsoHelper type family used to generate descriptive error messages when an index is larger than the length of the A being indexed.?parameterized-utils6This type family computes the number of elements in a A@parameterized-utilsAppend two type-level contexts.Aparameterized-utilsKind A k" comprises lists of types of kind k.89:;<=>?@ABCDEFABCFDE@?98;:>=<(c) Galois, Inc 2015!Joe Hendrix <jhendrix@galois.com>None,FSTmGHGHA counter in the ST monad.(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com> provisionalUnsafe,FGKv@Iparameterized-utils"An index generated by the counter.Kparameterized-utils4A simple type that for getting fresh indices in the  monad. The type parameter s is used for the  monad parameter.Lparameterized-utilsCreate a new counter.Mparameterized-utils,Get a fresh index and increment the counter.Nparameterized-utils^Return true if counter has reached the limit, and can't be incremented without risk of error.IJKLMNKLMNIJ(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com>Safe&',FQVzYparameterized-utilsProject out of Some.Zparameterized-utilsApply function to inner value.[parameterized-utilsModify the inner value.\parameterized-utilsModify the inner value.WXYZ[\WXYZ[\ (c) Galois, Inc 2014-2016!Joe Hendrix <jhendrix@galois.com> Trustworthy ,-CEFGKQVbparameterized-utils"An index generated by the counter.dparameterized-utils8Provides 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.fparameterized-utilsCreate a new counter.gparameterized-utils-Create a new nonce generator in the ST monad.hparameterized-utils-Create a new nonce generator in the ST monad.iparameterized-utils@Run a ST computation with a new nonce generator in the ST monad.jparameterized-utils-Create a new nonce generator in the IO monad.kparameterized-utils7A nonce generator that uses a globally-defined counter. abcdefghijk debcghjifak (c) Galois, Inc 2014-2016%Eddy Westbrook <westbrook@galois.com>None,FKQTVtparameterized-utilsHelper type to build a y from the  monad.uparameterized-utilsHelper type to build a y from the  monad.vparameterized-utils9This transformer adds a nonce generator to a given monad.yparameterized-utilsA y$ is a monad that can generate fresh b?s in a given set (where we view the phantom type parameter of b& as a designator of the set that the b came from).|parameterized-utilsReturn the actual d used in an  computation.}parameterized-utilsRun a u computation with a fresh d.~parameterized-utilsRun a t computation with a fresh d inside .abcdefghijktuvwxyz{|}~ yz{vwxut|}~(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy&'-;=>?FKOQSTVi"parameterized-utils LeqProof m n0 is a type whose values are only inhabited when m is less than or equal to n.parameterized-utils Result of comparing two numbers.parameterized-utils'A runtime presentation of a type-level .PThis can be used for performing dynamic checks on a type-level natural numbers.parameterized-utils+The underlying integer value of the number.parameterized-utils+Return the value of the nat representation.parameterized-utils3This generates a NatRepr from a type-level context.parameterized-utils Decrement a NatReprparameterized-utilsGet the predicessor of a natparameterized-utils Increment a NatReprparameterized-utilsHReturn minimum unsigned value for bitvector with given width (always 0).parameterized-utils=Return maximum unsigned value for bitvector with given width.parameterized-utilsEReturn minimum value for bitvector in 2s complement with given width.parameterized-utilsEReturn maximum value for bitvector in 2s complement with given width.parameterized-utilstoUnsigned w i maps i to a i  2^w.parameterized-utils toSigned w i" interprets the least-significant w bits in iI as a signed number in two's complement notation and returns that value.parameterized-utilsunsignedClamp w i rounds i to the nearest value between 0 and 2^w-1 (inclusive).parameterized-utilssignedClamp w i rounds i to the nearest value between -2^(w-1) and  2^(w-1)-1 (inclusive).parameterized-utils.Return the maximum of two nat representations.parameterized-utils'Produce evidence that + is commutative.parameterized-utils'Produce evidence that * is commutative.parameterized-utils#Cancel an add followed b a subtractparameterized-utilsx  y checks whether x is less than or equal to y.parameterized-utilsApply reflexivity to LeqProofparameterized-utilsApply transitivity to LeqProofparameterized-utils"Add both sides of two inequalitiesparameterized-utils#Subtract sides of two inequalities.parameterized-utils#Create a leqProof using two proxiesparameterized-utils(Test whether natural number is positive.parameterized-utils"Congruence rule for multiplicationparameterized-utils>Multiplying two positive numbers results in a positive number.parameterized-utilsQProduce proof that adding a value to the larger element in an LeqProof is largerparameterized-utilsKProduce proof that subtracting a value from the smaller element is smaller.parameterized-utilsQApply a function to each element in a range; return the list of values obtained.parameterized-utilsRecursor for natural numbeers.Q WQ W(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com> Trustworthy,Fparameterized-utils&A hash table mapping nonces to values.parameterized-utilsCreate a new empty table.parameterized-utils!Create a new empty table to hold n elements.parameterized-utils6Create a hash table that is a copy of the current one.parameterized-utilsLookup value of key in table.parameterized-utils,Insert new key and value mapping into table.parameterized-utils,Return true if the key is in the hash table.parameterized-utils&Delete an element from the hash table.  (c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy&'-;=>?FKOQSTVparameterized-utils4A runtime representation of a GHC type-level symbol.parameterized-utils0The underlying text representation of the symbolparameterized-utilspGenerate a symbol representative at runtime. The type-level symbol will be abstract, as it is hidden by the W constructor.parameterized-utils:Generate a value representative for the type level symbol. (c) Galois, Inc 2013-2014!Joe Hendrix <jhendrix@galois.com>None &')>?STdparameterized-utils~A type used to describe (and match) types appearing in generated pattern matches inside of the TH generators in this module (, , , and )parameterized-utilsThe application of a type.parameterized-utilsMatch any type.parameterized-utils:Match the ith argument of the data type we are traversing.parameterized-utilsMatch a ground type.parameterized-utilsGiven 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.parameterized-utilsReturn an expression corresponding to the constructor. Note that this will have the type of a function expecting the argumetns given.parameterized-utilsGFind value associated with first pattern that matches given pat if any.parameterized-utilsstructuralEquality* declares a structural equality predicate.parameterized-utilsMatch equational form.parameterized-utilsstructuralTypeEquality fP returns a function with the type: forall x y . f x -> f y -> Maybe (x :~: y)parameterized-utilsstructuralTypeOrd 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.parameterized-utilsmGenerate a list of fresh names using the base name numbered 1 to n to make them useful in conjunction with -dsuppress-unqiues.parameterized-utilsICompare two variables and use following comparison if they are different.This returns an  instance.parameterized-utilsMatch equational form.parameterized-utils"Find the first recurseArg f var tp applies f to var where var has type tp@.parameterized-utilstraverseAppMatch f cC builds a case statement that matches a term with the constructor c and applies f to each argument.parameterized-utilsstructuralTraversal tp0 generates a function that applies a traversal f( to the subterms with free variables in tp.parameterized-utilsstructuralHash tp% generates a function with the type Int -> tp -> Int that hashes type.parameterized-utilsstructuralShow tp% generates a function with the type  tp -> ShowS that shows the constructor. parameterized-utilsconstructor information parameterized-utilsgenerated name prefix parameterized-utilspattern and bound names parameterized-utilsTypes bound by data arguments.parameterized-utilsPatterns for matching argumentsparameterized-utilsName of constructor.parameterized-utilsData declaration typesparameterized-utilsPatterns for matching argumentsparameterized-utilswildcard case requiredparameterized-utilsData declaration.parameterized-utilswildcard case requiredparameterized-utils List of type patterns to match. parameterized-utilsbase name parameterized-utilsquantity parameterized-utilslist of names: base1, base2.. parameterized-utilsTypes bound by data argumentsparameterized-utilsPatterns for matching argumentsparameterized-utilsName of constructor.parameterized-utilsNames bound in data declarationparameterized-utilsTypes for constructorsparameterized-utils Variables bound in first patternparameterized-utils!Variables bound in second patternparameterized-utilsData declaration typesparameterized-utilsPatterns for matching argumentsparameterized-utils(Information about the second constructorparameterized-utilsFirst constructor's indexparameterized-utils#Optional second constructor's indexparameterized-utilsName from first patternparameterized-utilsData declaration.parameterized-utilsPatterns for matching argumentsparameterized-utilsoptional right constructr indexparameterized-utilsFunction to applyparameterized-utils/Function to apply to each argument recursively.parameterized-utilsConstructor to match.parameterized-utilsMatch expression that'()'() (c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy,FQV'parameterized-utils This is a generalization of the Foldable/ class to structures over parameterized terms.parameterized-utilsHMap each element of the structure to a monoid, and combine the results.parameterized-utils&Right-associative fold of a structure.parameterized-utils%Left-associative fold of a structure.parameterized-utilsTRight-associative fold of a structure, but with strict application of the operator.parameterized-utilsNLeft-associative fold of a parameterized structure with a strict accumulator.parameterized-utilsConvert structure to list.parameterized-utils8A parameterized type that is a functor on all instances.parameterized-utilsPThis is a coercion used to avoid overhead associated with function composition.parameterized-utilsReturn ! if all values satisfy predicate. parameterized-utilsReturn ! if any values satisfy predicate. parameterized-utils)This function may be used as a value for  in a  instance. parameterized-utils)This function may be used as a value for  in a  instance. parameterized-utilsqMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results.        (c) Galois, Inc 2017Safe&',FQV,parameterized-utils`Like a 2-tuple, but with an existentially quantified parameter that both of the elements share.parameterized-utils$Extract the first element of a pair.parameterized-utils%Extract the second element of a pair.parameterized-utilsProject out of Pair.(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com> Trustworthy,FQSTVLparameterized-utils This is a generalization of the Foldable/ class to structures over parameterized terms.parameterized-utilsHMap each element of the structure to a monoid, and combine the results.parameterized-utils&Right-associative fold of a structure.parameterized-utils%Left-associative fold of a structure.parameterized-utilsTRight-associative fold of a structure, but with strict application of the operator.parameterized-utilsNLeft-associative fold of a parameterized structure with a strict accumulator. parameterized-utilsConvert structure to list.!parameterized-utils~A parameterized class for types which can be tested for parameterized ordering, when given an comparison test for subterms.#parameterized-utils|A parameterized class for types which can be tested for parameterized equality, when given an equality test for subterms.%parameterized-utilslA parameterized class for types which can be hashed, when given functions to hash parameterized subterms.'parameterized-utilskA parameterized class for types which can be shown, when given functions to show parameterized subterms.*parameterized-utils9A parameterized type that is a function on all instances.parameterized-utilsRThis is a coercision used to avoid overhead associated with function composition.,parameterized-utilsReturn ! if all values satisfy predicate.-parameterized-utilsReturn ! if any values satisfy predicate..parameterized-utils"Return number of elements in list./parameterized-utils)This function may be used as a value for fmapF in a FunctorF instance.0parameterized-utils)This function may be used as a value for  in a  instance.1parameterized-utilsqMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results.2parameterized-utilsqMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results. !"#$%&'()*+,-./012#$!"'()%&*+ 12/0,-.(c) Galois, Inc 2017!Joe Hendrix <jhendrix@galois.com>Safe&',-0<>?FQSTV]3parameterized-utilsRepresents 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 kind6parameterized-utilsParameterized list of elements.9parameterized-utilsReturn the index as an integer.:parameterized-utilsIndex 0;parameterized-utilsIndex 1<parameterized-utilsIndex 2=parameterized-utilsIndex 3>parameterized-utils+Return the value in a list at a given index?parameterized-utils Update the 6 at an index@parameterized-utils@Provides a lens for manipulating the element at the given index.Aparameterized-utilsjMap over the elements in the list, and provide the index into each element along with the element itself.Bparameterized-utils$Right-fold with an additional index.Cparameterized-utilsAZip up two lists with a zipper function, which can use the index.Dparameterized-utils"Traverse with an additional index.3456789:;<=>?@ABCD6783459>?@ABCD:;<=85 Trustworthy&',-.;=>?EFGQSTV/Tparameterized-utilsFView an assignment as either empty or an assignment with one appended.Wparameterized-utils;An assignment is a sequence that maps each index with type tp to a value of type 'f tp'.This assignment implementation uses a binomial tree implementation that offers lookups and updates in time and space logarithmic with respect to the number of elements in the context.parameterized-utils8A 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.Xparameterized-utils.This represents a contiguous range of indices.Yparameterized-utilsKAn index is a reference to a position with a particular type in a context.[parameterized-utils@A difference that can be automatically inferred at compile time.`parameterized-utilsmDifference in number of elements between two contexts. The first context must be a sub-context of the other.aparameterized-utils=A context that can be determined statically at compiler time.cparameterized-utilsAllows interpreting a size.fparameterized-utils!Represents the size of a context.gparameterized-utilsConvert a context size to an  .hparameterized-utilsThe size of an empty context.iparameterized-utils%Increment the size to the next value.kparameterized-utilsProject a sizelparameterized-utilsThe identity difference.mparameterized-utils9Extend the difference to a sub-context of the right side.nparameterized-utils&Extend the size by a given difference.oparameterized-utils,The total size of two concatenated contexts.qparameterized-utils#Index for first element in context.rparameterized-utils-Increase context while staying at same index.sparameterized-utils0Return the index of a element one past the size.tparameterized-utils#Return the last index of a element.wparameterized-utils 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.xparameterized-utilsGiven 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.yparameterized-utilsEReturn index at given integer or nothing if integer is out of bounds.zparameterized-utils5Return a range containing all indices in the context.{parameterized-utils{# returns the only index in a range.|parameterized-utils#`dropTailRange r n` drops the last n elements in r.}parameterized-utils$`dropHeadRange r n` drops the first n elements in r. parameterized-utilsLookup index in tree. parameterized-utilsUpdate value at index in tree. parameterized-utils Zip two balanced trees together. parameterized-utils0Concatenate a binomial tree and a balanced tree.parameterized-utilsMap over a binary tree.parameterized-utils:'bal_drop x y' returns the tree formed 'append x (init y)'parameterized-utilsLookup value in tree.parameterized-utilsLookup value in tree.~parameterized-utils(Return number of elements in assignment.parameterized-utils replicate nE make a context with different copies of the same polymorphic value.parameterized-utilsGenerate an assignmentparameterized-utilsGenerate an assignmentparameterized-utilsReturn empty assignmentparameterized-utils>Unexported index that returns an arbitrary type of expression.parameterized-utilsReturn value of assignment.parameterized-utils]Return value of assignment, where the index is into an initial sequence of the assignment.parameterized-utils8Modify the value of an assignment at a particular index.parameterized-utilsFView an assignment as either empty or an assignment with one appended. parameterized-utilsHeight of tree to generateparameterized-utilsStarting offset for entries.parameterized-utilsHeight of tree to generateparameterized-utilsStarting offset for entries. parameterized-utilsTree to lookup.parameterized-utilsIndex to lookup.parameterized-utilsHeight of tree parameterized-utilsTree to updateparameterized-utilsIndex to lookup.parameterized-utilsHeight of treeparameterized-utilsSize of tree to generateparameterized-utilsHeight of each element.parameterized-utilsSize of tree to generateparameterized-utilsHeight of each element.parameterized-utilsBinaparameterized-utilsTree to lookup in.parameterized-utils Size of treeparameterized-utilsTree to lookup in.parameterized-utils Size of treeI89:;<=>?@ABCDEFTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:abfghijnocdek`lm]^_p[\YZqrtsuvwxyXz{}|W~TUV(c) Galois, Inc 2014-2015!Joe Hendrix <jhendrix@galois.com>None&',-.;<=>?CFGKQSTV!parameterized-utilsFView an assignment as either empty or an assignment with one appended.parameterized-utils;An assignment is a sequence that maps each index with type tp to a value of type 'f tp'.parameterized-utilsKAn index is a reference to a position with a particular type in a context.parameterized-utils@A difference that can be automatically inferred at compile time.parameterized-utilsmDifference in number of elements between two contexts. The first context must be a sub-context of the other.parameterized-utils=A context that can be determined statically at compiler time.parameterized-utilsAllows interpreting a size.parameterized-utils=An indexed singleton type representing the size of a context.parameterized-utilsConvert a context size to an  .parameterized-utilsThe size of an empty context.parameterized-utils%Increment the size to the next value.parameterized-utils,The total size of two concatenated contexts.parameterized-utils6View a size as either zero or a smaller size plus one.parameterized-utilsThe identity difference.parameterized-utils9Extend the difference to a sub-context of the right side.parameterized-utils&Extend the size by a given difference.parameterized-utilsConvert an index to an  <, where the index of the left-most type in the context is 0.parameterized-utils#Index for first element in context.parameterized-utils-Increase context while staying at same index.parameterized-utils1Return the index of an element one past the size.parameterized-utils#Return the last index of a element.parameterized-utils 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.parameterized-utilsGiven 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.parameterized-utilsEReturn index at given integer or nothing if integer is out of bounds. parameterized-utils(Return number of elements in assignment. parameterized-utilsGenerate an assignment parameterized-utilsGenerate an assignment parameterized-utils replicate nE make a context with different copies of the same polymorphic value. parameterized-utilsCreate empty indexec vector.parameterized-utilsReturn value of assignment.parameterized-utils]Return value of assignment, where the index is into an initial sequence of the assignment.parameterized-utilsMap assignmentparameterized-utilsConvert assignment to list.D89:;<=>?@ABCDEF     5     (c) Galois, Inc 2014-16!Joe Hendrix <jhendrix@galois.com> Trustworthy%+,-.;<=>?AFQSTVeieparameterized-utilsjThis class implements two methods that witness the isomorphism between curried and uncurried functions.fparameterized-utilsxTransform a function that accepts an assignment into one with a separate variable for each element of the assignment.gparameterized-utilsGTransform a curried function into one that accepts an assignment value.hparameterized-utilsThis 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 -> xparameterized-utilsClass for computing Y values for positions in a A.iparameterized-utils'Constraint synonym used for getting an Y into a A. n? is the zero-based, left-counted index into the list of types ctx which has the type r.rparameterized-utilsContext embedding.vparameterized-utils8Pattern synonym for extending an assignment on the rightwparameterized-utils(Pattern synonym for the empty assignmentxparameterized-utils Create a single element context.yparameterized-utils'forIndexM sz f' calls f on indices '[0..sz-1]'.zparameterized-utils@Generate an assignment with some context type that is not known.{parameterized-utils@Generate an assignment with some context type that is not known.|parameterized-utils#Convert the assignment to a vector.}parameterized-utilsViews#Return true if assignment is empty.parameterized-utils.Return assignment with all but the last block.parameterized-utils*Return the last element in the assignment.parameterized-utilsFView an assignment as either empty or an assignment with one appended.parameterized-utils!Get a lens for an position in an WN by zero-based, left-to-right position. The position must be specified using TypeApplications for the n parameter.parameterized-utils Compute an Y& value for a particular position in a A. The TypeApplicationsB extension will be needed to disambiguate the choice of the type n.parameterized-utilsThis version of ! is suitable for use without the TypeApplications extension.parameterized-utils+Create an assignment from a list of values.parameterized-utilsInductive-stepparameterized-utils Base-case89:;<=>?@ABCDEFTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~efghijklmnopqrstuvwxyz{|}~Ax|vw~}yz{rstulmjkpqnoihefgv Safeo  !"#$%&'()*+,-./012389:;<=>?@ABCDEFWXYZ[\     !"#$%&'()*+,-./012$Utilities for balanced binary trees.(c) Galois, Inc 2014!Joe Hendrix <jhendrix@galois.com>Safe %&'+<>?AVparameterized-utils A Strict pairparameterized-utils]Updated a contains a value that has been flagged on whether it was modified by an operation.parameterized-utilsA strict version of parameterized-utilsInsert a new maximal element.parameterized-utilsInsert a new minimal element.parameterized-utilsGlink is called to insert a key and value between two disjoint subtrees.parameterized-utilsBConcatenate two trees that are ordered with respect to each other.parameterized-utils 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.parameterized-utils'glue l r' concatenates l and r.It assumes that l and r1 are already balanced with respect to each other.parameterized-utilsxReturns only entries that are less than predicate with respect to the ordering and Nothing if no elements are discared.parameterized-utils filterLt' k m returns submap of m3 that only contains entries that are smaller than k1. If no entries are deleted then return Nothing.parameterized-utilsUnion two setsparameterized-utils]Hedge union where we only add elements in second map if key is strictly above a lower bound.parameterized-utils]Hedge union where we only add elements in second map if key is strictly below a upper bound.parameterized-utilsiHedge union where we only add elements in second map if key is strictly between a lower and upper bound.parameterized-utilsPredicate 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%&',-.;=>?AFOQSTVP"parameterized-utils*Update request tells when to do with valueparameterized-utilsKeep the current value.parameterized-utilsSet the value to a new value.parameterized-utilsDelete a value.parameterized-utilsDA map from parameterized keys to values with the same paramter type.parameterized-utilsReturn empty mapparameterized-utilsReturn true if map is emptyparameterized-utils&Return map containing a single elementparameterized-utilsModify elements in a mapparameterized-utilsRun partial map over elements. parameterized-utilsTraverse elements in a mapparameterized-utilsTraverse elements in a mapparameterized-utils4Traverse elements in a map without returning result.parameterized-utilsLookup value in map.parameterized-utils#Return true if key is bound in map.parameterized-utils'Return true if key is not bound in map.parameterized-utils.Return all keys of the map in ascending order.parameterized-utilsDReturn all elements of the map in the ascending order of their keys.parameterized-utils*Perform a fold with the key also provided.parameterized-utils filterGt k m returns submap of m2 that only contains entries that are larger than k.parameterized-utils filterLt k m returns submap of m3 that only contains entries that are smaller than k.parameterized-utilsHInsert a binding into the map, replacing the existing binding if needed.!parameterized-utilsHInsert a binding into the map, replacing the existing binding if needed.parameterized-utilsinsertWith 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.parameterized-utils'Delete a value from the map if present.parameterized-utilsUnion two setsparameterized-utils\Log-time algorithm that allows a value at a specific key to be added, replaced, or deleted.parameterized-utils"Create a Map from a list of pairs.parameterized-utilsVGenerate a map from a foldable collection of keys and a function from keys to values.parameterized-utils^Generate a map from a foldable collection of keys and a monadic function from keys to values.parameterized-utils*Merge bindings in two maps to get a third."parameterized-utils<Returns only entries that are strictly between the two keys.parameterized-utilsNTurn a map key into a lens that points into the indicated position in the map.parameterized-utils[Turn a map key into a traversal that visits the indicated element in the map, if it exists.#parameterized-utils(Function to call if no element is found.parameterized-utils Key to updateparameterized-utils"Action to call if nothing is foundparameterized-utils!Action to call if value is found.parameterized-utils Map to updateparameterized-utils)Function for evaluating a register value.parameterized-utilsSet of X86 registersparameterized-utils)Function for evaluating a register value.parameterized-utilsSet of X86 registersR  !"#$%&'()*+,-./0123%$ ! " # $%&%'%(%)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdcbefghijklmnopqrstuuvwxyz{|} ~ g h i k  m n o p q r s t                                               ! " # $ %&'()*+,-./0123456789:;<=>?@ABCDEFhGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeAfghijklmnopqrstuvwxyz{|}~L^_\[]`abcdAghijklmnopqrstuv{wxyz|f}~L^_\[]`      !"#$%&'()*+,-.//01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUCDVEWXYZ[\]^_`abcdedfghijklmnop q r s t u v w x y z { |}~|NX0parameterized-utils-1.0.1-1Mjzm2UA3Q9GwgXFCGSUKYData.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'IxedFixFIxValueFIndexFShowFwithShowshowF showsPrecFOrdFcompareFleqFltFgeqFgtF OrderingFLTFEQFGTFPolyEqpolyEqFpolyEqEqFeqF CoercibleFcoerceForderingF_refl toOrdering fromOrdering joinOrderingF lexCompareFshowsF$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 isZeroNatdecNatpredNatincNathalfNataddNatsubNatdivNat withDivModNat natMultiply minUnsigned maxUnsigned minSigned maxSigned toUnsignedtoSigned unsignedClamp signedClampsomeNatmaxNatplusCommmulCommmul2PlusplusMinusCancelminusPlusCanceladdMulDistribRightwithAddMulDistribRightwithSubMulDistribRight testStrictLeq testNatCasestestLeqleqReflleqTransleqAdd2leqSub2leqProof withLeqProofisPosNat leqMulCongr leqMulPos leqMulMonoleqAdd leqAddPosleqSubaddIsLeqaddPrefixIsLeq dblPosIsPos addIsLeqLeft1withAddPrefixLeq withAddLeq natForEachnatRec mulCancelR$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!!updateindexedimapifoldrizipWith 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 extendRightextSizeaddSizeviewDiff baseIndex skipIndex nextIndex lastIndex extendIndex extendIndex'forIndex forIndexRangeintIndexallRange indexOfRange dropTailRange dropHeadRangesize replicategenerate generateMemptyextend!!^adjustadjustM viewAssignzipWithzipWithMtraverseWithIndex<++> $fShowSize$fKnownContextk::>$fKnownContextkEmptyCtx$fCategoryCtxDiff$fKnownDiffkl::>$fKnownDiffkll$fHashableIndex$fHashableFkIndex$fShowFCtxBalancedTree$fShowBalancedTree$fHashableFCtxBalancedTree$fOrdFCkCtxBalancedTree $fTestEqualityFCkCtxBalancedTree$fHashableFCtxBinomialTree$fOrdFCkCtxBinomialTree $fTestEqualityFCkCtxBinomialTree $fKnownReprCtxAssignmentEmptyCtx$fKnownReprCtxAssignment::>$fTraversableFCkCtxAssignment$fFoldableFCkCtxAssignment$fFunctorFCkCtxAssignment$fIxedFkAssignment$fIxedF'kAssignment$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$fField1AssignmentAssignmentff7$fPolyEqAssignmentAssignmentCurryAssignmentClasscurryAssignmentuncurryAssignmentCurryAssignmentIdxExtendContext'extendContext' ExtendContext extendContextApplyEmbedding'applyEmbedding'ApplyEmbeddingapplyEmbedding CtxEmbedding _ctxeSize_ctxeAssignment:>Empty singleton forIndexM generateSome generateSomeMtoVectornull decomposeinitlastviewctxeSizectxeAssignmentidentityEmbeddingextendEmbeddingRightDiffextendEmbeddingRightextendEmbeddingBothfieldnatIndex natIndexProxyfromListsize1size2size3size4size5size6i1of2i2of2i1of3i2of3i3of3i1of4i2of4i3of4i4of4i1of5i2of5i3of5i4of5i5of5i1of6i2of6i3of6i4of6i5of6i6of6$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 updateAtKeytoListfromKeys fromKeysM mergeWithKeyM $fShowMapF$fTraversableFkMapF$fFoldableFkMapF$fFunctorFkMapF$fEqMapF$fIsBinTreeMapFPair $fAtFaMapF $fIxedFaMapFGHC.ShowShow showsPrec defaultSalt&hashable-1.2.7.0-Q2TKVDwk4GBEHmizb4teZData.Hashable.ClasshashGHC.STSTIONatGHC.RealmodconExprmkEqFnewNamesjoinCompareToOrdFmkOrdF recurseArgtraverseAppMatchmatchEqArguments mkSimpleEqFmatchOrdArguments mkSimpleOrdF#.TrueFoldable BalancedTreeIntunsafe_bal_indexunsafe_bal_adjust bal_zipWithMappendfmap_binbal_dropunsafe_bin_indexunsafe_bin_adjust unsafeIndexunsafe_bal_generateunsafe_bal_generateMunsafe_bin_generateunsafe_bin_generateMIdx'GHC.BaseMaybe insertMax insertMin hedgeUnion_LB hedgeUnion_UBhedgeUnion_LB_UBtraverseinsertWithImpl filterMiddleatKey'