Commit graph

67 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
ebf48d4fa4 * wrap/python/ajax/ltl2tgba.html: Remember killed blocks. 2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
8d2d9be39c ltl2tgba.html: Add a warning.
* wrap/python/ajax/spot.in: Warn about formulae that don't look
stuttering insensitive.
2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
941cb0b57b Fix tgta_explicit not to inherit from ta_explicit to please clang++.
* src/ta/tgtaexplicit.cc, src/ta/tgtaexplicit.hh: Use a ta_explicit
attribute instead of inheriting from it.
(get_ta): New method.
* src/taalgos/minimize.cc, src/taalgos/minimize.hh,
src/taalgos/tgba2ta.cc, src/tgbatest/ltl2tgba.cc: Adjust usage.
* wrap/python/spot.i (as_ta): Remove, now that we have get_ta.
* wrap/python/ajax/spot.in: Use get_ta instead of as_ta.
2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
d4130f15bf Clean up dotty output of TAs.
* src/taalgos/dotty.cc: Clean up output of TAs.
* src/tgbatest/ltl2tgba.cc: Fix memory management, and use the TA
printer for TGTA.
* wrap/python/spot.i (as_ta): New function to convert a tgta_explicit
into a TA.
* wrap/python/ajax/spot.in: Use this new function to display automata.
2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
852cd0d553 ltl2tgba.html: Add testing automata options.
* wrap/python/ajax/ltl2tgba.html, wrap/python/ajax/protocol.txt,
wrap/python/ajax/spot.in: Here.
2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
27a2de331f ltl2tgba.html: Preliminary support for TA
* wrap/python/spot.i: Add wrapper the new TA algorithms.
* wrap/python/ajax/ltl2tgba.html: Add a testing automaton tab.
* wrap/python/ajax/protocol.txt, wrap/python/ajax/spot.in: Support it.
2012-08-21 14:21:31 +02:00
Alexandre Duret-Lutz
85391ab9fe * wrap/python/ajax/Makefile.am (EXTRA_DIST): Add loading.gif. 2012-07-02 17:35:23 +02:00
Alexandre Duret-Lutz
141baae57e ltl2tgba.html: Use the new degeneralization routine.
* wrap/python/spot.i: Export degeneralize().
* wrap/python/ajax/spot.in: Use it.
2012-07-02 17:35:22 +02:00
Alexandre Duret-Lutz
6d047a1d6b Document recent changes.
* NEWS: Update.
* wrap/python/ajax/README: Explain the ltl3ba requirement.
2012-06-19 22:13:00 +02:00
Alexandre Duret-Lutz
bb8142910e * wrap/python/ajax/ltl2tgba.html: Typos, and better WDBA doc. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
601fbedbf6 * wrap/python/ajax/ltl2tgba.html: Add a favicon link. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
b0193e1418 Apply Jan's comments on ltl3ba's interface.
* wrap/python/ajax/ltl2tgba.html: Adjust text.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
5c04022505 * wrap/python/ajax/ltl2tgba.html: Add tooltips for LTL, PSL, SERE. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
c4c42a37c6 ltl2tgba.html: Update tooltips with Tomáš Babiak's comments.
* wrap/python/ajax/ltl2tgba.html: Update tooltips for LTL3BA.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
8d9d0f7b5b ltl2tgba.html: add meta description, and validate page.
* wrap/python/ajax/ltl2tgba.html: Here.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
81d3ee48f0 ltl2tgba.html: Display a loading logo for delayed results.
* wrap/python/ajax/css/loading.gif: New file.
* wrap/python/ajax/css/ltl2tgba.css (.loading): New class.
* wrap/python/ajax/ltl2tgba.html: Display loading.gif after 200ms if
the answer hasn't arrived
* wrap/python/ajax/spot.in: Do not suggest not to draw the automaton
on timeout.
* wrap/python/ajax/js/jquery.ba-dotimeout.min.js: New file.
* wrap/python/ajax/Makefile.am: Distribute it.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
bfc668246c Add more ltl3ba options.
* wrap/python/ajax/ltl2tgba.html, wrap/python/ajax/protocol.txt:
Add options 'o' and 'p'.
* wrap/python/ajax/spot.in: Handle these, and use '-v' to check
version.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
689f56f480 ltl2tgba.html: Detect ltl3ba's presence and version.
* wrap/python/ajax/ltl2tgba.html: Display the ltl3ba version, and
disable its tab when unavailable.
* wrap/python/ajax/protocol.txt: Add option for ltl3ba's version.
* wrap/python/ajax/spot.in: Implement this option, and catch
errors when ltl3ba is not installed.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
988e7e2499 Preliminary work on integrating LTL3BA in ltl2tgba.html.
* wrap/python/ajax/ltl2tgba.html: Add a dedicated tab with
two columns of options.
* wrap/python/ajax/css/ltl2tgba.css: Support for two columns.
* wrap/python/ajax/protocol.txt: Document new options.
* wrap/python/ajax/spot.in: Handle the new options.
* wrap/python/ajax/Makefile.am: Substitude LTL3BA in spot.in.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
7b7a946485 Rework the timeout of the CGI script.
The previous implementation was fine to catch timeout of third-party
tools (like dot), but to good to catch timeout in Spot itself, because
Python will not deliver a SIGALRM while a native function (e.g. Spot's
translation) is running.  So we fork() the Python process, with a
parent that does nothing but wait for the termination of the child or
for an alarm.  On SIGALRM, the parent kills all children.

