language-sygus-0.2.0.0: src/Sygus/Syntax.hs
{-# LANGUAGE DeriveGeneric #-}
module Sygus.Syntax where
import Data.Hashable
import GHC.Generics (Generic)
data Lit = LitNum Integer
| LitDec Integer Integer
| LitBool Bool
| Hexidecimal String
| Binary String
| LitStr String deriving (Eq, Show, Read, Generic)
instance Hashable Lit
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, Generic)
instance Hashable Cmd
data Identifier = ISymb Symbol
| Indexed Symbol [Index]
deriving (Eq, Show, Read, Generic)
instance Hashable Identifier
data Index = IndNumeral Integer
| IndSymb Symbol
deriving (Eq, Show, Read, Generic)
instance Hashable Index
data Sort = IdentSort Identifier
| IdentSortSort Identifier [Sort]
deriving (Eq, Show, Read, Generic)
instance Hashable Sort
data Term = TermIdent Identifier
| TermLit Lit
| TermCall Identifier [Term]
| TermExists [SortedVar] Term
| TermForAll [SortedVar] Term
| TermLet [VarBinding] Term
deriving (Eq, Show, Read, Generic)
instance Hashable Term
data BfTerm = BfIdentifier Identifier
| BfLiteral Lit
| BfIdentifierBfs Identifier [BfTerm]
deriving (Eq, Show, Read, Generic)
instance Hashable BfTerm
data SortedVar = SortedVar Symbol Sort deriving (Eq, Show, Read, Generic)
instance Hashable SortedVar
data VarBinding = VarBinding Symbol Term deriving (Eq, Show, Read, Generic)
instance Hashable VarBinding
data Feature = Grammars
| FwdDecls
| Recursion
deriving (Eq, Show, Read, Generic)
instance Hashable Feature
data SmtCmd = DeclareDatatype Symbol DTDec
| DeclareDatatypes [SortDecl] [DTDec]
| DeclareSort Symbol Integer
| DefineFun Symbol [SortedVar] Sort Term
| DefineFunRec Symbol [SortedVar] Sort Term
| DefineSort Symbol Sort
| SetLogic Symbol
| SetOption Symbol Lit
deriving (Eq, Show, Read, Generic)
instance Hashable SmtCmd
data SortDecl = SortDecl Symbol Integer deriving (Eq, Show, Read, Generic)
instance Hashable SortDecl
data DTDec = DTDec [DTConsDec] deriving (Eq, Show, Read, Generic)
instance Hashable DTDec
data DTConsDec = DTConsDec Symbol [SortedVar] deriving (Eq, Show, Read, Generic)
instance Hashable DTConsDec
data GrammarDef = GrammarDef [SortedVar] [GroupedRuleList] deriving (Eq, Show, Read, Generic)
instance Hashable GrammarDef
data GroupedRuleList = GroupedRuleList Symbol Sort [GTerm] deriving (Eq, Show, Read, Generic)
instance Hashable GroupedRuleList
data GTerm = GConstant Sort
| GVariable Sort
| GBfTerm BfTerm
deriving (Eq, Show, Read, Generic)
instance Hashable GTerm