!z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn o p q r s t u v w x y -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)Safe +,:<=ADOQRT The type of a shrinker function..Keep generating until we actually get a value.Lifts z to properties. /Lifts a plain property into a monadic property. jWrite a metaproperty on the output of QuickChecking a property using a boolean predicate on the output. .Same as above, but using a property predicate. DGiven shrinkers for the components of a pair we can shrink the pair.    -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None+DI BType-level function that constantly returns an internal reference.A reference is natural number.A process id is merely a natural number that keeps track of which thread the reference comes from. In the sequential case the process id is always 0N. Likewise the sequential prefix of a parallel program also has process id 0*, while the left suffix has process id 1', and then right suffix has process id 2.OAn internal (or integer) reference consists of a reference and a process id.    -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None%&*+,9:;<=ADOQRT#Same as the above.$>Type alias that is helpful when defining state machine models.%Indexed variant of {.&(Tranversable for predicate transformers.'Indexed traverse function.(&Same as above, with arguments flipped.)$Foldable for predicate transformers.*Indexed |.+Indexed toList.}Indexed ~.,Indexed z.-Predicate transformers..Indexed ./Dependent pairs.1LWhen generating commands it is enough to provide a reference placeholder.2hUntyped commands are command where we hide the response type. This is used in generation of commands.4<The constraints on commands (and their indices) that the   and   helpers require.52Type-level function that maybe returns a response.61Type-level function that returns a response type.74Given a command, what kind of response does it have?8*What type of response a typed command has.9 The singleton type of responses.<NA response of a command is either of some type or a referece at some index.?MSignatures of commands contain a family of references and a response type.@$Given a command, how can we show it?A4How to show a typed command with internal refereces.BA state machine based model.HIndexed variant of .*#$%&'()*+},-./0123456789:;<=>?@ABCDEFGHIJ,#$%&('),+*-./0123456789:;<=>?@ABCDEFGH4BCDEFG@AA?<=>9:;657884231/0-..)*+,*+,&'('(%$#H#$%&'()*+},-./0123456789:;<=>?@ABCDEFGHIJ-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None %&+,2:DQRKForks are used to represent parallel programs. They have a sequential prefix (the middle argument of the constructor), and two parallel suffixes (the left- and right-most argument of the constructor).MInternal untyped commands.O3Type-level function that maybe returns a reference.PShow function for 6.KLMNOPQR KLMNOP  MNKLPOKLMNOPQR-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)5Mats Daniel Gustafsson <daniel@advancedtelematic.com> provisionalnon-portable (GHC extensions)None[BGiven a history, and output from processes generate Doc with boxesXYZ[XYZ[XYZ[ XYZ[-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None%&+DOT]wScope-check a list of untyped internal commands, i.e. make sure that no command uses a reference that doesn't exist.^/Same as above, but for forks rather than lists.]^]^]^]^-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None %&+,DOQRT_An ix-indexed family of maps.`The empty map.aPartial lookup function.bTotal version of the above.cKey membership check.dMap insertion.eSize of the key set._`abcde_`abcde_`abcde_`abcde-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None!"%&+,:DOQRTff{Lift a generator of untyped commands with reference placeholders into a generator of lists of untyped internal commands.g/Same as the above, but for stateful generators.hPA shrinker of typed commands can be lifted to a shrinker of untyped commands.i^Lift a shrinker of internal commands into a shrinker of lists of untyped internal commands.j&Remove commands that uses a reference.kyLift semantics of typed commands with external references, into semantics for typed commands with internal references.l0Collects length statistics about the input list.mACheck that the pre- and post-conditions hold in a sequential way. fGenerator to be lifted. Process id.-Keeps track of how many refereces of sort ix are in scope.g"Stateful generator to be lifted.Initial generator state.hiShrinker to be lifted.j)If this command returns a reference, thenremove all commands that use that reference in this list. If a command we remove uses another reference, then we proceed recursively.kSemantics to be lifted.lmList of commands to check.fghijklmfghikjlm fghijklm -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None!"%&+,:<=ADOQRTn{Lift a generator of untyped commands with reference placeholders into a generator of forks of untyped internal commands.p^Lift a shrinker of internal commands into a shrinker of forks of untyped internal commands.qLift the semantics of a single typed command into a semantics for forks of untyped internal commands. The prefix of the fork is executed sequentially, while the two suffixes are executed in parallel, and the result (or trace) is collected in a so called history.r%Check if a history can be linearised.nGenerator to be lifted.opShrinker to be lifted.qSemantics to be lifted.rsnopqrnopqrnopqrs -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None %&+,:DOTt3Check if two lists of commands are equal modulo \alpha -conversion.u3Check if two forks of commands are equal modulo \alpha -conversion.tThe two input lists.uThe two input forks.tututu -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)1Stevan Andjelkovic <stevan@advancedtelematic.com> provisionalnon-portable (GHC extensions)None%&<=OTv}This function builds a property that tests if your model is agrees with your semantics when running commands sequentially.w3Same as above, except it provides more flexibility.xThis function builds a property that tests your semantics for race conditions, by runnings commands in parallel and then trying to linearise the resulting history.Note:@ Make sure that your model passes the sequential property first.vModel GeneratorShrinker SemanticswModel GeneratorGenerator stateShrinker SemanticsxModel GeneratorShrinker SemanticsyModel GeneratorShrinker SemanticsCleanup0#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHvwxyvwxyvwxy !"##$$%%&'()*+,-./0123456789:;<=>?@AABCCDEFGHIIJKKLMNOPPQRSTUVWXXYYZ[\]^_`abcdefghijklmnopqrstuvwx y z { | } ~  pj         5quickcheck-state-machine-0.0.0-21Uab2gMT0dG7VlfQNcfJ2Test.StateMachine.Types Test.StateMachine.Internal.Utils'Test.StateMachine.Internal.Types.IntRef Test.StateMachine.Internal.Types*Test.StateMachine.Internal.Utils.BoxDrawer%Test.StateMachine.Internal.ScopeCheck Test.StateMachine.Internal.IxMap%Test.StateMachine.Internal.Sequential#Test.StateMachine.Internal.Parallel(Test.StateMachine.Internal.AlphaEqualityTest.StateMachinesequentialPropertyparallelProperty'QuickCheck-2.9.2-8nJqNls0Q836oDXpGGg3LDTest.QuickCheck.PropertyPropertypropertybase Data.ProxyProxy(constraints-0.9.1-CibQda3QqsNDsPqPL5yu0iData.Constraint\\%singletons-2.2-Gy1XegIjyg73AKIKyniq35Data.Singletons@@Shrinker genFromMaybeanyP liftPropertyshrinkPropertyHelpershrinkPropertyHelper' shrinkPair ConstIntRefRefPidIntRefshowRef$fEqPid$fOrdPid $fShowPid $fReadPid$fNumPid$fEqRef$fOrdRef $fShowRef $fReadRef$fNumRef $fEqIntRef $fOrdIntRef $fShowIntRef $fReadIntRefOrds'Ords IxForallF IxTraversable itraverseifor IxFoldableifoldMapitoListiany IxFunctorifmapExRefPlaceholderUntypedCommandConstraint GetResponse_ Response_ HasResponseresponse SResponse SReferenceResponse Reference SignatureShowCmdshowCmdStateMachineModel precondition postcondition transition initialModeliinstF$fIxForallFk1k2pf$fIxComposeCk1k2pfaForkIntRefed MayResponse_ showResponse_ $fPrettyFork$fShowIntRefed$fEqFork $fFunctorFork $fShowFork $fOrdFork $fReadFork EventTypeOpenCloseexec$fShowEventType scopeCheckscopeCheckForkIxMapempty!lookupmemberinsertsizeliftGenliftGen' liftShrinker liftShrinkremoveCommandsliftSem collectStatscheckSequentialInvariant liftGenFork liftGenFork'liftShrinkFork liftSemForkcheckParallelInvariant$fPrettyOperationalphaEq alphaEqForksequentialProperty'parallelProperty' Data.FoldableanyData.Constraint.ForallForallFfoldMapifoldrfoldrGHC.BasefmapinstF IxComposeCCmdTopStartActiveDeactiveRetBottomEventcompileadjustnexttoEvent compilePrefixuses HistoryKitgetHistoryChannelgetProcessIdHistory Operation HistoryEventInvocationEvent ResponseEventHistorygetProcessIdEventtakeInvocationsfindCorrespondingResp linearTree linearise toForkOfOps toBoxDrawings mkHistoryKitrunMany canonical' canonical canonicalFork