Cvc5Grammar
This struct encapsulates a SyGuS grammar. It is created via
cvc5_mk_grammar()
and allows to define a context-free grammar of
terms, according to the definition of grammars in the SyGuS IF 2.1 standard.
-
typedef struct cvc5_grammar_t *Cvc5Grammar
A Sygus Grammar. This 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.
-
void cvc5_grammar_add_rule(Cvc5Grammar grammar, Cvc5Term symbol, Cvc5Term rule)
Add
rule
to the set of rules corresponding tosymbol
of a given grammar.- Parameters:
grammar – The grammar.
symbol – The non-terminal to which the rule is added.
rule – The rule to add.
-
void cvc5_grammar_add_rules(Cvc5Grammar grammar, Cvc5Term symbol, size_t size, const Cvc5Term rules[])
Add
rules
to the set of rules corresponding tosymbol
of a given grammar.- Parameters:
grammar – The grammar.
symbol – The non-terminal to which the rules are added.
size – The number of rules to add.
rules – The rules to add.
-
void cvc5_grammar_add_any_constant(Cvc5Grammar grammar, Cvc5Term symbol)
Allow
symbol
to be an arbitrary constant of a given grammar.- Parameters:
grammar – The grammar.
symbol – The non-terminal allowed to be any constant.
-
void cvc5_grammar_add_any_variable(Cvc5Grammar grammar, Cvc5Term symbol)
Allow
symbol
to be any input variable of a given grammar to corresponding synth-fun/synth-inv with the same sort assymbol
.- Parameters:
grammar – The grammar.
symbol – The non-terminal allowed to be any input variable.
-
const char *cvc5_grammar_to_string(const Cvc5Grammar grammar)
Get a string representation of a given grammar.
Note
The returned char* pointer is only valid until the next call to this function.
- Parameters:
grammar – The grammar.
- Returns:
A string representation of the grammar.
-
bool cvc5_grammar_is_equal(Cvc5Grammar a, Cvc5Grammar b)
Compare two grammars for referential equality.
- Parameters:
a – The first grammar.
b – The second grammar.
- Returns:
True if both grammar pointers point to the same internal grammar object.
-
bool cvc5_grammar_is_disequal(Cvc5Grammar a, Cvc5Grammar b)
Compare two grammars for referential disequality.
- Parameters:
a – The first grammar.
b – The second grammar.
- Returns:
True if both grammar pointers point to different internal grammar objects.
-
size_t cvc5_grammar_hash(Cvc5Grammar grammar)
Compute the hash value of a grammar.
- Parameters:
grammar – The grammar.
- Returns:
The hash value of the grammar.
-
Cvc5Grammar cvc5_grammar_copy(Cvc5Grammar grammar)
Make copy of grammar, increases reference counter of
grammar
.Note
This step is optional and allows users to manage resources in a more fine-grained manner.
- Parameters:
grammar – The grammar to copy.
- Returns:
The same grammar with its reference count increased by one.
-
void cvc5_grammar_release(Cvc5Grammar grammar)
Release copy of grammar, decrements reference counter of
grammar
.Note
This step is optional and allows users to release resources in a more fine-grained manner. Further, any API function that returns a copy that is owned by the callee of the function and thus, can be released.
- Parameters:
grammar – The grammar to release.