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.