Commit graph

3357 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
0218074b0b org: document HOA handling for missing initial states
* doc/org/hoa.org: Here.
2015-06-02 09:34:44 +02:00
Alexandre Duret-Lutz
715805fad3 randaut: add a --colored option
Fixes #83.

* src/bin/randaut.cc: Add option.
* src/twaalgos/randomgraph.cc, src/twaalgos/randomgraph.hh: Honor it.
* src/tests/randaut.test: Add tests.
* doc/org/randaut.org: Document it.
2015-06-01 21:56:39 +02:00
Alexandre Duret-Lutz
97665a584e hoa: detect colored automata
Fixes #84.

* src/twaalgos/hoa.cc: Detect and output the colored property.
* src/tests/hoaparse.test, src/tests/satmin2.test: Update.
2015-06-01 20:36:03 +02:00
Alexandre Duret-Lutz
a75a9c091c random: fix rounding in barand()
This fixes #85.

* src/misc/random.hh (barand): Use round() before casting.
* doc/org/oaut.org: Recompute example.
* src/tests/randaut.test, wrap/python/tests/randaut.ipynb: Adjust.
2015-06-01 19:54:51 +02:00
Alexandre Duret-Lutz
eabed370bf bin: clear temporary files on termination signals
This is particularly important for src/tests/satmin.test, where ltl2tgba
might be killed while writing a huge temporary file used for SAT-based
minimization.  Before this patch, the temporary files would remain in
src/tests/satmin.dir/, easily overflowing the 100GB limit of the docker
containers we use on the build farm.

* src/bin/common_setup.cc: Catch termination signals for all tools,
even those that do not yet clear temporary files.
* configure.ac: Check for sigaction.
2015-06-01 17:50:02 +02:00
Alexandre Duret-Lutz
83364c636f * src/bin/common_trans.cc: Fix wording in error message. 2015-06-01 17:50:02 +02:00
Alexandre Duret-Lutz
1d9ceb8146 * src/bin/common_trans.cc: Use nullptr instead of 0. 2015-06-01 17:50:02 +02:00
Alexandre Duret-Lutz
0ac35a1591 randaut: rename -S as -Q for consistency
This way -S means --state-based-acc like with other tools
producing automata.   This fixes #82.

* src/bin/randaut.cc: Rename -S as -Q, rename --state-acc as
--state-based-acc (with --sbacc as a synonym), and declare -S as the
short version of --state-based-acc.
* doc/org/autfilt.org, doc/org/oaut.org, doc/org/randaut.org,
src/tests/isomorph.test, src/tests/randaut.test,
src/tests/randtgba.test, src/tests/readsave.test, src/tests/uniq.test,
wrap/python/tests/randaut.ipynb: Adjust all calls to randaut.
2015-06-01 09:20:52 +02:00
Alexandre Duret-Lutz
a6ef24567e * doc/org/ltlcross.org: Typo. 2015-05-30 13:05:11 +02:00
Alexandre Duret-Lutz
6b28cc9170 org: document HOA support
* doc/org/hoa.org: New file.
* doc/org/oaut.org, doc/org/tools.org: Link to it.
* doc/Makefile.am: Distribute it.
2015-05-30 13:01:43 +02:00
Alexandre Duret-Lutz
3230b7c8aa hoaparse: fix errors observed with gcc-snapshot
gcc version 6.0.0 20150516 (experimental) [trunk revision 223239]
(Debian 20150516-1)

* src/hoaparse/hoaparse.yy (state_info): Initialize used and declared,
otherwise they are uninitialized after a vector resize.
2015-05-27 08:25:39 +02:00
Alexandre Duret-Lutz
b87f24d7c4 * doc/org/randaut.org: Update for recent changes. 2015-05-26 23:56:59 +02:00
Alexandre Duret-Lutz
88141b2711 randaut: better generation of acceptance conditions
* src/bin/randaut.cc: Replace the --acc-type and --acc-sets
options by a more general --acceptance option, that take either
an acceptance formula, or an acceptance name parametred by ranges.
Also accept a range for the number of atomic propositions.
* src/twaalgos/randomgraph.cc (random_acceptance): Move...
* src/twa/acc.cc, src/twa/acc.hh (random): ... here.
(parse_acc_code): Generalize to accept ranges instead of
numbers whenever sensible, and accept a 'random' acceptance.
* src/tests/randaut.test: Adjust tests and add more.
* wrap/python/tests/randaut.ipynb: Adjust call to randaut.
2015-05-26 09:09:31 +02:00
Alexandre Duret-Lutz
d5598a9aaa * doc/org/ltlcross.org: Update. 2015-05-25 17:56:05 +02:00
Alexandre Duret-Lutz
7b6626d176 ltlcross: add a complete column
* src/bin/ltlcross.cc: Add the column.
* NEWS: Update.
2015-05-25 17:41:02 +02:00
Alexandre Duret-Lutz
ae0f0d5fc2 ltlcross: add --automata option
* src/bin/ltlcross.cc: Implement it.
* src/tests/ltlcross3.test: Use it.
* NEWS: Mention it.
2015-05-25 17:35:43 +02:00
Alexandre Duret-Lutz
5d7f4464ea acc: Adjust generalition of parity acceptance
According to https://github.com/adl/hoaf/issues/46