* wrap/python/ajax/spot.in: Adjust to fork.
* wrap/python/tests/alarm.py: New test file to test this
scenario in a more controled environment.
* wrap/python/tests/Makefile.am: Add it.
2012-06-04 18:41:36 +02:00
Alexandre Duret-Lutz
e5a86290cf Clean the as_bdd() cache after LTL simplification.
Syntactic implication checks may use as_bdd() to compare Boolean
formulae.  By doing so, they register Boolean variables in an order
that is usially detrimental to the LTL translator.  The new,
clear_as_bdd_cache() function offers a mean to unregister these
variables, so that the LTL translator will register them again in the
a more natural way.

* src/ltlvisit/simplify.hh, src/ltlvisit/simplify.cc
(clear_as_bdd_cache): New function.
* src/tgbatest/ltl2tgba.cc, wrap/python/ajax/spot.in: Call it.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
14144f3b3b * wrap/python/ajax/README: More debugging help. 2012-05-11 23:35:49 +02:00
Alexandre Duret-Lutz
2945668021 Update the help text for the Couvreur/FM algorithm.
* wrap/python/ajax/ltl2tgba.html: Mention PSL.
2012-05-09 13:20:22 +02:00
Alexandre Duret-Lutz
0f0ada825a Show how to rewrite a̅ as ¬a before calling dot, if needed.
Because some old version of libpango will render a̅ as a‾, without
combining.

* wrap/python/ajax/spot.in: Add the code as a comment.
2012-05-01 14:31:15 +02:00
Alexandre Duret-Lutz
861969b53a Prefer -R3 to -R3f when applying direct simulation in the web interface.
* wrap/python/ajax/spot.in: Adjust.
2012-04-30 18:11:13 +02:00
Alexandre Duret-Lutz
a09ad6b4c6 Implement W,M removal for Spin output.
* src/ltlvisit/wmunabbrev.hh, src/ltlvisit/wmunabbrev.cc: New files.
* src/ltlvisit/Makefile.am: Add them.
* src/ltlvisit/tostring.cc (to_spin_string): Use the new rewriting.
* wrap/python/ajax/spot.in: Warn when a "Spin" still contain PSL
operators.
* wrap/python/ajax/ltl2tgba.html: Adjust help text.
* doc/tl/tl.tex, NEWS: Document the new rewriting.
2012-04-30 11:57:55 +02:00
Alexandre Duret-Lutz
43d1be09d5 Add an UTF-8 option to the web interface.
* wrap/python/ajax/ltl2tgba.html: Add the checkbox.
* wrap/python/ajax/css/ltl2tgba.css: Add the necessary class.
* wrap/python/ajax/protocol.txt: Add the new option.
* wrap/python/ajax/spot.in: Handle it.
* wrap/python/ajax/README: Add a few lines to explain
how to run the CGI script from the command line for debugging.
2012-04-30 11:57:55 +02:00
Alexandre Duret-Lutz
bdeb87a6b0 web ltl2tgba: add an option to disable larger rewritings
* wrap/python/ajax/ltl2tgba.html: Add a checkbox and some
code to keep it consistent with the basic rewriting checkbox.
* wrap/python/ajax/spot.in: Deal with the new option.
* wrap/python/ajax/protocol.txt: Document it.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
8f40fd41f4 Replace the "encoding: utf-8" by "coding: utf-8" comments.
* Makefile.am, src/ltlast/formula.cc, src/ltlast/formula.hh,
src/tgba/tgbaexplicit.hh, wrap/python/ajax/Makefile.am,
wrap/python/spot.i: Here.
* HACKING: Document -*- coding: utf-8 -*-.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
3d41bf9ff1 ltl2tgba.html: Display properties of formulas.
* src/ltlast/formula.hh, src/ltlast/formula.cc (list_formula_props):
New function.
* wrap/python/spot.i: Adjust to wrap list_formula_props.
* wrap/python/ajax/ltl2tgba.html: Add option to display properties.
* wrap/python/ajax/spot.in: Handle ff=p and display properties.
* wrap/python/ajax/protocol.txt: Adjust.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
5ce59c011c ltl2tgba.html: Provide a link to an SVG output. Suggested by Denis.
Because this means we are running dot twice, I have added a flag that
will allow us to easily turn this off, should it prove too slow.

