Commit graph

17 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
55ee18b96a sat-minimize: more statistics.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Record
statistics about intermediate automata if SPOT_SATLOG is set to some
filename, and display intermediate automata if SPOT_SATSHOW is set.
* bench/dtgbasat/stat.sh, bench/dtgbasat/stats.sh,
bench/dtgbasat/tabl.pl, bench/dtgbasat/tabl1.pl,
bench/dtgbasat/tabl2.pl, bench/dtgbasat/tabl3.pl,
bench/dtgbasat/tabl4.pl: Gather these extra statistics.
2014-02-08 20:31:49 +01:00
Alexandre Duret-Lutz
1319ec0bad sat-minimize: limit number of iterations
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Compute the
actual number of reachable states in the produced automaton to prepare
the next iteration.
2014-02-08 20:31:49 +01:00
Alexandre Duret-Lutz
b4d0b9ee42 sat: more debug.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: More debuging
code.
2014-02-07 12:07:16 +01:00
Alexandre Duret-Lutz
9c98975c19 sat: factor the creation of temporary files
* src/misc/satsolver.hh, src/misc/satsolver.cc: Present
the SAT solver as an object with a stream interface, to
prepare for a better implementation.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc:
Adjust to the new interface, removing all the handling
of temporary files.
* src/tgbatest/readsat.cc: Adjust.
2014-02-07 12:07:16 +01:00
Alexandre Duret-Lutz
1853bdd53b sat: fix some non-determinism of the encoding
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Rewrite the
loops that number the states of the reference automaton so that
they declare CNF variable numbers in the same order as the states
of the automaton.
2014-02-07 12:07:16 +01:00
Alexandre Duret-Lutz
77cef16ca0 dtgbasat: Improve handling of weaks SCC in the ref automaton
* src/tgbaalgos/dtgbasat.cc: Here.
2013-09-16 08:31:43 +02:00
Alexandre Duret-Lutz
795c6e48d9 dtgbasat: get rid of the <q1,q1'>G variables
Reuse the existing <q1,q1',q1,q1',0,0> instead.

* src/tgbaalgos/dtgbasat.cc: Simplify.
2013-09-16 08:31:43 +02:00
Alexandre Duret-Lutz
b318b151c8 satmin: ignore (s,l,d2) if (s,l,d1) is already in result
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Here.
2013-09-16 08:31:43 +02:00
Alexandre Duret-Lutz
22f944ad56 sat: catch write errors
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Throw
exceptions on write errors.
2013-09-16 08:31:43 +02:00
Alexandre Duret-Lutz
1f3b7e8002 sat: catch cases where nbclause > INT_MAX and report them
* src/misc/satsolver.hh (clause_counter): New class.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Use it.
2013-09-16 08:31:43 +02:00
Alexandre Duret-Lutz
484c56c6ea sat: skip reference transitions that are out of any cycle
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Greatly reduce
the number of clauses and variable by removing any path variable that
reference a reference transition that is not in a SCC.
2013-09-16 08:31:42 +02:00
Alexandre Duret-Lutz
e9f60df857 sat: implement partial symmetry breaking
Thanks to Rüdiger Ehlers for his helpful email.

* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Here.
2013-09-08 20:43:53 +02:00
Alexandre Duret-Lutz
90c106f8a8 sat: generalize the code for reading the solution
* src/misc/satsolver.cc, src/misc/satsolver.hh (satsolver_get_solution):
New function, that accepts a solution split on multiple 'v ' lines.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc (get_solution):
Remove, and adjust existing code to use satsolver_get_solution().
* src/tgbatest/readsat.cc, src/tgbatest/readsat.test: New files.
* src/tgbatest/Makefile.am: Add them.
* src/bin/man/spot-x.x: Mention the SAT competition rules for
the expected input/output format.
2013-09-08 20:43:52 +02:00
Alexandre Duret-Lutz
fdb157bf94 satmin: cleanup interfaces and minimization loops
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh:
(dtba_sat_minimize): Split into...
(dtba_sat_synthetize, dtba_sat_minimize): These.
(dtba_sat_minimize_dichotomy): New function.
* src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh
(dtgba_sat_minimize, dtgba_sat_synthetize): Likewise.
* src/tgbatest/ltl2tgba.cc: Adjust to new interface.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh:
Cleanup option processing for SAT options.
* src/tgbatest/satmin.test: Adjust.
* src/bin/spot-x.cc, src/bin/man/spot-x.x, NEWS: Document.
2013-09-08 20:43:17 +02:00
Alexandre Duret-Lutz
bcd794c608 sat: improve our algorithms
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh:
Rename dba_sat_minimize to dtba_sat_minimize.
Make it possible to produce state-based automata, and do
not output useless clauses.
* src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh:
likewise, but also add the possibility to set the
target number of states, as in dtba_sat_minimize.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh:
Add new options for state-based computations and
setting acceptance and states number when using
dtgba_sat_minimize().
* src/tgbatest/ltl2tgba.cc: Adjust calls to
dtba_sat_minimize().
* src/tgbatest/satmin.test: Adjust calls.
2013-08-26 17:27:42 +02:00
Alexandre Duret-Lutz
3b10bb3b8c satsolver: new function
Uses the value of the SPOT_SATSOLVER environment variable
to decide how to call the SAT solver.

* src/misc/satsolver.cc, src/misc/satsolver.hh: New files.
* src/misc/Makefile.am: Add them.
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Use satsolver().
2013-08-26 17:27:42 +02:00
Alexandre Duret-Lutz
679df4eee1 Implement dtgba_sat_minimize().
Joint work with Soheib Baarir.

* src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: Add
a dtgba-sat-minimize option.
* src/tgbatest/ltl2tgba.cc: Add option -RG.
* src/tgbatest/satmin.test: Add more tests.
2013-08-26 17:27:42 +02:00