* src/twa/acc.cc (parity): Adjust generation.
* src/tests/hoaparse.test, wrap/python/tests/accparse.ipynb:
Adjust existing test cases.
* wrap/python/tests/accparse2.py: New test cases.
2015-05-24 00:00:36 +02:00
Alexandre Duret-Lutz
05ef316c23 * doc/org/satmin.org: Typo, reported by Joachim. 2015-05-22 19:08:43 +02:00
Alexandre Duret-Lutz
7b5c37d5a5 python: fix check of is_parity()
* wrap/python/tests/accparse2.py: Do not check max and odd if
is_parity is False, as this "argout" parameters are not initialized by
SWIG.
2015-05-22 07:54:45 +02:00
Alexandre Duret-Lutz
96e2da8666 sat-minimize: some documentation and associated fixes
* doc/org/satmin.org: Document the new DTωA-minimization procedure.
* doc/org/tools.org: Fix link.
* src/bin/autfilt.cc: Pass -S to sat_minimize().
* src/twa/twagraph.hh: (state_acc_sets) New method.
* src/twaalgos/dotty.cc: Use it to correctly display co-Büchi automata.
* src/twaalgos/dtbasat.cc: Set the deterministic property on the result.
* src/twaalgos/dtgbasat.cc: Likewise, and preprocess the input automaton
in sat_minimize().
* src/twaalgos/dtgbasat.hh: Fix documentation, and take the state-based
information as an argument.
* src/twaalgos/postproc.cc: Do not call simulation-based reduction
on non-separated acceptances.
* src/tests/satmin2.test: Use -S rather than 'state-based'.
* NEWS: Update.
2015-05-22 00:02:09 +02:00
Alexandre Duret-Lutz
7b28f1ffb5 acc: typo in parse_acc_code for generalized_co_buchi
* src/twa/acc.cc: Fix it.
* wrap/python/tests/accparse.ipynb: Adjust.
2015-05-22 00:02:09 +02:00
Alexandre Duret-Lutz
8f2865070e * src/twaalgos/simulation.cc: Preserve the unambiguous flag. 2015-05-22 00:02:03 +02:00
Alexandre Duret-Lutz
ef7f96a545 * doc/org/satmin.org: Missing name on dot output. 2015-05-21 10:49:05 +02:00
Alexandre Duret-Lutz
e04b4eb9fb acc: better Rabin/Streett detection
* src/twa/acc.cc: Allow duplicate and reordered pairs.  Also recognize
the single-pair cases.
* src/twaalgos/hoa.cc: When Rabin or Streett is detected, canonicalize
the Acceptance: line.
* src/tests/hoaparse.test, wrap/python/tests/accparse2.py: More tests.
* src/tests/sbacc.test: Adjust.
2015-05-21 08:57:49 +02:00
Alexandre Duret-Lutz
04171207e6 acc: recognize parity acceptance
It has two modes: strict or not.  In strict mode (tested in
hoaparse.test), the acceptance formula has to match exactly the one
given in the HOA spec.  In non-strict mode (tested in accparse2.py)
any equivalent formula is accepted.

* src/twa/acc.cc, src/twa/acc.hh (acc_cond::is_parity): New method.
* src/twaalgos/hoa.cc: Use it.
* src/tests/hoaparse.test: Test it.
* wrap/python/spot_impl.i: Bind it.
* wrap/python/tests/accparse2.py: New file.
* wrap/python/tests/Makefile.am: Add it.
2015-05-20 20:00:25 +02:00
Alexandre Duret-Lutz
704eaf26c2 acc: add support for generating parity conditions
* src/twa/acc.cc, src/twa/acc.hh: Here.
* wrap/python/tests/accparse.ipynb: Test it.
2015-05-20 20:00:25 +02:00
Alexandre Duret-Lutz
d276f73eed hoa: output acc-name for several acceptance types
So far the HOA output would emit an acc-name only
for generalized-Buchi or inferior types (Buchi, all).
It now knows about none, co-Buchi, generalized-co-Buchi,
Rabin, Streett, and generalized-Rabin as well.

