25 #include "misc/common.hh"
83 formula(opkind k) : serial_(max_serial++), kind_(k)
95 virtual void accept(visitor& v)
const = 0;
112 if (kind() != Constant)
122 virtual std::string
dump()
const = 0;
143 return is.sugar_free_boolean;
152 return is.in_nenoform;
158 return is.syntactic_si;
164 return is.sugar_free_ltl;
170 return is.ltl_formula;
176 return is.psl_formula;
182 return is.sere_formula;
209 bool is_eventual()
const
234 bool is_universal()
const
245 return is.syntactic_safety;
251 return is.syntactic_guarantee;
257 return is.syntactic_obligation;
263 return is.syntactic_recurrence;
269 return is.syntactic_persistence;
275 return !is.not_marked;
281 return is.accepting_eword;
284 bool has_lbt_atomic_props()
const
286 return is.lbt_atomic_props;
289 bool has_spin_atomic_props()
const
291 return is.spin_atomic_props;
315 mutable unsigned refs_ = 0;
336 bool sugar_free_boolean:1;
339 bool sugar_free_ltl:1;
346 bool syntactic_safety:1;
347 bool syntactic_guarantee:1;
348 bool syntactic_obligation:1;
349 bool syntactic_recurrence:1;
350 bool syntactic_persistence:1;
352 bool accepting_eword:1;
353 bool lbt_atomic_props:1;
354 bool spin_atomic_props:1;
370 const formula* get_literal(
const formula* f);
375 is_literal(
const formula* f)
377 return (f->kind() == formula::AtomicProp
383 || (f->is_boolean() && f->is_in_nenoform()
384 && f->kind() == formula::UnOp));
390 int atomic_prop_cmp(
const formula* f,
const formula* g);
407 public std::binary_function<const formula*, const formula*, bool>
417 size_t l = left->
hash();
418 size_t r = right->
hash();
431 return left->
dump() < right->
dump();
445 public std::binary_function<const formula*, const formula*, bool>
463 bool lconst = left->
kind() == formula::Constant;
464 bool rconst = right->
kind() == formula::Constant;
465 if (lconst != rconst)
470 const formula* litl = get_literal(left);
471 const formula* litr = get_literal(right);
477 int cmp = atomic_prop_cmp(litl, litr);
484 size_t l = left->
hash();
485 size_t r = right->
hash();
498 return left->
dump() < right->
dump();
504 std::ostream& print_formula_props(std::ostream& out,
506 bool abbreviated =
false);
510 std::list<std::string> list_formula_props(
const formula* f);
518 struct hash<const
spot::ltl::formula*>
Definition: formula.hh:515
Predeclare all LTL node types.
opkind
Kind of a sub-formula.
Definition: formula.hh:75
SPOT_API std::ostream & dump(std::ostream &os, const formula *f)
Dump a formula tree.