* wrap/python/ajax/spot.in (output_both): New variable.
(run_dot): New function, extracted from ...
(render_dot): ... here.  Adjust to call run_dot for all needed format.
And ajust the output accordingly.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
266bd25ba5 ltl2tgba.html: lists PSL operators in the help text.
* wrap/python/ajax/ltl2tgba.html: Revamp the syntax table to include
PSL operators.
* wrap/python/ajax/css/ltl2tgba.css: Adjust CSS as needed.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
3d183d68c8 Make sure PSL formulae are translated with the FM translation online.
* wrap/python/ajax/spot.in: Diagnose attempt to use LaCIM or Tau
on PSL formulae.
* wrap/python/ajax/css/ltl2tgba.css (.ltl2tgba .error): New entry.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
67f4e8b5ce Deprecate reduce() in favor of ltl_simplifier.
* src/ltlvisit/reduce.hh: Mark the file as obsolete.
(reduce): Declare this function as obsolete.
* src/ltlvisit/reduce.cc: Define SKIP_DEPRECATED_WARNING
so we can include reduce.hh.
* src/sanity/includes.test: Also use SKIP_DEPRECATED_WARNING
when compiling headers.
* iface/dve2/dve2check.cc,
src/ltltest/equals.cc, src/ltltest/randltl.cc,
src/ltltest/reduc.cc, src/tgbaalgos/ltl2tgba_fm.hh,
src/tgbaalgos/ltl2tgba_fm.cc, src/tgbatest/randtgba.cc,
wrap/python/ajax/spot.in, wrap/python/spot.i: Adjust
to use ltl_simplifier.
* src/tgbatest/ltl2tgba.cc: Adjust to use ltl_simplifier,
and replace -fr1...-fr7 options by a single -fr option.
* src/tgbatest/spotlbtt.test: Adjust -fr flags accordingly.
* src/tgbatest/reductgba.cc: Do not include reduce.hh.
2012-04-28 09:34:42 +02:00
Alexandre Duret-Lutz
7ba4ab7931 slights documentation changes around direct simulation
* src/tgbaalgos/simulation.hh: Mention the fact that this is
a "direct" simulation.
* wrap/python/ajax/ltl2tgba.html: Likewise, and change the key
to "ds".
* wrap/python/ajax/protocol.txt, wrap/python/ajax/spot.in: Adjust.
2012-04-27 15:51:20 +02:00
Thomas Badie
dfcaed034e Add the simulation in the Spot web interface.
* wrap/python/ajax/spot.in: Add the simulation.
* wrap/python/ajax/protocol.txt: Add the direct simulation in the
automaton simplifications section.
* wrap/python/spot.i (simulation_new): Create a function which
takes an automaton and a call to the simulation with the good
template parameter.
* wrap/python/ajax/ltl2tgba.html: Add the direct simulation
checkbox.
2012-04-18 19:02:09 +02:00
Alexandre Duret-Lutz
862c248a41 ltl2tgba.html: Scroll to result. (Suggested by Thomas Badie.)
* wrap/python/ajax/ltl2tgba.html: Scroll the the results the first
time a formula is submitted, and anytime a formula is submitted with
'enter'.  Also do not animate the settings of panels when reloading
the page from a hash fragment.
2012-03-18 22:40:48 +01:00
Alexandre Duret-Lutz
187997fe5d ltl2tgba.html: Fix initialization of unset options on reload.
* wrap/python/ajax/ltl2tgba.html: On page reload, do not ignore
fields for which no value has been set in the hash fragment.
Otherwise they will keep their default value.
Reported by Thomas Badie.
2012-03-08 22:02:16 +01:00
Alexandre Duret-Lutz
802319ddbb * wrap/python/ajax/spot.in: Fix emulation of execfile. 2012-03-08 21:30:09 +01:00
Alexandre Duret-Lutz
9114305995 ltl2tgba.html: save state in URL to preserve history
* wrap/python/ajax/js/jquery.ba-bbq.min.js: New file.
* wrap/python/ajax/Makefile.am: Distribute it.
* wrap/python/ajax/ltl2tgba.html: Include it, and
Adjust the code to update the URL's hash fragment,
and to read it.
2012-03-04 17:37:37 +01:00
Alexandre Duret-Lutz
88044453fc python: fix return value of emptiness_check_instantiator
* wrap/python/spot.i: Fix typemap for
emptiness_check_instantiator::construct.  The previous code used
to turn (None, "error") into simply ("error").
* wrap/python/ajax/spot.in: Fix handling or errors when
instantiating emptiness checks.
2012-03-04 17:23:46 +01:00
Alexandre Duret-Lutz
61127a3fd5 Make all python code compatible with Python 2.x and Python 3.x.
* wrap/python/buddy.i (__le__, __lt__, __eq__, __ne__, __ge__
__gt__): New operators for bdd.
* wrap/python/spot.i (__le__, __lt__, __eq__, __ne__, __ge__
__gt__, __hash__): New operators for formula.
(nl_cout, nl_cerr): New functions.
* wrap/python/tests/bddnqueen.py,
wrap/python/tests/interdep.py, wrap/python/tests/ltl2tgba.py,
wrap/python/tests/ltlparse.py, wrap/python/tests/ltlsimple.py,
wrap/python/tests/minato.py, wrap/python/tests/modgray.py: Adjust
to the new print syntax by using sys.output.write() or nl_cout()
instead.
* wrap/python/tests/optionmap.py: Remove all print calls.
* wrap/python/ajax/spot.in: Massive adjustments in order to work
with both Python 2 and 3.  In python 3, reopening stdout as
unbuffered requires it to be open as binary, which in turns
requires any string output to be encoded manually.  BaseHTTPServer
and CGIHTTPServer have been merged into http.server, so we have
to try two different import syntaxes.  execfile no longer exists,
so it has to be emulated.
This also fixes two bugs where the script would segfault on
empty input, or when calling Tau03 on automata with less then
one acceptance conditions.
2012-02-25 14:01:43 +01:00
Alexandre Duret-Lutz
62914059f7 Fix a race condition on the CGI script.
* wrap/python/ajax/spot.in: Create all cache files in a temporary
directory, and only rename this directory at the end.  This way if
two processes are processing the same request, they won't attempt
to populate the same directory (and only one of the first of two
renames will succeed, but that is OK).
2012-02-15 11:58:54 +01:00
Alexandre Duret-Lutz
ebc92d4688 Fix position of the Send button with WebKit.
* wrap/python/ajax/css/ltl2tgba.css: Fix position of the "Send"
button with WebKit.  The folding arrow icon had a vertical border
that overlapped with the next line.
2012-01-17 14:02:15 +01:00
Alexandre Duret-Lutz
7854283593 * wrap/python/ajax/spot.py: Add a required "None" second
argument to utime().
2012-01-17 13:27:09 +01:00
Alexandre Duret-Lutz
a804c88e1b Fix mkdir error in ajax/spot.in.
* wrap/python/ajax/spot.in: Do not print an error
when attempting to create an existing directory.
Reported by Étienne Renault.
2011-12-01 12:33:20 +01:00
Alexandre Duret-Lutz
6acf30b2ab Remove the old CGI interface.
* wrap/python/cgi-bin: Remove this directory.
* wrap/python/Makefile.am (SUBDIRS): Remove it.
* configure.ac, README, wrap/python/ajax/README: Likewise.
2011-11-28 18:17:50 +01:00
Alexandre Duret-Lutz
6794b8570a Undocument `.' from the web interface.
* wrap/python/ajax/ltl2tgba.html: Remove `.'
from the list of acceptable symbols for AND.
2011-11-28 17:56:46 +01:00
Alexandre Duret-Lutz
7aefc190c9 Add some "drop shadow" in ltl2tgba.html.
* wrap/python/ajax/ltl2tgba.html: Add shadow to all boxes.
* wrap/python/ajax/css/ltl2tgba.css (.shadow): New class.
2011-06-26 18:26:20 +02:00
Alexandre Duret-Lutz
c42d55e6b1 * wrap/python/ajax/spot.in: Touch the directory containing
the cached result for the requests.  So that it survives
the browser's cache.
(finish): Prune the cache only once per hour, and only eraes
files that are older than 2 hours.
2011-06-10 11:12:05 +02:00