* src/twa/acc.cc, src/twa/acc.hh: Add detection code.
* src/twaalgos/hoa.cc: Use it.
* src/tests/remfin.test, src/tests/maskacc.test,
src/tests/complete.test, src/tests/sim3.test,
src/tests/ltl2dstar.test: Adjust tests.
* src/tests/hoaparse.test: Adjust and add more tests.
2015-05-20 20:00:25 +02:00
Alexandre Duret-Lutz
8e1c846984 acc: parse standard acceptance names
* src/twa/acc.cc, src/twa/acc.hh: Add method to create
standard acceptance conditions, and adjust the parse_acc_code
to recognize them
* wrap/python/spot_impl.i (acc_cond::acc_code): Add a printer.
* wrap/python/tests/accparse.ipynb: New test file.
* wrap/python/tests/Makefile.am: Add it.
* src/tests/satmin2.test: Use the new syntax.
2015-05-18 21:49:51 +02:00
Alexandre Duret-Lutz
7880b25aae sat-minimize: add a max-states option
* src/twaalgos/dtbasat.cc, src/twaalgos/dtbasat.hh,
src/twaalgos/dtgbasat.cc, src/twaalgos/dtgbasat.hh: Add it.
* src/tests/satmin2.test: Add couple of tests.
2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
91f68ab1d8 sat-minimize: ignore silly histories
If the target acceptance is Fin(0)&Inf(1), there is no need to
distinguish between an history of {0,1} and an history of {0}, as a
cycle with either history will be rejected.  This implements this
simplification.  If both the canditate and reference automata
are Rabin automata with n pairs, then we now use at most
  Q * Q' * Q * Q' * 3^n * 3^n
variables to encode the partial cycles histories, versus
  Q * Q' * Q * Q' * 4^n * 4^n
before.

* src/twaalgos/dtgbasat.cc: Implement this.
* src/tests/satmin2.test: More tests.
2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
9480669e99 python: export the sat-minimization routines
* wrap/python/spot_impl.i: Here.
2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
ec49398e84 * src/twa/acc.hh (mark_t::clear): New method. 2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
6e32b65875 * src/twa/acc.cc: Fix BDD conversion in case of unused sets. 2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
0ede968760 sat-minimize: allow different acceptances as input and output
* src/twaalgos/dtgbasat.cc (sat_minimize): Use any arbitrary
acceptance condition passed via the "acc" option.
* src/twa/acc.hh (mark_t::max_set): New method.
* src/tests/satmin2.test: Add two test cases with DRA as input
and DSA as output.
2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
3efeacb61b acc: preserve input order in parse_acc_code()
* src/twa/acc.cc: Here.
* src/tests/acc.test: Adjust.
2015-05-18 21:46:11 +02:00
Alexandre Duret-Lutz
b488157957 sat-minimize: omit impossible histories
When the reference acceptance condition is complex enough, some
accepting SCCs may not use all acceptance sets.  In that case
we don't have to encode all possible histories for this SCC.

* src/twaalgos/dtgbasat.cc: Improve the encoding by omitting
histories involving sets that are not used in a reference SCC.
2015-05-18 21:46:08 +02:00
Alexandre Duret-Lutz
0874980574 sat-minimize: generalize to any acceptance
This is still missing tests.

* src/bin/autfilt.cc: Add a --sat-minimize option.
* src/misc/optionmap.cc, src/misc/optionmap.hh: Allow passing strings.
* src/twa/acc.cc, src/twa/acc.hh: Add helper functions needed
by the SAT-encoder.
* src/twaalgos/complete.hh: Typos.
* src/twaalgos/dtbasat.hh: Adjust comment.
* src/twaalgos/dtgbasat.cc, src/twaalgos/dtgbasat.hh: Generalize
to take the target acceptance as input.
* src/twaalgos/postproc.cc, src/tests/ltl2tgba.cc: Adjust calls.
* src/twaalgos/sbacc.cc, src/twaalgos/sbacc.hh: Don't pass
the pointer by reference.
* src/tests/acc.cc, src/tests/acc.test: More tests
for the acceptance helper function.
2015-05-18 21:45:33 +02:00
Alexandre Duret-Lutz
19a273929c python: rewrite translate() to deal with unambiguous and sbacc
and make it easier to extend and use.

* src/twaalgos/postproc.hh, src/twaalgos/translate.cc,
src/twaalgos/translate.hh: Incorporate the Unambiguous option
with the other preferences.  It's cleaner this way, and the
previous setup did not work well with Python.
* src/bin/ltl2tgba.cc: Adjust to this change.
* wrap/python/spot.py (translate): Rewrite.
* wrap/python/tests/automata.ipynb: Adjust existing cases, and
add more as well as some comments.
2015-05-15 23:50:19 +02:00
Alexandre Duret-Lutz
1ef3e5f3ff translate: remove arbitrary restriction on -U and -D
* src/twaalgos/translate.cc, src/bin/ltl2tgba.cc: Do not assume that
unambiguous is incompatible with deterministic.
2015-05-14 21:05:12 +02:00
Alexandre Duret-Lutz
0786e068ae postproc: add a SBAcc option
Producing state-based acceptance is now part of the postprocessing
routines.  That means we can more easily simplify automata with
state-based acceptance (using autfilt -S --small --high, for instance)
and as as side-effect, ltl2tgba can produce GBA.  However the result of
ltl2tgba -S is often larger than that of ltl2tgba -B.

