spot 2.16
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
spot::random_formula Class Reference

Base class for random formula generators. More...

#include <spot/tl/randomltl.hh>

Inheritance diagram for spot::random_formula:
Collaboration diagram for spot::random_formula:

Classes

struct  op_proba
 Entry describing one operator and its probability for random formula generation. More...
 

Public Member Functions

 random_formula (unsigned proba_size, const atomic_prop_set *ap, const atomic_prop_set *output_ap=nullptr, std::function< bool(formula)> is_output=nullptr)
 Construct with proba_size operator slots and atomic propositions ap.
 
const atomic_prop_setap () const
 Return the set of atomic proposition used to build formulas.
 
const atomic_prop_setoutput_ap () const
 Return the set of atomic proposition used to build formulas.
 
std::function< bool(formula)> is_output_fun () const
 Return the predicate that classifies propositions as output.
 
const atomic_prop_setpatterns () const
 Return the set of patterns (sub-formulas) used to build formulas.
 
bool draw_literals () const
 Check whether relabeling APs should use literals.
 
void draw_literals (bool lit)
 Set whether relabeling APs should use literals.
 
formula generate (int n) const
 Generate a formula of size n.
 
std::ostream & dump_priorities (std::ostream &os) const
 Print the priorities of each operator, constants, and atomic propositions.
 
const char * parse_options (const char *options)
 Update the priorities used to generate the formulas.
 
bool has_unary_ops () const
 whether we can use unary operators
 

Protected Member Functions

void update_sums ()
 Recompute running probability sums after priorities have changed.
 

Protected Attributes

unsigned proba_size_
 Number of entries in the operator table.
 
op_probaproba_
 Operator probability table.
 
double total_1_
 Total weight of unary operators.
 
op_probaproba_2_
 Pointer to binary operators in the table.
 
double total_2_
 Total weight of binary operators.
 
op_probaproba_2_or_more_
 
double total_2_and_more_
 Total weight of operators needing two or more children.
 
const atomic_prop_setap_
 
const atomic_prop_setoutput_ap_ = nullptr
 Output atomic propositions (may be null if not used).
 
const atomic_prop_setpatterns_ = nullptr
 Sub-formula patterns used as atoms (may be null).
 
std::function< bool(formula)> is_output_ = nullptr
 Predicate classifying a proposition as an output (may be null).
 
bool draw_literals_
 Whether relabeling APs should use literals.
 

Detailed Description

Base class for random formula generators.

Constructor & Destructor Documentation

◆ random_formula()

spot::random_formula::random_formula ( unsigned  proba_size,
const atomic_prop_set ap,
const atomic_prop_set output_ap = nullptr,
std::function< bool(formula)>  is_output = nullptr 
)
inline

Construct with proba_size operator slots and atomic propositions ap.

References spot::ap.

Member Function Documentation

◆ ap()

const atomic_prop_set * spot::random_formula::ap ( ) const
inline

Return the set of atomic proposition used to build formulas.

◆ draw_literals() [1/2]

bool spot::random_formula::draw_literals ( ) const
inline

Check whether relabeling APs should use literals.

◆ draw_literals() [2/2]

void spot::random_formula::draw_literals ( bool  lit)
inline

Set whether relabeling APs should use literals.

◆ dump_priorities()

std::ostream & spot::random_formula::dump_priorities ( std::ostream &  os) const

Print the priorities of each operator, constants, and atomic propositions.

◆ generate()

formula spot::random_formula::generate ( int  n) const

Generate a formula of size n.

It is possible to obtain formulas that are smaller than n, because some simple simplifications are performed by the AST. (For instance the formula a | a is automatically reduced to a by spot::multop.)

◆ has_unary_ops()

bool spot::random_formula::has_unary_ops ( ) const
inline

whether we can use unary operators

◆ is_output_fun()

std::function< bool(formula)> spot::random_formula::is_output_fun ( ) const
inline

Return the predicate that classifies propositions as output.

◆ output_ap()

const atomic_prop_set * spot::random_formula::output_ap ( ) const
inline

Return the set of atomic proposition used to build formulas.

◆ parse_options()

const char * spot::random_formula::parse_options ( const char *  options)

Update the priorities used to generate the formulas.

options should be comma-separated list of KEY=VALUE assignments, using keys from the above list. For instance "xor=0, F=3" will prevent xor from being used, and will raise the relative probability of occurrences of the F operator.

The input string is not modified.

◆ patterns()

const atomic_prop_set * spot::random_formula::patterns ( ) const
inline

Return the set of patterns (sub-formulas) used to build formulas.

◆ update_sums()

void spot::random_formula::update_sums ( )
protected

Recompute running probability sums after priorities have changed.

Member Data Documentation

◆ ap_

const atomic_prop_set* spot::random_formula::ap_
protected

Atomic propositions used to build formulas.

◆ draw_literals_

bool spot::random_formula::draw_literals_
protected

Whether relabeling APs should use literals.

◆ is_output_

std::function<bool(formula)> spot::random_formula::is_output_ = nullptr
protected

Predicate classifying a proposition as an output (may be null).

◆ output_ap_

const atomic_prop_set* spot::random_formula::output_ap_ = nullptr
protected

Output atomic propositions (may be null if not used).

◆ patterns_

const atomic_prop_set* spot::random_formula::patterns_ = nullptr
protected

Sub-formula patterns used as atoms (may be null).

◆ proba_

op_proba* spot::random_formula::proba_
protected

Operator probability table.

◆ proba_2_

op_proba* spot::random_formula::proba_2_
protected

Pointer to binary operators in the table.

◆ proba_2_or_more_

op_proba* spot::random_formula::proba_2_or_more_
protected

Pointer to operators needing ≥2 children.

◆ proba_size_

unsigned spot::random_formula::proba_size_
protected

Number of entries in the operator table.

◆ total_1_

double spot::random_formula::total_1_
protected

Total weight of unary operators.

◆ total_2_

double spot::random_formula::total_2_
protected

Total weight of binary operators.

◆ total_2_and_more_

double spot::random_formula::total_2_and_more_
protected

Total weight of operators needing two or more children.


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 Fri Feb 27 2015 10:00:07 for spot by doxygen 1.9.8