dpx      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwNoneA primitive operator. A primitive constructor. Cons data constructor. Nil data constructor. P data construct (pairs). Unit data constructor (()). List type constructor. Pair type constructor. Int type constructor. Unit type constructor (Unit). EThese are primitive witnesses that guarantee the associated property F of the program. Ostensibly, they are only introduced by the system E at runtime, but for testing purposes we can also inject them into  the source program. #Witness that a region is manifest. 3 This ensures there are no thunks in the region, & which prevents it from being Lazy. Witness that a region is lazy. 1 This lets is allocate thunks into the region, ( and prevents it from being Manifest. "Witness that a region is mutable. / This lets us update objects in the region, ( and prevents it from being Constant. #Witness that a region is constant. : This lets us purify read and allocation effects on it, ' and prevents it from being Mutable. !Witness that a region is global. C Global regions live for the duration of the program and are not D deallocated in a stack like manner. This lets us hide the use of B such regions, and rely on the garbage collector to reclaim the  space. A region handle. These are pretty printed like R5#. A store location. These are pretty printed like L4#. -Names of things recognised by the evaluator. Store capabilities. Region handles. Store locations. Primitive operators (eg addInt, subInt). !Primitive constructors (eg  List, Nil). ",Integer literals (which data constructors). #User constructors. $User variables. %Read a primitive name. &/Lex a string to tokens, using primitive names. :The first argument gives the starting source line number. .  !"#$%x&yz{|}~'  !"#$%&'$#"!   %&  $#"! %x&yz{|}~None '*Application of the Unit type constructor. ()Application of the Int type constructor. )*Application of the Pair type constructor. **Application of the List type constructor. 55Check whether a witness is a capability constructor. 65Check whether an expression is the unit constructor. 7"Take a region handle from a type. 8)Take a region handle from an expression. 9*Take a store location from an expression.  We strip off forget casts along the way :=Take a store location from an expression, reaching under any forget casts. ;1Take a witness of mutability from an expression. '()*+,-./0123456789:;'()*+,-./0123456789:;'()*+,-./0123456789:;'()*+,-./0123456789:;None<Data type definitions for:  Type Constructors  ---- ------------  Unit ()  Int 0 1 2 3 ...  List Nil Cons =;Kind environment containing kinds of primitive data types. >#Take the kind of a primitive name. Returns  if the name isn't primitive. ?IType environment containing types of primitive data constructors as well ) as the following primitive operators:  8negInt, addInt, subInt, mulInt, divInt, eqInt, updateIntBIt also contains types for the primitive capability constructors: Global#, Const# , Mutable#, Lazy# , Manifest#@#Take the type of a primitive name. Returns  if the name isn't primitive. A$Take the arity of a primitive name. <=>?@A<=>?@A<=>?@A<=>?@ANoneBStore binding. I These are naked objects that can be allocated directly into the heap. C#A thunk, used for lazy evaluation. E1Lambda abstraction, used for recursive bindings. P The flag indicates whether each binder is level-1 (True) or level-0 (False). HAn algebraic data constructor. M!Next store location to allocate. N Next region handle to allocate. O"Region handles already allocated. P/Regions that are marked as global, and are not ( deallocated with a stack discipline. Q$Map of locations to store bindings,  their types, & and the handle for the regions they're in. R@Initial store containing the preallocated regions and bindings. S$Location of the static unit object. T6Check whether an expression is the unit constructor,  or its static heap location. U$Create a new location in the store. V+Create several new locations in the store. W"Create a new region in the store. X(Create several new regions in the store Y,Delete a region, removing all its bindings. Z1Check whether a store contains the given region. [Set a region as being global. \9Add a store binding to the store, at the given location. ].Allocate a new binding into the given region,  returning the new location. ^6Alloc some recursive bindings into the given region, " returning the new locations. _%Lookup a the binding for a location. `%Lookup the type of a store location. a;Lookup the region handle, type and binding for a location. "BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a$BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a$KLMNOPQBHECIJFGDRSTUVWXYZ[\]^_`aBHECIJFGDKLMNOPQRSTUVWXYZ[\]^_`aNonebFStep a primitive constructor, which allocates an object in the store. cStep a primitive operator. dLike W+ but return the region handle wrapped in a . eLike Y) but accept a region handle wrapped in a . b!Name of constructor to allocate. Arguments to constructor. Current store. "New store and result expression, $ if the operator steps, otherwise . cName of operator to evaluate. Arguments to operator. Current store. "New store and result expression, $ if the operator steps, otherwise . debcdebcdebcdeNone f(The result of stepping some expression. g,Expression is stuck, and we know for sure it' s mistyped. h3Expression cannot step, and is not a (weak) value. ) The original expression was mistyped, / or something is wrong with the interpreter. i.Expression cannot step and is a (weak) value.  We're done already. j&Expression progressed to a new state. k*Single step a core expression to a value. As opposed to l2, if the provided expression is the location of a ) Thunk, then the thunk will be forced. l/Single step a code expression to a weak value. As opposed to k3, if the provided expression is the location of a ( Thunk, then the thunk is not forced. 5See if a constructor tag matches a case alternative. ,See if a constructor tag matches a pattern. m#Check if an expression is a value.  Values can')t be progressed any further, with either k or l. n)Check if an expression is a weak values. A These are all the values, and locations that point to thunks. #Weak values can be progressed with k , but not l. (Check if an expression is a weak value. JGet the region witness corresponding to one of the witness types that are  permitted in a letregion. fghijkCurrent store. Expression to force. Result of forcing it. lCurrent store. Expression to step. Result of stepping it. mn fghijklmn fjihgklmn fjihgklmnNone o=Things that can go wrong with the capabilities in a program. p9A capability constructor applied to a non-region handle.  As with q* we only need to check for this because we're H using general witness application to represent capabilities, instead  of having an atomic form. q,A partially applied capability constructor. @ In the formal semantics, capabilities are atomic, so this isn't  a problem. However, as we'*re representing them with general witness 5 appliction we need to ensure the constructors aren' t partially  applied. s%Conflicting capabilities in program. w9Check for conflicting store capabilities in the program. An empty capability set Insert a capability, or  if this isn't one. ?Check a capability set for conflicts between the capabilities. 4Collect the list of capabilities in an expression, ( and check that they are well-formed. opqrstuvw opqrstuvw wosqptuvrrosqptuvrrwNonefghijklfjihgkl      !!""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ddc-core-eval-0.2.1.2DDC.Core.Eval.NameDDC.Core.Eval.CompoundsDDC.Core.Eval.EnvDDC.Core.Eval.StoreDDC.Core.Eval.PrimDDC.Core.Eval.StepDDC.Core.Eval.Check DDC.Core.EvalPrimOp PrimOpCopyIntPrimOpUpdateInt PrimOpEqInt PrimOpDivInt PrimOpMulInt PrimOpSubInt PrimOpAddInt PrimOpNegIntPrimCon PrimDaConCons PrimDaConNil PrimDaConPr PrimDaConUnit PrimTyConList PrimTyConPair PrimTyConInt PrimTyConUnitCap CapManifestCapLazy CapMutableCapConst CapGlobalRgnLocNameNameCapNameRgnNameLoc NamePrimOp NamePrimConNameIntNameConNameVarreadName lexStringtUnittInttPairtListwGlobalwConstwMutablewLazy wManifestwcGlobalwcConst wcMutablewcLazy wcManifest isCapConWisUnitX takeHandleT takeHandleXtakeLocX stripLocX takeMutableX primDataDefs primKindEnvkindOfPrimName primTypeEnvtypeOfPrimName arityOfNameSBindSThunk sbindThunkExpSLams sbindLamBinds sbindLamBodySObj sbindDataTag sbindDataArgsStore storeNextLoc storeNextRgn storeRegions storeGlobal storeBindsinitiallocUnit isUnitOrLocXnewLocnewLocsnewRgnnewRgnsdelRgnhasRgn setGlobaladdBind allocBind allocBinds lookupBindlookupTypeOfLoclookupRegionTypeBind stepPrimCon stepPrimOp primNewRegion primDelRegion StepResultStepStuckMistyped StepStuckStepDone StepProgressforcestepisValue isWeakValueErrorErrorNonHandle ErrorPartial errorWitness ErrorConflict errorRegions errorCap1 errorCap2 checkCapsX readName_$fPrettyPrimOp$fPrettyPrimCon $fPrettyCap $fPrettyRgn $fPrettyLoc $fPrettyNamebase Data.MaybeNothing $fPrettySBind $fPrettyStoreddc-core-0.2.1.2 DDC.Type.ExpBound tagMatchesAlt tagMatchesPat isSomeValueregionWitnessOfType unwrapCasts wrapCasts emptyCapSet mustInsertCapGHC.Errerror checkCapSet checkCapsXMCapSet capsGlobal capsConst capsMutablecapsLazy capsManifestCheckM checkCapsCM checkCapsLM checkCapsMM checkCapsAM checkCapsWM $fPrettyError