!N      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M SafeDNOPQRSTU-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)Safe1EXL7   !"#$%&'()*+,-./01234567 !"#$%  &'()*+,-./0123456 )5*5+5,5-5.5/80814233241Safe-8>HSUVX^ :;<=>?@ABC >?@A<=B:;C(C) 2017, Jacob Stanley BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)None &'17=>?MmYZ[\]^_`abcdefbc`a^_\]defYZ[-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)None1!pquickcheck-state-machineSAn operation packs up an invocation event with its corresponding response event.quickcheck-state-machinegGiven a history, return all possible interleavings of invocations and corresponding response events.(C) 2018, HERE Europe B.V. BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)NoneM${(C) 2017, Jacob Stanley BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)NoneMSX/quickcheck-state-machineEnvironment errors.quickcheck-state-machine0A mapping of symbolic values to concrete values.quickcheck-state-machineCreate an empty environment.quickcheck-state-machine;Insert a symbolic / concrete pairing in to the environment.quickcheck-state-machineCast a V in to a concrete value.quickcheck-state-machine]Turns an environment in to a function for looking up a concrete value from a symbolic one.quickcheck-state-machineRConvert a symbolic structure to a concrete one, using the provided environment. -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)None 1456>MSX3HRYZ[\]^_`abcdef#None -=>?HUVXk5 -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)5Mats Daniel Gustafsson <daniel@advancedtelematic.com> provisionalnon-portable (GHC extensions)None4;quickcheck-state-machineEvent invocation or response.quickcheck-state-machineBGiven a history, and output from processes generate Doc with boxes 9(C) 2017, ATS Advanced Telematic Systems GmbH, Li-yao Xia BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)SafeE{quickcheck-state-machine/Lifts a plain property into a monadic property.quickcheck-state-machineLifts W to X.quickcheck-state-machine A variant of # with an explicit show function.quickcheck-state-machineLifts Y to properties.quickcheck-state-machineDGiven shrinkers for the components of a pair we can shrink the pair.quickcheck-state-machine&Same above, but for homogeneous pairs.Zquickcheck-state-machineLike [, but retries n times. -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)None $->@AHX_Q quickcheck-state-machine<Shrink commands in a pre-condition and scope respecting way.quickcheck-state-machineSPrint distribution of commands and fail if some commands have not been executed.quickcheck-state-machineMinimum number of commands.quickcheck-state-machine Predicate.quickcheck-state-machineMinimum number of commands.quickcheck-state-machineMinimum number of commands.quickcheck-state-machineMinimum number of commands.quickcheck-state-machineMaximum number of commands.quickcheck-state-machine#Check invariant and post-condition?           -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)None$>SXf\quickcheck-state-machinesA list of commands is parallel safe if the pre-conditions for all commands hold in all permutations of the list.]quickcheck-state-machine1Apply the transition of some commands to a model.quickcheck-state-machineIShrink a parallel program in a pre-condition and scope respecting way. quickcheck-state-machineTry to linearise a history of a parallel program execution using a sequential model. See the *Linearizability: a correctness condition for concurrent objects* paper linked to from the README for more info.!quickcheck-state-machinehTakes the output of parallel program runs and pretty prints a counterexample if any of the runs fail."quickcheck-state-machineyDraw an ASCII diagram of the history of a parallel program. Useful for seeing how a race condition might have occured.quickcheck-state-machine Predicate.]quickcheck-state-machine The model.quickcheck-state-machine The commands.quickcheck-state-machine/How many times to execute the parallel program.!quickcheck-state-machine Output of .  !"  "!-(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalnon-portable (GHC extensions)Nonei:U   !"#$%&'()*+,-./0123456YZ[\^`def!!^`\edYZ[f -(C) 2017, ATS Advanced Telematic Systems GmbH BSD-style (see the file LICENSE)0Stevan Andjelkovic <stevan.andjelkovic@here.com> provisionalportableSafeUV)&quickcheck-state-machine(Partial) functions.'quickcheck-state-machine Relations.+quickcheck-state-machineSubset.'boolean ([1, 2] `isSubsetOf` [3, 2, 1])True,quickcheck-state-machine Set equality.boolean ([1, 1, 2] ~= [2, 1])True7quickcheck-state-machineDomain restriction.(['a'] <| [ ('a', "apa"), ('b', "bepa") ] [('a',"apa")]8quickcheck-state-machineCodomain restriction.*[ ('a', "apa"), ('b', "bepa") ] |> ["apa"] [('a',"apa")]9quickcheck-state-machineDomain substraction.)['a'] <-| [ ('a', "apa"), ('b', "bepa") ][('b',"bepa")]:quickcheck-state-machineCodomain substraction.:[ ('a', "apa"), ('b', "bepa"), ('c', "cepa") ] |-> ["apa"][('b',"bepa"),('c',"cepa")]B[ ('a', "apa"), ('b', "bepa"), ('c', "cepa") ] |-> ["apa", "cepa"][('b',"bepa")]G[ ('a', "apa"), ('b', "bepa"), ('c', "cepa") ] |-> ["apa"] |-> ["cepa"][('b',"bepa")];quickcheck-state-machineThe image of a relation.<quickcheck-state-machine Overriding.![('a', "apa")] <+ [('a', "bepa")][('a',"bepa")]![('a', "apa")] <+ [('b', "bepa")][('a',"apa"),('b',"bepa")]=quickcheck-state-machineDirect product.>quickcheck-state-machineParallel product.Iquickcheck-state-machine Application.Mquickcheck-state-machine Assignment.$singleton 'a' "apa" .! 'a' .= "bepa"[('a',"bepa")]$singleton 'a' "apa" .! 'b' .= "bepa"[('a',"apa"),('b',"bepa")]+#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM+()*+,'&#%$-./0123456789:;<=>?@ABCDEFGHIJKLM#1$1%1)6*7+5,5748494:4<4=4>4K4L9 M4^ !"#$%&'()*+,-./0!123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijjkllmmnnoopqrstuvwxyz{|}~                                       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N OPQRSTUVWXYZ[\][^X_` a[bc d ef5quickcheck-state-machine-0.4.3-3TWMr2pTwqg5vqFv7RVRY1Test.StateMachine.LogicTest.StateMachine.Types.Rank2"Test.StateMachine.Types.ReferencesTest.StateMachine.Types.HistoryTest.StateMachine.Types.GenSym#Test.StateMachine.Types.EnvironmentTest.StateMachine.Types!Test.StateMachine.ConstructorNameTest.StateMachine.BoxDrawerTest.StateMachine.UtilsTest.StateMachine.SequentialTest.StateMachine.ParallelTest.StateMachine.ZPaths_quickcheck_state_machineTest.QuickCheck.Monadic forAllShrinkTest.StateMachineValueVFalseVTrueCounterexampleBotCFstSndEitherCImpliesCNotC PredicateCForallCExistsCBooleanC AnnotateC Predicate:==:/=:<:<=:>:>=ElemNotElemLogicBotTop:&&:||:=>NotForallExistsBooleanAnnotatedual strongNegbooleanlogic predicate.==./=.<.<=.>.>=elemnotElem.//.&&.||.=>forallexists $fShowValue$fShowCounterexample$fShowPredicate TraversabletraverseFoldablefoldMapFunctorfmapgfmap<$>gfoldMap gtraverse$fFunctorkRec1 $fFunctorkM1 $fFunctork:.: $fFunctork:*: $fFunctork:+: $fFunctorkK1 $fFunctorkU1$fFoldablekRec1 $fFoldablekM1$fFoldablek:.:$fFoldablek:*:$fFoldablek:+: $fFoldablekK1 $fFoldablekU1$fTraversablekRec1$fTraversablekM1$fTraversablek:.:$fTraversablek:*:$fTraversablek:+:$fTraversablekK1$fTraversablekU1OpaqueunOpaque ReferenceConcreteSymbolicVar referenceconcreteopaque$fOrd1Symbolic $fEq1Symbolic$fToExprSymbolic$fShow1Symbolic$fToExprConcrete$fOrd1Concrete $fEq1Concrete$fShow1Concrete$fShowReference$fOrdReference $fEqReference$fTraversableTYPEReference$fFoldableTYPEReference$fFunctorTYPEReference$fToExprReference$fToExprOpaque $fShowOpaque$fEqVar$fOrdVar $fShowVar $fGenericVar $fToExprVar$fGenericReference $fEqOpaque $fOrdOpaque$fShowConcrete $fOrdSymbolic $fEqSymbolic$fShowSymbolic OperationCrash HistoryEvent InvocationResponse ExceptionPidunPidHistory'History unHistorymakeOperations interleavings$fEqPid $fShowPid$fShowOperation$fShowHistoryEvent$fEqHistoryEvent $fShowHistory $fEqHistoryCounterGenSym runGenSymgenSym newCounter$fFunctorGenSym$fApplicativeGenSym $fMonadGenSymEnvironmentErrorEnvironmentValueNotFoundEnvironmentTypeError Environment unEnvironmentemptyEnvironmentinsertConcreteinsertConcretes reifyDynamicreifyEnvironmentreify$fSemigroupEnvironment$fMonoidEnvironment$fShowEnvironment$fEqEnvironmentError$fOrdEnvironmentError$fShowEnvironmentErrorParallelCommandsPairproj1proj2ParallelCommandsFprefixsuffixesReasonOkPreconditionFailedPostconditionFailedInvariantBrokenExceptionThrownCommands unCommandsCommand StateMachine initModel transition precondition postcondition invariant generator distributionshrinker semanticsmocklengthCommandsfromPairtoPair$fSemigroupCommands$fMonoidCommands $fEqReason $fShowReason$fEqPair $fOrdPair $fShowPair $fFunctorPair$fFoldablePair$fTraversablePair$fShowParallelCommandsF$fShowCommands $fShowCommand GConName1 gconName1 gconNames1GConNamegconName gconNames$fGConNameCommand$fGConName1->Reference$fGConName1kRec1$fGConName1k:*:$fGConName1k:+:$fGConName1kM1$fGConName1kM10$fGConName1kM11$fGConName1kK1$fGConName1kU1Fork EventTypeOpenCloseexec$fShowEventType $fFunctorFork liftProperty whenFailMforAllShrinkShowanyP shrinkPair' shrinkPair suchThatOneOfoldCoverforAllCommandsgenerateCommandsgenerateCommandsStatemeasureFrequencycalculateFrequency getUsedVarsshrinkCommandsliftShrinkCommand filterMaybe validCommands runCommandsgetChanContentsexecuteCommandsprettyPrintHistoryprettyCommandscheckCommandNames commandNamescommandNamesInOrdertransitionMatrixforAllParallelCommandsgenerateParallelCommandsshrinkParallelCommandsvalidParallelCommandsprop_splitCombinerunParallelCommandsrunParallelCommandsNTimesexecuteParallelCommands lineariseprettyParallelCommands toBoxDrawings:<->:/->:->FunRelconsunion intersect isSubsetOf~=emptyidentity singletondomaincodomaincomposefcomposeinverse lookupDom lookupCod<||><-||->image<+<**><||> isTotalRel isSurjRelisTotalSurjRel isPartialFun isTotalFun isPartialInj isTotalInj isPartialSurj isTotalSurj isBijection!!?.%.!.=version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebase Data.DynamicDynamic*QuickCheck-2.12.6.1-4a6Ozz7bfHzLQyA4XOD1DcTest.QuickCheck.PropertywhenFail PropertyM Data.FoldableanysuchThatMaybeNTest.QuickCheck.Gen suchThatMaybe parallelSafe advanceModel