From 0888295ffac646144752820853cce0bcb5cf8f70 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:13:07 +0000 Subject: [PATCH 1/9] ogma-spec: Introduce library to represent ogma specifications. Refs #115. Ogma currently has no standard representation for specifications, and instead relies on a representation that is tied to the input format from which the spec was read. This commit introduces a new library to represent generic Ogma specifications. The specifications are parameterized by the type of the requirement expressions. This will allow us to use the same internal representation to hold data obtained from different kinds of input files (e.g., JSON, XML). --- ogma-spec/CHANGELOG.md | 1 + ogma-spec/LICENSE.pdf | Bin 0 -> 117991 bytes ogma-spec/Setup.hs | 2 + ogma-spec/ogma-spec.cabal | 77 +++++++++++++++++++++++++++++++++ ogma-spec/src/Data/OgmaSpec.hs | 67 ++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 ogma-spec/CHANGELOG.md create mode 100644 ogma-spec/LICENSE.pdf create mode 100644 ogma-spec/Setup.hs create mode 100644 ogma-spec/ogma-spec.cabal create mode 100644 ogma-spec/src/Data/OgmaSpec.hs diff --git a/ogma-spec/CHANGELOG.md b/ogma-spec/CHANGELOG.md new file mode 100644 index 00000000..96b69c35 --- /dev/null +++ b/ogma-spec/CHANGELOG.md @@ -0,0 +1 @@ +# Revision history for ogma-spec diff --git a/ogma-spec/LICENSE.pdf b/ogma-spec/LICENSE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d4333fb21cc0f8c8425cec7ca154cc302f7e1d5a GIT binary patch literal 117991 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
  • Nha0!WdSKI*EmIKm;5``}e>6Us@ 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, a high-level runtime + verification framework that generates hard real-time C99 code. + . + This library contains an abstract representation of an Ogma specification. + +-- Ogma packages should be uncurated so that only the official maintainers make +-- changes. +-- +-- Because this is a NASA project, we want to make sure that users obtain +-- exactly what we publish, unmodified by anyone external to our project. +x-curation: uncurated + +library + + exposed-modules: + Data.OgmaSpec + + build-depends: + base >= 4.11.0.0 && < 5 + + hs-source-dirs: + src + + default-language: + Haskell2010 + + ghc-options: + -Wall diff --git a/ogma-spec/src/Data/OgmaSpec.hs b/ogma-spec/src/Data/OgmaSpec.hs new file mode 100644 index 00000000..e7ef13b6 --- /dev/null +++ b/ogma-spec/src/Data/OgmaSpec.hs @@ -0,0 +1,67 @@ +-- Copyright 2024 United States Government as represented by the Administrator +-- of the National Aeronautics and Space Administration. All Rights Reserved. +-- +-- Disclaimers +-- +-- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY +-- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT +-- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO +-- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +-- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE +-- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF +-- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN +-- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR +-- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR +-- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, +-- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING +-- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES +-- IT "AS IS." +-- +-- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST +-- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS +-- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN +-- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, +-- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S +-- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE +-- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY +-- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY +-- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS +-- AGREEMENT. +-- +-- | Abstract representation of an Ogma specification. +module Data.OgmaSpec where + +-- | Abstract representation of an Ogma specification. +data Spec a = Spec + { internalVariables :: [ InternalVariableDef ] + , externalVariables :: [ ExternalVariableDef ] + , requirements :: [ Requirement a ] + } + deriving (Show) + +-- | Internal variable definition, with a given name, its type and definining +-- expression. +data InternalVariableDef = InternalVariableDef + { internalVariableName :: String + , internalVariableType :: String + , internalVariableExpr :: String + } + deriving (Show) + +-- | External variable definition, with a given name and type. +-- +-- The value of external variables is assigned outside Copilot, so they have no +-- defining expression in this type. +data ExternalVariableDef = ExternalVariableDef + { externalVariableName :: String + , externalVariableType :: String + } + deriving (Show) + +-- | Requirement with a given name and a boolean expression. +data Requirement a = Requirement + { requirementName :: String + , requirementExpr :: a + , requirementDescription :: String + } + deriving (Show) From 216714479366a2b831711a240297b8fc13d8704b Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:13:29 +0000 Subject: [PATCH 2/9] ogma-language-jsonspec: Introduce library to parse JSON specs. Refs #115. The JSON parsing functions currently included with Ogma are very specific to two formats supported, and cannot be easily generalized. This limits our ability to adapt to changes and to different formats. This commit introduces a new library to parse Ogma specifications from JSON files. The parsing functions are parameterized by the functions that parse requirement sub-expressions, allowing for further customization. --- ogma-language-jsonspec/CHANGELOG.md | 1 + ogma-language-jsonspec/LICENSE.pdf | Bin 0 -> 117991 bytes ogma-language-jsonspec/Setup.hs | 2 + .../ogma-language-jsonspec.cabal | 84 ++++++++ .../src/Language/JSONSpec/Parser.hs | 194 ++++++++++++++++++ 5 files changed, 281 insertions(+) create mode 100644 ogma-language-jsonspec/CHANGELOG.md create mode 100644 ogma-language-jsonspec/LICENSE.pdf create mode 100644 ogma-language-jsonspec/Setup.hs create mode 100644 ogma-language-jsonspec/ogma-language-jsonspec.cabal create mode 100644 ogma-language-jsonspec/src/Language/JSONSpec/Parser.hs diff --git a/ogma-language-jsonspec/CHANGELOG.md b/ogma-language-jsonspec/CHANGELOG.md new file mode 100644 index 00000000..25ba0bd9 --- /dev/null +++ b/ogma-language-jsonspec/CHANGELOG.md @@ -0,0 +1 @@ +# Revision history for ogma-language-jsonspec diff --git a/ogma-language-jsonspec/LICENSE.pdf b/ogma-language-jsonspec/LICENSE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d4333fb21cc0f8c8425cec7ca154cc302f7e1d5a GIT binary patch literal 117991 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
  • Nha0!WdSKI*EmIKm;5``}e>6Us@ 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, a high-level runtime + verification framework that generates hard real-time C99 code. + . + This library contains a frontend to read specifications from JSON files. + +-- Ogma packages should be uncurated so that only the official maintainers make +-- changes. +-- +-- Because this is a NASA project, we want to make sure that users obtain +-- exactly what we publish, unmodified by anyone external to our project. +x-curation: uncurated + +library + + exposed-modules: + Language.JSONSpec.Parser + + build-depends: + base >= 4.11.0.0 && < 5 + , aeson >= 2.0.0.0 && < 2.2 + , jsonpath >= 0.3 && < 0.4 + , text + , megaparsec + , bytestring + + , ogma-spec >= 1.1.0 && < 1.2 + + hs-source-dirs: + src + + default-language: + Haskell2010 + + ghc-options: + -Wall diff --git a/ogma-language-jsonspec/src/Language/JSONSpec/Parser.hs b/ogma-language-jsonspec/src/Language/JSONSpec/Parser.hs new file mode 100644 index 00000000..4d079da7 --- /dev/null +++ b/ogma-language-jsonspec/src/Language/JSONSpec/Parser.hs @@ -0,0 +1,194 @@ +-- Copyright 2024 United States Government as represented by the Administrator +-- of the National Aeronautics and Space Administration. All Rights Reserved. +-- +-- Disclaimers +-- +-- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY +-- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT +-- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO +-- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +-- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE +-- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF +-- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN +-- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR +-- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR +-- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, +-- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING +-- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES +-- IT "AS IS." +-- +-- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST +-- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS +-- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN +-- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, +-- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S +-- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE +-- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY +-- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY +-- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS +-- AGREEMENT. +-- + +-- | Parser for Ogma specs stored in JSON files. +module Language.JSONSpec.Parser where + +-- External imports +import Data.Aeson (FromJSON (..), Value (..), decode, (.:)) +import Data.Aeson.Key (toString) +import qualified Data.Aeson.KeyMap as M +import Data.Aeson.Types (prependFailure, typeMismatch) +import Data.Bifunctor (first) +import Data.ByteString.Lazy (fromStrict) +import Data.JSONPath.Execute +import Data.JSONPath.Parser +import Data.JSONPath.Types +import Data.Text (pack, unpack) +import qualified Data.Text as T +import qualified Data.Text.Encoding as T +import qualified Data.Text.IO as T +import Text.Megaparsec (eof, errorBundlePretty, parse) + +-- External imports: ogma-spec +import Data.OgmaSpec + +data JSONFormat = JSONFormat + { specInternalVars :: String + , specInternalVarId :: String + , specInternalVarExpr :: String + , specInternalVarType :: String + , specExternalVars :: String + , specExternalVarId :: String + , specExternalVarType :: String + , specRequirements :: String + , specRequirementId :: String + , specRequirementDesc :: String + , specRequirementExpr :: String + } + +data JSONFormatInternal = JSONFormatInternal + { jfiInternalVars :: [JSONPathElement] + , jfiInternalVarId :: [JSONPathElement] + , jfiInternalVarExpr :: [JSONPathElement] + , jfiInternalVarType :: [JSONPathElement] + , jfiExternalVars :: [JSONPathElement] + , jfiExternalVarId :: [JSONPathElement] + , jfiExternalVarType :: [JSONPathElement] + , jfiRequirements :: [JSONPathElement] + , jfiRequirementId :: [JSONPathElement] + , jfiRequirementDesc :: [JSONPathElement] + , jfiRequirementExpr :: [JSONPathElement] + } + +parseJSONFormat :: JSONFormat -> Either String JSONFormatInternal +parseJSONFormat jsonFormat = do + jfi2 <- showErrors $ parseJSONPath (pack (specInternalVars jsonFormat)) + jfi3 <- showErrors $ parseJSONPath (pack (specInternalVarId jsonFormat)) + jfi4 <- showErrors $ parseJSONPath (pack (specInternalVarExpr jsonFormat)) + jfi5 <- showErrors $ parseJSONPath (pack (specInternalVarType jsonFormat)) + jfi6 <- showErrors $ parseJSONPath (pack (specExternalVars jsonFormat)) + jfi7 <- showErrors $ parseJSONPath (pack (specExternalVarId jsonFormat)) + jfi8 <- showErrors $ parseJSONPath (pack (specExternalVarType jsonFormat)) + jfi9 <- showErrors $ parseJSONPath (pack (specRequirements jsonFormat)) + jfi10 <- showErrors $ parseJSONPath (pack (specRequirementId jsonFormat)) + jfi11 <- showErrors $ parseJSONPath (pack (specRequirementDesc jsonFormat)) + jfi12 <- showErrors $ parseJSONPath (pack (specRequirementExpr jsonFormat)) + return $ JSONFormatInternal + { jfiInternalVars = jfi2 + , jfiInternalVarId = jfi3 + , jfiInternalVarExpr = jfi4 + , jfiInternalVarType = jfi5 + , jfiExternalVars = jfi6 + , jfiExternalVarId = jfi7 + , jfiExternalVarType = jfi8 + , jfiRequirements = jfi9 + , jfiRequirementId = jfi10 + , jfiRequirementDesc = jfi11 + , jfiRequirementExpr = jfi12 + } + +parseJSONSpec :: (String -> Either String a) -> JSONFormat -> Value -> Either String (Spec a) +parseJSONSpec parseExpr jsonFormat value = do + jsonFormatInternal <- parseJSONFormat jsonFormat + + let values :: [Value] + values = executeJSONPath (jfiInternalVars jsonFormatInternal) value + + internalVarDef :: Value -> Either String InternalVariableDef + internalVarDef value = do + let msg = "internal variable name" + varId <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarId jsonFormatInternal) value)) + + let msg = "internal variable type" + varType <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarType jsonFormatInternal) value)) + + let msg = "internal variable expr" + varExpr <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarExpr jsonFormatInternal) value)) + + return $ InternalVariableDef + { internalVariableName = varId + , internalVariableType = varType + , internalVariableExpr = varExpr + } + + internalVariableDefs <- mapM internalVarDef values + + let values :: [Value] + values = executeJSONPath (jfiExternalVars jsonFormatInternal) value + + externalVarDef :: Value -> Either String ExternalVariableDef + externalVarDef value = do + + let msg = "external variable name" + varId <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiExternalVarId jsonFormatInternal) value)) + + let msg = "external variable type" + varType <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiExternalVarType jsonFormatInternal) value)) + + return $ ExternalVariableDef + { externalVariableName = varId + , externalVariableType = varType + } + + externalVariableDefs <- mapM externalVarDef values + + let values :: [Value] + values = executeJSONPath (jfiRequirements jsonFormatInternal) value + + -- requirementDef :: Value -> Either String (Requirement a) + requirementDef value = do + let msg = "Requirement name" + reqId <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiRequirementId jsonFormatInternal) value)) + + let msg = "Requirement expression" + reqExpr <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiRequirementExpr jsonFormatInternal) value)) + reqExpr' <- parseExpr reqExpr + + let msg = "Requirement description" + reqDesc <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiRequirementDesc jsonFormatInternal) value)) + + return $ Requirement + { requirementName = reqId + , requirementExpr = reqExpr' + , requirementDescription = reqDesc + } + + requirements <- mapM requirementDef values + + return $ Spec internalVariableDefs externalVariableDefs requirements + +valueToString :: String -> Value -> Either String String +valueToString msg (String x) = Right $ unpack x +valueToString msg _ = Left $ "The JSON value provided for " ++ msg ++ " does not contain a string" + +listToEither :: String -> [a] -> Either String a +listToEither _ [x] = Right x +listToEither msg [] = Left $ "Failed to find a value for " ++ msg +listToEither msg _ = Left $ "Unexpectedly found multiple values for " ++ msg + +-- | Parse a JSONPath expression, returning its element components. +parseJSONPath :: T.Text -> Either String [JSONPathElement] +parseJSONPath = first errorBundlePretty . parse (jsonPath eof) "" + +showErrors :: Show a => Either a b -> Either String b +showErrors (Left s) = Left (show s) +showErrors (Right x) = Right x From a8b3dbc7ac21d394b374cffc006f17e5f861d500 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:37:28 +0000 Subject: [PATCH 3/9] ogma-language-smv: Add substitution function. Refs #115. To avoid name clashes, it is sometimes necessary to replace identifiers in SMV boolean expressions. This commit adds identifier substitution functions to the SMV language library. --- ogma-language-smv/ogma-language-smv.cabal | 1 + .../src/Language/SMV/Substitution.hs | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 ogma-language-smv/src/Language/SMV/Substitution.hs diff --git a/ogma-language-smv/ogma-language-smv.cabal b/ogma-language-smv/ogma-language-smv.cabal index 68ef21d9..a77235eb 100644 --- a/ogma-language-smv/ogma-language-smv.cabal +++ b/ogma-language-smv/ogma-language-smv.cabal @@ -77,6 +77,7 @@ library Language.SMV.LexSMV Language.SMV.ParSMV Language.SMV.PrintSMV + Language.SMV.Substitution autogen-modules: Language.SMV.AbsSMV diff --git a/ogma-language-smv/src/Language/SMV/Substitution.hs b/ogma-language-smv/src/Language/SMV/Substitution.hs new file mode 100644 index 00000000..f22c474c --- /dev/null +++ b/ogma-language-smv/src/Language/SMV/Substitution.hs @@ -0,0 +1,69 @@ +module Language.SMV.Substitution where + +import qualified Language.SMV.AbsSMV as SMV + +substituteBoolExpr subs e = foldr subBS e subs + +-- Substitute name x if it matches the old name oName +subsName (oName, nName) x = if x == oName then nName else x + +-- Substitute a name in all identifiers in a boolean expression +subBS sub' = mapBoolSpecIdent (subsName sub') + +-- Traverse a boolean expression applying a function to all identifiers +mapBoolSpecIdent :: (String -> String) -> SMV.BoolSpec -> SMV.BoolSpec +mapBoolSpecIdent f boolSpec = + case boolSpec of + SMV.BoolSpecSignal (SMV.Ident i) -> SMV.BoolSpecSignal (SMV.Ident (f i)) + + SMV.BoolSpecConst bc -> SMV.BoolSpecConst bc + + SMV.BoolSpecNum e -> SMV.BoolSpecNum (mapNumExprIdent f e) + + SMV.BoolSpecCmp spec1 op2 spec2 -> SMV.BoolSpecCmp + (mapBoolSpecIdent f spec1) op2 + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecNeg spec -> SMV.BoolSpecNeg (mapBoolSpecIdent f spec) + + SMV.BoolSpecAnd spec1 spec2 -> SMV.BoolSpecAnd + (mapBoolSpecIdent f spec1) + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecOr spec1 spec2 -> SMV.BoolSpecOr + (mapBoolSpecIdent f spec1) + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecXor spec1 spec2 -> SMV.BoolSpecXor + (mapBoolSpecIdent f spec1) + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecImplies spec1 spec2 -> SMV.BoolSpecImplies + (mapBoolSpecIdent f spec1) + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecEquivs spec1 spec2 -> SMV.BoolSpecEquivs + (mapBoolSpecIdent f spec1) + (mapBoolSpecIdent f spec2) + + SMV.BoolSpecOp1 op spec -> SMV.BoolSpecOp1 op (mapBoolSpecIdent f spec) + + SMV.BoolSpecOp2 spec1 op2 spec2 -> SMV.BoolSpecOp2 + (mapBoolSpecIdent f spec1) op2 + (mapBoolSpecIdent f spec2) + +-- Traverse a numeric expression applying a function to all identifiers +mapNumExprIdent :: (String -> String) -> SMV.NumExpr -> SMV.NumExpr +mapNumExprIdent f numExpr = + case numExpr of + SMV.NumId (SMV.Ident i) -> SMV.NumId (SMV.Ident (f i)) + SMV.NumConstI c -> SMV.NumConstI c + SMV.NumConstD c -> SMV.NumConstD c + SMV.NumAdd expr1 op expr2 -> SMV.NumAdd + (mapNumExprIdent f expr1) + op + (mapNumExprIdent f expr2) + SMV.NumMult expr1 op expr2 -> SMV.NumMult + (mapNumExprIdent f expr1) + op + (mapNumExprIdent f expr2) From f41d79594d15b2210b02784bf3941968f11b781b Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:37:45 +0000 Subject: [PATCH 4/9] ogma-core: Use new JSON parsing interface. Refs #115. The JSON parsing functions currently used by ogma-core are very specific to two formats supported, and cannot be easily generalized. This commit replaces the existing FRET component specficiation parser and converter by one that is based on the new generic parsing library. --- ogma-core/ogma-core.cabal | 6 +- ogma-core/src/Command/FPrimeApp.hs | 46 ++-- .../src/Command/FRETComponentSpec2Copilot.hs | 137 +++++++--- ogma-core/src/Command/ROSApp.hs | 46 ++-- ...mponentSpec2Copilot.hs => Spec2Copilot.hs} | 254 ++++++++---------- 5 files changed, 279 insertions(+), 210 deletions(-) rename ogma-core/src/Language/Trans/{FRETComponentSpec2Copilot.hs => Spec2Copilot.hs} (50%) diff --git a/ogma-core/ogma-core.cabal b/ogma-core/ogma-core.cabal index 87c37bc2..1478e07a 100644 --- a/ogma-core/ogma-core.cabal +++ b/ogma-core/ogma-core.cabal @@ -92,8 +92,8 @@ library Language.Trans.CStruct2CopilotStruct Language.Trans.CStructs2Copilot Language.Trans.CStructs2MsgHandlers - Language.Trans.FRETComponentSpec2Copilot Language.Trans.FRETReqsDB2Copilot + Language.Trans.Spec2Copilot Language.Trans.SMV2Copilot other-modules: @@ -105,6 +105,7 @@ library build-depends: base >= 4.11.0.0 && < 5 , aeson >= 2.0.0.0 && < 2.2 + , bytestring , filepath , IfElse , mtl @@ -113,9 +114,10 @@ library , ogma-language-c >= 1.1.0 && < 1.2 , ogma-language-cocospec >= 1.1.0 && < 1.2 , ogma-language-copilot >= 1.1.0 && < 1.2 - , ogma-language-fret-cs >= 1.1.0 && < 1.2 , ogma-language-fret-reqs >= 1.1.0 && < 1.2 + , ogma-language-jsonspec >= 1.1.0 && < 1.2 , ogma-language-smv >= 1.1.0 && < 1.2 + , ogma-spec >= 1.1.0 && < 1.2 hs-source-dirs: src diff --git a/ogma-core/src/Command/FPrimeApp.hs b/ogma-core/src/Command/FPrimeApp.hs index 66d060f1..da60c156 100644 --- a/ogma-core/src/Command/FPrimeApp.hs +++ b/ogma-core/src/Command/FPrimeApp.hs @@ -53,13 +53,14 @@ import Data.ByteString.Extra as B ( safeReadFile ) import Data.String.Extra ( sanitizeLCIdentifier, sanitizeUCIdentifier ) import System.Directory.Extra ( copyDirectoryRecursive ) +-- External imports: ogma +import Data.OgmaSpec (Spec, externalVariableName, externalVariables, + requirementName, requirements) +import Language.JSONSpec.Parser (JSONFormat (..), parseJSONSpec) + -- Internal imports: auxiliary import Command.Result ( Result (..) ) import Data.Location ( Location (..) ) -import Language.FRETComponentSpec.AST ( FRETComponentSpec, - fretExternalVariableName, - fretExternalVariables, - fretRequirementName, fretRequirements ) -- Internal imports import Paths_ogma_core ( getDataDir ) @@ -153,14 +154,13 @@ fprimeApp' targetDir varNames varDB monitors = -- | Process FRET component spec, if available, and return its abstract -- representation. parseOptionalFRETCS :: Maybe FilePath - -> ExceptT ErrorTriplet IO (Maybe FRETComponentSpec) + -> ExceptT ErrorTriplet IO (Maybe (Spec String)) parseOptionalFRETCS Nothing = return Nothing parseOptionalFRETCS (Just fp) = do -- Throws an exception if the file cannot be read. content <- liftIO $ B.safeReadFile fp - - let fretCS :: Either String FRETComponentSpec - fretCS = eitherDecode =<< content + let fretCS :: Either String (Spec String) + fretCS = parseJSONSpec return fretFormat =<< eitherDecode =<< content case fretCS of Left e -> throwError $ cannotOpenFRETFile fp e @@ -219,7 +219,7 @@ parseOptionalVarDBFile (Just fp) = do -- -- If a FRET file is not provided, then the user must provide BOTH a variable -- list, and a list of handlers. -checkArguments :: Maybe FRETComponentSpec +checkArguments :: Maybe (Spec a) -> Maybe [String] -> Maybe [String] -> Either ErrorTriplet () @@ -232,19 +232,19 @@ checkArguments _ _ _ = Right () -- | Extract the variables from a FRET component specification, and sanitize -- them to be used in FPrime. -fretCSExtractExternalVariables :: Maybe FRETComponentSpec -> [String] +fretCSExtractExternalVariables :: Maybe (Spec a) -> [String] fretCSExtractExternalVariables Nothing = [] fretCSExtractExternalVariables (Just cs) = map sanitizeLCIdentifier - $ map fretExternalVariableName - $ fretExternalVariables cs + $ map externalVariableName + $ externalVariables cs -- | Extract the requirements from a FRET component specification, and sanitize -- them to match the names of the handlers used by Copilot. -fretCSExtractHandlers :: Maybe FRETComponentSpec -> [String] +fretCSExtractHandlers :: Maybe (Spec a) -> [String] fretCSExtractHandlers Nothing = [] fretCSExtractHandlers (Just cs) = map handlerNameF - $ map fretRequirementName - $ fretRequirements cs + $ map requirementName + $ requirements cs where handlerNameF = ("handlerprop" ++) . sanitizeUCIdentifier @@ -737,3 +737,19 @@ ecCannotOpenHandlersFile = 1 -- permissions or some I/O error. ecCannotCopyTemplate :: ErrorCode ecCannotCopyTemplate = 1 + +-- | JSONPath selectors for a FRET file +fretFormat :: JSONFormat +fretFormat = JSONFormat + { specInternalVars = "..Internal_variables[*]" + , specInternalVarId = ".name" + , specInternalVarExpr = ".assignmentCopilot" + , specInternalVarType = ".type" + , specExternalVars = "..Other_variables[*]" + , specExternalVarId = ".name" + , specExternalVarType = ".type" + , specRequirements = "..Requirements[*]" + , specRequirementId = ".name" + , specRequirementDesc = ".fretish" + , specRequirementExpr = ".ptLTL" + } diff --git a/ogma-core/src/Command/FRETComponentSpec2Copilot.hs b/ogma-core/src/Command/FRETComponentSpec2Copilot.hs index b0ee34a7..697f4278 100644 --- a/ogma-core/src/Command/FRETComponentSpec2Copilot.hs +++ b/ogma-core/src/Command/FRETComponentSpec2Copilot.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE ExistentialQuantification #-} -- Copyright 2020 United States Government as represented by the Administrator -- of the National Aeronautics and Space Administration. All Rights Reserved. -- @@ -41,7 +42,8 @@ module Command.FRETComponentSpec2Copilot -- External imports import Control.Monad.IfElse ( awhen ) -import Data.Aeson ( eitherDecode ) +import Data.Aeson ( eitherDecode, decode ) +import Data.ByteString.Lazy (fromStrict) -- External imports: auxiliary import Data.ByteString.Extra as B ( safeReadFile ) @@ -50,12 +52,22 @@ import Data.ByteString.Extra as B ( safeReadFile ) import Command.Result ( Result (..) ) import Data.Location ( Location (..) ) --- Internal imports -import Language.FRETComponentSpec.AST ( FRETComponentSpec ) -import qualified Language.Trans.FRETComponentSpec2Copilot as T - ( fretComponentSpec2Copilot - , FRETComponentSpec2CopilotOptions(FRETComponentSpec2CopilotOptions) - ) +-- Internal imports: language ASTs, transformers +import Data.OgmaSpec (Spec) + +import qualified Language.CoCoSpec.AbsCoCoSpec as CoCoSpec +import qualified Language.CoCoSpec.ParCoCoSpec as CoCoSpec ( myLexer, + pBoolSpec ) + +import Language.JSONSpec.Parser (JSONFormat (..), parseJSONSpec) + +import qualified Language.SMV.AbsSMV as SMV +import qualified Language.SMV.ParSMV as SMV (myLexer, pBoolSpec) +import Language.SMV.Substitution (substituteBoolExpr) + +import qualified Language.Trans.CoCoSpec2Copilot as CoCoSpec (boolSpec2Copilot) +import Language.Trans.SMV2Copilot as SMV (boolSpec2Copilot) +import Language.Trans.Spec2Copilot (spec2Copilot, specAnalyze) -- | Print the contents of a Copilot module that implements the Past-time TL -- formula in a FRET file. @@ -72,15 +84,9 @@ fretComponentSpec2Copilot :: FilePath -- ^ Path to a file containing a FRET -> IO (Result ErrorCode) fretComponentSpec2Copilot fp options = do - -- All of the following operations use Either to return error messages. The - -- use of the monadic bind to pass arguments from one function to the next - -- will cause the program to stop at the earliest error. - fret <- parseFretComponentSpec fp + let functions = fretExprPair (fretCS2CopilotUseCoCoSpec options) - -- Extract internal command options from external command options - let internalOptions = fretComponentSpec2CopilotOptions options - - let copilot = T.fretComponentSpec2Copilot internalOptions =<< fret + copilot <- fretComponentSpec2Copilot' fp options functions let (mOutput, result) = fretComponentSpec2CopilotResult options fp copilot @@ -88,6 +94,34 @@ fretComponentSpec2Copilot fp options = do awhen mOutput putStrLn return result +-- | Print the contents of a Copilot module that implements the Past-time TL +-- formula in a FRET file, using a subexpression handler. +-- +-- PRE: The file given is readable, contains a valid FRET file with a PT +-- formula in the @ptExpanded@ key, the formula does not use any identifiers +-- that exist in Copilot, or any of @prop@, @clock@, @ftp@. All identifiers +-- used are valid C99 identifiers. +fretComponentSpec2Copilot' :: FilePath + -> FRETComponentSpec2CopilotOptions + -> FRETExprPair + -> IO (Either String String) +fretComponentSpec2Copilot' fp options (FRETExprPair parse replace print) = do + let name = fretCS2CopilotFilename options + useCoCoSpec = fretCS2CopilotUseCoCoSpec options + typeMaps = fretTypeToCopilotTypeMapping options + + -- All of the following operations use Either to return error messages. The + -- use of the monadic bind to pass arguments from one function to the next + -- will cause the program to stop at the earliest error. + content <- B.safeReadFile fp + res <- case content of + Left s -> return $ Left s + Right b -> return $ parseJSONSpec parse (fretFormat useCoCoSpec) =<< eitherDecode b + + let copilot = spec2Copilot name typeMaps replace print =<< specAnalyze =<< res + + return copilot + -- | Options used to customize the conversion of FRET Component Specifications -- to Copilot code. data FRETComponentSpec2CopilotOptions = FRETComponentSpec2CopilotOptions @@ -97,17 +131,6 @@ data FRETComponentSpec2CopilotOptions = FRETComponentSpec2CopilotOptions , fretCS2CopilotFilename :: String } --- | Parse a JSON file containing a FRET component specification. --- --- Returns a 'Left' with an error message if the file does not have the correct --- format. --- --- Throws an exception if the file cannot be read. -parseFretComponentSpec :: FilePath -> IO (Either String FRETComponentSpec) -parseFretComponentSpec fp = do - content <- B.safeReadFile fp - return $ eitherDecode =<< content - -- * Error codes -- | Encoding of reasons why the command can fail. @@ -120,19 +143,6 @@ type ErrorCode = Int ecFretCSError :: ErrorCode ecFretCSError = 1 --- * Input arguments - --- | Convert command input argument options to internal transformation function --- input arguments. -fretComponentSpec2CopilotOptions :: FRETComponentSpec2CopilotOptions - -> T.FRETComponentSpec2CopilotOptions -fretComponentSpec2CopilotOptions options = - T.FRETComponentSpec2CopilotOptions - (fretCS2CopilotUseCoCoSpec options) - (fretCS2CopilotIntType options) - (fretCS2CopilotRealType options) - (fretCS2CopilotFilename options) - -- * Result -- | Process the result of the transformation function. @@ -143,3 +153,52 @@ fretComponentSpec2CopilotResult :: FRETComponentSpec2CopilotOptions fretComponentSpec2CopilotResult options fp result = case result of Left msg -> (Nothing, Error ecFretCSError msg (LocationFile fp)) Right t -> (Just t, Success) + +-- * Parser + +-- | JSONPath selectors for a FRET file +fretFormat :: Bool -> JSONFormat +fretFormat useCoCoSpec = JSONFormat + { specInternalVars = "..Internal_variables[*]" + , specInternalVarId = ".name" + , specInternalVarExpr = ".assignmentCopilot" + , specInternalVarType = ".type" + , specExternalVars = "..Other_variables[*]" + , specExternalVarId = ".name" + , specExternalVarType = ".type" + , specRequirements = "..Requirements[*]" + , specRequirementId = ".name" + , specRequirementDesc = ".fretish" + , specRequirementExpr = if useCoCoSpec then ".CoCoSpecCode" else ".ptLTL" + } + +-- * Mapping of types from FRET to Copilot +fretTypeToCopilotTypeMapping :: FRETComponentSpec2CopilotOptions + -> [(String, String)] +fretTypeToCopilotTypeMapping options = + [ ("bool", "Bool") + , ("int", fretCS2CopilotIntType options) + , ("integer", fretCS2CopilotIntType options) + , ("real", fretCS2CopilotRealType options) + , ("string", "String") + ] + +-- * Handler for boolean expressions + +-- | Handler for boolean expressions that knows how to parse them, replace +-- variables in them, and convert them to Copilot. +data FRETExprPair = forall a . FRETExprPair + { exprParse :: String -> Either String a + , exprReplace :: [(String, String)] -> a -> a + , exprPrint :: a -> String + } + +-- | Return a handler depending on whether it should be for CoCoSpec boolean +-- expressions or for SMV boolean expressions. +fretExprPair :: Bool -> FRETExprPair +fretExprPair True = FRETExprPair (CoCoSpec.pBoolSpec . CoCoSpec.myLexer) + (\_ -> id) + (CoCoSpec.boolSpec2Copilot) +fretExprPair False = FRETExprPair (SMV.pBoolSpec . SMV.myLexer) + (substituteBoolExpr) + (SMV.boolSpec2Copilot) diff --git a/ogma-core/src/Command/ROSApp.hs b/ogma-core/src/Command/ROSApp.hs index 306ffff9..d3e2f79e 100644 --- a/ogma-core/src/Command/ROSApp.hs +++ b/ogma-core/src/Command/ROSApp.hs @@ -56,13 +56,14 @@ import Data.ByteString.Extra as B (safeReadFile) import Data.String.Extra (sanitizeLCIdentifier, sanitizeUCIdentifier) import System.Directory.Extra (copyDirectoryRecursive) +-- External imports: ogma +import Data.OgmaSpec (Spec, externalVariableName, externalVariables, + requirementName, requirements) +import Language.JSONSpec.Parser (JSONFormat (..), parseJSONSpec) + -- Internal imports: auxiliary import Command.Result (Result (..)) import Data.Location (Location (..)) -import Language.FRETComponentSpec.AST (FRETComponentSpec, - fretExternalVariableName, - fretExternalVariables, - fretRequirementName, fretRequirements) -- Internal imports import Paths_ogma_core ( getDataDir ) @@ -157,14 +158,13 @@ rosApp' targetDir varNames varDB monitors = -- | Process FRET component spec, if available, and return its abstract -- representation. parseOptionalFRETCS :: Maybe FilePath - -> ExceptT ErrorTriplet IO (Maybe FRETComponentSpec) + -> ExceptT ErrorTriplet IO (Maybe (Spec String)) parseOptionalFRETCS Nothing = return Nothing parseOptionalFRETCS (Just fp) = do -- Throws an exception if the file cannot be read. content <- liftIO $ B.safeReadFile fp - - let fretCS :: Either String FRETComponentSpec - fretCS = eitherDecode =<< content + let fretCS :: Either String (Spec String) + fretCS = parseJSONSpec return fretFormat =<< eitherDecode =<< content case fretCS of Left e -> throwError $ cannotOpenFRETFile fp e @@ -223,7 +223,7 @@ parseOptionalVarDBFile (Just fp) = do -- -- If a FRET file is not provided, then the user must provide BOTH a variable -- list, and a list of handlers. -checkArguments :: Maybe FRETComponentSpec +checkArguments :: Maybe (Spec String) -> Maybe [String] -> Maybe [String] -> Either ErrorTriplet () @@ -236,19 +236,19 @@ checkArguments _ _ _ = Right () -- | Extract the variables from a FRET component specification, and sanitize -- them to be used in ROS. -fretCSExtractExternalVariables :: Maybe FRETComponentSpec -> [String] +fretCSExtractExternalVariables :: Maybe (Spec String) -> [String] fretCSExtractExternalVariables Nothing = [] fretCSExtractExternalVariables (Just cs) = map sanitizeLCIdentifier - $ map fretExternalVariableName - $ fretExternalVariables cs + $ map externalVariableName + $ externalVariables cs -- | Extract the requirements from a FRET component specification, and sanitize -- them to match the names of the handlers used by Copilot. -fretCSExtractHandlers :: Maybe FRETComponentSpec -> [String] +fretCSExtractHandlers :: Maybe (Spec String) -> [String] fretCSExtractHandlers Nothing = [] fretCSExtractHandlers (Just cs) = map handlerNameF - $ map fretRequirementName - $ fretRequirements cs + $ map requirementName + $ requirements cs where handlerNameF = ("handlerprop" ++) . sanitizeUCIdentifier @@ -712,3 +712,19 @@ ecCannotOpenHandlersFile = 1 -- permissions or some I/O error. ecCannotCopyTemplate :: ErrorCode ecCannotCopyTemplate = 1 + +-- | JSONPath selectors for a FRET file +fretFormat :: JSONFormat +fretFormat = JSONFormat + { specInternalVars = "..Internal_variables[*]" + , specInternalVarId = ".name" + , specInternalVarExpr = ".assignmentCopilot" + , specInternalVarType = ".type" + , specExternalVars = "..Other_variables[*]" + , specExternalVarId = ".name" + , specExternalVarType = ".type" + , specRequirements = "..Requirements[*]" + , specRequirementId = ".name" + , specRequirementDesc = ".fretish" + , specRequirementExpr = ".ptLTL" + } diff --git a/ogma-core/src/Language/Trans/FRETComponentSpec2Copilot.hs b/ogma-core/src/Language/Trans/Spec2Copilot.hs similarity index 50% rename from ogma-core/src/Language/Trans/FRETComponentSpec2Copilot.hs rename to ogma-core/src/Language/Trans/Spec2Copilot.hs index d262997c..a23e69bc 100644 --- a/ogma-core/src/Language/Trans/FRETComponentSpec2Copilot.hs +++ b/ogma-core/src/Language/Trans/Spec2Copilot.hs @@ -1,4 +1,4 @@ --- Copyright 2020 United States Government as represented by the Administrator +-- Copyright 2024 United States Government as represented by the Administrator -- of the National Aeronautics and Space Administration. All Rights Reserved. -- -- Disclaimers @@ -27,69 +27,48 @@ -- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY -- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS -- AGREEMENT. --- -{-# LANGUAGE OverloadedStrings #-} --- | Transform a FRET Component Specification into a Copilot specification. +-- | Transform an Ogma specification into a standalone Copilot specification. -- -- Normally, this module would be implemented as a conversion between ASTs, but -- we want to add comments to the generated code, which are not representable -- in the abstract syntax tree. -module Language.Trans.FRETComponentSpec2Copilot where +module Language.Trans.Spec2Copilot where -- External imports -import Data.List ( intersect, union ) +import Data.List ( intersect, lookup, union ) import Data.Maybe ( fromMaybe ) -- External imports: auxiliary import Data.String.Extra ( sanitizeLCIdentifier, sanitizeUCIdentifier ) --- Internal imports: language ASTs, transformers -import qualified Language.CoCoSpec.ParCoCoSpec as CoCoSpec ( myLexer, - pBoolSpec ) -import Language.FRETComponentSpec.AST as FRET -import qualified Language.Trans.CoCoSpec2Copilot as CoCoSpec ( boolSpec2Copilot ) -import Language.Trans.SMV2Copilot as SMV ( boolSpec2Copilot ) - --- | Options used to customize the conversion of FRET Component Specifications --- to Copilot code. -data FRETComponentSpec2CopilotOptions = FRETComponentSpec2CopilotOptions - { fretCS2CopilotUseCoCoSpec :: Bool - , fretCS2CopilotIntType :: String - , fretCS2CopilotRealType :: String - , fretCS2CopilotFilename :: String - } - --- | Transform a FRET TL specification into a Copilot specification. --- --- This function may fail with a 'Left' value if the resulting Copilot --- specification would contain name clashes or other errors. -fretComponentSpec2Copilot :: FRETComponentSpec2CopilotOptions - -> FRETComponentSpec - -> Either String String -fretComponentSpec2Copilot prefs parseResult = - fretComponentSpec2Copilot' prefs =<< fret2CopilotAnalyze parseResult - --- | For a given FRET file, return the corresponding Copilot file, or an error +-- External imports: ogma-spec +import Data.OgmaSpec (ExternalVariableDef (..), InternalVariableDef (..), + Requirement (..), Spec (..)) + +-- | For a given spec, return the corresponding Copilot file, or an error -- message if such file cannot be generated. -- -- PRE: there are no name clashes between the variables and names used in the --- FRET specification and any definitions in Haskell's Prelude or in Copilot. -fretComponentSpec2Copilot' :: FRETComponentSpec2CopilotOptions - -> FRETComponentSpec - -> Either String String -fretComponentSpec2Copilot' prefs fretComponentSpec = - unlines . concat <$> sequence - [ pure imports - , pure externs +-- specification and any definitions in Haskell's Prelude or in Copilot. +spec2Copilot :: String -- Spec / target file name + -> [(String, String)] -- Type substitution table + -> ([(String, String)] -> a -> a) -- Expr subsitution function + -> (a -> String) -- Expr show function + -> Spec a -- Specification + -> Either String String +spec2Copilot specName typeMaps exprTransform showExpr spec = + pure $ unlines $ concat + [ imports + , externs , internals , reqs - , pure clock - , pure ftp - , pure pre - , pure tpre - , pure spec - , pure main' + , clock + , ftp + , pre + , tpre + , copilotSpec + , main' ] where @@ -115,90 +94,75 @@ fretComponentSpec2Copilot' prefs fretComponentSpec = -- Extern streams externs = concatMap externVarToDecl - (FRET.fretExternalVariables fretComponentSpec) + (externalVariables spec) where - externVarToDecl i = [ FRET.fretExternalVariableName i + externVarToDecl i = [ propName ++ " :: Stream " ++ "(" - ++ fretTypeToCopilotType - prefs - (FRET.fretExternalVariableType i) + ++ safeMap typeMaps (externalVariableType i) ++ ")" - , FRET.fretExternalVariableName i + , propName ++ " = " ++ "extern" ++ " " - ++ show (FRET.fretExternalVariableName i) + ++ show (externalVariableName i) ++ " " ++ "Nothing" , "" ] + where + propName = safeMap nameSubstitutions (externalVariableName i) -- Internal stream definitions - internals = concat - <$> mapM internalVarToDecl - (FRET.fretInternalVariables fretComponentSpec) + internals = concatMap internalVarToDecl + (internalVariables spec) where - internalVarToDecl i = fmap (\implem -> - [ FRET.fretInternalVariableName i + internalVarToDecl i = (\implem -> + [ propName ++ " :: Stream " ++ "(" - ++ fretTypeToCopilotType - prefs - (FRET.fretInternalVariableType i) + ++ safeMap typeMaps (internalVariableType i) ++ ")" - , FRET.fretInternalVariableName i + , propName ++ " = " ++ implem , "" ]) implementation where - implementation = if null (FRET.fretInternalVariableCopilot i) - then CoCoSpec.boolSpec2Copilot - <$> CoCoSpec.pBoolSpec - ( CoCoSpec.myLexer - $ FRET.fretInternalVariableLustre i - ) - else pure (FRET.fretInternalVariableCopilot i) + propName = safeMap nameSubstitutions (internalVariableName i) + implementation = (internalVariableExpr i) -- Encoding of requirements as boolean streams - reqs :: Either String [String] - reqs = concat <$> mapM reqToDecl (FRET.fretRequirements fretComponentSpec) + reqs :: [String] + reqs = concatMap reqToDecl (requirements spec) where - reqToDecl i = sequence - [ pure reqComment, pure reqSignature, reqBody, pure "" ] + reqToDecl i = [ reqComment, reqSignature + , reqBody nameSubstitutions + , "" + ] where + reqName = safeMap nameSubstitutions (requirementName i) + -- Definition comment, which includes the requirement for -- traceability purposes. - reqComment = "-- | " ++ FRET.fretRequirementName i ++ "\n" ++ + reqComment = "-- | " ++ requirementName i ++ "\n" ++ "-- @" ++ "\n" ++ - "-- " ++ FRET.fretRequirementFretish i ++ "\n" ++ + "-- " ++ requirementDescription i ++ "\n" ++ "-- @" -- Definition type signature. - reqSignature = FRET.fretRequirementName i + reqSignature = reqName ++ " :: " ++ "Stream" ++ " " ++ "Bool" - -- Definition implementation, either in SMV or in CoCoSpec - reqBody = if fretCS2CopilotUseCoCoSpec prefs - then reqBodyCoCo - else reqBodyPT + -- Definition implementation. We use an auxiliary function to + -- transform the implementation into Copilot, applying a + -- substitution. + reqBody subs = reqName ++ " = " ++ + (showExpr (exprTransform subs (requirementExpr i))) - reqBodyPT = fmap (\e -> FRET.fretRequirementName i ++ " = " - ++ SMV.boolSpec2Copilot e - ) - (fromMaybe (Left $ "No requirement for " ++ show i) - (FRET.fretRequirementPTExpanded i)) - - reqBodyCoCo = fmap - (\e -> FRET.fretRequirementName i ++ " = " - ++ CoCoSpec.boolSpec2Copilot e - ) - (fromMaybe (Left $ "No requirement for " ++ show i) - (FRET.fretRequirementCoCoSpec i)) -- Auxiliary streams: clock clock :: [String] @@ -231,55 +195,62 @@ fretComponentSpec2Copilot' prefs fretComponentSpec = ] -- Main specification - spec :: [String] - spec = [ "" - , "-- | Complete specification. Calls the C function void " - ++ " handler(); when" - , "-- the property is violated." - , "spec :: Spec" - , "spec = do" - ] - ++ triggers - ++ [ "" ] + copilotSpec :: [String] + copilotSpec = [ "" + , "-- | Complete specification. Calls the C function void " + ++ " handler(); when" + , "-- the property is violated." + , "spec :: Spec" + , "spec = do" + ] + ++ triggers + ++ [ "" ] where triggers :: [String] - triggers = fmap reqTrigger (FRET.fretRequirements fretComponentSpec) + triggers = fmap reqTrigger (requirements spec) - reqTrigger :: FRETRequirement -> String + reqTrigger :: Requirement a -> String reqTrigger r = " trigger " ++ show handlerName ++ " (not " ++ propName ++ ") " ++ "[]" where - handlerName = "handler" ++ FRET.fretRequirementName r - propName = FRET.fretRequirementName r + handlerName = "handler" ++ requirementName r + propName = requirementName r -- Main program that compiles specification to C in two files (code and -- header). main' :: [String] main' = [ "" , "main :: IO ()" - , "main = reify spec >>= compile \"" - ++ fretCS2CopilotFilename prefs ++ "\"" + , "main = reify spec >>= compile \"" ++ specName ++ "\"" ] --- | Return the corresponding type in Copilot matching a given FRET type. -fretTypeToCopilotType :: FRETComponentSpec2CopilotOptions -> String -> String -fretTypeToCopilotType _options "bool" = "Bool" -fretTypeToCopilotType options "int" = fretCS2CopilotIntType options -fretTypeToCopilotType options "integer" = fretCS2CopilotIntType options -fretTypeToCopilotType options "real" = fretCS2CopilotRealType options -fretTypeToCopilotType _options "string" = "String" -fretTypeToCopilotType _options x = x - --- | Analyze a FRET-Copilot file and determine if there will be any name --- clashes after the conversion to Copilot. --- --- This function does not compare against Haskell's prelude or Copilot's --- modules. It simply makes simple conversions to comply with Copilot/Haskell's --- grammar (e.g., variable/function names start with lowercase) and determines --- if the conversion would make two definitions in the given specification --- produce name clashes between them. -fret2CopilotAnalyze :: FRETComponentSpec -> Either String FRETComponentSpec -fret2CopilotAnalyze fretComponentSpec + -- Map from a variable name to its desired identifier in the code + -- generated. + internalVariableMap = + map (\x -> (x, sanitizeLCIdentifier x)) internalVariableNames + + externalVariableMap = + map (\x -> (x, sanitizeLCIdentifier x)) externalVariableNames + + requirementNameMap = + map (\x -> (x, "prop" ++ sanitizeUCIdentifier x)) requirementNames + + nameSubstitutions = internalVariableMap + ++ externalVariableMap + ++ requirementNameMap + + -- Variable/requirement names used in the component spec. + internalVariableNames = map internalVariableName + $ internalVariables spec + + externalVariableNames = map externalVariableName + $ externalVariables spec + + requirementNames = map requirementName + $ requirements spec + +specAnalyze :: Spec a -> Either String (Spec a) +specAnalyze spec | not (null evnClash) = Left $ "Name clash detected: " ++ show evnClash @@ -290,7 +261,7 @@ fret2CopilotAnalyze fretComponentSpec = Left $ "Name clash detected: " ++ show reqClash | otherwise - = Right $ foldr applySubstitution fretComponentSpec nameSubstitutions + = Right spec where @@ -321,16 +292,21 @@ fret2CopilotAnalyze fretComponentSpec requirementNameMap = map (\x -> (x, "prop" ++ sanitizeUCIdentifier x)) requirementNames - nameSubstitutions = internalVariableMap - ++ externalVariableMap - ++ requirementNameMap - -- Variable/requirement names used in the component spec. - internalVariableNames = map fretInternalVariableName - $ fretInternalVariables fretComponentSpec + internalVariableNames = map internalVariableName + $ internalVariables spec + + externalVariableNames = map externalVariableName + $ externalVariables spec - externalVariableNames = map fretExternalVariableName - $ fretExternalVariables fretComponentSpec + requirementNames = map requirementName + $ requirements spec - requirementNames = map fretRequirementName - $ fretRequirements fretComponentSpec +-- * Auxiliary + +-- | Substitute a string based on a given substitution table. +-- +-- This function leaves the key unchanged if it cannot be found in the +-- substitution table. +safeMap :: [(String, String)] -> String -> String +safeMap ls k = fromMaybe k $ lookup k ls From a5b100900346d0d471a92c82b3d8620e7e58ed46 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:37:48 +0000 Subject: [PATCH 5/9] ogma-language-fret-cs: Remove unused library. Refs #115. The library ogma-language-fret-cs is no longer needed, since its functions have been generalized in other libraries. Therefore, this library can be completely removed. --- ogma-language-fret-cs/CHANGELOG.md | 57 ---- ogma-language-fret-cs/LICENSE.pdf | Bin 117991 -> 0 bytes ogma-language-fret-cs/Setup.hs | 2 - .../ogma-language-fret-cs.cabal | 108 -------- .../src/Language/FRETComponentSpec/AST.hs | 262 ------------------ ogma-language-fret-cs/tests/Main.hs | 81 ------ ogma-language-fret-cs/tests/fret_bad.json | 21 -- ogma-language-fret-cs/tests/fret_good.json | 21 -- 8 files changed, 552 deletions(-) delete mode 100644 ogma-language-fret-cs/CHANGELOG.md delete mode 100644 ogma-language-fret-cs/LICENSE.pdf delete mode 100644 ogma-language-fret-cs/Setup.hs delete mode 100644 ogma-language-fret-cs/ogma-language-fret-cs.cabal delete mode 100644 ogma-language-fret-cs/src/Language/FRETComponentSpec/AST.hs delete mode 100644 ogma-language-fret-cs/tests/Main.hs delete mode 100644 ogma-language-fret-cs/tests/fret_bad.json delete mode 100644 ogma-language-fret-cs/tests/fret_good.json diff --git a/ogma-language-fret-cs/CHANGELOG.md b/ogma-language-fret-cs/CHANGELOG.md deleted file mode 100644 index 38a32f2b..00000000 --- a/ogma-language-fret-cs/CHANGELOG.md +++ /dev/null @@ -1,57 +0,0 @@ -# Revision history for ogma-language-fret-cs - -## [1.1.0] - 2023-11-21 - -* Version bump 1.1.0 (#112). - -## [1.0.11] - 2023-09-21 - -* Version bump 1.0.11 (#103). - -## [1.0.10] - 2023-07-21 - -* Version bump 1.0.10 (#98). -* Improve parsing error messages (#96). - -## [1.0.9] - 2023-05-21 - -* Version bump 1.0.9 (#93). - -## [1.0.8] - 2023-03-21 - -* Version bump 1.0.8 (#81). -* Mark package as uncurated (#74). - -## [1.0.7] - 2023-01-21 -* Version bump 1.0.7 (#69). - -## [1.0.6] - 2022-11-21 - -* Version bump 1.0.6 (#64). -* Update license in cabal file to OtherLicense (#62). - -## [1.0.5] - 2022-09-21 - -* Version bump 1.0.5 (#60). -* Bump version bounds of Aeson; adjust code to work with Aeson 2 (#55). -* Support floating point numbers in SMV expressions (#58). - -## [1.0.4] - 2022-07-21 - -* Version bump 1.0.4 (#53). - -## [1.0.3] - 2022-05-21 - -* Version bump 1.0.3 (#49). - -## [1.0.2] - 2022-03-21 - -* Version bump 1.0.2 (#43). - -## [1.0.1] - 2022-01-21 - -* Version bump 1.0.1 (#39). - -## [1.0.0] - 2021-11-22 - -* Initial release. diff --git a/ogma-language-fret-cs/LICENSE.pdf b/ogma-language-fret-cs/LICENSE.pdf deleted file mode 100644 index d4333fb21cc0f8c8425cec7ca154cc302f7e1d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117991 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
  • Nha0!WdSKI*EmIKm;5``}e>6Us@ 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, a high-level runtime - verification framework that generates hard real-time C99 code. - . - This library contains a frontend to read FRET Component Specifications. - --- Ogma packages should be uncurated so that only the official maintainers make --- changes. --- --- Because this is a NASA project, we want to make sure that users obtain --- exactly what we publish, unmodified by anyone external to our project. -x-curation: uncurated - -library - - exposed-modules: - Language.FRETComponentSpec.AST - - build-depends: - base >= 4.11.0.0 && < 5 - , aeson >= 2.0.0.0 && < 2.2 - - , ogma-language-cocospec >= 1.1.0 && < 1.2 - , ogma-language-smv >= 1.1.0 && < 1.2 - - hs-source-dirs: - src - - default-language: - Haskell2010 - - ghc-options: - -Wall - -test-suite unit-tests - type: - exitcode-stdio-1.0 - - main-is: - Main.hs - - build-depends: - base >= 4.11.0.0 && < 5 - - , aeson >= 2.0.0.0 && < 2.2 - , QuickCheck - , test-framework - , test-framework-quickcheck2 - - , ogma-extra >= 1.1.0 && < 1.2 - , ogma-language-fret-cs - - hs-source-dirs: - tests - - default-language: - Haskell2010 - - ghc-options: - -Wall diff --git a/ogma-language-fret-cs/src/Language/FRETComponentSpec/AST.hs b/ogma-language-fret-cs/src/Language/FRETComponentSpec/AST.hs deleted file mode 100644 index bafa44b8..00000000 --- a/ogma-language-fret-cs/src/Language/FRETComponentSpec/AST.hs +++ /dev/null @@ -1,262 +0,0 @@ --- Copyright 2020 United States Government as represented by the Administrator --- of the National Aeronautics and Space Administration. All Rights Reserved. --- --- Disclaimers --- --- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY --- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT --- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO --- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A --- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE --- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF --- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN --- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR --- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR --- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, --- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING --- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES --- IT "AS IS." --- --- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST --- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS --- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN --- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, --- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S --- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE --- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY --- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY --- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS --- AGREEMENT. --- -{-# LANGUAGE OverloadedStrings #-} -{- HLINT ignore "Functor law" -} - --- | Representation and parser of FRET Component Specifications. --- --- FRET files are JSON files, implemented in Haskell using type classes, so the --- parser is defined in the same module as the AST to avoid having orphan --- instances. -module Language.FRETComponentSpec.AST where - --- External imports -import Data.Aeson ( FromJSON (..), Value (Object), (.:) ) -import Data.Aeson.Types ( prependFailure, typeMismatch ) -import Data.Aeson.Key ( toString ) -import qualified Data.Aeson.KeyMap as M - --- Internal imports -import qualified Language.CoCoSpec.AbsCoCoSpec as CoCoSpec -import qualified Language.CoCoSpec.ParCoCoSpec as CoCoSpec ( myLexer, - pBoolSpec ) - -import qualified Language.SMV.AbsSMV as SMV -import qualified Language.SMV.ParSMV as SMV ( myLexer, pBoolSpec ) - --- | Abstract representation of a FRET file. -data FRETComponentSpec = FRETComponentSpec - { fretName :: String - , fretInternalVariables :: [ FRETInternalVariableDef ] - , fretExternalVariables :: [ FRETExternalVariableDef ] - , fretRequirements :: [ FRETRequirement ] - } - deriving (Show) - --- | Instance to parse FRET semantics keys in JSON format. -instance FromJSON FRETComponentSpec where - parseJSON (Object v) - | (specName, Object specValues) <- head (M.toList v) - = FRETComponentSpec (toString specName) - <$> specValues .: "Internal_variables" - <*> specValues .: "Other_variables" - <*> specValues .: "Requirements" - - | (specName, specValues) <- head (M.toList v) - = prependFailure "parsing FRET Component Specification failed, " - (typeMismatch "Object" specValues) - - parseJSON invalid = - prependFailure "parsing FRET Component Specification failed, " - (typeMismatch "Object" invalid) - --- | Internal variable definition, with a given name, its type and either a --- Lustre or a Copilot expression. -data FRETInternalVariableDef = FRETInternalVariableDef - { fretInternalVariableName :: String - , fretInternalVariableType :: String - , fretInternalVariableLustre :: String - , fretInternalVariableCopilot :: String - } - deriving (Show) - -instance FromJSON FRETInternalVariableDef where - parseJSON (Object v) = FRETInternalVariableDef - <$> v .: "name" - <*> v .: "type" - <*> v .: "assignmentLustre" - <*> v .: "assignmentCopilot" - - parseJSON invalid = - prependFailure "parsing FRET Internal Variable definition failed, " - (typeMismatch "Object" invalid) - --- | External variable definition, with a given name and type. --- --- The value of external variables is assigned outside Copilot, so they have no --- defining expression in this type.. -data FRETExternalVariableDef = FRETExternalVariableDef - { fretExternalVariableName :: String - , fretExternalVariableType :: String - } - deriving (Show) - -instance FromJSON FRETExternalVariableDef where - parseJSON (Object v) = FRETExternalVariableDef - <$> v .: "name" - <*> v .: "type" - - parseJSON invalid = - prependFailure "parsing FRET External Variable failed, " - (typeMismatch "Object" invalid) - --- | Requirement with a given name and a CoCoSpec expression. -data FRETRequirement = FRETRequirement - { fretRequirementName :: String - , fretRequirementCoCoSpec :: Maybe (Either String CoCoSpec.BoolSpec) - , fretRequirementPTExpanded :: Maybe (Either String SMV.BoolSpec) - , fretRequirementFretish :: String - } - deriving (Show) - -instance FromJSON FRETRequirement where - parseJSON (Object v) = do - n <- v .: "name" - - coco <- fmap (CoCoSpec.pBoolSpec . CoCoSpec.myLexer) - <$> v .: "CoCoSpecCode" - coco' <- - case coco of - Nothing -> fail $ noField "CoCoSpecCode" n - Just (Left s) -> fail $ noParse "CoCoSpecCode" n s - Just (Right _) -> return coco - - ptltl <- fmap (SMV.pBoolSpec . SMV.myLexer) <$> v .: "ptLTL" - ptltl' <- - case ptltl of - Nothing -> fail $ noField "ptLTL" n - Just (Left s) -> fail $ noParse "ptLTL" n s - Just (Right _) -> return ptltl - - fretish <- v .: "fretish" - - return $ FRETRequirement n coco' ptltl' fretish - - where - - noField field req = concat - [ "error: requirement ", show req , " does not have a ", field - , " field" - ] - - noParse field req err = concat - [ "error: parsing of ", field, " field of requirement ", show req - , " failed with ", err - ] - - - parseJSON invalid = - prependFailure "parsing FRET Requirement failed, " - (typeMismatch "Object" invalid) - --- | Apply a variable subsitution to variables and requirements in a FRET --- file. -applySubstitution :: (String, String) -> FRETComponentSpec -> FRETComponentSpec -applySubstitution sub file = - FRETComponentSpec tlName - tlInternalVariables - tlExternalVariables - tlReqs - where - - -- Result component spec fields - tlName = fretName file - tlInternalVariables = map internalVarMapF $ fretInternalVariables file - tlExternalVariables = map externalVarMapF $ fretExternalVariables file - tlReqs = map reqMapF $ fretRequirements file - - -- Mapping function for fields with names to substitute - internalVarMapF x = x { fretInternalVariableName = - subsName sub (fretInternalVariableName x) } - - externalVarMapF x = x { fretExternalVariableName = - subsName sub (fretExternalVariableName x)} - - reqMapF x = x { fretRequirementName = - subsName sub (fretRequirementName x) - - , fretRequirementPTExpanded = - fmap (fmap (subBS sub)) (fretRequirementPTExpanded x) - } - - -- Substitute name x if it matches the old name oName - subsName (oName, nName) x = if x == oName then nName else x - - -- Substitute a name in all identifiers in a boolean expression - subBS sub' = mapBoolSpecIdent (subsName sub') - - -- Traverse a boolean expression applying a function to all identifiers - mapBoolSpecIdent :: (String -> String) -> SMV.BoolSpec -> SMV.BoolSpec - mapBoolSpecIdent f boolSpec = - case boolSpec of - SMV.BoolSpecSignal (SMV.Ident i) -> SMV.BoolSpecSignal (SMV.Ident (f i)) - - SMV.BoolSpecConst bc -> SMV.BoolSpecConst bc - - SMV.BoolSpecNum e -> SMV.BoolSpecNum (mapNumExprIdent f e) - - SMV.BoolSpecCmp spec1 op2 spec2 -> SMV.BoolSpecCmp - (mapBoolSpecIdent f spec1) op2 - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecNeg spec -> SMV.BoolSpecNeg (mapBoolSpecIdent f spec) - - SMV.BoolSpecAnd spec1 spec2 -> SMV.BoolSpecAnd - (mapBoolSpecIdent f spec1) - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecOr spec1 spec2 -> SMV.BoolSpecOr - (mapBoolSpecIdent f spec1) - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecXor spec1 spec2 -> SMV.BoolSpecXor - (mapBoolSpecIdent f spec1) - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecImplies spec1 spec2 -> SMV.BoolSpecImplies - (mapBoolSpecIdent f spec1) - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecEquivs spec1 spec2 -> SMV.BoolSpecEquivs - (mapBoolSpecIdent f spec1) - (mapBoolSpecIdent f spec2) - - SMV.BoolSpecOp1 op spec -> SMV.BoolSpecOp1 op (mapBoolSpecIdent f spec) - - SMV.BoolSpecOp2 spec1 op2 spec2 -> SMV.BoolSpecOp2 - (mapBoolSpecIdent f spec1) op2 - (mapBoolSpecIdent f spec2) - - -- Traverse a numeric expression applying a function to all identifiers - mapNumExprIdent :: (String -> String) -> SMV.NumExpr -> SMV.NumExpr - mapNumExprIdent f numExpr = - case numExpr of - SMV.NumId (SMV.Ident i) -> SMV.NumId (SMV.Ident (f i)) - SMV.NumConstI c -> SMV.NumConstI c - SMV.NumConstD c -> SMV.NumConstD c - SMV.NumAdd expr1 op expr2 -> SMV.NumAdd - (mapNumExprIdent f expr1) - op - (mapNumExprIdent f expr2) - SMV.NumMult expr1 op expr2 -> SMV.NumMult - (mapNumExprIdent f expr1) - op - (mapNumExprIdent f expr2) diff --git a/ogma-language-fret-cs/tests/Main.hs b/ogma-language-fret-cs/tests/Main.hs deleted file mode 100644 index d139a36d..00000000 --- a/ogma-language-fret-cs/tests/Main.hs +++ /dev/null @@ -1,81 +0,0 @@ --- Copyright 2020 United States Government as represented by the Administrator --- of the National Aeronautics and Space Administration. All Rights Reserved. --- --- Disclaimers --- --- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY --- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT --- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO --- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A --- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE --- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF --- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN --- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR --- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR --- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, --- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING --- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES --- IT "AS IS."
 --- --- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST --- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS --- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN --- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, --- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S --- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE --- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY --- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY --- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS --- AGREEMENT. --- --- | Test FRETCS language library. -module Main where - --- External imports -import Data.Aeson ( eitherDecode ) -import Data.Either ( isLeft, isRight ) -import Test.Framework ( Test, defaultMainWithOpts ) -import Test.Framework.Providers.QuickCheck2 ( testProperty ) -import Test.QuickCheck ( Property ) -import Test.QuickCheck.Monadic ( assert, monadicIO, run ) - --- External imports: auxiliary -import Data.ByteString.Extra as B ( safeReadFile ) - --- Internal imports -import Language.FRETComponentSpec.AST ( FRETComponentSpec ) - --- | Run all unit tests for the FRETCS parser. -main :: IO () -main = - defaultMainWithOpts tests mempty - --- | All unit tests for the FRETCS parser. -tests :: [Test.Framework.Test] -tests = - [ testProperty "Parse FRETCS (correct case)" propParseFRETCSOk - , testProperty "Parse FRETCS (incorrect case)" propParseFRETCSFail - ] - --- | Test the FRETCS parser on a well-formed boolean specification. -propParseFRETCSOk :: Property -propParseFRETCSOk = monadicIO $ do - content <- run $ parseFretComponentSpec "tests/fret_good.json" - assert (isRight content) - --- | Test the FRETCS parser on an incorrect boolean specification. -propParseFRETCSFail :: Property -propParseFRETCSFail = monadicIO $ do - componentSpec <- run $ parseFretComponentSpec "tests/fret_bad.json" - assert (isLeft componentSpec) - --- | Parse a JSON file containing a FRET component specification. --- --- Returns a 'Left' with an error message if the file does not have the correct --- format. --- --- Throws an exception if the file cannot be read. -parseFretComponentSpec :: FilePath -> IO (Either String FRETComponentSpec) -parseFretComponentSpec fp = do - componentSpec <- B.safeReadFile fp - return $ eitherDecode =<< componentSpec diff --git a/ogma-language-fret-cs/tests/fret_bad.json b/ogma-language-fret-cs/tests/fret_bad.json deleted file mode 100644 index 75e6ffa1..00000000 --- a/ogma-language-fret-cs/tests/fret_bad.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "RTSASpec": { - "Middle_variables": [], - "Other_variables": [ - {"name":"param_is_short", "type":"bool"}, - {"name":"param_value_short", "type":"real"}, - {"name":"param_value_long", "type":"real"}, - {"name":"upper_param_limit", "type":"real"}, - {"name":"lower_param_limit", "type":"real"}, - {"name":"envelope_issue", "type":"bool"} - ], - "Requirements": [ - { - "name": "behnazOne", - "CoCoSpecCode": "", - "ptltl": "((H ((((! flight_mode) & (Y flight_mode)) & (Y TRUE)) -> (Y (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) S (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode))))))))) & (((! ((! flight_mode) & (Y flight_mode))) S ((! ((! flight_mode) & (Y flight_mode))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) -> (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) S (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode))))))))", - "fretish": "Meaning not specified" - } - ] - } -} diff --git a/ogma-language-fret-cs/tests/fret_good.json b/ogma-language-fret-cs/tests/fret_good.json deleted file mode 100644 index 5ab0feff..00000000 --- a/ogma-language-fret-cs/tests/fret_good.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "RTSASpec": { - "Internal_variables": [], - "Other_variables": [ - {"name":"param_is_short", "type":"bool"}, - {"name":"param_value_short", "type":"real"}, - {"name":"param_value_long", "type":"real"}, - {"name":"upper_param_limit", "type":"real"}, - {"name":"lower_param_limit", "type":"real"}, - {"name":"envelope_issue", "type":"bool"} - ], - "Requirements": [ - { - "name": "behnazOne", - "CoCoSpecCode": "true", - "ptLTL": "((H ((((! flight_mode) & (Y flight_mode)) & (Y TRUE)) -> (Y (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) S (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode))))))))) & (((! ((! flight_mode) & (Y flight_mode))) S ((! ((! flight_mode) & (Y flight_mode))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) -> (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) S (((O[=10] (((conflict_detected) & ((Y (! (conflict_detected))) | (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))))) & (! (( replanning_mode ))))) -> (O[<10] ((flight_mode & ((! (Y TRUE)) | (Y (! flight_mode)))) | (( replanning_mode ))))) & (flight_mode & ((! (Y TRUE)) | (Y (! flight_mode))))))))", - "fretish": "Meaning not specified" - } - ] - } -} From 58a28925b820c13442fd902df7d918ca731ffb56 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:50:25 +0000 Subject: [PATCH 6/9] ogma-spec: Document changes in CHANGELOG. Refs #115. --- ogma-spec/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ogma-spec/CHANGELOG.md b/ogma-spec/CHANGELOG.md index 96b69c35..da9dcb72 100644 --- a/ogma-spec/CHANGELOG.md +++ b/ogma-spec/CHANGELOG.md @@ -1 +1,5 @@ # Revision history for ogma-spec + +## [1.X.Y] - 2024-01-21 + +* Initial release (#115). From bd577ff91cd58cd9070fe1f9448cdbb14506cf61 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:51:14 +0000 Subject: [PATCH 7/9] ogma-language-jsonspec: Document changes in CHANGELOG. Refs #115. --- ogma-language-jsonspec/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ogma-language-jsonspec/CHANGELOG.md b/ogma-language-jsonspec/CHANGELOG.md index 25ba0bd9..c5b18e28 100644 --- a/ogma-language-jsonspec/CHANGELOG.md +++ b/ogma-language-jsonspec/CHANGELOG.md @@ -1 +1,5 @@ # Revision history for ogma-language-jsonspec + +## [1.X.Y] - 2024-01-21 + +* Initial release (#115). From ea3807ab867c6e60471a426de71f97257a92605a Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:52:38 +0000 Subject: [PATCH 8/9] ogma-language-smv: Document changes in CHANGELOG. Refs #115. --- ogma-language-smv/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ogma-language-smv/CHANGELOG.md b/ogma-language-smv/CHANGELOG.md index dc888eb1..969a24aa 100644 --- a/ogma-language-smv/CHANGELOG.md +++ b/ogma-language-smv/CHANGELOG.md @@ -1,5 +1,9 @@ # Revision history for ogma-language-smv +## [1.X.Y] - 2024-01-21 + +* Introduce identifier substitution functions (#115). + ## [1.1.0] - 2023-11-21 * Version bump 1.1.0 (#112). From 95a5a1b61daea2ca08569815fe1327eb897c1c61 Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Mon, 22 Jan 2024 11:52:12 +0000 Subject: [PATCH 9/9] ogma-core: Document changes in CHANGELOG. Refs #115. --- ogma-core/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ogma-core/CHANGELOG.md b/ogma-core/CHANGELOG.md index f7ec75f7..ad6cd472 100644 --- a/ogma-core/CHANGELOG.md +++ b/ogma-core/CHANGELOG.md @@ -1,5 +1,9 @@ # Revision history for ogma-core +## [1.X.Y] - 2024-01-21 + +* Generalize JSON parser (#115). + ## [1.1.0] - 2023-11-21 * Version bump 1.1.0 (#112).