spot  1.99.3
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
spot::ltl::formula Class Referenceabstract

An LTL formula. More...

#include <ltlast/formula.hh>

Inheritance diagram for spot::ltl::formula:
Inheritance graph
Collaboration diagram for spot::ltl::formula:
Collaboration graph

Classes

struct  ltl_prop
 

Public Types

enum  opkind {
  Constant, AtomicProp, UnOp, BinOp,
  MultOp, BUnOp
}
 Kind of a sub-formula. More...
 

Public Member Functions

virtual void accept (visitor &v) const =0
 Entry point for spot::ltl::visitor instances. More...
 
const formulaclone () const
 clone this node More...
 
void destroy () const
 Release this node. More...
 
virtual std::string dump () const =0
 Return a canonic representation of the formula. 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_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
 
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
 
bool has_spin_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...
 

Protected Member Functions

 formula (opkind k)
 

Protected Attributes

size_t serial_
 The hash key of this formula. More...
 
unsigned refs_ = 0
 
opkind kind_
 
union {
   unsigned   props
 
   ltl_prop   is
 
}; 
 

Static Protected Attributes

static size_t max_serial
 Number of formulae created so far. More...
 

Detailed Description

An LTL formula.

The only way you can work with a formula is to build a spot::ltl::visitor or spot::ltl::const_visitor.

Member Function Documentation

virtual void spot::ltl::formula::accept ( visitor v) const
pure virtual
bool spot::ltl::formula::accepts_eword ( ) const
inline

Whether the formula accepts [*0].

const formula* spot::ltl::formula::clone ( ) const
inline

clone this node

This increments the reference counter of the node.

void spot::ltl::formula::destroy ( ) const
inline

Release this node.

virtual std::string spot::ltl::formula::dump ( ) const
pure virtual

Return a canonic representation of the formula.

Implemented in spot::ltl::multop, spot::ltl::binop, spot::ltl::bunop, spot::ltl::unop, spot::ltl::atomic_prop, and spot::ltl::constant.

unsigned spot::ltl::formula::get_props ( ) const
inline

The properties as a field of bits. For internal use.

size_t spot::ltl::formula::hash ( ) const
inline

Return a hash key for the formula.

bool spot::ltl::formula::is_boolean ( ) const
inline

Whether the formula use only boolean operators.

bool spot::ltl::formula::is_eventual ( ) const
inline

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.

bool spot::ltl::formula::is_finite ( ) const
inline

Whether a SERE describes a finite language, or an LTL formula uses no temporal operator but X.

bool spot::ltl::formula::is_in_nenoform ( ) const
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.

bool spot::ltl::formula::is_ltl_formula ( ) const
inline

Whether the formula uses only LTL operators.

bool spot::ltl::formula::is_marked ( ) const
inline

Whether the formula has an occurrence of EConcatMarked.

bool spot::ltl::formula::is_psl_formula ( ) const
inline

Whether the formula uses only PSL operators.

bool spot::ltl::formula::is_sere_formula ( ) const
inline

Whether the formula uses only SERE operators.

bool spot::ltl::formula::is_sugar_free_boolean ( ) const
inline

Whether the formula use only AND, OR, and NOT operators.

bool spot::ltl::formula::is_sugar_free_ltl ( ) const
inline

Whether the formula avoids the F and G operators.

bool spot::ltl::formula::is_syntactic_guarantee ( ) const
inline

Whether a PSL/LTL formula is syntactic guarantee property.

bool spot::ltl::formula::is_syntactic_obligation ( ) const
inline

Whether a PSL/LTL formula is syntactic obligation property.

bool spot::ltl::formula::is_syntactic_persistence ( ) const
inline

Whether a PSL/LTL formula is syntactic persistence property.

bool spot::ltl::formula::is_syntactic_recurrence ( ) const
inline

Whether a PSL/LTL formula is syntactic recurrence property.

bool spot::ltl::formula::is_syntactic_safety ( ) const
inline

Whether a PSL/LTL formula is syntactic safety property.

bool spot::ltl::formula::is_syntactic_stutter_invariant ( ) const
inline

Whether the formula is syntactically stutter_invariant.

bool spot::ltl::formula::is_universal ( ) const
inline

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.

opkind spot::ltl::formula::kind ( ) const
inline

Return the kind of the top-level operator.

Member Data Documentation

size_t spot::ltl::formula::max_serial
staticprotected

Number of formulae created so far.

size_t spot::ltl::formula::serial_
protected

The hash key of this formula.


The documentation for this class was generated from the following file:

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Wed Aug 26 2015 08:42:38 for spot by doxygen 1.8.8