cgi: Add an nondeterministic monitor option
* src/tgbaalgos/postproc.hh (run): Rename the first argument as input_disown to help Swig. * wrap/python/spot.i: Wrap spot::postprocessor. * wrap/python/ajax/ltl2tgba.html, wrap/python/ajax/protocol.txt: Add an option for nondeterministic monitor. * wrap/python/ajax/spot.in: Honor the new option, and rewrite the monitor production using postprocessor.
This commit is contained in:
parent
c892599494
commit
abb5170565
5 changed files with 29 additions and 10 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2012 Laboratoire de Recherche et Développement de
|
// Copyright (C) 2012, 2013 Laboratoire de Recherche et Développement
|
||||||
// l'Epita (LRDE).
|
// de l'Epita (LRDE).
|
||||||
//
|
//
|
||||||
// This file is part of Spot, a model checking library.
|
// This file is part of Spot, a model checking library.
|
||||||
//
|
//
|
||||||
|
|
@ -84,8 +84,8 @@ namespace spot
|
||||||
level_ = level;
|
level_ = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the optimized automaton and delete \a input.
|
/// Return the optimized automaton and delete \a input_disown.
|
||||||
const tgba* run(const tgba* input, const ltl::formula* f);
|
const tgba* run(const tgba* input_disown, const ltl::formula* f);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
output_type type_;
|
output_type type_;
|
||||||
|
|
|
||||||
|
|
@ -504,6 +504,10 @@ an identifier: <span class="formula">aUb</span> is an atomic proposition, unlike
|
||||||
<INPUT type="radio" name="mf" value="d" checked>
|
<INPUT type="radio" name="mf" value="d" checked>
|
||||||
a deterministic monitor
|
a deterministic monitor
|
||||||
</label><br>
|
</label><br>
|
||||||
|
<label class="rtip" title="A nondeterministic monitor is an NFA that accepts all the prefixes of the executions that satisfy the formula.">
|
||||||
|
<INPUT type="radio" name="mf" value="n" checked>
|
||||||
|
a nondeterministic monitor
|
||||||
|
</label><br>
|
||||||
</div>
|
</div>
|
||||||
<div id="tabs-oa">
|
<div id="tabs-oa">
|
||||||
Translate the (simplified) formula as:<br>
|
Translate the (simplified) formula as:<br>
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,10 @@ Type of automaton if o=a (pick one)
|
||||||
af=s SBA
|
af=s SBA
|
||||||
af=i Spin neverclaim
|
af=i Spin neverclaim
|
||||||
|
|
||||||
Type of monitor if o=m (pick one -- no choice)
|
Type of monitor if o=m (pick one)
|
||||||
|
|
||||||
mf=d
|
mf=d deterministic
|
||||||
|
mf=n nondeterministic
|
||||||
|
|
||||||
Type of automaton for run if o=r (pick one)
|
Type of automaton for run if o=r (pick one)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -571,9 +571,15 @@ elif translator == 'l3':
|
||||||
|
|
||||||
# Monitor output
|
# Monitor output
|
||||||
if output_type == 'm':
|
if output_type == 'm':
|
||||||
issba = False
|
issba = True
|
||||||
automaton = spot.scc_filter(automaton)
|
mf = form.getfirst('mf', 'd')
|
||||||
automaton = spot.minimize_monitor(automaton)
|
pp = spot.postprocessor()
|
||||||
|
pp.set_type(spot.postprocessor.Monitor)
|
||||||
|
if mf == 'd':
|
||||||
|
pp.set_pref(spot.postprocessor.Deterministic)
|
||||||
|
elif mf == 'n':
|
||||||
|
pp.set_pref(spot.postprocessor.Small)
|
||||||
|
automaton = pp.run(automaton, f)
|
||||||
unbufprint('<div class="automata-stats">')
|
unbufprint('<div class="automata-stats">')
|
||||||
dont_run_dot = print_stats(automaton)
|
dont_run_dot = print_stats(automaton)
|
||||||
unbufprint('</div>')
|
unbufprint('</div>')
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2009, 2010, 2011, 2012 Laboratoire de Recherche
|
// Copyright (C) 2009, 2010, 2011, 2012, 2013 Laboratoire de Recherche
|
||||||
// et Développement de l'Epita (LRDE).
|
// et Développement de l'Epita (LRDE).
|
||||||
// Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique
|
// Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique
|
||||||
// de Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
// de Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||||
|
|
@ -108,6 +108,7 @@ namespace std {
|
||||||
#include "tgbaalgos/stats.hh"
|
#include "tgbaalgos/stats.hh"
|
||||||
#include "tgbaalgos/isdet.hh"
|
#include "tgbaalgos/isdet.hh"
|
||||||
#include "tgbaalgos/simulation.hh"
|
#include "tgbaalgos/simulation.hh"
|
||||||
|
#include "tgbaalgos/postproc.hh"
|
||||||
|
|
||||||
#include "tgbaparse/public.hh"
|
#include "tgbaparse/public.hh"
|
||||||
|
|
||||||
|
|
@ -211,6 +212,12 @@ using namespace spot;
|
||||||
%feature("new") spot::tgba_parse;
|
%feature("new") spot::tgba_parse;
|
||||||
%feature("new") spot::tgba_to_ta;
|
%feature("new") spot::tgba_to_ta;
|
||||||
%feature("new") spot::tgba_to_tgta;
|
%feature("new") spot::tgba_to_tgta;
|
||||||
|
%feature("new") spot::postprocessor::run;
|
||||||
|
|
||||||
|
// The argument to postprocessor::run() will be deleted.
|
||||||
|
// Apparently SWIG can only disown arguments based on their
|
||||||
|
// names...
|
||||||
|
%apply SWIGTYPE *DISOWN { SWIGTYPE * input_disown };
|
||||||
|
|
||||||
// Help SWIG with namespace lookups.
|
// Help SWIG with namespace lookups.
|
||||||
#define ltl spot::ltl
|
#define ltl spot::ltl
|
||||||
|
|
@ -297,6 +304,7 @@ using namespace spot;
|
||||||
%include "tgbaalgos/stats.hh"
|
%include "tgbaalgos/stats.hh"
|
||||||
%include "tgbaalgos/isdet.hh"
|
%include "tgbaalgos/isdet.hh"
|
||||||
%include "tgbaalgos/simulation.hh"
|
%include "tgbaalgos/simulation.hh"
|
||||||
|
%include "tgbaalgos/postproc.hh"
|
||||||
|
|
||||||
%include "tgbaparse/public.hh"
|
%include "tgbaparse/public.hh"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue