Grammar

This class encapsulates a SyGuS grammar. It is created via cvc5::Solver::mkGrammar() and allows to define a context-free grammar of terms, according to the definition of grammars in the SyGuS IF 2.1 standard.



class Grammar

A Sygus Grammar . This class can be used to define a context-free grammar of terms. Its interface coincides with the definition of grammars ( GrammarDef ) in the SyGuS IF 2.1 standard.

Public Functions

void addRule ( const Term & ntSymbol , const Term & rule )

Add rule to the set of rules corresponding to ntSymbol .

Parameters :
  • ntSymbol – The non-terminal to which the rule is added.

  • rule – The rule to add.

void addRules ( const Term & ntSymbol , const std :: vector < Term > & rules )

Add rules to the set of rules corresponding to ntSymbol .

Parameters :
  • ntSymbol – The non-terminal to which the rules are added.

  • rules – The rules to add.

void addAnyConstant ( const Term & ntSymbol )

Allow ntSymbol to be an arbitrary constant.

Parameters :

ntSymbol – The non-terminal allowed to be any constant.

void addAnyVariable ( const Term & ntSymbol )

Allow ntSymbol to be any input variable to corresponding synth-fun/synth-inv with the same sort as ntSymbol .

Parameters :

ntSymbol – The non-terminal allowed to be any input variable.

std :: string toString ( ) const
Returns :

A string representation of this grammar.

Grammar ( )

Nullary constructor. Needed for the Cython API.

~Grammar ( )

Destructor for bookeeping.

Friends

friend class parser::Cmd

std :: ostream & cvc5 :: operator << ( std :: ostream & out , const Grammar & g )

Serialize a grammar to given stream.

Parameters :
  • out – The output stream.

  • g – The grammar to be serialized to the given output stream.

Returns :

The output stream.