diff --git a/wrap/python/ajax/ltl2tgba.html b/wrap/python/ajax/ltl2tgba.html index 69b510ce3..1ead853d3 100644 --- a/wrap/python/ajax/ltl2tgba.html +++ b/wrap/python/ajax/ltl2tgba.html @@ -70,23 +70,48 @@ $("#ltl3ba-U").attr('checked', true); } }) + $("#to-s").change(function() { + if ($(this).is(':checked')) { + $("#to-l").removeAttr('checked'); + } + }) + $("#to-l").change(function() { + if ($(this).is(':checked')) { + $("#to-s").removeAttr('checked'); + } + }) + $("#tf-t,#tf-g").change(function() { + if ($(this).is(':checked')) { + $("#to-l,#to-s").removeAttr('disabled'); + } + }) + $("#tf-a").change(function() { + if ($(this).is(':checked')) { + $("#to-l,#to-s").attr('disabled', true); + } + }) function hideOrShowPanels(output, duration) { switch (output) { case 'f': - $('#translator-tabs,#autsimp-tabs,#run-tabs').hide(duration); + $('#translator-tabs,#autsimp-tabs,#run-tabs,#tester-tabs').hide(duration); break; case 'm': $('#autsimp-tabs,#run-tabs').hide(duration); - $('#translator-tabs').show(duration); + $('#translator-tabs,#tester-tabs').show(duration); break; case 'a': $('#translator-tabs,#autsimp-tabs').show(duration); + $('#run-tabs,#tester-tabs').hide(duration); + break; + case 't': + $('#translator-tabs,#autsimp-tabs,#tester-tabs').show(duration); $('#run-tabs').hide(duration); break; case 'r': $('#translator-tabs,#autsimp-tabs,#run-tabs').show(duration); + $('#tester-tabs').hide(duration); break; } } @@ -125,7 +150,7 @@ this.value=value.join(','); } }); - $("#brcheckbox").change(); + $("#brcheckbox,#tf-a").change(); $.spotvars.autoupdate = true; $.spotvars.internalchange = false; var o = $('input[name="o"]').val(); @@ -506,17 +531,17 @@ an identifier: aUb is an atomic proposition, unlike
- Translate the (simplified) formula as:
+ Translate the (simplified) formula into a Büchi automaton, and then convert it into:



@@ -644,6 +669,23 @@ an identifier: aUb is an atomic proposition, unlike +
+

Testing Automaton OptionsFold

+
+
+
+
+
+

ResultsFold

diff --git a/wrap/python/ajax/protocol.txt b/wrap/python/ajax/protocol.txt index 18bc1118e..7a9227105 100644 --- a/wrap/python/ajax/protocol.txt +++ b/wrap/python/ajax/protocol.txt @@ -100,6 +100,12 @@ Automaton simplifications (pick many) as=wd WDBA minimiztion as=ds Direct Simulation reduction +Testing Automaton options (pick many) + + to=l add a catch-all livelock state + to=s produce single-pass variant + to=m merge bisimilar states + Global options g=8 Enable UTF-8 output. diff --git a/wrap/python/ajax/spot.in b/wrap/python/ajax/spot.in index 1c13bc8fe..829cd51f2 100755 --- a/wrap/python/ajax/spot.in +++ b/wrap/python/ajax/spot.in @@ -655,16 +655,29 @@ if output_type == 'a': # Testing automaton Output if output_type == 't': + livelock = False + singlepass = False + bisimulation = False + for to in form.getlist('to'): + if to == 'l': + livelock = True + elif to == 's': + singlepass = True + elif to == 'm': + bisimulation = True propset = spot.atomic_prop_collect_as_bdd(f, automaton) if ta_type == 'a': tautomaton = spot.tgba_to_tgta(degen, propset) - tautomaton = spot.minimize_tgta(tautomaton) + if bisimulation: + tautomaton = spot.minimize_tgta(tautomaton) + issba = False else: tautomaton = spot.tgba_to_ta(degen, propset, - False, False, False, False) - tautomaton = spot.minimize_ta(tautomaton) + issba, True, singlepass, livelock) + if bisimulation: + tautomaton = spot.minimize_ta(tautomaton) dont_run_dot = print_stats(tautomaton) - render_automaton(tautomaton, dont_run_dot, False) + render_automaton(tautomaton, dont_run_dot, issba) tautomaton = 0 degen = 0 automaton = 0