Commit graph

73 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
e7cf7b422d Trivially reduce f;f to f[*2], f[*1..3];f to f[*2..4], etc.
* src/ltlast/multop.cc (instance): Implement the reduction.
* src/ltlast/multop.hh, doc/tl/tl.tex: Document it.
* src/ltltest/equals.test: Add a test.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
4a775a17a3 Trivially reduce [*];f to [*] if f accepts the empty word.
* src/ltlast/multop.cc (instance): Implement the reduction.
* src/ltlast/multop.hh, doc/tl/tl.tex: Document it.
* src/ltltest/equals.test: Test it.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
e06b3b7974 Trivially reduce 1[*]&&f = f and 1[*]|f = 1[*].
* src/ltlast/bunop.hh (one_star): New static method building 1[*].
* src/ltlast/bunop.cc (bunop::~bunop, bunop::instance_count): Adjust.
* src/ltlast/multop.cc: Implement the trivial rewriting.
* src/ltlast/multop.hh, doc/tl/tl.tex: Document it.
* src/ltltest/equals.test: Test it.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
5bea6e4950 Fix handling of 1 in trivial identities for rational operators.
Especially, 1&f and 1:f were mistakenly always reduced to f, which is
incorrect when f accept the empty word.

* src/ltlast/multop.cc: Here.
* src/ltlast/multop.hh, doc/tl/tl.tex: Adjust documentation.
* src/ltltest/equals.test: Add more tests.
2012-04-28 09:34:46 +02:00
Alexandre Duret-Lutz
35b41331f7 Add more simplification rules for AndNLM.
* src/ltlvisit/simplify.cc: Here.
* src/ltltest/reduccmp.test: More tests.
* doc/tl/tl.tex: Document them.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
866384b423 Fix trivial rules for b₁:b₂ and b&f.
* src/ltlast/multop.cc (instance): Here.
* src/ltlast/multop.hh, doc/tl/tl.tex: Adjust documentation.
* src/ltltest/equals.test: Adjust test cases.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
a4353d3985 Trivially reduce 'a[*1]' to 'a'.
* src/ltlast/bunop.cc (bunop::instance): Here.
* src/ltlast/bunop.hh, doc/tl/tl.tex: Document it.
* src/ltltest/equals.test: Test it.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
abaf102746 Get rid of bunop::Equal and bunop::Goto.
* src/ltlast/bunop.hh, src/ltlast/bunop.cc, src/ltlvisit/randomltl.cc,
src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc,
src/tgbaalgos/ltl2tgba_fm.cc: Remove all traces of these two
operators since they are not handled like sugar.
* doc/tl/tl.tex: Adjust documentation to reflect the fact that these
two operators are sugar.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
412f946ac0 Use []=> and <>=> as sugar in the output when possible.
* src/ltlast/multop.hh (is_multop): Take a constant formula as input.
* src/ltlvisit/tostring.cc (to_string_visitor::visit(multop*)):
Output []=> or <>=> when the left argument of a []-> or <>-> is
a concatenation that ends in 1.
* doc/tl/tl.tex: Document this desugaring.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
955fc041ca Reduce 'a|(b&X(b U a))' to 'b U a', plus three simular rules.
* src/ltlast/multop.hh, src/ltlast/multop.cc (all_but): New method
used to simplify the removal of one element of a multop.
* src/ltlvisit/simplify.cc: Implement the new rewriting rules.
* doc/tl/tl.tex: Document them.
* src/ltltest/reduccmp.test: Test them.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
bb56c26d1c Rewrite "(Xc) M b" as "b & X(b U c)", plus three similar rules.
* src/ltlvisit/simplify.hh (ltl_simplifier_options): New option
reduce_size_stricly.
* src/ltlvisit/simplify.cc (simplify_visitor): Implement these
rules.
* src/ltltest/reduc.cc: Check with reduce_size_strictly unset or
set, but only use the latter result to check sizes.
* src/ltltest/reduccmp.test: Test them.
* doc/tl/tl.tex: Document them.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
1ddafc1cb4 Move the U,W,R,M equivalences to an appendix.
* doc/tl/tl.tex (Other Equivalences): Move...
(Defining LTL with only one of $\U$, $\W$, $\R$, or $\M$): ... here.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
e6e85999de Add new simplification rules like: "a | (Xa R b)" gives "b U a".
* src/ltlvisit/simplify.cc: Add new rules.
* doc/tl/tl.tex: Document them.
* src/ltltest/reduccmp.test: Add test cases.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
005988530e Augment the Syntactic Hierarchy Classes grammar with ->, <-> and xor.
* doc/tl/tl.tex (Syntactic Hierarchy Classes): Document the ->,
<->, and xor operators.  Also add a \phi_F class.
2012-04-28 09:34:45 +02:00
Alexandre Duret-Lutz
395793d986 Rewrite a&XGa as Ga, and a|XFa as Fa.
The actual rules are a bit more complex:
a & X(G(a&b...)&c...) = Ga & X(G(b...)&c...)
a | X(Fa | c) = F(a) | c
with the second rule being applied only if all XF can
be removed.  See the documentation for an example.

* src/ltlvisit/simplify.cc: Implement these new rules.
* doc/tl/tl.tex: Document them.
* src/ltltest/reduccmp.test: Add test cases.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
58f99203ad * doc/tl/Makefile.am: Fix timestamp issue causing distcheck failure. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
54d4a0a093 Rewrite F(a M b) as F(a & b), and G(a W b) as G(a | b).
* src/ltlvisit/simplify.cc: Implement these rules.
* src/ltltest/reduccmp.test: Add tests.
* doc/tl/tl.tex: Document them.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
212c7ebdd7 Add implication-based rewritings from Babiak et al. (TACAS'12)
* src/ltlvisit/simplify.cc: Implement them here, and augment them
to support M, and W operators.
* src/ltltest/reduccmp.test: Add some tests.
* doc/tl/tl.tex (Simplifications Based on Implications): Document
these rules.
* doc/tl/tl.bib (babiak.12.tacas): New entry.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
c2ab4e781b Rewrite "a U (a&b)" as "b M a", and "a W (a&b)" as "b R a".
* src/ltlvisit/simplify.cc (simplify_visitor): Implement these
rules.
* doc/tl/tl.tex: Document these rules.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
55a1c6c12f Fix compilation of tl.tex in VPATH builds.
* doc/tl/Makefile.am (LATEXMK): Set BIBINPUTS for VPATH builds.
(EXTRA_DIST): Distribute tl.tex and tl.bib.
($(srcdir)/tl.pdf): Fix update in srcdir.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
dd52768932 Support the PSL syntax [*1:inf], as a synonym for [*1:].
* src/ltlparse/ltlscan.ll: Parse "inf" as OP_UNBOUNDED.
* src/ltltest/equals.test: Add some tests.
* doc/tl/tl.tex: Document it.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
d0a8e6d6f5 * doc/tl/Makefile.am (LATEXMK): Support an older version of latexmk. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
8c077b662d * doc/tl/tl.tex: Various minor improvements. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
2c37367075 * doc/tl/tl.tex: More text for the temporal hierarchy. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
dc5a0620b7 * doc/tl/tl.tex: Fix trivial identities for AndNLM. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
9e92267c70 more files to ignore 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
fef1547bc3 Use `SERE' consistently. Add more references.
* doc/tl/tl.tex: Replace all occurrences of ``rational
[expression]'' by SERE.  Add a couple of more notes and
bibliographic references.
* doc/tl/tl.bib: More entries.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
b03935a4cf Simplify {r1;b1}&&{r2;b2} or {b1:r1}&&{b2:r2}, or similar.
* src/ltlvisit/simplify.cc: Add four rules.
* doc/tl/tl.tex: Document these rules.
* src/ltltest/reduccmp.test: Add tests.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
2a4f181737 * doc/tl/tl.tex: Fix footnote the the property table. 2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
614810c0db Simplify {b && {r1;...;rn}}.
* doc/tl/tl.tex: Document the rules.
* src/ltlvisit/simplify.cc (simplify_visitor): Implement them.
* src/ltltest/reduccmp.test: Test them.
2012-04-28 09:34:44 +02:00
Alexandre Duret-Lutz
d0cfd44ba6 Simplify {b && {r1:...:rn}} as {b && r1 && ... && rn}.
* src/ltlvisit/simplify.cc (simplify_visitor): Do it.
* src/ltltest/reduccmp.test: Add a test.
* doc/tl/tl.tex: Document it.
* src/ltlast/multop.cc: Fix the computation of is.accepting_eword
for Fusion.  The Fusion operator never accepts [*0].
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
77084747b9 Simplify {b && r[*]} as {b && r}; likewise for [->] and [=].
* src/ltlvisit/simplify.cc (simplify_visitor): Do it.
* src/ltltest/reduccmp.test: Add more tests.
* doc/tl/tl.tex: Document it.
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
e61c01b826 * doc/tl/tl.tex: Document operator precedence. 2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
2f46267117 Use latexmk to build tl.tex.
* doc/tl/Makefile.am: Rewrite using latexmk instead of texi2dvi.
Also define the SpotVersion when calling latexmk, not in tl.tex.
* doc/tl/tl.tex: Assume SpotVersion is defined outside the file.
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
f68f639e68 Rewrite {b}<>->f as (!b)|f instead of b->f.
* src/ltlast/binop.cc, src/ltlast/binop.hh: Here.
* doc/tl/tl.tex, src/ltltest/equals.test: Adjust.
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
77d704ea9e Add trivial identity {b}=b and !{b}=!b for any Boolean formula b.
* src/ltlast/unop.cc: Perform the simplification.
* src/ltlast/unop.hh, doc/tl/tl.tex: Document it.
* src/ltltest/equals.test: Adjust test cases.
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
c483053a85 Add documentation for temporal logic operators.
* doc/tl/Makefile.am, doc/tl/tl.tex, doc/tl/tl.bib: New files.
* doc/Makefile.am (SUBDIRS): Recurse into tl/.
* configure.ac: Output doc/tl/Makefile
* README: Describe doc/tl/.
2012-04-28 09:34:43 +02:00
Alexandre Duret-Lutz
6b503d43a9 Remove spotref.pdf.
* doc/Doxyfile.in: Do not generate LaTeX output.
* doc/Makefile.am: Do not build spotref.pdf.
* NEWS, README: Adjust.
2011-11-28 15:22:48 +01:00
Alexandre Duret-Lutz
dd0f01fe03 more files to ignore 2011-01-27 21:47:47 +01:00
Alexandre Duret-Lutz
ca1bec3093 * doc/Makefile.am ($(srcdir)/stamp): Do not depend on dot
explicitly, otherwise the documentation is always built and
distcheck fails.
2010-01-31 21:48:29 +01:00
Alexandre Duret-Lutz
5b87fa628d Build doxygen pictures with libgd to reduce their size.
Doxygen only knows how to call dot with -Tpng, while using
-Tpng:gd produces pictures that are 10 times smaller.  Use a
simple wrapper around dot to simplify this.

* doc/dot.in: New file, that wrap the system's dot and replace
-Tpng by -Tpng:gd.
* doc/Makefile.am ($(srcdir)/stamp): Depend on dot.
* doc/Doxyfile.in: Update to 1.6.2.
(DOT_PATH): Set to @srcdir@ to use doc/dot instead of the
system's dot.
* configure.ac: Find the absolute path of dot, and generate
the doc/dot script.
2010-01-31 20:26:27 +01:00
Alexandre Duret-Lutz
5ef7084b61 Add .gitignore files 2008-03-14 16:59:32 +01:00
Alexandre Duret-Lutz
c06c95c4f1 * doc/Doxyfile.in (LATEX_HIDE_INDICES): Do not generate indices
until Doxygen is fixed.  Doxygen 1.5.5 generate incorrect LaTeX
code.
2008-03-11 15:07:09 +01:00
Alexandre Duret-Lutz
82583754cd * NEWS, configure.in: Bump version to 0.4.
* HACKING, INSTALL, doc/Doxyfile.in, lbtt/INSTALL: Update to newer
tools.
2008-02-25 14:37:53 +01:00
Alexandre Duret-Lutz
98236cf656 * doc/Makefile.am (doc, $(srcdir)/stamp): Ignore rm's errors. 2005-04-13 16:28:10 +00:00
Alexandre Duret-Lutz
9e7138d9ab * doc/mainpage.dox: More text, and a link to "Modules". 2005-01-29 16:47:01 +00:00
Alexandre Duret-Lutz
b054139e6d * doc/Doxyfile.in (FILE_PATTERNS): Remove *.hxx.
* src/sanity/80columns.test, src/sanity/style.test: Process *.hxx files.
* src/tgbaalgos/ndfs_result.hh: Rename as ..
* src/tgbaalgos/ndfs_result.hxx: ... this, so it does not get
documented (and so Doxygen do not complain).
* src/tgbaalgos/magic.cc, src/tgbaalgos/se05.cc, src/tgbaalgos/tau03.cc,
src/tgbaalgos/tau03opt.cc: Adjust include.
* src/tgbaalgos/Makefile.am: Rename ndfs_result.hh as ndfs_result.hxx
and do not install it, this is a private header.
2005-01-03 17:39:43 +00:00
Alexandre Duret-Lutz
685c23a756 * doc/Doxyfile.in: Update for Doxygen 1.4.0, set
DOT_MULTI_TARGETS, and disable GROUP_GRAPH (it causes segfault).
* src/tgbaparse/public.hh (format_tgba_parse_errors): Complete
Doxygen comment.
2005-01-03 16:40:15 +00:00
Alexandre Duret-Lutz
988dbbd367 * doc/Doxyfile.in (EXCLUDE_SYMLINKS): Set to YES, since we have no
legitimate symlink in our source tree.  Requested by Akim Demaille.
2004-12-20 13:35:33 +00:00
Alexandre Duret-Lutz
36aadba740 * src/ltlast/atomic_prop.hh, src/ltlast/binop.hh,
src/ltlast/constant.hh, src/ltlast/formula.hh,
src/ltlast/multop.hh, src/ltlast/refformula.hh,
src/ltlast/unop.hh, src/ltlast/visitor.hh, src/ltlenv/declenv.hh,
src/ltlenv/defaultenv.hh, src/ltlenv/environment.hh,
src/ltlparse/public.hh, src/ltlvisit/apcollect.hh,
src/ltlvisit/basicreduce.hh, src/ltlvisit/clone.hh,
src/ltlvisit/destroy.hh, src/ltlvisit/dotty.hh,
src/ltlvisit/dump.hh, src/ltlvisit/length.hh,
src/ltlvisit/lunabbrev.hh, src/ltlvisit/nenoform.hh: Add Doxygen
groups for LTL algorithms and types.
* doc/Makefile.am (fast-doc): New target.
2004-11-17 16:23:40 +00:00