spot/src/bin
Alexandre Duret-Lutz b77f7e24c3 revamp the formula hierarchy (montro-patch)
Flatten the formula ltl::formula hiearchy into a single ltl::vnode that
has an enumerator to distinguish the types of node, and a common
interface to access children, update reference counts, etc.  The
ltl::formula class is now a thin wrapper around an ltl::vnode pointer to
keep track of reference counts automatically.  Visitor are not used
anymore; we now have map() and traversor() methods that are more
concise.

This basically fixes #43, but should be followed by some fine tuning
that should now be localized to the formula.hh and formula.cc files.

Some statistics about this patch.  I started working on it on Sep 9, had
a first compiling version two weeks later on Sep 22, and it then took 5
days to fixes the ~70 distincts bugs that were introduced during the
conversion.  About 13200 lines were modified, and one third of those
were removed.

* src/ltlast/formula.cc, src/ltlast/formula.hh: Complete rewrite,
including what was in separate nearby files.
* src/ltlast/allnodes.hh, src/ltlast/atomic_prop.cc,
src/ltlast/atomic_prop.hh, src/ltlast/binop.cc, src/ltlast/binop.hh,
src/ltlast/bunop.cc, src/ltlast/bunop.hh, src/ltlast/constant.cc,
src/ltlast/constant.hh, src/ltlast/multop.cc, src/ltlast/multop.hh,
src/ltlast/unop.cc, src/ltlast/unop.hh, src/ltlvisit/dump.cc,
src/ltlvisit/dump.hh, src/ltlast/predecl.hh: Delete these files.  Their
feature have been merged in formula.hh and formula.cc.
* src/ltlast/visitor.hh, src/ltlvisit/clone.cc, src/ltlvisit/clone.hh,
src/ltlvisit/dump.hh, src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh:
Delete these files, as we do not use visitors anymore.
* bench/stutter/stutter_invariance_formulas.cc,
bench/stutter/stutter_invariance_randomgraph.cc, doc/org/tut01.org,
doc/org/tut02.org, doc/org/tut10.org, doc/org/tut22.org,
iface/ltsmin/ltsmin.cc, iface/ltsmin/ltsmin.hh,
iface/ltsmin/modelcheck.cc, src/bin/autfilt.cc,
src/bin/common_aoutput.cc, src/bin/common_aoutput.hh,
src/bin/common_finput.cc, src/bin/common_finput.hh,
src/bin/common_output.cc, src/bin/common_output.hh,
src/bin/common_trans.cc, src/bin/common_trans.hh, src/bin/dstar2tgba.cc,
src/bin/genltl.cc, src/bin/ltl2tgba.cc, src/bin/ltl2tgta.cc,
src/bin/ltlcross.cc, src/bin/ltldo.cc, src/bin/ltlfilt.cc,
src/bin/ltlgrind.cc, src/bin/randaut.cc, src/bin/randltl.cc,
src/kripke/kripkeexplicit.cc, src/kripke/kripkeexplicit.hh,
src/kripkeparse/kripkeparse.yy, src/ltlast/Makefile.am,
src/ltlenv/declenv.cc, src/ltlenv/declenv.hh, src/ltlenv/defaultenv.cc,
src/ltlenv/defaultenv.hh, src/ltlenv/environment.hh,
src/ltlparse/ltlparse.yy, src/ltlparse/public.hh,
src/ltlvisit/Makefile.am, src/ltlvisit/apcollect.cc,
src/ltlvisit/apcollect.hh, src/ltlvisit/contain.cc,
src/ltlvisit/contain.hh, src/ltlvisit/dot.cc, src/ltlvisit/dot.hh,
src/ltlvisit/exclusive.cc, src/ltlvisit/exclusive.hh,
src/ltlvisit/length.cc, src/ltlvisit/length.hh, src/ltlvisit/mark.cc,
src/ltlvisit/mark.hh, src/ltlvisit/mutation.cc,
src/ltlvisit/mutation.hh, src/ltlvisit/nenoform.cc,
src/ltlvisit/nenoform.hh, src/ltlvisit/print.cc, src/ltlvisit/print.hh,
src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh,
src/ltlvisit/relabel.cc, src/ltlvisit/relabel.hh,
src/ltlvisit/remove_x.cc, src/ltlvisit/remove_x.hh,
src/ltlvisit/simpfg.cc, src/ltlvisit/simpfg.hh,
src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh, src/ltlvisit/snf.cc,
src/ltlvisit/snf.hh, src/ltlvisit/unabbrev.cc, src/ltlvisit/unabbrev.hh,
src/parseaut/parseaut.yy, src/ta/taexplicit.cc, src/ta/tgtaexplicit.cc,
src/taalgos/minimize.cc, src/taalgos/tgba2ta.cc, src/tests/bare.test,
src/tests/checkpsl.cc, src/tests/checkta.cc,
src/tests/complementation.cc, src/tests/consterm.cc,
src/tests/emptchk.cc, src/tests/equalsf.cc, src/tests/ikwiad.cc,
src/tests/isop.test, src/tests/kind.cc, src/tests/length.cc,
src/tests/ltldo.test, src/tests/ltlfilt.test, src/tests/ltlgrind.test,
src/tests/ltlprod.cc, src/tests/ltlrel.cc,
src/tests/parse_print_test.cc, src/tests/parseaut.test,
src/tests/parseerr.test, src/tests/randtgba.cc, src/tests/readltl.cc,
src/tests/reduc.cc, src/tests/syntimpl.cc, src/tests/taatgba.cc,
src/tests/tostring.cc, src/tests/twagraph.cc, src/tests/utf8.test,
src/twa/acc.cc, src/twa/bdddict.cc, src/twa/bdddict.hh,
src/twa/bddprint.cc, src/twa/formula2bdd.cc, src/twa/formula2bdd.hh,
src/twa/taatgba.cc, src/twa/taatgba.hh, src/twa/twa.cc, src/twa/twa.hh
src/twa/twagraph.cc, src/twa/twagraph.hh, src/twa/twasafracomplement.cc,
src/twaalgos/compsusp.cc, src/twaalgos/compsusp.hh,
src/twaalgos/dtgbasat.cc, src/twaalgos/hoa.cc, src/twaalgos/lbtt.cc,
src/twaalgos/ltl2taa.cc, src/twaalgos/ltl2taa.hh,
src/twaalgos/ltl2tgba_fm.cc, src/twaalgos/ltl2tgba_fm.hh,
src/twaalgos/minimize.cc, src/twaalgos/minimize.hh,
src/twaalgos/neverclaim.cc, src/twaalgos/postproc.cc,
src/twaalgos/postproc.hh, src/twaalgos/powerset.cc,
src/twaalgos/powerset.hh, src/twaalgos/randomgraph.cc,
src/twaalgos/remprop.cc, src/twaalgos/remprop.hh, src/twaalgos/stats.cc,
src/twaalgos/stats.hh, src/twaalgos/stutter.cc, src/twaalgos/stutter.hh,
src/twaalgos/translate.cc, src/twaalgos/translate.hh,
wrap/python/ajax/spotcgi.in, wrap/python/spot.py,
wrap/python/spot_impl.i, wrap/python/Makefile.am,
wrap/python/tests/automata-io.ipynb, wrap/python/tests/formulas.ipynb,
wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltlparse.py,
wrap/python/tests/ltlsimple.py, wrap/python/tests/randltl.ipynb: Adjust
to use the new interface.
* src/sanity/style.test: Accept more C++11 patterns.
* NEWS: Mention the change.
2015-09-26 15:12:24 +02:00
..
man adjust documentation for the merge of the dstar parser 2015-09-09 00:49:13 +02:00
.gitignore ltldo: new binary 2015-01-27 08:18:15 +01:00
autfilt.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_aoutput.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_aoutput.hh revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_conv.cc hoaparse: rename to parseaut 2015-06-11 13:31:13 +02:00
common_conv.hh rename tgba files as twa 2015-04-22 16:57:22 +02:00
common_cout.cc Upgrade GPL v2+ to GPL v3+. 2012-10-12 22:05:18 +02:00
common_cout.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_file.cc ltlcross: allow appending to files via >>FILENAME 2015-02-14 17:39:51 +01:00
common_file.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_finput.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_finput.hh revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_output.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_output.hh revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_post.cc postproc: add a SBAcc option 2015-05-14 21:05:12 +02:00
common_post.hh postproc: add a SBAcc option 2015-05-14 21:05:12 +02:00
common_r.cc Adding python functions to mirror the functionalities found in src/bin 2015-03-08 00:07:25 +01:00
common_r.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_range.cc autfilt: --states=RANGE 2014-12-15 11:59:06 +01:00
common_range.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_setup.cc bin: clear temporary files on termination signals 2015-06-01 17:50:02 +02:00
common_setup.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_sys.hh Replace guards by pragma once. 2015-03-23 10:19:55 +01:00
common_trans.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
common_trans.hh revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
dstar2tgba.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
genltl.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltl2tgba.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltl2tgta.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltlcross.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltldo.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltlfilt.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
ltlgrind.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
Makefile.am ltlcross: allow appending to files via >>FILENAME 2015-02-14 17:39:51 +01:00
options.py bin: tooling and documentation about option names 2015-01-03 17:08:14 +01:00
randaut.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
randltl.cc revamp the formula hierarchy (montro-patch) 2015-09-26 15:12:24 +02:00
README bin: tooling and documentation about option names 2015-01-03 17:08:14 +01:00
spot-x.cc bin: fix documentation of degeneralization option 2015-06-16 11:06:32 +02:00

