syfco-1.1.0.0: src/Data/Specification.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.Specification
-- License : MIT (see the LICENSE file)
-- Maintainer : Felix Klein (klein@react.uni-saarland.de)
--
-- Internal data structure of a specification.
--
-----------------------------------------------------------------------------
module Data.Specification
( Specification(..)
, Expression
) where
-----------------------------------------------------------------------------
import Data.Types
( SignalDecType
)
import Data.Expression
( Expr
, ExprPos
)
import Data.Types
( Semantics
, Target
)
import Data.Binding
( Binding
)
import Data.SymbolTable
( SymbolTable
)
import Data.Enum
( EnumDefinition
)
-----------------------------------------------------------------------------
-- | We use the type @Expression@ as a shortcut for expressions, where
-- identifiers are denoted by integers.
type Expression = Expr Int
-----------------------------------------------------------------------------
-- | Internal representation of a specification.
data Specification =
Specification
{ -- | Returns the TSLF source of a specification.
source :: String
, -- | Returns the title of a specification.
title :: String
, -- | Returns the description of a specification.
description :: String
, -- | Returns the semantics of a specification.
semantics :: Semantics
, -- | Returns the target flag of a specification.
target :: Target
, -- | Returns the tag list of a specification.
tags :: [String]
, -- | Positions of the tags in the tags list. Each expression
-- matches with the corresponding tag in order.
tagsPos :: [ExprPos]
, -- | Position of the title in the source file.
titlePos :: ExprPos
, -- | Position of the description in the source file.
descriptionPos :: ExprPos
, -- | Position of the semantics flag in the source file.
semanticsPos :: ExprPos
, -- | Poisition of the target flag in the source file.
targetPos :: ExprPos
, -- | List of enumeration definitions.
enumerations :: [EnumDefinition Int]
, -- | List of bindings of an identifier to an expression defined in
-- the PARAMETERS subsection.
parameters :: [Binding]
, -- | List of bindings of an identifier to any other expression,
-- defined in the DEFINITIONS subsection.
definitions :: [Binding]
, -- | List of input signals.
inputs :: [SignalDecType Int]
, -- | List of output signals.
outputs :: [SignalDecType Int]
, -- | List of expresssions representing the initial input of the
-- environment.
initially :: [Expression]
, -- | List of expresssions representing the initial output of the
-- system.
preset :: [Expression]
, -- | List of expresssions representing the globally asserted
-- requirements on the inputs of the specification.
requirements :: [Expression]
, -- | List of expresssions representing the assumptions of the
-- specification.
assumptions :: [Expression]
, -- | List of expressions representing the invariants of the
-- specification.
invariants :: [Expression]
, -- | List of expressions representing the guarantees of the
-- specification.
guarantees :: [Expression]
, -- | Symbol table used to access information about an identifier.
symboltable :: SymbolTable
}
-----------------------------------------------------------------------------