23 #ifndef SPOT_LTLAST_FORMULA_HH
24 # define SPOT_LTLAST_FORMULA_HH
26 #include "misc/common.hh"
85 formula(opkind k) : count_(max_count++), kind_(k)
97 virtual void accept(
visitor& v)
const = 0;
111 virtual std::string
dump()
const = 0;
132 return is.sugar_free_boolean;
141 return is.in_nenoform;
153 return is.sugar_free_ltl;
159 return is.ltl_formula;
165 return is.eltl_formula;
171 return is.psl_formula;
177 return is.sere_formula;
240 return is.syntactic_safety;
246 return is.syntactic_guarantee;
252 return is.syntactic_obligation;
258 return is.syntactic_recurrence;
264 return is.syntactic_persistence;
270 return !is.not_marked;
276 return is.accepting_eword;
279 bool has_lbt_atomic_props()
const
281 return is.lbt_atomic_props;
300 virtual void ref_()
const;
303 virtual bool unref_()
const;
324 bool sugar_free_boolean:1;
327 bool sugar_free_ltl:1;
335 bool syntactic_safety:1;
336 bool syntactic_guarantee:1;
337 bool syntactic_obligation:1;
338 bool syntactic_recurrence:1;
339 bool syntactic_persistence:1;
341 bool accepting_eword:1;
342 bool lbt_atomic_props:1;
353 static size_t max_count;
370 return (f->
kind() == formula::AtomicProp
377 && f->
kind() == formula::UnOp));
383 int atomic_prop_cmp(
const formula* f,
const formula* g);
400 public std::binary_function<const formula*, const formula*, bool>
410 size_t l = left->
hash();
411 size_t r = right->
hash();
424 return left->
dump() < right->
dump();
438 public std::binary_function<const formula*, const formula*, bool>
456 bool lconst = left->
kind() == formula::Constant;
457 bool rconst = right->
kind() == formula::Constant;
458 if (lconst != rconst)
463 const formula* litl = get_literal(left);
464 const formula* litr = get_literal(right);
470 int cmp = atomic_prop_cmp(litl, litr);
477 size_t l = left->
hash();
478 size_t r = right->
hash();
491 return left->
dump() < right->
dump();
510 public std::unary_function<const formula*, size_t>
513 operator()(
const formula* that)
const
522 std::ostream& print_formula_props(std::ostream& out,
524 bool abbreviated =
false);
528 std::list<std::string> list_formula_props(
const formula* f);
532 #endif // SPOT_LTLAST_FORMULA_HH