spot  1.2.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
spot::ltl::ltl_simplifier Class Reference

Rewrite or simplify f in various ways. More...

#include <ltlvisit/simplify.hh>

Collaboration diagram for spot::ltl::ltl_simplifier:
Collaboration graph

Public Member Functions

 ltl_simplifier (bdd_dict *dict=0)
 
 ltl_simplifier (const ltl_simplifier_options &opt, bdd_dict *dict=0)
 
const formulasimplify (const formula *f)
 
const formulanegative_normal_form (const formula *f, bool negated=false)
 
bool syntactic_implication (const formula *f, const formula *g)
 Syntactic implication. More...
 
bool syntactic_implication_neg (const formula *f, const formula *g, bool right)
 Syntactic implication with one negated argument. More...
 
bool are_equivalent (const formula *f, const formula *g)
 check whether two formulae are equivalent. More...
 
bool implication (const formula *f, const formula *g)
 Check whether f implies g. More...
 
bdd as_bdd (const formula *f)
 Convert a Boolean formula as a BDD. More...
 
void clear_as_bdd_cache ()
 Clear the as_bdd() cache. More...
 
bdd_dictget_dict () const
 Return the bdd_dict used. More...
 
const formulastar_normal_form (const formula *f)
 Cached version of spot::ltl::star_normal_form(). More...
 
const formulaboolean_to_isop (const formula *f)
 Rewrite a Boolean formula f into as an irredundant sum of product. More...
 
void print_stats (std::ostream &os) const
 Dump statistics about the caches. More...
 

Detailed Description

Rewrite or simplify f in various ways.

Member Function Documentation

bool spot::ltl::ltl_simplifier::are_equivalent ( const formula f,
const formula g 
)

check whether two formulae are equivalent.

This costly check performs up to four translations, two products, and two emptiness checks.

bdd spot::ltl::ltl_simplifier::as_bdd ( const formula f)

Convert a Boolean formula as a BDD.

If you plan to use this method, be sure to pass a bdd_dict to the constructor.

const formula* spot::ltl::ltl_simplifier::boolean_to_isop ( const formula f)

Rewrite a Boolean formula f into as an irredundant sum of product.

This uses a cache, so it is OK to call this with identical arguments.

void spot::ltl::ltl_simplifier::clear_as_bdd_cache ( )

Clear the as_bdd() cache.

Calling this function is recommended before running other algorithms that create BDD variables in a more natural order. For instance ltl_to_tgba_fm() will usually be more efficient if the BDD variables for atomic propositions have not been ordered before hand.

This also clears the language containment cache.

bdd_dict* spot::ltl::ltl_simplifier::get_dict ( ) const

Return the bdd_dict used.

bool spot::ltl::ltl_simplifier::implication ( const formula f,
const formula g 
)

Check whether f implies g.

This operation is costlier than syntactic_implication() because it requires two translation, one product and one emptiness check.

const formula* spot::ltl::ltl_simplifier::negative_normal_form ( const formula f,
bool  negated = false 
)

Build the negative normal form of formula f. All negations of the formula are pushed in front of the atomic propositions. Operators <=>, =>, xor are all removed (calling spot::ltl::unabbreviate_ltl is not needed).

Parameters
fThe formula to normalize.
negatedIf true, return the negative normal form of !f
void spot::ltl::ltl_simplifier::print_stats ( std::ostream &  os) const

Dump statistics about the caches.

const formula* spot::ltl::ltl_simplifier::simplify ( const formula f)

Simplify the formula f (using options supplied to the constructor).

const formula* spot::ltl::ltl_simplifier::star_normal_form ( const formula f)

Cached version of spot::ltl::star_normal_form().

bool spot::ltl::ltl_simplifier::syntactic_implication ( const formula f,
const formula g 
)

Syntactic implication.

Returns whether f syntactically implies g.

This is adapted from

@InProceedings{          somenzi.00.cav,
author         = {Fabio Somenzi and Roderick Bloem},
title          = {Efficient {B\"u}chi Automata for {LTL} Formulae},
booktitle      = {Proceedings of the 12th International Conference on
                 Computer Aided Verification (CAV'00)},
pages          = {247--263},
year           = {2000},
volume         = {1855},
series         = {Lecture Notes in Computer Science},
publisher      = {Springer-Verlag}
}
bool spot::ltl::ltl_simplifier::syntactic_implication_neg ( const formula f,
const formula g,
bool  right 
)

Syntactic implication with one negated argument.

If right is true, this method returns whether f implies !g. If right is false, this returns whether !f implies g.


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 Thu May 15 2014 11:04:12 for spot by doxygen 1.8.4