spot 2.13
|
Main class for temporal logic formula. More...
#include <spot/tl/formula.hh>
Classes | |
class | formula_child_iterator |
Allow iterating over children. More... | |
Public Member Functions | |
formula (const fnode *f) noexcept | |
Create a formula from an fnode. More... | |
formula (std::nullptr_t) noexcept | |
Create a null formula. More... | |
formula () noexcept | |
Default initialize a formula to nullptr. More... | |
formula (const formula &f) noexcept | |
Clone a formula. More... | |
formula (formula &&f) noexcept | |
Move-construct a formula. More... | |
~formula () | |
Destroy a formula. More... | |
const formula & | operator= (std::nullptr_t) |
Reset a formula to null. More... | |
const formula & | operator= (const formula &f) |
const formula & | operator= (formula &&f) noexcept |
bool | operator< (const formula &other) const noexcept |
bool | operator<= (const formula &other) const noexcept |
bool | operator> (const formula &other) const noexcept |
bool | operator>= (const formula &other) const noexcept |
bool | operator== (const formula &other) const noexcept |
bool | operator== (std::nullptr_t) const noexcept |
bool | operator!= (const formula &other) const noexcept |
bool | operator!= (std::nullptr_t) const noexcept |
operator bool () const noexcept | |
const fnode * | to_node_ () |
Return the underlying pointer to the formula. More... | |
op | kind () const |
Return top-most operator. More... | |
std::string | kindstr () const |
Return the name of the top-most operator. More... | |
bool | is (op o) const |
Return true if the formula is of kind o. More... | |
bool | is (op o1, op o2) const |
Return true if the formula is of kind o1 or o2. More... | |
bool | is (op o1, op o2, op o3) const |
Return true if the formula is of kind o1 or o2 or o3. More... | |
bool | is (op o1, op o2, op o3, op o4) const |
bool | is (std::initializer_list< op > l) const |
Return true if the formulas nests all the operators in l. More... | |
formula | get_child_of (op o) const |
Remove operator o and return the child. More... | |
formula | get_child_of (std::initializer_list< op > l) const |
Remove all operators in l and return the child. More... | |
unsigned | min () const |
Return start of the range for star-like operators. More... | |
unsigned | max () const |
Return end of the range for star-like operators. More... | |
unsigned | size () const |
Return the number of children. More... | |
bool | is_leaf () const |
Whether the formula is a leaf. More... | |
size_t | id () const |
Return the id of a formula. More... | |
formula_child_iterator | begin () const |
Allow iterating over children. More... | |
formula_child_iterator | end () const |
Allow iterating over children. More... | |
formula | operator[] (unsigned i) const |
Return children number i. More... | |
bool | is_ff () const |
Whether the formula is the false constant. More... | |
bool | is_tt () const |
Whether the formula is the true constant. More... | |
bool | is_eword () const |
Whether the formula is the empty word constant. More... | |
bool | is_constant () const |
Whether the formula is op::ff, op::tt, or op::eword. More... | |
bool | is_Kleene_star () const |
Test whether the formula represent a Kleene star. More... | |
bool | is_literal () const |
Whether the formula is an atomic proposition or its negation. More... | |
const std::string & | ap_name () const |
Print the name of an atomic proposition. More... | |
std::ostream & | dump (std::ostream &os) const |
Print the formula for debugging. More... | |
formula | all_but (unsigned i) const |
clone this formula, omitting child i More... | |
unsigned | boolean_count () const |
number of Boolean children More... | |
formula | boolean_operands (unsigned *width=nullptr) const |
return a clone of the current node, restricted to its Boolean children More... | |
bool | is_boolean () const |
Whether the formula use only boolean operators. More... | |
bool | is_sugar_free_boolean () const |
Whether the formula use only AND, OR, and NOT operators. More... | |
bool | is_in_nenoform () const |
Whether the formula is in negative normal form. More... | |
bool | is_syntactic_stutter_invariant () const |
Whether the formula is syntactically stutter_invariant. More... | |
bool | is_sugar_free_ltl () const |
Whether the formula avoids the F and G operators. More... | |
bool | is_ltl_formula () const |
Whether the formula uses only LTL operators. More... | |
bool | is_psl_formula () const |
Whether the formula uses only PSL operators. More... | |
bool | is_sere_formula () const |
Whether the formula uses only SERE operators. More... | |
bool | is_finite () const |
Whether a SERE describes a finite language, or an LTL formula uses no temporal operator but X. More... | |
bool | is_eventual () const |
Whether the formula is purely eventual. More... | |
bool | is_universal () const |
Whether a formula is purely universal. More... | |
bool | is_syntactic_safety () const |
Whether a PSL/LTL formula is syntactic safety property. More... | |
bool | is_syntactic_guarantee () const |
Whether a PSL/LTL formula is syntactic guarantee property. More... | |
bool | is_delta1 () const |
Whether a PSL/LTL formula is in the Δ₁ syntactic frament. More... | |
bool | is_syntactic_obligation () const |
Whether a PSL/LTL formula is syntactic obligation property. More... | |
bool | is_sigma2 () const |
Whether a PSL/LTL formula is in Σ₂ More... | |
bool | is_pi2 () const |
Whether a PSL/LTL formula is in Π₂ More... | |
bool | is_syntactic_recurrence () const |
Whether a PSL/LTL formula is syntactic recurrence property. More... | |
bool | is_syntactic_persistence () const |
Whether a PSL/LTL formula is syntactic persistence property. More... | |
bool | is_delta2 () const |
Whether a PSL/LTL formula is in the Δ₂ syntactic frament. More... | |
bool | is_marked () const |
Whether the formula has an occurrence of EConcatMarked or NegClosureMarked. More... | |
bool | accepts_eword () const |
Whether the formula accepts [*0]. More... | |
bool | has_lbt_atomic_props () const |
Whether the formula has only LBT-compatible atomic propositions. More... | |
bool | has_spin_atomic_props () const |
Whether the formula has spin-compatible atomic propositions. More... | |
template<typename Trans , typename... Args> | |
formula | map (Trans trans, Args &&... args) |
Clone this node after applying trans to its children. More... | |
template<typename Func , typename... Args> | |
void | traverse (Func func, Args &&... args) |
Apply func to each subformula. More... | |
Static Public Member Functions | |
static constexpr uint8_t | unbounded () |
Unbounded constant to use as end of range for bounded operators. More... | |
static formula | ap (const std::string &name) |
Build an atomic proposition. More... | |
static formula | ap (const formula &a) |
Build an atomic proposition from... an atomic proposition. More... | |
static formula | X (unsigned level, const formula &f) |
Construct an X[n]. More... | |
static formula | F (unsigned min_level, unsigned max_level, const formula &f) |
Construct F[n:m]. More... | |
static formula | G (unsigned min_level, unsigned max_level, const formula &f) |
Construct G[n:m]. More... | |
static const formula | nested_unop_range (op uo, op bo, unsigned min, unsigned max, formula f) |
Nested operator construction (syntactic sugar). More... | |
static formula | sugar_goto (const formula &b, unsigned min, unsigned max) |
Create a SERE equivalent to b[->min..max] More... | |
static formula | sugar_equal (const formula &b, unsigned min, unsigned max) |
Create the SERE b[=min..max] More... | |
static formula | ff () |
Return the false constant. More... | |
static formula | tt () |
Return the true constant. More... | |
static formula | eword () |
Return the empty word constant. More... | |
static formula | one_star () |
Return a copy of the formula 1[*]. More... | |
static formula | one_plus () |
Return a copy of the formula 1[+]. More... | |
static formula | unop (op o, const formula &f) |
Build a unary operator. More... | |
static formula | unop (op o, formula &&f) |
Build a unary operator. More... | |
static formula | Not (const formula &f) |
Construct a negation. More... | |
static formula | Not (formula &&f) |
Construct a negation. More... | |
static formula | X (const formula &f) |
Construct an X. More... | |
static formula | X (formula &&f) |
Construct an X. More... | |
static formula | F (const formula &f) |
Construct an F. More... | |
static formula | F (formula &&f) |
Construct an F. More... | |
static formula | G (const formula &f) |
Construct a G. More... | |
static formula | G (formula &&f) |
Construct a G. More... | |
static formula | Closure (const formula &f) |
Construct a PSL Closure. More... | |
static formula | Closure (formula &&f) |
Construct a PSL Closure. More... | |
static formula | NegClosure (const formula &f) |
Construct a negated PSL Closure. More... | |
static formula | NegClosure (formula &&f) |
Construct a negated PSL Closure. More... | |
static formula | NegClosureMarked (const formula &f) |
Construct a marked negated PSL Closure. More... | |
static formula | NegClosureMarked (formula &&f) |
Construct a marked negated PSL Closure. More... | |
static formula | first_match (const formula &f) |
Construct first_match(sere) More... | |
static formula | first_match (formula &&f) |
Construct first_match(sere) More... | |
static formula | binop (op o, const formula &f, const formula &g) |
Construct a binary operator. More... | |
static formula | binop (op o, const formula &f, formula &&g) |
Construct a binary operator. More... | |
static formula | binop (op o, formula &&f, const formula &g) |
Construct a binary operator. More... | |
static formula | binop (op o, formula &&f, formula &&g) |
Construct a binary operator. More... | |
static formula | Xor (const formula &f, const formula &g) |
Construct an Xor formula. More... | |
static formula | Xor (const formula &f, formula &&g) |
Construct an Xor formula. More... | |
static formula | Xor (formula &&f, const formula &g) |
Construct an Xor formula. More... | |
static formula | Xor (formula &&f, formula &&g) |
Construct an Xor formula. More... | |
static formula | Implies (const formula &f, const formula &g) |
Construct an -> formula. More... | |
static formula | Implies (const formula &f, formula &&g) |
Construct an -> formula. More... | |
static formula | Implies (formula &&f, const formula &g) |
Construct an -> formula. More... | |
static formula | Implies (formula &&f, formula &&g) |
Construct an -> formula. More... | |
static formula | Equiv (const formula &f, const formula &g) |
Construct an <-> formula. More... | |
static formula | Equiv (const formula &f, formula &&g) |
Construct an <-> formula. More... | |
static formula | Equiv (formula &&f, const formula &g) |
Construct an <-> formula. More... | |
static formula | Equiv (formula &&f, formula &&g) |
Construct an <-> formula. More... | |
static formula | U (const formula &f, const formula &g) |
Construct a U formula. More... | |
static formula | U (const formula &f, formula &&g) |
Construct a U formula. More... | |
static formula | U (formula &&f, const formula &g) |
Construct a U formula. More... | |
static formula | U (formula &&f, formula &&g) |
Construct a U formula. More... | |
static formula | R (const formula &f, const formula &g) |
Construct an R formula. More... | |
static formula | R (const formula &f, formula &&g) |
Construct an R formula. More... | |
static formula | R (formula &&f, const formula &g) |
Construct an R formula. More... | |
static formula | R (formula &&f, formula &&g) |
Construct an R formula. More... | |
static formula | W (const formula &f, const formula &g) |
Construct a W formula. More... | |
static formula | W (const formula &f, formula &&g) |
Construct a W formula. More... | |
static formula | W (formula &&f, const formula &g) |
Construct a W formula. More... | |
static formula | W (formula &&f, formula &&g) |
Construct a W formula. More... | |
static formula | M (const formula &f, const formula &g) |
Construct an M formula. More... | |
static formula | M (const formula &f, formula &&g) |
Construct an M formula. More... | |
static formula | M (formula &&f, const formula &g) |
Construct an M formula. More... | |
static formula | M (formula &&f, formula &&g) |
Construct an M formula. More... | |
static formula | EConcat (const formula &f, const formula &g) |
Construct a <>-> PSL formula. More... | |
static formula | EConcat (const formula &f, formula &&g) |
Construct a <>-> PSL formula. More... | |
static formula | EConcat (formula &&f, const formula &g) |
Construct a <>-> PSL formula. More... | |
static formula | EConcat (formula &&f, formula &&g) |
Construct a <>-> PSL formula. More... | |
static formula | EConcatMarked (const formula &f, const formula &g) |
Construct a marked <>-> PSL formula. More... | |
static formula | EConcatMarked (const formula &f, formula &&g) |
Construct a marked <>-> PSL formula. More... | |
static formula | EConcatMarked (formula &&f, const formula &g) |
Construct a marked <>-> PSL formula. More... | |
static formula | EConcatMarked (formula &&f, formula &&g) |
Construct a marked <>-> PSL formula. More... | |
static formula | UConcat (const formula &f, const formula &g) |
Construct a []-> PSL formula. More... | |
static formula | UConcat (const formula &f, formula &&g) |
Construct a []-> PSL formula. More... | |
static formula | UConcat (formula &&f, const formula &g) |
Construct a []-> PSL formula. More... | |
static formula | UConcat (formula &&f, formula &&g) |
Construct a []-> PSL formula. More... | |
static formula | multop (op o, const std::vector< formula > &l) |
Construct an n-ary operator. More... | |
static formula | multop (op o, std::vector< formula > &&l) |
Construct an n-ary operator. More... | |
static formula | Or (const std::vector< formula > &l) |
Construct an Or formula. More... | |
static formula | Or (std::vector< formula > &&l) |
Construct an Or formula. More... | |
static formula | OrRat (const std::vector< formula > &l) |
Construct an Or SERE. More... | |
static formula | OrRat (std::vector< formula > &&l) |
Construct an Or SERE. More... | |
static formula | And (const std::vector< formula > &l) |
Construct an And formula. More... | |
static formula | And (std::vector< formula > &&l) |
Construct an And formula. More... | |
static formula | AndRat (const std::vector< formula > &l) |
Construct an And SERE. More... | |
static formula | AndRat (std::vector< formula > &&l) |
Construct an And SERE. More... | |
static formula | AndNLM (const std::vector< formula > &l) |
Construct a non-length-matching And SERE. More... | |
static formula | AndNLM (std::vector< formula > &&l) |
Construct a non-length-matching And SERE. More... | |
static formula | Concat (const std::vector< formula > &l) |
Construct a Concatenation SERE. More... | |
static formula | Concat (std::vector< formula > &&l) |
Construct a Concatenation SERE. More... | |
static formula | Fusion (const std::vector< formula > &l) |
Construct a Fusion SERE. More... | |
static formula | Fusion (std::vector< formula > &&l) |
Construct a Fusion SERE. More... | |
static formula | bunop (op o, const formula &f, unsigned min=0U, unsigned max=unbounded()) |
Define a bounded unary-operator (i.e. star-like) More... | |
static formula | bunop (op o, formula &&f, unsigned min=0U, unsigned max=unbounded()) |
Define a bounded unary-operator (i.e. star-like) More... | |
static formula | Star (const formula &f, unsigned min=0U, unsigned max=unbounded()) |
Create SERE for f[*min..max] More... | |
static formula | Star (formula &&f, unsigned min=0U, unsigned max=unbounded()) |
Create SERE for f[*min..max] More... | |
static formula | FStar (const formula &f, unsigned min=0U, unsigned max=unbounded()) |
Create SERE for f[:*min..max] More... | |
static formula | FStar (formula &&f, unsigned min=0U, unsigned max=unbounded()) |
Create SERE for f[:*min..max] More... | |
static formula | sugar_delay (const formula &a, const formula &b, unsigned min, unsigned max) |
Create the SERE a ##[n:m] b More... | |
static formula | sugar_delay (const formula &b, unsigned min, unsigned max) |
Create the SERE a ##[n:m] b More... | |
Friends | |
struct | formula_ptr_less_than_bool_first |
Main class for temporal logic formula.
|
inlineexplicitnoexcept |
Create a formula from an fnode.
This constructor is mainly for internal use, as spot::fnode object should usually not be manipulated from user code.
|
inlinenoexcept |
Create a null formula.
This could be used to default-initialize a formula, however null formula should be short lived: most algorithms and member functions assume that formulas should not be null.
|
inlinenoexcept |
Default initialize a formula to nullptr.
|
inlinenoexcept |
Clone a formula.
|
inlinenoexcept |
Move-construct a formula.
|
inline |
Destroy a formula.
|
inline |
Whether the formula accepts [*0].
|
inline |
clone this formula, omitting child i
Construct an And formula.
Construct an And formula.
Construct a non-length-matching And SERE.
Construct a non-length-matching And SERE.
Construct an And SERE.
Construct an And SERE.
|
inlinestatic |
|
inline |
Print the name of an atomic proposition.
|
inline |
Allow iterating over children.
Construct a binary operator.
References spot::fnode::binop(), and spot::fnode::clone().
Construct a binary operator.
References spot::fnode::binop(), and spot::fnode::clone().
Construct a binary operator.
References spot::fnode::binop(), spot::fnode::clone(), and to_node_().
Construct a binary operator.
References spot::fnode::binop(), and to_node_().
|
inline |
number of Boolean children
Note that the children of an n-ary operator are always sorted when the node is constructed, and such that Boolean children appear at the beginning. This function therefore return the number of the first non-Boolean child if it exists.
|
inline |
return a clone of the current node, restricted to its Boolean children
On a formula such as And({a,b,c,d,F(e),G(f)}), this returns And({a,b,c,d}). If width is not nullptr, it is set the the number of Boolean children gathered. Note that the children of an n-ary operator are always sorted when the node is constructed, and such that Boolean children appear at the beginning. width would therefore give the number of the first non-Boolean child if it exists.
|
inlinestatic |
Define a bounded unary-operator (i.e. star-like)
References spot::fnode::bunop(), and spot::fnode::clone().
|
inlinestatic |
Define a bounded unary-operator (i.e. star-like)
References spot::fnode::bunop(), and to_node_().
Construct a Concatenation SERE.
Construct a Concatenation SERE.
|
inline |
Print the formula for debugging.
In addition to the operator and children, this also display the formula's unique id, and its reference count.
Construct a <>->
PSL formula.
Construct a <>->
PSL formula.
Construct a <>->
PSL formula.
Construct a <>->
PSL formula.
Construct a marked <>->
PSL formula.
Construct a marked <>->
PSL formula.
Construct a marked <>->
PSL formula.
Construct a marked <>->
PSL formula.
|
inline |
Allow iterating over children.
Construct an <->
formula.
Construct an <->
formula.
Construct an <->
formula.
Construct an <->
formula.
|
inlinestatic |
Return the empty word constant.
References spot::fnode::eword().
|
inlinestatic |
Return the false constant.
References spot::fnode::ff().
Construct first_match(sere)
|
inlinestatic |
Create SERE for f[:*min..max]
This operator is a generalization of the (+) operator defined by Dax et al. [16]
|
inlinestatic |
Create SERE for f[:*min..max]
This operator is a generalization of the (+) operator defined by Dax et al. [16]
Construct a Fusion SERE.
Construct a Fusion SERE.
Remove operator o and return the child.
This works only for unary operators.
References get_child_of().
Referenced by get_child_of().
Remove all operators in l and return the child.
This works only for a list of unary operators. For instance if f
is a formula for XG(a U b), then f.get_child_of({op::X, op::G})
will return the subformula a U b.
References get_child_of().
|
inline |
Whether the formula has only LBT-compatible atomic propositions.
LBT only supports atomic propositions of the form p1, p12, etc.
|
inline |
Whether the formula has spin-compatible atomic propositions.
In Spin 5 (and hence ltl2ba, ltl3ba, ltl3dra), atomic propositions should start with a lowercase letter, and can then consist solely of alphanumeric characters and underscores.
|
inline |
Return the id of a formula.
Can be used as a hash number.
The id is almost unique as it is an unsigned number incremented for each formula construction, and the number may wrap around zero. If this is used for ordering, make sure to deal with equality
Construct an ->
formula.
Construct an ->
formula.
Construct an ->
formula.
Construct an ->
formula.
|
inline |
Return true if the formula is of kind o.
Return true if the formula is of kind o1 or o2.
Return true if the formula is of kind o1 or o2 or o3.
Return true if the formula is of kind o1 or o2 or o3 or a4.
|
inline |
Return true if the formulas nests all the operators in l.
|
inline |
Whether the formula use only boolean operators.
|
inline |
|
inline |
Whether a PSL/LTL formula is in the Δ₁ syntactic frament.
A formula is in Δ₁ if it is a boolean combination of syntactic safety and syntactic guarantee properties.
|
inline |
Whether a PSL/LTL formula is in the Δ₂ syntactic frament.
A formula is in Δ₂ if it is a boolean combination of Σ₂ and Π₂ properties.
|
inline |
Whether the formula is purely eventual.
Pure eventuality formulae are defined in
A word that satisfies a pure eventuality can be prefixed by anything and still satisfies the formula. [22]
|
inline |
Whether the formula is the empty word constant.
|
inline |
Whether the formula is the false constant.
|
inline |
Whether a SERE describes a finite language, or an LTL formula uses no temporal operator but X.
|
inline |
Whether the formula is in negative normal form.
A formula is in negative normal form if the not operators occur only in front of atomic propositions.
|
inline |
Test whether the formula represent a Kleene star.
That is, it should be of kind op::Star, with min=0 and max=unbounded().
|
inline |
Whether the formula is a leaf.
Leaves are formulas without children. They are either constants (true, false, empty word) or atomic propositions.
|
inline |
|
inline |
Whether the formula uses only LTL operators.
|
inline |
Whether the formula has an occurrence of EConcatMarked or NegClosureMarked.
|
inline |
Whether a PSL/LTL formula is in Π₂
|
inline |
Whether the formula uses only PSL operators.
|
inline |
Whether the formula uses only SERE operators.
|
inline |
Whether a PSL/LTL formula is in Σ₂
|
inline |
Whether the formula use only AND, OR, and NOT operators.
|
inline |
Whether the formula avoids the F and G operators.
|
inline |
Whether a PSL/LTL formula is syntactic guarantee property.
Is class is also called Σ₁.
|
inline |
Whether a PSL/LTL formula is syntactic obligation property.
This class is a proper syntactic superset of Δ₁, but has the same expressive power.
|
inline |
Whether a PSL/LTL formula is syntactic persistence property.
This class is a proper syntactic superset of Π₂, but has the same expressive power.
|
inline |
Whether a PSL/LTL formula is syntactic recurrence property.
This class is a proper syntactic superset of Σ₂ syntactically, expressive power.
|
inline |
Whether a PSL/LTL formula is syntactic safety property.
Is class is also called Π₁.
|
inline |
Whether the formula is syntactically stutter_invariant.
|
inline |
Whether the formula is the true constant.
|
inline |
Whether a formula is purely universal.
Purely universal formulae are defined in
Any (non-empty) suffix of a word that satisfies a purely universal formula also satisfies the formula. [22]
|
inline |
Return the name of the top-most operator.
Construct an M
formula.
Construct an M
formula.
Construct an M
formula.
|
inline |
Clone this node after applying trans to its children.
Any additional argument is passed to trans.
References spot::And, spot::AndNLM, spot::AndRat, spot::ap, spot::Closure, spot::Concat, spot::EConcat, spot::EConcatMarked, spot::Equiv, spot::eword, spot::F, spot::ff, spot::first_match, spot::FStar, spot::Fusion, spot::G, spot::Implies, spot::M, spot::NegClosure, spot::NegClosureMarked, spot::Not, spot::Or, spot::OrRat, spot::R, spot::Star, spot::tt, spot::U, spot::UConcat, spot::W, spot::X, and spot::Xor.
|
inline |
|
inline |
Construct an n-ary operator.
References spot::fnode::clone(), and spot::fnode::multop().
Construct an n-ary operator.
References spot::fnode::multop(), and to_node_().
Construct a negated PSL Closure.
Construct a negated PSL Closure.
Construct a marked negated PSL Closure.
Construct a marked negated PSL Closure.
|
inlinestatic |
Nested operator construction (syntactic sugar).
Build between min and max nested uo, and chose between the different numbers with bo.
For instance nested_unup_range(op::X, op::Or, 2, 4, a) returns XX(a | X(a | Xa)).
For max==unbounded()
, uo is repeated min times, and its child is set to F(a)
if bo is op::Or
or to G(a)
otherwise.
References spot::fnode::clone(), and spot::fnode::nested_unop_range().
|
inlinestatic |
Return a copy of the formula 1[+].
References spot::fnode::one_plus().
|
inlinestatic |
Return a copy of the formula 1[*].
References spot::fnode::one_star().
|
inline |
Reset a formula to null.
Note that null formula should be short lived: most algorithms and member function assume that formulas should not be null. Assigning nullptr to a formula can be useful when cleaning an array of formula using multiple passes and marking some formula as nullptr before actually erasing them.
|
inline |
Return children number i.
Construct an Or formula.
Construct an Or formula.
Construct an Or SERE.
Construct an Or SERE.
Construct an R
formula.
Construct an R
formula.
Construct an R
formula.
|
inline |
Return the number of children.
|
inlinestatic |
Create SERE for f[*min..max]
|
inlinestatic |
Create SERE for f[*min..max]
|
static |
Create the SERE a ##[n:m] b
This ##[n:m]
operator comes from SVA. When n=m, it is simply written ##n
.
The operator does not exist in Spot it is handled as syntactic sugar by the parser. This function is used by the parser to create the equivalent SERE using PSL operators.
The rewriting rules depends on the values of a, n, and b. If n≥1 a ##[n:m] b
is encoded as a;1[*n-1,m-1];b
. Otherwise:
a ##[0:0] b
is encoded as a:b
,a ##[0:m] b
is encoded asa:(1[*0:m];b)
is a
rejects [*0]
,(a;1[*0:m]):b
is b
rejects [*0]
,(a:b) | (a;1[*0:m-1];b)
is a
and b
accept [*0]
.The left operand can also be missing, in which case ##[n:m] b
is rewritten as 1[*n:m];b
.
Create the SERE a ##[n:m] b
This ##[n:m]
operator comes from SVA. When n=m, it is simply written ##n
.
The operator does not exist in Spot it is handled as syntactic sugar by the parser. This function is used by the parser to create the equivalent SERE using PSL operators.
The rewriting rules depends on the values of a, n, and b. If n≥1 a ##[n:m] b
is encoded as a;1[*n-1,m-1];b
. Otherwise:
a ##[0:0] b
is encoded as a:b
,a ##[0:m] b
is encoded asa:(1[*0:m];b)
is a
rejects [*0]
,(a;1[*0:m]):b
is b
rejects [*0]
,(a:b) | (a;1[*0:m-1];b)
is a
and b
accept [*0]
.The left operand can also be missing, in which case ##[n:m] b
is rewritten as 1[*n:m];b
.
Create the SERE b[=min..max]
The operator does not exist: it is handled as syntactic sugar by the parser and the printer. This function is used by the parser to create the equivalent SERE.
Create a SERE equivalent to b[->min..max]
The operator does not exist: it is handled as syntactic sugar by the parser and the printer. This function is used by the parser to create the equivalent SERE.
|
inline |
Return the underlying pointer to the formula.
It is not recommended to call this function, which is mostly meant for internal use.
By calling this function you take ownership of the fnode instance pointed by this formula instance, and should take care of calling its destroy() methods once you are done with it. Otherwise the fnode will be leaked.
|
inline |
Apply func to each subformula.
This does a simple DFS without checking for duplicate subformulas. If func returns true, the children of the current node are skipped.
Any additional argument is passed to func when it is invoked.
References traverse().
Referenced by traverse().
|
inlinestatic |
Return the true constant.
References spot::fnode::tt().
Construct a U
formula.
Construct a U
formula.
Construct a U
formula.
Construct a []->
PSL formula.
Construct a []->
PSL formula.
Construct a []->
PSL formula.
Construct a []->
PSL formula.
|
inlinestaticconstexpr |
Unbounded constant to use as end of range for bounded operators.
References spot::fnode::unbounded().
Build a unary operator.
References spot::fnode::clone(), and spot::fnode::unop().
Build a unary operator.
References to_node_(), and spot::fnode::unop().
Construct a W
formula.
Construct a W
formula.
Construct a W
formula.
Construct an Xor
formula.
Construct an Xor
formula.
Construct an Xor
formula.
Construct an Xor
formula.