spot
1.2.6
|
Unary operators. More...
#include <ltlast/unop.hh>
Public Types | |
enum | type { Not, X, F, G, Finish, Closure, NegClosure, NegClosureMarked } |
enum | opkind { Constant, AtomicProp, UnOp, BinOp, MultOp, BUnOp, AutomatOp } |
Kind of a sub-formula. More... | |
Public Member Functions | |
virtual void | accept (visitor &v) const |
Entry point for spot::ltl::visitor instances. More... | |
const formula * | child () const |
Get the sole operand of this operator. More... | |
type | op () const |
Get the type of this operator. More... | |
const char * | op_name () const |
Get the type of this operator, as a string. More... | |
virtual std::string | dump () const |
Return a canonic representation of the atomic proposition. More... | |
const formula * | clone () const |
clone this node More... | |
void | destroy () const |
release this node More... | |
opkind | kind () const |
Return the kind of the top-level operator. 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_X_free () const |
Whether the formula avoids the X operator. 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_eltl_formula () const |
Whether the formula uses only ELTL 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 |
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_syntactic_obligation () const |
Whether a PSL/LTL formula is syntactic obligation property. 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_marked () const |
Whether the formula has an occurrence of EConcatMarked. More... | |
bool | accepts_eword () const |
Whether the formula accepts [*0]. More... | |
bool | has_lbt_atomic_props () const |
unsigned | get_props () const |
The properties as a field of bits. For internal use. More... | |
size_t | hash () const |
Return a hash key for the formula. More... | |
Static Public Member Functions | |
static const formula * | instance (type op, const formula *child) |
Build an unary operator with operation op and child child. More... | |
static unsigned | instance_count () |
Number of instantiated unary operators. For debugging. More... | |
static std::ostream & | dump_instances (std::ostream &os) |
Dump all instances. For debugging. More... | |
Protected Types | |
typedef std::pair< type, const formula * > | pair |
typedef std::map< pair, const unop * > | map |
Protected Member Functions | |
unop (type op, const formula *child) | |
void | ref_ () const |
increment reference counter if any More... | |
bool | unref_ () const |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0). More... | |
unsigned | ref_count_ () const |
Number of references to this formula. More... | |
Protected Attributes | |
size_t | count_ |
The hash key of this formula. More... | |
union { | |
unsigned props | |
ltl_prop is | |
}; | |
Static Protected Attributes | |
static map | instances |
Unary operators.
|
inherited |
Kind of a sub-formula.
|
virtual |
Entry point for spot::ltl::visitor instances.
Implements spot::ltl::formula.
|
inlineinherited |
Whether the formula accepts [*0].
|
inline |
Get the sole operand of this operator.
|
inherited |
clone this node
This increments the reference counter of this node (if one is used).
|
inherited |
release this node
This decrements the reference counter of this node (if one is used) and can free the object.
|
virtual |
Return a canonic representation of the atomic proposition.
Implements spot::ltl::formula.
|
static |
Dump all instances. For debugging.
|
inlineinherited |
The properties as a field of bits. For internal use.
|
inlineinherited |
Return a hash key for the formula.
Build an unary operator with operation op and child child.
The following trivial simplifications are performed automatically (the left expression is rewritten as the right expression):
This rewriting implies that it is not possible to build an LTL formula object that is SYNTACTICALLY equal to one of these left expressions.
Note that the "![*0]" form cannot be read using the PSL grammar. Spot cannot read it either. However some BDD-based algorithm may need to negate any constant, so we handle this one as well.
|
static |
Number of instantiated unary operators. For debugging.
|
inlineinherited |
Whether the formula use only boolean operators.
|
inlineinherited |
Whether the formula uses only ELTL operators.
|
inlineinherited |
Whether the formula is purely eventual.
Pure eventuality formulae are defined in
@InProceedings{ etessami.00.concur, author = {Kousha Etessami and Gerard J. Holzmann}, title = {Optimizing {B\"u}chi Automata}, booktitle = {Proceedings of the 11th International Conference on Concurrency Theory (Concur'2000)}, pages = {153--167}, year = {2000}, editor = {C. Palamidessi}, volume = {1877}, series = {Lecture Notes in Computer Science}, publisher = {Springer-Verlag} }
A word that satisfies a pure eventuality can be prefixed by anything and still satisfies the formula.
|
inlineinherited |
Whether a SERE describes a finite language, or an LTL formula uses no temporal operator but X.
|
inlineinherited |
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.
|
inlineinherited |
Whether the formula uses only LTL operators.
|
inlineinherited |
Whether the formula has an occurrence of EConcatMarked.
|
inlineinherited |
Whether the formula uses only PSL operators.
|
inlineinherited |
Whether the formula uses only SERE operators.
|
inlineinherited |
Whether the formula use only AND, OR, and NOT operators.
|
inlineinherited |
Whether the formula avoids the F and G operators.
|
inlineinherited |
Whether a PSL/LTL formula is syntactic guarantee property.
|
inlineinherited |
Whether a PSL/LTL formula is syntactic obligation property.
|
inlineinherited |
Whether a PSL/LTL formula is syntactic persistence property.
|
inlineinherited |
Whether a PSL/LTL formula is syntactic recurrence property.
|
inlineinherited |
Whether a PSL/LTL formula is syntactic safety property.
|
inlineinherited |
Whether a formula is purely universal.
Purely universal formulae are defined in
@InProceedings{ etessami.00.concur, author = {Kousha Etessami and Gerard J. Holzmann}, title = {Optimizing {B\"u}chi Automata}, booktitle = {Proceedings of the 11th International Conference on Concurrency Theory (Concur'2000)}, pages = {153--167}, year = {2000}, editor = {C. Palamidessi}, volume = {1877}, series = {Lecture Notes in Computer Science}, publisher = {Springer-Verlag} }
Any (non-empty) suffix of a word that satisfies a purely universal formula also satisfies the formula.
|
inlineinherited |
Whether the formula avoids the X operator.
|
inlineinherited |
Return the kind of the top-level operator.
|
inline |
Get the type of this operator.
const char* spot::ltl::unop::op_name | ( | ) | const |
Get the type of this operator, as a string.
|
protectedvirtualinherited |
increment reference counter if any
Reimplemented from spot::ltl::formula.
|
protectedinherited |
Number of references to this formula.
|
protectedvirtualinherited |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0).
Reimplemented from spot::ltl::formula.
|
protectedinherited |
The hash key of this formula.