* src/twaalgos/postproc.cc, src/twaalgos/postproc.hh: Implement
the SBAcc option.
* src/bin/common_post.cc, src/bin/common_post.hh: Implement -S.
* src/bin/autfilt.cc, src/bin/dstar2tgba.cc, src/bin/ltl2tgba.cc,
src/bin/ltl2tgta.cc, src/bin/ltldo.cc: Adjust.
* src/tests/sim3.test: Augment test case.
* NEWS, doc/org/ltl2tgba.org, doc/org/autfilt.org: Document it -S.
2015-05-14 21:05:12 +02:00
Alexandre Duret-Lutz
dd87bdf868 wdba: adjust to work on any TωA
* src/twaalgos/minimize.cc, src/twaalgos/safety.cc,
src/twaalgos/safety.hh: Adjust.
* src/tests/wdba2.test: More tests.
2015-05-14 18:34:14 +02:00
Alexandre Duret-Lutz
8080813303 simulation: work on TωA
* src/twaalgos/simulation.cc, src/twaalgos/simulation.hh: Adjust
to work on TωA.  This only require separate acceptance sets.
* src/tests/sim3.test: New test.
* src/tests/Makefile.am: Add it.
2015-05-14 18:34:14 +02:00
Alexandre Duret-Lutz
0e04b25342 ltldo: preserve generic acceptance
* src/bin/ltldo.cc: Default to generic acceptance.
* src/tests/ltl2dstar.test: Add a test.
2015-05-14 18:34:14 +02:00
Alexandre Duret-Lutz
3d1ccdc45e autfilt: new --separate-sets option
* src/twaalgos/sepsets.cc, src/twaalgos/sepsets.hh: New files.
* src/twaalgos/Makefile.am: Add them.
* src/twa/acc.hh (get_acceptance): Add a non-const version.
* src/bin/autfilt.cc: Add the --separate-sets option.
* src/tests/sepsets.test: New file.
* src/tests/Makefile.am: Add it.
2015-05-14 18:34:14 +02:00
Alexandre Duret-Lutz
5ed321fc19 * doc/org/ltlcross.org: document the ambiguous_aut column of --csv. 2015-05-13 23:40:24 +02:00
Alexandre Duret-Lutz
f006f0df34 * src/twaalgos/isunamb.cc: Simplify. 2015-05-13 23:23:11 +02:00
Alexandre Duret-Lutz
8c32fba8b9 scc_info: determine accepting/rejecting-SCCs for any acceptance
* src/twaalgos/sccinfo.cc, src/twaalgos/sccinfo.hh
(determine_unknown_acceptance): New function to call explicitly
in case one want to know whether the accepting/rejecting status
of all SCCs regardless of the acceptance.
* src/twaalgos/dotty.cc src/twaalgos/sccfilter.cc,
src/twaalgos/sccfilter.hh: Use it.
* src/tests/unambig.test, src/tests/sccdot.test: Add more tests.
* doc/org/oaut.org: Adjust doc for --dot=s, orange is not output
anymore.
2015-05-13 23:16:26 +02:00
Alexandre Duret-Lutz
07ee3d2dd0 allow scc_filter() and scc_filter_states() on any TωA
Note however that scc_info does not provide a precise accept/reject
characterization for SCCs when using Fin acceptance.  However whenever
it tells that an SCC is rejecting, scc_filter_states() may safely remove
it.

* src/twaalgos/sccfilter.cc (scc_filter_states): Allow on any TωA.
(scc_filter): Only use acceptance simplifications on TGBA.
* src/tests/unambig.test: Add a co-Büchi test.
2015-05-13 18:54:11 +02:00
Alexandre Duret-Lutz
332694a485 document -U
* doc/org/.dir-locals.el, doc/org/init.el.in: Use 'B' instead of 'b' for
default Dot output.
* doc/org/oaut.org: Adjust.
* NEWS, doc/org/ltl2tgba.org: Document -U.
* src/bin/common_post.cc, src/bin/ltl2tgba.cc: Fix location of help text
for -U.
2015-05-13 12:54:50 +02:00
Alexandre Duret-Lutz
5d76b9127b ltl2tgba_fm: produce unambiguous automata for PSL as well
* src/twaalgos/ltl2tgba_fm.cc: Fix the PSL operators.
* src/tests/unambig.test: Add more tests.
2015-05-12 20:21:16 +02:00