This directory contains the source of some command-line tools that
expose some of Spot's algorithms to Unix users.

Man pages are generated from the --help output of each tool,
supplemented by any text in the man/*.x files.  Usually the extra text
contains either some bibliographical references, some formal
definitions or some examples that are too long for --help.  Having a
few short examples at the end of --help is good.

This directory also build some non-installed binaries, like spot-x,
whose purpose is just to generate a man-page with the same format as
the other man pages (this includes keeping the version number
up-to-date).

There is also a script called 'options.py' that summerizes how the
different short options are used among the tools.

Routines that are shared by multiple command-line tools are stored in
files called common_*.{cc,hh}.


Recommendations when adding new tools or features:
--------------------------------------------------

 - Tools should be designed to work on multiple inputs (e.g., read
   different outputs from multiple files, and accept many inputs from
   the same file, including stdin).  They should also all be designed
   to produce several outputs, usually one per input.  This way they
   can be piped one onto the other easily.

 - When naming an option, seek inspiration from the POSIX standard, or
   from GNU extensions.  For instance ltlfilt and autfilt both have a
   -v option to invert the filter; this is inspired from grep's -v
   option.  The long version of this option (--invert-match) is also
   the same as in grep.

 - When adding a new option, implement only the --long-option by
   default.  Do not add a short version unless
     (1) you are sure it will be frequently used interactively
         (if it is only used in scripts, then a long option is enough)
     (2) this option can be shared by multiple tools.

 - As much as possible, use the same option names across tools.  Use
   the script options.py in this directory to check what short options
   are used.  It's OK if the same short option correspond to different
   long names in the various tools, as long as the intent is similar.
   For instance -n has different long options depending on the tool:
     autfilt -n N     means   --max-count=N
     randltl -n N     means   --formulas=N
     randaut -n N     means   --automata=N
  but in all cases, the intent is to specify the number of items
  to output.