#ȗ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-. / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe_copilot-language(Report an error due to a bug in Copilot.copilot-languageGReport an error due to an error detected by Copilot (e.g., user error).copilot-language5Name of the function in which the error was detected.copilot-language5Name of the package in which the function is located.copilot-languageDescription of the error.Safe!" #$% &'()  *+,-.~}|{/Szy01 T23xw456FI789:?@GHALMNBCDEJKOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuv!" #$% &'()  *+,-.~}|{/Szy01 T23xw456FI789:?@GHALMNBCDEJKOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuvSafe&'HSX1copilot-languageWrapper to use s as arguments to triggers.copilot-languageIA stream in Copilot is an infinite succession of values of the same type.3Streams can be built using simple primities (e.g., !), by applying step-wise (e.g., %) or temporal transformations (e.g., , L) to streams, or by combining existing streams to form new streams (e.g., , ).copilot-language9Streams carrying floating point numbers are instances of $!, and you can apply to them the $ functions, point-wise.copilot-language5Streams carrying fractional numbers are instances of %!, and you can apply to them the % functions, point-wise. copilot-language*Streams carrying numbers are instances of )!, and you can apply to them the ) functions, point-wise. copilot-language Dummy instance in order to make  an instance of ). copilot-language Dummy instance in order to make  an instance of ).Safe&'HSXecopilot-languageOA proposition, representing the quantification of a boolean streams over time.copilot-languageeA property, representing a boolean stream that is existentially or universally quantified over time.copilot-language^A trigger, representing a function we execute when a boolean stream becomes true at a sample.copilot-languageUAn observer, representing a stream that we observe during execution at every sample.copilot-language#An item of a Copilot specification.copilot-languagepAn action in a specification (e.g., a declaration) that returns a value that can be used in subsequent actions.copilot-language[A specification is a list of declarations of triggers, observers, properties and theorems.CSpecifications are normally declared in monadic style, for example: monitor1 :: Stream Bool monitor1 = [False] ++ not monitor1 counter :: Stream Int32 counter = [0] ++ not counter spec :: Spec spec = do trigger "handler_1" monitor1 [] trigger "handler_2" (counter > 10) [arg counter] copilot-language2Return the complete list of declarations inside a  or .The word run in this function is unrelated to running the underlying specifications or monitors, and is merely related to the monad defined by a copilot-language7Filter a list of spec items to keep only the observers.copilot-language6Filter a list of spec items to keep only the triggers.copilot-language8Filter a list of spec items to keep only the properties.copilot-language6Filter a list of spec items to keep only the theorems.copilot-languageDefine a new observer as part of a specification. This allows someone to print the value at every iteration during interpretation. Observers do not have any functionality outside the interpreter. copilot-languageDefine a new trigger as part of a specification. A trigger declares which external function, or handler, will be called when a guard defined by a boolean stream becomes true.!copilot-language6Universal quantification of boolean streams over time."copilot-language8Existential quantification of boolean streams over time.#copilot-language<Extract the underlying stream from a quantified proposition.$copilot-languageA proposition, representing a boolean stream that is existentially or universally quantified over time, as part of a specification.OThis function returns, in the monadic context, a reference to the proposition.%copilot-language0A theorem, or proposition together with a proof.OThis function returns, in the monadic context, a reference to the proposition.&copilot-language,Construct a function argument from a stream.s can be used to pass arguments to handlers or trigger functions, to provide additional information to monitor handlers in order to address property violations. At any given point (e.g., when the trigger must be called due to a violation), the arguments passed using &8 will contain the current samples of the given streams.copilot-languageYName used to identify the stream monitored in the output produced during interpretation.copilot-languageThe stream being monitored. copilot-language!Name of the handler to be called.copilot-language-The stream used as the guard for the trigger.copilot-language!List of arguments to the handler.   !"#$%& &$%!"#  Safeq('copilot-language.Prepend a fixed number of samples to a stream.wThe elements to be appended at the beginning of the stream must be limited, that is, the list must have finite length.Prepending elements to a stream may increase the memory requirements of the generated programs (which now must hold the same number of elements in memory for future processing).(copilot-language'Drop a number of samples from a stream.The elements must be realizable at the present time to be able to drop elements. For most kinds of streams, you cannot drop elements without prepending an equal or greater number of elements to them first, as it could result in undefined samples.'('('1Safex)copilot-languageCCreate a stream that carries a field of a struct in another stream.jThis function implements a projection of a field of a struct over time. For example, if a struct of type T has two fields, t1 of type Int and t2 of type Word8, and s is a stream of type Stream T, then s # t2 has type  Stream Word8 and contains the values of the t2 field of the structs in s at any point in time.))SafeB*copilot-language)Compare two streams point-wise for order.The output stream contains the value True at a point in time if the element in the first stream is smaller or equal than the element in the second stream at that point in time, and False otherwise.+copilot-language)Compare two streams point-wise for order.The output stream contains the value True at a point in time if the element in the first stream is greater or equal than the element in the second stream at that point in time, and False otherwise.,copilot-language)Compare two streams point-wise for order.The output stream contains the value True at a point in time if the element in the first stream is smaller than the element in the second stream at that point in time, and False otherwise.-copilot-language)Compare two streams point-wise for order.The output stream contains the value True at a point in time if the element in the first stream is greater than the element in the second stream at that point in time, and False otherwise.*+,-*+,- Safe.copilot-languageConvenient synonym for /./copilot-languagexIf-then-else applied point-wise to three streams (a condition stream, a then-branch stream, and an else-branch stream).Produce a stream that, at any point in time, if the value of the first stream at that point is true, contains the value in the second stream at that time, otherwise it contains the value in the third stream.././ Safe0copilot-languageLet expressions.Create a stream that results from applying a stream to a function on streams. Standard usage would be similar to Haskell's let. See the following example, where stream1, stream2 and s9 are all streams carrying values of some numeric type: V expression = local (stream1 + stream2) $ \s -> (s >= 0 && s <= 10) 00 Safe/1copilot-languageThis function allows you to label a stream with a tag, which can be used by different backends to provide additional information either in error messages or in the generated code (e.g., for traceability purposes).Semantically, a labelled stream is just the stream inside it. The use of label should not affect the observable behavior of the monitor, and how it is used in the code generated is a decision specific to each backend.11 Safeͬ 2copilot-language9Create a stream populated by an external global variable.The Copilot compiler does not check that the type is correct. If the list given as second argument does not constrain the type of the values carried by the stream, this primitive stream building function will match any stream of any type, which is potentially dangerous if the global variable mentioned has a different type. We rely on the compiler used with the generated code to detect type errors of this kind.3copilot-language Deprecated.4copilot-languageXCreate a stream carrying values of type Bool, populated by an external global variable.5copilot-languageYCreate a stream carrying values of type Word8, populated by an external global variable.6copilot-languageZCreate a stream carrying values of type Word16, populated by an external global variable.7copilot-languageZCreate a stream carrying values of type Word32, populated by an external global variable.8copilot-languageZCreate a stream carrying values of type Word64, populated by an external global variable.9copilot-languageXCreate a stream carrying values of type Int8, populated by an external global variable.:copilot-languageYCreate a stream carrying values of type Int16, populated by an external global variable.;copilot-languageYCreate a stream carrying values of type Int32, populated by an external global variable.<copilot-languageYCreate a stream carrying values of type Int64, populated by an external global variable.=copilot-languageZCreate a stream carrying values of type Double, populated by an external global variable. 2copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation.4copilot-language/Name of the global variable to make accessible.copilot-language6Values to be used exclusively for testing/simulation.5copilot-language/Name of the global variable to make accessible.copilot-language8Values to be used exclusively for testing/simulation.6copilot-language/Name of the global variable to make accessible.copilot-language6Values to be used exclusively for testing/simulation.7copilot-language/Name of the global variable to make accessible.copilot-language6Values to be used exclusively for testing/simulation.8copilot-language/Name of the global variable to make accessible.copilot-language6Values to be used exclusively for testing/simulation.9copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation.:copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation.;copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation.<copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation.=copilot-language/Name of the global variable to make accessible.copilot-language5Values to be used exclusively for testing/simulation. 23456789:;<= 2456789:;<=3 Safen>copilot-language,Compare two streams point-wise for equality.The output stream contains the value True at a point in time if both argument streams contain the same value at that point in time.?copilot-language.Compare two streams point-wise for inequality.The output stream contains the value True at a point in time if both argument streams contain different values at that point in time.>?>?Safe @copilot-languageTCreate a constant stream that is equal to the given argument, at any point in time.Acopilot-language1Create a constant stream carrying values of type 6< that is equal to the given argument, at any point in time.Bcopilot-language1Create a constant stream carrying values of type < that is equal to the given argument, at any point in time.Ccopilot-language1Create a constant stream carrying values of type < that is equal to the given argument, at any point in time.Dcopilot-language1Create a constant stream carrying values of type < that is equal to the given argument, at any point in time.Ecopilot-language1Create a constant stream carrying values of type < that is equal to the given argument, at any point in time.Fcopilot-language1Create a constant stream carrying values of type ;< that is equal to the given argument, at any point in time.Gcopilot-language1Create a constant stream carrying values of type << that is equal to the given argument, at any point in time.Hcopilot-language1Create a constant stream carrying values of type =< that is equal to the given argument, at any point in time.Icopilot-language1Create a constant stream carrying values of type >< that is equal to the given argument, at any point in time.Jcopilot-language1Create a constant stream carrying values of type 9< that is equal to the given argument, at any point in time.Kcopilot-language1Create a constant stream carrying values of type 8< that is equal to the given argument, at any point in time. @ABCDEFGHIJK @ABCDEFGHIJKSafe@ADetect whether the given stream name has already been visited.This function throws a S exception if the second argument represents a name that has already been visited.copilot-languageICheck that the level of recursion is not above the max recursion allowed.copilot-language?Analyze a Copilot stream append and report any errors detected.copilot-language=Analyze a Copilot stream drop and report any errors detected.This function can fail if the drop is exercised over a stream that is not an append, or if the length of the drop is larger than that of the subsequent append.copilot-languageRMake sure external variables, functions, arrays, and structs are correctly typed.copilot-language*Obtain all the externs in a specification.copilot-language#Obtain all the externs in a stream.copilot-languageWReturn the simple C type representation of the type of the values carried by a stream.copilot-language$ instance so we can throw and catch AnalyzeExcetions.copilot-languageHShow instance that prints a detailed message for each kind of exception. SafeESX4copilot-languageNTransform a Copilot Language specification into a Copilot Core specification.copilot-languageWTransform a Copilot observer specification into a Copilot Core observer specification.copilot-languageUTransform a Copilot trigger specification into a Copilot Core trigger specification.copilot-languageWTransform a Copilot property specification into a Copilot Core property specification.copilot-languageETransform a Copilot stream expression into a Copilot Core expression.copilot-languageMTransform a Copilot stream expression into a Copilot Core stream expression.copilot-languageCreate a fresh, unused .Safe&'=?copilot-language|Simulate a number of steps of a given specification, printing the results in a table in comma-separated value (CSV) format.copilot-languageiSimulate a number of steps of a given specification, printing the results in a table in readable format. Compared to ?, this function is slower but the output may be more readable.copilot-languagecSimulate a number of steps of a given specification, printing the results in the format specified.Safe_copilot-languageTransform a high-level Copilot Language specification into a low-level Copilot Core specification and pretty-print it to stdout.s!" #$% &'()  *+,-.~}|{/Szy01 T23xw456FI789:;<=>?@GHALMNBCDEJKOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuv      !"#$ !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO;<=> &$%!"Safes!" #$% &'()  *+,-.~}|{/Szy01 T23xw456FI789:;<=>?@GHALMNBCDEJKOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuv      !"#$ !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO% !"#!"$!%&!'(!')!*+!*,!*-!./!.0!12!34!35!36!37!.8!*9!*:!*;!*<!=>!1?!1@!1A!1B!*C!*D!*E!*F!*G!*H!*I!3J!3KLM!NO!1P!1Q!*R!*S!.TLU!VW!1X!NY!1Z![\!=]!*^!_`!ab!*c!*defegeheiej!kl!km!kn!kopqr!steu!1vewex!yze{!s|!s}e~!y!yeee!*!y!*![![!*!!!!%!%!%!%!%!%!%!%!%!%!%!%![![![![!1!1!1!1!.!!'!'!!!!!*!*!1!a!a![![!1!1!1!1!1!N!N!N!N!N!N!N!N!N!N!N!N!N!NL!.!.!.!.!1!1!1!1!1!1!3!3!3!3!3!3!N!N!N!N!N!N!N!N!N!N!N!N!N!N!N!N!N!N!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!!*!*!_!_!_!_ !_ !_ !_ !_ !_!_!_!_!_!_!_!_!_!_!!!!!!V!V!a !a!!"!V#!V$!%&!%'!%(!%)!_*!_+!,-!*.!*/012342567789::;<=>?@ABCDEFGHIJKLMKLNOPQRRSSTTUVWXYZ[\]^_`abcdefghijk l m n o p q r s t u v w x y z { | }~!!!!!     ! !"#$23%&!'!(!)25*25+25,25-2./2.02.125225225325425525625725825925:25;25<25=25>25?25@25A25B25C25D25f25h25i2525l25m25n25o25252525E25A25F25G25H25H25I25J25J2.E2.K2.L2.MNcopilot-language-3.2.1-inplaceCopilot.Language.PreludeCopilot.Language"Copilot.Language.Operators.BitWiseCopilot.Language.StreamCopilot.Language.Spec#Copilot.Language.Operators.Temporal!Copilot.Language.Operators.StructCopilot.Language.Operators.OrdCopilot.Language.Operators.Mux Copilot.Language.Operators.Local Copilot.Language.Operators.Label!Copilot.Language.Operators.ExternCopilot.Language.Operators.Eq#Copilot.Language.Operators.ConstantCopilot.Language.Operators.Cast"Copilot.Language.Operators.Boolean(Copilot.Language.Operators.Propositional#Copilot.Language.Operators.Integral Copilot.Language.Operators.ArrayCopilot.Language.ReifyCopilot.Language.ErrorPreludedivmodSystem.Mem.StableName.DynamicSystem.Mem.StableName.MapCopilot.Language.AnalyzeCopilot.Language.InterpretCopilotghc-primGHC.PrimseqbaseGHC.Listfilterzip System.IOprint Data.TuplefstsndGHC.Base otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTonegate>>=>>fmapreturnControl.Monad.Failfail fromIntegral realToFrac toInteger toRational<>memptymappendmconcat<*>pure*>BoundedEnum GHC.ClassesEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShow MonadFail Applicative Data.FoldableFoldableData.Traversable Traversable SemigroupMonoid GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64integer-wired-inGHC.Integer.TypeInteger GHC.MaybeMaybeOrderingRationalIOWord Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTideitherStringShowSshow<* Text.ReadreadGHC.IO.ExceptionIOErrorGHC.IOFilePath writeFilereadLnreadIOreadFileputStrLnputStrputCharinteractgetLine getContentsgetChar appendFileshows showString showParenshowCharoddlcmgcd^^subtract userErroruncurrycurry Data.MaybemaybeGHC.Err undefinederrorWithoutStackTraceerrorasTypeOf$!eventraverse sequenceAshowList showsPrectruncateroundproperFractionfloorceiling significand scaleFloatexponentatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN encodeFloat decodeFloat floatRange floatDigits floatRadixcomparesignumabs+*remdivModquotRemquotrecip/toEnumsuccpredfromEnumminBoundmaxBoundtanhtansqrtlogBaseatanhacoshasinhcoshsinhatanacosasincossinlogexppi**zipWith3zipWithzip3unzip3unziptailsplitAtspanscanr1scanrscanl1scanlreverse replicaterepeatlookuplastiterateinithead dropWhilebreak takeWhile Data.Functor<$>flip.ornotElem concatMapconcatanyandallproductminimummaximumfoldr1foldl1foldlfoldMapelemnullfoldrlength Data.Bits complement.|..&.BitsioError readsPrecreadListsequencemapMreads readParenlex Data.OldListwordsunwordsunlineslines sequence_mapM_Text.ParserCombinators.ReadPReadS<$=<< impossiblebadUsagecopilot-core-3.2.1-inplaceCopilot.Core.ExprNameCopilot.Core.TypeTyped StructArgname_arg'ArgStreamAppendConstDropExternLocalVarOp1Op2Op3Label$fFloatingStream$fFractionalStream $fNumStream $fEqStream $fShowStreamcopilot-theorem-3.2.1-inplaceCopilot.Theorem.Prove Existential UniversalPropForallExistsPropertyTriggerObserverSpecItemSpec'SpecrunSpec observerstriggers propertiestheoremsobservertriggerforallexists extractPropproptheoremarg++drop#<=>=<>mux ifThenElselocallabelexternfunArgexternBexternW8 externW16 externW32 externW64externI8 externI16 externI32 externI64externD==/=constantconstBconstW8constW16constW32constW64constI8constI16constI32constI64constFconstD UnsafeCast unsafeCastCastcast$fCastInt64Int64$fCastInt32Int64$fCastInt32Int32$fCastInt16Int64$fCastInt16Int32$fCastInt16Int16$fCastInt8Int64$fCastInt8Int32$fCastInt8Int16$fCastInt8Int8$fCastWord64Word64$fCastWord32Int64$fCastWord32Word64$fCastWord32Word32$fCastWord16Int64$fCastWord16Int32$fCastWord16Word64$fCastWord16Word32$fCastWord16Word16$fCastWord8Int64$fCastWord8Int32$fCastWord8Int16$fCastWord8Word64$fCastWord8Word32$fCastWord8Word16$fCastWord8Word8$fCastBoolInt64$fCastBoolInt32$fCastBoolInt16$fCastBoolInt8$fCastBoolWord64$fCastBoolWord32$fCastBoolWord16$fCastBoolWord8$fCastBoolBool$fUnsafeCastInt8Word8$fUnsafeCastInt16Word16$fUnsafeCastInt32Word32$fUnsafeCastInt64Word64$fUnsafeCastWord8Int8$fUnsafeCastWord16Int16$fUnsafeCastWord32Int32$fUnsafeCastWord64Int64$fUnsafeCastWord8Double$fUnsafeCastWord16Double$fUnsafeCastWord32Double$fUnsafeCastWord64Double$fUnsafeCastWord8Float$fUnsafeCastWord16Float$fUnsafeCastWord32Float$fUnsafeCastWord64Float$fUnsafeCastInt8Double$fUnsafeCastInt16Double$fUnsafeCastInt32Double$fUnsafeCastInt64Double$fUnsafeCastInt8Float$fUnsafeCastInt16Float$fUnsafeCastInt32Float$fUnsafeCastInt64Float$fUnsafeCastInt16Int8$fUnsafeCastInt32Int8$fUnsafeCastInt32Int16$fUnsafeCastInt64Int8$fUnsafeCastInt64Int16$fUnsafeCastInt64Int32$fUnsafeCastWord16Word8$fUnsafeCastWord32Word8$fUnsafeCastWord32Word16$fUnsafeCastWord64Word8$fUnsafeCastWord64Word16$fUnsafeCastWord64Word32truefalse&&||notxor==>$fNegatablePropProp$fNegatablePropProp0.^..<<..>>. $fBitsStream^.!!reifycsv interpret prettyPrintGHC.WordWord8Word16Word32Word64castBool castIntegral Negatable DynStableNamemakeDynStableNamehashDynStableName insertWith insertWith'findWithDefaultMapgetSizegetMapempty singletonmember notMemberinsertfind ExternEnvEnvAnalyzeException maxRecursionTooMuchRecursionanalyzeanalyzeTriggeranalyzeObserveranalyzeProperty analyzeExprassertNotVisitedReferentialCyclemapCheck analyzeAppend analyzeDrop analyzeExtsspecExts collectExts getSimpleType$fExceptionAnalyzeExceptionGHC.Exception.Type Exception$fShowAnalyzeExceptionDropAppliedToNonAppendDropIndexOverflowDropMaxViolation NestedArray InvalidFieldDifferentTypes RedeclaredBadNumberOfArgsBadFunctionArgType mkObserver mkTrigger mkPropertymkExprmkStreammkIdId interpret' byteSwap64 byteSwap32 byteSwap16 accessorname fieldnametylengthtysizeCopilot.Core.Type.Arrayarray arrayelemssizeField SimpleTypeSArraySBoolSDoubleSFloatSInt16SInt32SInt64SInt8SStructSWord16SWord32SWord64SWord8StructtoValuestypenameTypeArraytypeOf simpleTypeUType uTypeTypeValueFlattenflatten InnerType