language-sygus-0.1.0.0: src/Sygus/Syntax.hs
module Sygus.Syntax where
data Lit = LitNum Integer
| LitDec String
| LitBool Bool
| Hexidecimal String
| Binary String
| LitStr String deriving (Eq, Show, Read)
type Symbol = String
data Cmd = CheckSynth
| Constraint Term
| DeclareVar Symbol Sort
| InvConstraint Symbol Symbol Symbol Symbol
| SetFeature Feature Bool
| SynthFun Symbol [SortedVar] Sort (Maybe GrammarDef)
| SynthInv Symbol [SortedVar] (Maybe GrammarDef)
| SmtCmd SmtCmd
deriving (Eq, Show, Read)
data Identifier = ISymb Symbol
| Indexed Symbol [Index]
deriving (Eq, Show, Read)
data Index = IndNumeral Integer
| IndSymb Symbol
deriving (Eq, Show, Read)
data Sort = IdentSort Identifier
| IdentSortSort Identifier [Sort]
deriving (Eq, Show, Read)
data Term = TermIdent Identifier
| TermLit Lit
| TermCall Identifier [Term]
| TermExists [SortedVar] Term
| TermForAll [SortedVar] Term
| TermLet [VarBinding] Term
deriving (Eq, Show, Read)
data BfTerm = BfIdentifier Identifier
| BfLiteral Lit
| BfIdentifierBfs Identifier [BfTerm]
deriving (Eq, Show, Read)
data SortedVar = SortedVar Symbol Sort deriving (Eq, Show, Read)
data VarBinding = VarBinding Symbol Term deriving (Eq, Show, Read)
data Feature = Grammars
| FwdDecls
| Recursion
deriving (Eq, Show, Read)
data SmtCmd = DeclareDatatype Symbol DTDec
| DeclareDatatypes [SortDecl] [DTDec]
| DeclareSort Symbol Integer
| DefineFun Symbol [SortedVar] Sort Term
| DefineSort Symbol Sort
| SetLogic Symbol
| SetOption Symbol Lit
deriving (Eq, Show, Read)
data SortDecl = SortDecl Symbol Integer deriving (Eq, Show, Read)
data DTDec = DTDec [DTConsDec] deriving (Eq, Show, Read)
data DTConsDec = DTConsDec Symbol [SortedVar] deriving (Eq, Show, Read)
data GrammarDef = GrammarDef [SortedVar] [GroupedRuleList] deriving (Eq, Show, Read)
data GroupedRuleList = GroupedRuleList Symbol Sort [GTerm] deriving (Eq, Show, Read)
data GTerm = GConstant Sort
| GVariable Sort
| GBfTerm BfTerm
deriving (Eq, Show, Read)