ChangeLog 114 KB
Newer Older
1
2
3
4
5
6
7
8
9
2004-03-25  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/misc/freelist.cc (free_list::remove): Work around
	invalidated iterators.
	* tgba/bdddict.cc (unregister_variable): New methods,
	extracted from ...
	(bdd_dict::unregister_all_my_variables): ... here.
	* tgba/bdddict.hh (unregister_variable): Declare them.

10
11
2004-03-23  Alexandre DURET-LUTZ  <adl@src.lip6.fr>

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
	* src/misc/freelist.hh (free_list::remove, free_list::insert): New
	methods.
	* src/misc/freelist.cc (free_list::register_n,
	free_list::releases_n): Rewrite using free_list::remove and
	free_list::insert.
	(free_list::remove, free_list::insert): New methods.
	* src/tgba/bdddict.hh (bdd_dict::register_anonymous_variables):
	New method.
	(bdd_dict::annon_free_list): New subclass.
	(bdd_dict::free_annonymous_list_of_type_of): New attribute.
	* src/tgba/bdddict.cc (bdd_dict::register_all_variables_of,
	bdd_dict::unregister_all_my_variables): Handle anonymous variables
	too.
	(bdd_dict::register_anonymous_variables,
	bdd_dict::annon_free_list::annon_free_list,
	bdd_dict::annon_free_list::extend): New methods.

29
30
31
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::accepting_path)
	Fix handling of PATH when backtracking.  Report from Soheib Baarir.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2004-03-18  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	Move the free_list management into a separate class for reuse.

	* src/misc/freelist.hh, src/misc/freelist.cc: New files.
	* src/misc/Makefile.am (misc_HEADERS, libmisc_la_SOURCES): Add them.
	* src/misc/bddalloc.hh (bdd_allocator): Inherit from free_list and
	make dump_free_list visible.
	* src/misc/bddalloc.cc (bdd_allocator::allocate_variables): Move
	all the code into free_list::register_n() and
	bdd_allocator::extend(), and call the former.
	(bdd_allocator::release_variables): Move all the code into
	free_list::release_n() and call it.
	(bdd_allocator::extend): New method.
	* src/tgba/bdddict.cc (bdd_dict::dump): Call dump_free_list;

48
49
50
51
2004-03-09  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* configure.ac, NEWS: Bump version to 0.0s.

52
53
2004-03-08  Alexandre Duret-Lutz  <adl@src.lip6.fr>

54
55
	* configure.ac, NEWS: Bump version to 0.0r.

56
57
58
59
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm) <exprop>: Do not
	blindly enumerate all combinations of atomic properties; initially
	set all_props to the set of all possibly satisfiable combinations.

60
61
2004-02-21  Alexandre Duret-Lutz  <adl@src.lip6.fr>

62
63
64
	* lbtt/src/Makefile.am (lbtt_translate_SOURCES): Fix leftover
	from 1.0.3 merge.

65
66
	* wrap/python/cgi/ltl2tgba.in: Process ltl2tgba.opt if it exists.

67
68
	* wrap/python/cgi/ltl2tgba.in: Color translators and their options.

69
70
2004-02-20  Alexandre Duret-Lutz  <adl@src.lip6.fr>

71
72
	* wrap/python/cgi/ltl2tgba.in: Present the options in a table.

73
74
75
76
	* wrap/python/cgi/ltl2tgba.in: Remove the "print dot" options,
	add a "dot source" source behind each picture instead.  Do
	not run `dot' on big automata.

77
78
79
80
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Fix example
	in comment.  Skip false transitions, and do not compute
	sub-formulae reachable only via false transitions.

81
82
83
84
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Revert
	yesterday's change.  This optimization is NOT covered by exprop.
	In fact it could be generalized.

85
86
2004-02-19  Alexandre Duret-Lutz  <adl@src.lip6.fr>

87
88
89
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Remove the
	cond_for_true optimization.  It is covered by exprop.

90
91
92
	* src/tgba/tgbatba.cc (tgba_tba_proxy_succ_iterator::current_state):
	Fix reference to Oddoux's thesis.

93
94
2004-02-16  Alexandre Duret-Lutz  <adl@src.lip6.fr>

95
96
97
98
99
100
101
102
	* src/tgbaalgos/ltl2tgba_fm.hh (ltl_to_tgba_fm): Add the
	symb_merge argument.
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Likewise.
	* src/tgbatest/ltl2tgba.cc (main): Rename -fx as -x, and add -y
	to unset symb_merge.
	* wrap/python/cgi/ltl2tgba.in: Remove the exprop version
	of the FM translator, make exprop and symb_merge options.

103
104
105
106
107
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <unop::G>:
	suppress the GFy optimisation introduced on 2003-11-26, it is
	generalized by the identification of states with same symbolic
	rewriting introduced on 2004-02-02.

108
109
	* lbtt/: Merge lbtt 1.0.3.

110
111
112
113
114
2004-02-13  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/tgbatest/ltl2baw.pl (END): Ensure LTL2TGBA is always
	closed.

115
116
117
118
119
120
121
122
123
124
125
2004-02-11  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/tgbatest/ltl2tgba.cc (syntax): Recognize "-" as input
	filename for the formula.  Merge the transitions of automata
	read with -X.
	* src/tgbatest/spotlbtt.test: Add many disabled algorithms.
	It is convenient to reuse the `config' file created by this
	test when making statistics.
	* src/tgbatest/ltl2baw.pl: New file.
	* src/tgbatest/Makefile.am (EXTRA_DIST): Add ltl2baw.pl.

126
127
2004-02-10  Alexandre Duret-Lutz  <adl@src.lip6.fr>

128
129
130
	* wrap/python/libpy.c: Update from Swig 1.3.21.
	* HACKING: Update versions.

131
132
133
134
135
136
137
138
139
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Take an exprop
	argument.  Consider all possible combinations of propositions when
	generating arcs.  Suggested by Jean-Michel Couvreur.
	* src/tgbaalgos/ltl2tgba_fm.hh (ltl_to_tgba_fm): Adjust.
	* src/tgbatest/ltl2tgba.cc: Honor -fx.
	* src/tgbatest/spotlbtt.test: Exercise -fx.
	* wrap/python/cgi/ltl2tgba.in: Support Couvreur/FM with exploded
	properties.

140
141
2004-02-09  Alexandre Duret-Lutz  <adl@src.lip6.fr>

142
143
	* src/ltlparse/ltlparse.yy: Typo.

144
145
146
147
148
	* wrap/python/cgi/ltl2tgba.in: Use render_dot when
	showing formula.
	* wrap/python/cgi/README: Mention unique_id.

2004-02-08  Alexandre Duret-Lutz  <adl@src.lip6.fr>
149
150
151
152
153
154
155
156
157
158
159
160
161
162

	This should help getting accurate statistics (on both the
	formula automaton and the synchronized product) from LBTT.
	Idea from Jean-Michel Couvreur.

	* src/tgbaalgos/lbtt.cc (nonacceptant_lbtt_bfs): New class.
	(nonacceptant_lbtt_reachable): New function.
	* src/tgbaalgos/lbtt.hh (nonacceptant_lbtt_reachable): New
	function.
	* src/tgbatest/ltl2tgba.cc (main): Call nonacceptant_lbtt_reachable
	if the -T option is used.
	* src/tgbatest/spotlbtt.test: Setup the -T variants, disabled by
	default.

163
164
2004-02-05  Alexandre Duret-Lutz  <adl@src.lip6.fr>

165
166
	* src/tgbaalgos/lbtt.hh: Typos.

167
168
	* src/tgbatest/spotlbtt.test: Typo.

169
170
171
172
173
174
	* wrap/python/spot.i (unblock_signal): New function.
	* wrap/python/cgi/ltl2tgba.in (print_footer, alarm_handler)
	(reset_alarm): New functions.  Kill the script and its
	children if it runs for too long.
	(render_dot): Call reset_alarm.

175
176
2004-02-03  Alexandre Duret-Lutz  <adl@src.lip6.fr>

177
178
	* configure.ac, NEWS: Bump version to 0.0q.

179
180
	* configure.ac, NEWS: Bump version to 0.0p.

181
182
183
184
	* wrap/python/cgi/ltl2tgba.in: Fix <table> setting to cope
	with IE, Safari, konqueror, ... None of these support
	rules="groups" frame="border" properly (Mozilla is OK).

185
186
187
2004-02-02  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* wrap/python/cgi/ltl2tgba.in: Output a description of the syntax.
188

189
190
191
	* wrap/python/cgi/ltl2tgba.in: Import spot and redirect stderr
	to stdout early.

192
193
194
	* wrap/python/cgi/ltl2tgba.in (print_stats): Compute and display
	the number of acceptance conditions.

195
196
197
198
199
	* 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: Specify coding system to
	accommodate newer Python versions.

200
201
202
203
204
	* src/misc/bddalloc.hh: Make all methods public.
	* wrap/python/spot.i: Include misc/bddalloc.hh and misc/minato.hh.
	* wrap/python/tests/minato.py: New file.
	* wrap/python/tests/Makefile.am (TESTS): Add minato.py.

205
206
207
208
209
210
	* src/tgbatest/explicit.cc, src/tgbatest/explprod.cc,
	src/tgbatest/ltl2tgba.cc, src/tgbatest/ltlprod.cc,
	src/tgbatest/mixprod.cc, src/tgbatest/powerset.cc,
	src/tgbatest/readsave.cc, src/tgbatest/tgbaread.cc,
	src/tgbatest/tripprod.cc: Add missing copyright license.

211
212
213
214
	* wrap/python/cgi/ltl2tgba.in (render_dot): Render .png directly
	with dot, without using convert.
	* wrap/python/cgi/README: Do not mention convert.

215
216
217
	* wrap/python/cgi/ltl2tgba.in (render_dot, render_automaton)
	(render_bdd): New functions, extracted from the rest of the code.

218
219
220
221
	* wrap/python/cgi/ltl2tgba.in (default_translator): Default
	to trans_fm.
	(translators): Show trans_fm before trans_lacim.

222
223
224
225
	* wrap/python/cgi/ltl2tgba.in (print_stats): New function.  Call
	it to display the size of the generalized and degeneralized
	automata.

226
227
228
229
230
	* src/tgbalagos/stats.hh, src/tgbalagos/stats.cc: New files.
	* src/tgbalagos/Makefile.am: Add them.
	* wrap/python/spot.i: Include src/tgbalagos/dupexp.hh and
	src/tgbalagos/stats.hh

231
232
233
234
235
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Identify states
	with identical successors.  This optimizes the translation
	of `a R (b R c)', for instance.
	* src/tgbatest/ltl2tgba.test: Add two new tests.

236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
	Hide the tgba_gspn and tgba_gspn_eesrg classes.  Offer the
	corresponding automaton via the automaton() method of the
	gspn_interface and gspn_eesrg_interface classes.

	* iface/gspn/gspn.hh (gspn_interface::gspn_interface): Take dict and
	env arguments.
	(gspn_interface::automaton): New method.
	(tgba_gspn): Move all the declaration ...
	* iface/gspn/gspn.cc (tgba_gspn): ... here.
	(gspn_interface::automaton): Implement it.
	* iface/gspn/eesrg.hh (gspn_eesrg_interface::gspn_eesrg_interface):
	Take dict and env arguments.
	(gspn_eesrg_interface::automaton): New method.
	(tgba_gspn_eesrg): Move all the declaration ...
	* iface/gspn/gspn.cc (tgba_gspn_eesrg): ... here.
	(gspn_eesrg_interface::automaton): Implement it.
	* iface/gspn/dottygspn.cc, iface/gspn/dottyeesrg.cc,
	iface/gspn/ltlgspn.cc: Adjust.

255
256
257
258
259
2004-01-30  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/ltlvisit/tostring.cc: Fix output of F0, F1, G0, G1, X0, and X1.
	* src/ltltest/tostring.test: Test these.

260
261
2004-01-29  Alexandre Duret-Lutz  <adl@src.lip6.fr>

262
263
264
265
266
267
268
269
270
271
	* src/tgba/tgbaexplicit.cc (tgba_explicit::get_acceptance_condition):
	Do not treat true and false specially.  Otherwise it breaks
	translation of F(false).
	* src/tgbatest/explprod.test, src/tgbatest/tripprod.test: Do not
	use true as acceptance condition.

	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor): Use Acc[b] as
	acceptance condition for Fb, not Acc[Fb].

	After this change, degeneralized automata are 40% smaller
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
	in LBTT's statistics.

	* src/tgba/tgbatba.cc (state_tba_proxy): Store an iterator,
	pointing somewhere into the acceptance conditions list, instead of
	an acceptance condition.
	(state_tba_proxy::acceptance_iterator): New method.
	(tgba_tba_proxy_succ_iterator): Adjust to use iterators too.
	(tgba_tba_proxy_succ_iterator::current_state): If the current
	transition is in several consecutive acceptance steps after the
	expected one, advance many steps at once.
	(tgba_tba_proxy::tgba_tba_proxy): Build the acceptance cycle
	as a list, not a map.
	(tgba_tba_proxy::get_init_state, tgba_tba_proxy::succ_iter):
	Adjust.
	* src/tgba/tgbatba.hh (tgba_tba_proxy::acc_cycle_): Declare as
	a list, not a map.

289
290
2004-01-26  Alexandre Duret-Lutz  <adl@src.lip6.fr>

291
292
293
294
295
	* src/tgbaalgos/magic.cc (magic_search::~magic_search): Release
	all iterators on the stack.
	(magic_search::check): Release iterators that are popped off the
	stack.

296
297
	* src/tgbatest/explpro2.test: Fix reordering regex.

298
299
	* src/tgbatest/defs.in (run): Use libtool --mode=execute.

300
301
2004-01-23  Alexandre Duret-Lutz  <adl@src.lip6.fr>

302
303
304
305
306
307
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Merge transitions
	with same destination and acceptance conditions directly, without
	calling a->merge_transition().  If one transitions goes to "True",
	subtract its conditions from all other transitions; this optimizes
	a U b.

308
309
310
311
312
	* src/ltlast/refformula.hh (ref_formula::ref_count_): New method.
	* src/ltlast/refformula.cc (ref_formula::ref_count_): New method.
	* src/ltlast/atomic_prop.hh (atomic_prop::dump_instance): New method.
	* src/ltlast/atomic_prop.cc (atomic_prop::dump_instance): New method.

313
314
	* src/tgbaalgos/ltl2tgba_fm.cc: Typos in comments.

315
316
2004-01-13  Alexandre Duret-Lutz  <adl@src.lip6.fr>

317
318
	* configure.ac, NEWS: Bump version to 0.0o.

319
320
321
	* configure.ac: Bump version to 0.0n.
	* NEWS: Update.

322
323
324
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::check,
	emptiness_check::check2): Document them.

325
326
327
328
2004-01-12  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* iface/gspn/ltlgspn.cc (main): Typo, use MIN_ARG.

329
330
2004-01-09  Alexandre Duret-Lutz  <adl@src.lip6.fr>

331
332
333
	* iface/gspn/dcswaveeltl.test, iface/gspn/udcsefm.test,
	iface/gspn/udcseltl.test: Exercize -e2.

334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::check2):
	New function, variant of emptiness_check::check().
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::check2):
	Likewise.
	* src/tgbatest/emptchk.test, src/tgbatest/emptchke.test: Exercize -e2.
	* src/tgbatest/ltl2tgba.cc: Support -e2, for emptiness_check::check2().
	* iface/gspn/Makefile.am [WITH_GSPN_EESRG] (check_PROGRAMS):
	Compile ltlgspn-eesrg instead of ltleesrg.
	(ltleesrg_SOURCES, ltleesrg_LDADD): Replace by...
	(ltlgspn_eesrg_SOURCES, ltlgspn_eesrg_LDADD, LIBGSPNESRG_LDFLAGS):
	... these.
	* iface/gspn/ltleesrg.cc: Delete.
	* iface/gspn/ltlgspn.cc [EESRG]: Support EESRG conditionally.
	Support -e2.

349
350
	* src/tgbaalgos/ltl2tgba_lacim.cc: Typo in comment.

351
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::check): Typos
352
353
	in comments.

354

355
356
357
358
359
360
361
362
	* m4/gspnlib.m4 (AX_CHECK_GSPNLIB): Do not warn about a missing
	library for eesrg.  Define the WITH_GSPN_EESRG conditional.
	* iface/gspn/Makefile.am (gspn_HEADERS, check_PROGRAMS): Add the
	eesrg items in condition WITH_GSPN_EESRG.
	(libspotgspneesrg_la_LIBADD, libspotgspneesrg_la_CPPFLAGS)
	(libspotgspneesrg_la_SOURCES): Define only in condition
	WITH_GSPN_EESRG.

363
364
365
366
367
368
369
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::print_stats):
	New function.
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::print_stats):
	Likewise.
	* iface/gspn/ltlgspn.cc (main) <Couvreur>: Call print_stats().
	* iface/gspn/ltleesrg.cc (main): Likewise.

370
371
	* iface/gspn/ltlgspn.cc: Add option -P.

372
373
374
375
376
377
378
379
380
381
382
383
2004-01-08  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	Run valgrind in test cases.
	* src/tgbatest/defs.in (VALGRIND, run): Define.
	* src/tgbatest/bddprod.test, src/tgbatest/dupexp.test,
	src/tgbatest/emptchk.test, src/tgbatest/emptchke.test,
	src/tgbatest/explicit.test, src/tgbatest/explpro2.test,
	src/tgbatest/explpro3.test, src/tgbatest/explprod.test,
	src/tgbatest/ltl2tgba.test, src/tgbatest/ltlprod.test,
	src/tgbatest/mixprod.test, src/tgbatest/readsave.test,
	src/tgbatest/tgbaread.test, src/tgbatest/tripprod.test: Use run().

384
385
2004-01-06  Alexandre Duret-Lutz  <adl@src.lip6.fr>

386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
	* iface/gspn/eesrg.cc (format_state): Do not rewrite \n's,
	just strip the last one.  Escaping must be done at output.
	* iface/gspn/gspm.cc (format_state): Likewise.
	* src/misc/escape.hh, src/misc/escape.cc: New files.
	* src/misc/Makefile.am: Add them.
	* src/tgba/bddprint.cc (bdd_format_accset): New function.
	* src/tgba/bddprint.hh (bdd_format_accset): New function.
	* src/tgbaalgos/dotty.cc (dotty_bfs::process_state):
	Escape the state name using escape_str().
	(dotty_bfs::process_link): Escape conditions and acceptance
	conditions using escape_str().
	* src/tgbaalgos/save.cc (save_bfs::start): Call print_acc().
	(save_bfs::print_acc): New function extracted from save_bfs::start().
	Escape each acceptance condition.
	(save_bfs::process_state): Use escape_str() and print_acc()

402
403
404
405
406
407
408
409
	* src/ltlvisit/tostring.cc
	(to_string_visitor::visit(const atomic_prop*)): Quote propositions
	that start with F, G, or X.
	* src/ltltest/tostring.test: Test quoted propositions.
	* src/tgbaalgos/save.cc (save_bfs::process_state): Escape " and \
	characters in formulae.
	* src/tgbatest/readsave.test: Test for this.

410
411
	* src/tgbaalgos/reachiter.hh: Typos in comments.

412
413
414
415
	* iface/gspn/eesrg.cc (tgba_gspn_eesrg::all_acceptance_conditions,
	tgba_gspn_eesrg::neg_acceptance_conditions): Forward to
	data_->operand.

416
417
418
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::complete_cycle):
	Do not skip this computation if from == to but the period is empty.

419
420
421
	* iface/gspn/eesrg.cc (state_gspn_eesrg::clone): Clone the right
	state.

422
423
424
	* iface/gspn/ltleesrg.cc: Emptinesscheck the full product, not
	the control automaton.

425
426
427
	* iface/gspn/eesrg.cc (tgba_gspn_eesrg::project_state): New method.
	* iface/gspn/eesrg.hh: Likewise.

428
429
2004-01-05  Alexandre Duret-Lutz  <adl@src.lip6.fr>

430
431
432
433
434
435
	* src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh: New files.
	* src/tgbaalgos/Makefile.am: Add them.
	* src/tgbatest/powerset.cc: New file.
	* src/tgbatest/Makefile.am: Construct powerset and expldot from
	powerset.cc.

436
437
438
439
	* src/tgbaalgos/reachiter.cc (tgba_reachable_iterator::run)
	Reuse s->second to avoid a hash lookup.
	* src/tgbaalgos/save.cc (save_bfs::process_state): Delete dest.

440
441
442
443
444
	* src/ltlparse/Makefile.am ($(FROM_LTLPARSE_YY_MAIN)):
	Use $(FROM_LTLPARSE_YY_MAIN), not $@, because $@ can contains
	VPATH and we do not want Bison to see absolute paths.
	* src/tgbaparse/Makefile.am ($(FROM_TGBAPARSE_YY_MAIN)): Likewise.

445
446
447
448
449
	* src/ltltest/parseerr.test: Adjust.
	* src/ltlparse/ltlparse.yy: Simplify error handling now that Bison
	will call destructors.  Give each operator a full name, so that
	Bison uses it in error messages.

450
451
2003-12-30  Alexandre Duret-Lutz  <adl@src.lip6.fr>

452
453
454
455
	* iface/gspn/ltleesrg.cc: New file.
	* iface/gspn/Makefile.am (check_PROGRAMS): Add ltleesrg.
	(ltleesrg_LDADD, ltleesrg_SOURCES): New variables.

456
	* src/ltltest/defs.in (run): Rerun valgrind with --leak-check=yes.
457
458
	* src/ltlparse/ltlparse.yy: Add `%destructor's.

459
460
2003-12-29  Alexandre Duret-Lutz  <adl@src.lip6.fr>

461
462
463
464
465
466
467
468
469
470
471
	* src/ltltest/defs.in (run): New function, run valgrind.
	* src/ltltest/equals.test, src/ltltest/lunabbrev.test,
	src/ltltest/nenoform.test, src/ltltest/parse.test,
	src/ltltest/parseerr.test, src/ltltest/tostring.test,
	src/ltltest/tunabbrev.test, src/ltltest/tunenoform.test: Use run().
	* Makefile.am (EXTRA_DIST): Don't list the m4/*.m4 files,
	Automake 1.8 find them automatically.
	* configure.ac: Require Automake 1.8, in gnits mode, and check
	for valgrind.
	* THANKS: New empty file.

472
473
474
475
476
	* doc/Doxyfile.in: Upgrade to Doxygen 1.3.5.  Build
	documentation for iface/.
	* dox/mainpage.dox: Fix reference to ltl_to_tgba.
	* src/ltlenv/environment.hh: Typo.

477
478
479
480
481
482
483
484
2003-12-03  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh
	(tgba_explicit::merge_transitions): New method.
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Factorize all
	variables (not just Next and A) when computing prime implicants,
	and then call merge_transitions().

485
486
2003-12-01  Alexandre Duret-Lutz  <adl@src.lip6.fr>

487
488
	* configure.ac: Bump version to 0.0m.

489
490
491
492
	* configure.ac, NEWS: Bump version to 0.0l.
	* doc/Makefile.am ($(srcdir)/spotref.pdf): Do not assume spot.latex is
	in the srcdir.

493
494
2003-11-28  Alexandre Duret-Lutz  <adl@src.lip6.fr>

495
496
497
498
499
500
501
	* src/tgbaparse/tgbaparse.yy (cond_list): Simplify into...
	(condition): ... this.  We now accept only one condition, which
	is a formula.
	* src/tgba/tgbaexplicit.hh (tgba_explicit::add_neg_condition,
	tgba_explicit::get_condition): Remove, unused.
	* src/tgba/tgbaexplicit.cc: Likewise.

502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
	* iface/gspn/eesrg.cc, iface/gspn/eesrg.hh, iface/gspn/gspn.cc,
	iface/gspn/gspn.hh, src/tgba/bdddict.cc, src/tgba/bdddict.hh,
	src/tgba/bddprint.hh, src/tgba/succiter.hh,
	src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh,
	src/tgba/tgba.hh, src/tgba/tgbabddconcrete.cc,
	src/tgba/tgbabddconcrete.hh, src/tgba/tgbabddconcretefactory.cc,
	src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbabddcoredata.cc,
	src/tgba/tgbabddcoredata.hh, src/tgba/tgbaexplicit.cc,
	src/tgba/tgbaexplicit.hh, src/tgba/tgbaproduct.cc,
	src/tgba/tgbaproduct.hh, src/tgba/tgbatba.cc, src/tgba/tgbatba.hh,
	src/tgbaalgos/dotty.cc, src/tgbaalgos/dupexp.cc,
	src/tgbaalgos/emptinesscheck.cc, src/tgbaalgos/emptinesscheck.hh,
	src/tgbaalgos/lbtt.cc, src/tgbaalgos/lbtt.hh,
	src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc,
	src/tgbaalgos/save.cc, src/tgbatest/explicit.cc,
	src/tgbatest/ltl2tgba.cc, src/tgbaparse/tgbaparse.yy,
	wrap/python/tests/ltl2tgba.py:
	Rewrite `accepting condition' as `acceptance condition'.
	The symbols which have been renamed are:
	tgba::all_accepting_conditions
	tgba::neg_accepting_conditions
	succ_iterator::current_accepting_conditions
	bdd_dict::register_accepting_variable
	bdd_dict::register_accepting_variables
	bdd_dict::is_registered_accepting_variable
	tgba_bdd_concrete_factory::declare_accepting_condition
	tgba_bdd_core_data::accepting_conditions
	tgba_bdd_core_data::all_accepting_conditions
	tgba_explicit::declare_accepting_condition
	tgba_explicit::complement_all_accepting_conditions
	tgba_explicit::has_accepting_condition
	tgba_explicit::get_accepting_condition
	tgba_explicit::add_accepting_condition
	tgba_explicit::all_accepting_conditions
	tgba_explicit::neg_accepting_conditions
	state_tba_proxy::acceptance_cond
	accepting_cond_splitter

540
541
2003-11-26  Alexandre Duret-Lutz  <adl@src.lip6.fr>

542
543
544
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <G>:
	Optimize translation of GFy.

545
546
547
548
549
550
551
	* src/tgba/bddprint.cc (print_accset_handler, bdd_print_accset): New
	functions.
	* src/tgba/bddprint.cc (bdd_print_accset): Declare it.
	* src/tgbaalgos/dotty.cc (dotty_bfs::process_link): Use it.
	* src/tgbatest/tgbaread.test, src/tgbatest/explicit.test: Adjust
	expected output.

552
553
554
555
556
2003-11-25  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/tgbaparse/tgbaparse.yy: Remove a random character.
	* src/tgba/formula2bdd.cc: Include cassert.

557
558
2003-11-24  Alexandre Duret-Lutz  <adl@src.lip6.fr>

559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
	Explicit automata can now have arbitrary logic formula on their
	arcs.  ltl2tgba_fm benefits from this and join multiple arcs with
	the same destination and acceptance conditions.
	* src/tgba/formula2bdd.cc, src/tgba/formula2bdd.hh: New files.
	* src/tgba/Makefile.am (tgba_HEADERS, libtgba_la_SOURCES): Add them.
	* src/tgba/bddprint.cc, src/tgba/bddprint.hh (bdd_pring_formula,
	bdd_format_formula): New functions.
	* src/tgba/tgbaexplicit.hh (tgba_explicit::get_condition,
	tgba_explicit::add_condition, tgba_explicit::add_neg_condition,
	tgba_explicit::declare_accepting_condition,
	tgba_explicit::has_accepting_condition,
	tgba_explicit::get_accepting_condition,
	tgba_explicit::add_accepting_condition): Take a const formula*.
	* src/tgba/tgbaexplicit.cc (tgba_explicit::add_condition):
	Rewrite using formula_to_bdd.
	* src/tgbaalgos/dotty.cc (dotty_bfs::process_link): Use
	bdd_print_formula to display conditions.
	* src/tgbaalgos/save.cc (save_bfs::process_state): Likewise.
	* src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::bdd_to_formula):
	New function.
	(translate_dict::conj_bdd_to_atomic_props): Remove.
	(ltl_to_tgba_fm): Factor successors on accepting conditions
	and destinations, not conditions.  Use bdd_to_formula to translate
	the conditions.
	* src/tgbaparse/tgbaparse.yy: Expect conditions as a formula
	in a string, call the LTL parser for this.
	* src/tgbaparse/tgbascan.ll: Process \" and \\ escapes in
	strings.
	* src/tgbatest/emptchke.test, src/tgbatest/explicit.test,
	src/tgbatest/explpro2.test, src/tgbatest/explpro3.test,
	src/tgbatest/explprod.test, src/tgbatest/mixprod.test,
	src/tgbatest/readsave.test, src/tgbatest/tgbaread.test,
	src/tgbatest/tripprod.test: Adjust to new syntax for explicit
	automata.

594
595
596
597
598
599
600
	* src/misc/minato.hh (minato_isop(bdd,bdd)): New constructor variant.
	(minato_isop::local_vars::vars): New attribute.
	(minato_isop::local_vars::local_vars): Add the vars arguments.
	(minato_isop::todo, minato_isop::cube, minato_isop::ret): Rename as ...
	(minato_isop::todo_, minato_isop::cube_, minato_isop::ret_): ... these.
	* src/misc/minato.cc: Adjust to factorize only variables in vars.

601
602
603
	* m4/devel.m4: Fix quoting and simplify default setting of
	enable_devel.

604
605
2003-11-21  Alexandre Duret-Lutz  <adl@src.lip6.fr>

Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
606
607
608
	* AUTHORS: New file.
	* configure.ac (AM_INIT_AUTOMAKE): Remove `foreign' option.

Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
	* COPYING: New file.
	* Makefile.am, configure.ac, doc/Makefile.am, iface/Makefile.am,
	iface/gspn/Makefile.am, iface/gspn/common.cc,
	iface/gspn/common.hh, iface/gspn/dottyeesrg.cc,
	iface/gspn/dottygspn.cc, iface/gspn/eesrg.cc, iface/gspn/eesrg.hh,
	iface/gspn/gspn.cc, iface/gspn/gspn.hh, iface/gspn/ltlgspn.cc,
	src/Makefile.am, src/ltlast/Makefile.am, src/ltlast/allnodes.hh,
	src/ltlast/atomic_prop.cc, src/ltlast/atomic_prop.hh,
	src/ltlast/binop.cc, src/ltlast/binop.hh, src/ltlast/constant.cc,
	src/ltlast/constant.hh, src/ltlast/formula.cc,
	src/ltlast/formula.hh, src/ltlast/multop.cc, src/ltlast/multop.hh,
	src/ltlast/predecl.hh, src/ltlast/refformula.cc,
	src/ltlast/refformula.hh, src/ltlast/unop.cc, src/ltlast/unop.hh,
	src/ltlast/visitor.hh, src/ltlenv/Makefile.am,
	src/ltlenv/defaultenv.cc, src/ltlenv/defaultenv.hh,
	src/ltlenv/environment.hh, src/ltlparse/Makefile.am,
	src/ltlparse/fmterror.cc, src/ltlparse/ltlparse.yy,
	src/ltlparse/ltlscan.ll, src/ltlparse/parsedecl.hh,
	src/ltlparse/public.hh, src/ltltest/Makefile.am,
	src/ltltest/defs.in, src/ltltest/equals.cc,
	src/ltltest/equals.test, src/ltltest/lunabbrev.test,
	src/ltltest/nenoform.test, src/ltltest/parse.test,
	src/ltltest/parseerr.test, src/ltltest/readltl.cc,
	src/ltltest/tostring.cc, src/ltltest/tostring.test,
	src/ltltest/tunabbrev.test, src/ltltest/tunenoform.test,
	src/ltlvisit/Makefile.am, src/ltlvisit/clone.cc,
	src/ltlvisit/clone.hh, src/ltlvisit/destroy.cc,
	src/ltlvisit/destroy.hh, src/ltlvisit/dotty.cc,
	src/ltlvisit/dotty.hh, src/ltlvisit/dump.cc, src/ltlvisit/dump.hh,
	src/ltlvisit/lunabbrev.cc, src/ltlvisit/lunabbrev.hh,
	src/ltlvisit/nenoform.cc, src/ltlvisit/nenoform.hh,
	src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh,
	src/ltlvisit/tostring.cc, src/ltlvisit/tostring.hh,
	src/ltlvisit/tunabbrev.cc, src/ltlvisit/tunabbrev.hh,
	src/misc/Makefile.am, src/misc/bddalloc.cc, src/misc/bddalloc.hh,
	src/misc/bddlt.hh, src/misc/hash.hh, src/misc/minato.cc,
	src/misc/minato.hh, src/misc/version.cc, src/misc/version.hh,
	src/tgba/Makefile.am, src/tgba/bdddict.cc, src/tgba/bdddict.hh,
	src/tgba/bddprint.cc, src/tgba/bddprint.hh, src/tgba/public.hh,
	src/tgba/state.hh, src/tgba/statebdd.cc, src/tgba/statebdd.hh,
	src/tgba/succiter.hh, src/tgba/succiterconcrete.cc,
	src/tgba/succiterconcrete.hh, src/tgba/tgba.cc, src/tgba/tgba.hh,
	src/tgba/tgbabddconcrete.cc, src/tgba/tgbabddconcrete.hh,
	src/tgba/tgbabddconcretefactory.cc,
	src/tgba/tgbabddconcretefactory.hh,
	src/tgba/tgbabddconcreteproduct.cc,
	src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbabddcoredata.cc,
	src/tgba/tgbabddcoredata.hh, src/tgba/tgbabddfactory.hh,
	src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh,
	src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh,
	src/tgba/tgbatba.cc, src/tgba/tgbatba.hh,
	src/tgbaalgos/Makefile.am, src/tgbaalgos/dotty.cc,
	src/tgbaalgos/dotty.hh, src/tgbaalgos/dupexp.cc,
	src/tgbaalgos/dupexp.hh, src/tgbaalgos/emptinesscheck.cc,
	src/tgbaalgos/emptinesscheck.hh, src/tgbaalgos/lbtt.cc,
	src/tgbaalgos/lbtt.hh, src/tgbaalgos/ltl2tgba_fm.cc,
	src/tgbaalgos/ltl2tgba_fm.hh, src/tgbaalgos/ltl2tgba_lacim.cc,
	src/tgbaalgos/ltl2tgba_lacim.hh, src/tgbaalgos/magic.cc,
	src/tgbaalgos/magic.hh, src/tgbaalgos/reachiter.cc,
	src/tgbaalgos/reachiter.hh, src/tgbaalgos/save.cc,
	src/tgbaalgos/save.hh, src/tgbaparse/Makefile.am,
	src/tgbaparse/fmterror.cc, src/tgbaparse/parsedecl.hh,
	src/tgbaparse/public.hh, src/tgbaparse/tgbaparse.yy,
	src/tgbaparse/tgbascan.ll, src/tgbatest/Makefile.am,
	src/tgbatest/bddprod.test, src/tgbatest/defs.in,
	src/tgbatest/dupexp.test, src/tgbatest/emptchk.test,
	src/tgbatest/emptchke.test, src/tgbatest/explicit.test,
	src/tgbatest/explpro2.test, src/tgbatest/explpro3.test,
	src/tgbatest/explprod.test, src/tgbatest/ltl2tgba.test,
	src/tgbatest/ltlprod.test, src/tgbatest/mixprod.test,
	src/tgbatest/readsave.test, src/tgbatest/spotlbtt.test,
	src/tgbatest/tgbaread.test, src/tgbatest/tripprod.test,
	wrap/Makefile.am, wrap/python/Makefile.am, wrap/python/buddy.i,
	wrap/python/spot.i, wrap/python/cgi/Makefile.am,
	wrap/python/cgi/ltl2tgba.in, wrap/python/tests/Makefile.am,
	wrap/python/tests/bddnqueen.py, wrap/python/tests/interdep.py,
	wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltl2tgba.test,
	wrap/python/tests/ltlparse.py, wrap/python/tests/ltlsimple.py,
	wrap/python/tests/run.in: Add Copyright license.

689
690
	* src/misc/minato.cc: Include cassert.

691
692
693
694
	* src/misc/minato.cc, src/misc/minato.hh: New files.
	* src/misc/Makefile.am (misc_HEADERS, libmisc_la_SOURCES): Add them.
	* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Use minato_isop.

695
696
2003-11-14  Alexandre Duret-Lutz  <adl@src.lip6.fr>

697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
	* src/ltltest/Makefile.am (AM_CXXFLAGS): New variable.
	* tgba/bdddict.hh (bdd_dict::register_propositions,
	bdd_dict::register_accepting_variables): New methods.
	* src/bdddict.cc: Likewise.
	* tgba/tgbaexplicit.cc (tgba_explicit::add_conditions,
	tgba_explicit::add_accepting_conditions): New methods.
	(tgba_explicit::get_init_state): Add an "empty" initial
	state to empty automata.
	* tgba/tgbaexplicit.hh: (tgba_explicit::add_conditions,
	tgba_explicit::add_accepting_conditions): New methods.
	* tgbaalgos/Makefiles.am (tgbaalgos_HEADERS, libtgbaalgos_la_SOURCES):
	Add dupexp.hh and dupexp.cc.
	* tgbaalgos/dupexp.hh, tgbaalgos/dupexp.cc: New files.
	* tgbatest/Makefile.am (AM_CXXFLAGS): New variable.
	(check_SCRIPTS): Add dupexp.test.
	(CLEANFILES): Add output1 and output2.
	* tgbatest/dupexp.test: New file.
	* tgbatest/ltl2tgba.cc: Handle -s and -S.
	* tgbatest/tgbaread.cc: Remove unused variable exit_code.

717
718
719
720
	* src/ltlparse/ltlscan.ll: Include ltlparse/parsedecl.hh,
	not parsedecl.hh.
	* src/tgbaparse/tgbascan.ll: Likewise, include tgbaparse/parsedecl.hh.

721
722
723
724
725
726
2003-11-13  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::complete_cycle):
	Check whether the state is in the current SCC before passing it
	to h_filt().

727
728
729
730
731
732
733
734
2003-11-07  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* iface/gspn/eesrg.cc (tgba_succ_iterator_gspn_eesrg::first_): New
	attribute.
	(tgba_succ_iterator_gspn_eesrg::step): Use first_.  Loop until
	succ returns some successors.
	Report from Soheib Baarir.

735
736
2003-11-06  Alexandre Duret-Lutz  <adl@src.lip6.fr>

737
738
739
740
741
742
	* iface/gspn/eesrg.cc (tgba_succ_iterator_gspn_eesrg::step): Fix
	the iteration logic.
	(tgba_succ_iterator_gspn_eesrg::tgba_succ_iterator_gspn_eesrg): Make
	sure not to free successors_ twice.
	(tgba_succ_iterator_gspn_eesrg::done): Fix definition.

743
744
745
746
747
	* iface/gspn/eesrg.cc (tgba_gspn_eesrg::get_init_state): Do not
	call get_init_state(), use 0 instead.
	(tgba_gspn_eesrg::format_state): Handle the case where s->left() == 0.
	Reported by Soheib Baarir.

748
749
	* src/ltlparse/ltlscan.ll: Cosmetics.

750
751
	* configure.ac: Bump version to 0.0k.

752
753
2003-11-03  Alexandre Duret-Lutz  <adl@src.lip6.fr>

754
755
756
	* iface/gspn/eesrg.cc (tgba_succ_iterator_gspn_eesrg::step):
	Really Skip unknown variables.

757
758
	* configure.ac, NEWS: Bump version to 0.0j.

759
760
761
	* iface/gspn/eesrg.cc (tgba_succ_iterator_gspn_eesrg::step):
	Skip unknown variables.

Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
762
763
764
765
	* iface/gspn/gspn.cc
	(tgba_gspn_eesrg_private_::tgba_gspn_eesrg_private_): Show prop_index()
	and prop_kind() arguments on error.

Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
766
767
768
769
	* iface/gspn/eesrg.cc
	(tgba_gspn_eesrg_private_::tgba_gspn_eesrg_private_): Show prop_index()
	argument on error.

770
771
772
773
774
775
	* src/ltlparse/Makefile.am ($(FROM_LTLPARSE_YY_MAIN)): cd into
	$(srcdir) before running bison, so that bison does not put
	absolute filenames in generated files.
	* src/tgbaparse/Makefile.am ($(FROM_TGBAPARSE_YY_MAIN)): Likewise.
	Reported by Soheib Baarir.

776
777
778
	* iface/gspn/Makefile.am (gspn_HEADERS): Add eesrg.hh.
	Reported by Soheib Baarir.

779
780
2003-10-31  Alexandre Duret-Lutz  <adl@src.lip6.fr>

781
782
783
	* README: More build instructions.
	* HACKING: Update.

784
785
786
	* doc/Makefile.am ($(srcdir)/spotref.pdf): Make sure to work in
	$(srcdir).

787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
2003-10-30  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* m4/gspnlib.m4: Define LIBGSPNESRG_LDFLAGS.
	* iface/gspn/Makefile.am (gspn_HEADERS): Add common.hh.
	(libspotgspn_la_SOURCES): Add common.cc.
	(libspotgspneesrg_la_LIBADD, libspotgspneesrg_la_CPPFLAGS)
	(libspotgspneesrg_la_SOURCES, ltlgspn_eesrg_SOURCES)
	(dotty_eesrg_LDADD, dotty_eesrg_CPPFLAGS): New variables.
	(lib_LTLIBRARIES): Add libspotgspneesrg.la.
	(check_PROGRAMS): Add dottygspn-eesrg.
	* iface/gspn/gspn.hh, iface/gspn/gspn.cc
	(gspn_exeption, operator<<(gspn_exeption), gspn_environment): Move ...
	* iface/gspn/common.hh, iface/gspn/common.cc: ... in these new files.
	* iface/gspn/eesrg.hh, iface/gspn/eesrg.cc, iface/gspn/dottyeesrg.cc:
	New files.

803
804
2003-10-28  Alexandre Duret-Lutz  <adl@src.lip6.fr>

805
806
807
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::complete_cycle):
	Simplify, comment, and free memory.

808
	* src/tgbaalgos/emptinesscheck.cc (triplet): New class.
809
810
	(emptiness_check::accepting_path): Simplify, comment,
	derecursive, and free memory...
811

812
813
2003-10-27  Alexandre Duret-Lutz  <adl@src.lip6.fr>

814
815
816
817
818
819
	* src/tgbaalgos/emptinesscheck.cc (connected_component): Split
	into ...
	(emptiness_check::connected_component,
	emptiness_check::connected_component_set): ... these.
	* src/tgbaalgos/emptinesscheck.cc: Adjust.

820
821
822
823
824
825
826
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::h_filt,
	emptiness_check::~emptiness_check) New methods.
	(emptiness_check::check): Release all iterators in todo on exit.
	(emptiness_check::counter_example): Rewrite the BFS logic.
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::h_filt,
	emptiness_check::~emptiness_check): New methods.

Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
827
828
829
830
	* src/tgba/tgbatba.cc
	(tgba_tba_proxy_succ_iterator::~tgba_tba_proxy_succ_iterator):
	Delete the proxied iterator.

831
832
833
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::counter_example):
	Remove unused tmp_last, best_lst, and tmp_acc variables.

834
835
2003-10-24  Alexandre Duret-Lutz  <adl@src.lip6.fr>

836
837
838
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::counter_example):
	Rewrite initialization.

839
840
841
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::print_result):
	Fix memory leak.

842
843
844
845
846
847
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::check):
	Simplify, reorganize, and comment.
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::root_component):
	Rename as ...
	(emptiness_check::root): ... this, to follow the paper.

848
849
850
	* src/tgbaalgos/emptinesscheck.cc: Remove some superfluous
	`emptiness_check::'.

851
852
853
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::remove_component):
	Rewrite.

854
855
2003-10-23  Alexandre Duret-Lutz  <adl@src.lip6.fr>

856
857
858
859
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::check,
	emptiness_check::counter_example): Simplify access to hashes
	after calls to find() for the same element..

860
861
862
863
864
865
866
867
	* src/tgbaalgos/emptinesscheck.hh (connected_component::set_of_state):
	Rename as ...
	(connected_component::set_type): ... this, and define as a hash_set.
	(connected_component::has_state): New method.
	* src/tgbaalgos/emptinesscheck.cc (connected_component::has_state):
	New method.
	(emptiness_check::counter_example, emptiness_check::complete_cycle,
	emptiness_check::accepting_path): Simplify using has_state().
868
869
870
871
872
873
874
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::seen_state_num):
	Rename as ...
	(emptiness_check::h): ... this, and define as a hash_map.
	(emptiness_check::remove_component): Remove superfluous state_map
	argument.
	* src/tgbaalgos/emptinesscheck.cc: Adjust.

875
876
877
	* src/tgbaalgos/emptinesscheck.hh, src/tgbaalgos/emptinesscheck.cc:
	Remove superfluous includes.

878
879
880
881
882
883
884
885
886
887
888
889
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::emptiness_check):
	New, take the automaton to work on, and store it ...
	(emptiness_check::aut_): ... in this new attribute.
	(emptiness_check::tgba_emptiness_check): Rename as ...
	(emptiness_check::check): ... this, and remove the automata
	argument.
	(emptiness_check::counter_example, emptiness_check::print_result,
	emptiness_check::remove_component, emptiness_check::accepting_path,
	emptiness_check::complete_cycle): Remove the automata argument.
	* src/tgbaalgos/emptinesscheck.cc, src/tgbatest/ltl2tgba.cc,
	iface/gspn/ltlgspn.cc: Adjust.

890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
	* src/tgbaalgos/emptinesscheck.hh (connected_component::not_null,
	connected_component::transition_acc,
	connected_component::nb_transition,
	connected_component::nb_state): Remove these unused attributes.
	(connected_component::connected_component): Merge the two
	definitions into one.
	(connected_component::~connected_component): Remove.
	(connected_component::isAccepted): Delete, unused.
	* src/tgbaalgos/emptinesscheck.cc
	(connected_component::connected_component,
	connected_component::~connected_component): Adjust.
	(connected_component::isAccepted): Delete.
	(spot):

	* src/tgbatest/emptchk.test: Typo.

906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
	* src/tgbaalgos/emptinesscheck.hh
	(emptiness_check::remove_component, emptiness_check::root_component,
	emptiness_check::seen_state_num, emptiness_check::suffix): Move in
	private part.
	(emptiness_check::arc_accepting, emptiness_check::todo): Move ...
	* src/tgbaalgos/emptinesscheck.cc
	(emptiness_check::tgba_emptiness_check): ... as local variables
	of this function.
	* src/tgbaalgos/emptinesscheck.hh (emptiness_check::vec_component):
	Move ...
	(emptiness_check::counter_example): ... as local variable of this
	function.
	* src/tgbaalgos/emptinesscheck.hh (pair_state_iter, triplet):
	Move ...
	* src/tgbaalgos/emptinesscheck.cc (pair_state_iter, triplet):
	... here.

923
924
925
	* src/tgbaalgos/emptinesscheck.cc (emptiness_check::print_result):
	Indent output as in the magic search.

926
927
	* src/tgbatest/spotlbtt.test: Add notice about long run time.

928
929
930
931
932
933
934
935
936
937
	Merge emptinesscheckexplicit into ltl2tgba.
	* src/tgbatest/Makefile.am (check_PROGRAMS): Remove
	emptinesscheckexplicit.
	(emptinesscheckexplicit_SOURCES): Remove.
	(TESTS): Replace emptinesscheckexplicit.test by emptchke.test.
	* src/tgbatest/emptinesscheckexplicit.cc,
	src/tgbatest/emptinesscheckexplicit.test: Delete.
	* src/tgbatest/empchke.test: New file.
	* src/tgbatest/ltl2tgba.cc: Add support for -X.

938
939
940
941
942
943
944
945
946
947
948
949
950
	Merge emptiness-checks tests into ltl2tgba.
	* src/tgbatest/Makefile (check_PRORGRAMS): Remove
	emptinesscheck and ltlmagic.
	(emptinesscheck_SOURCES, ltlmagic_SOURCES): Remove.
	(TESTS): Replace emptinesscheck.test and ltlmagic.test by
	emptchk.test.
	* src/tgbatest/emptinesscheck.test, src/tgbatest/ltlmagic.test:
	Delete.
	* src/tgbatest/emptchk.test: New file.
	* src/tgbatest/emptinesscheck.cc, src/tgbatest/ltlmagic.cc:
	Delete.
	* src/tgbatest/ltl2tgba.cc: Add support for -e, -E, -m, -M, and -n.

951
952
953
954
955
	* src/tgbaalgos/emptinesscheck.cc
	(emptiness_check::tgba_emptiness_check): Do not print anything.
	(emptiness_check::counter_example): Assume that tgba_emptiness_check
	has already been called.

956
957
2003-10-22  Alexandre Duret-Lutz  <adl@src.lip6.fr>

958
959
960
961
	* src/tgbaalgos/emptinesscheck.hh, src/tgbaalgos/emptinesscheck.cc
	(emptiness_check::seq_counter, emptiness_check::periode): Rename as ...
	(emptiness_check::prefix, emptiness_check::period): ... these.

962
963
964
965
	* src/tgbaalgos/emptinesscheck.cc
	(emptiness_check::tgba_emptiness_check,
	emptiness_check::accepting_path): Simplify BDD operations.

966
967
968
969
970
	* src/tgbaalgos/emptinesscheck.cc, src/tgbaalgos/emptinesscheck.hh:
	Reindent.
	(emptiness_check::~emptiness_check, emptiness_check::emptiness_check):
	Remove, unused.

971
972
973
974
975
2003-10-15  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* iface/gspn/ltlgspn.cc (main): Allow invocations with
	only one atomic proposition.

976
977
978
979
980
2003-10-14  Alexandre Duret-Lutz  <adl@src.lip6.fr>

	* src/misc/bddalloc.cc (bdd_allocator::initialize): Augment
	bdd_init()'s arguments.

981
982
2003-10-08  Alexandre Duret-Lutz  <adl@src.lip6.fr>

983
984
985
986
987
988
989
990
991
992
993
	* iface/gspn/ltlgspn.cc: Use command-line options to
	select algorithms, not #defines.
	* iface/gspn/Makefile.am (check_PROGRAMS): Remove eltlgspn-srg,
	efmgspn-srg, fmgspn-rg, and fmgspn-srg and their associated
	source variables.  These are all replaced by
	ltlgspn-rg and ltlgspn-srg.
	* iface/gspn/dcswavefm.test, iface/gspn/dcswaveltl.test,
	iface/gspn/dcswaveeltl.test, iface/gspn/udcsefm.test,
	iface/gspn/udcseltl.test, iface/gspn/udcsfm.test,
	iface/gspn/udcsltl.test: Adjust calls to ltlgspn-srg.

994
995
996
	* iface/gspn/Makefile.am (XFAIL_TESTS): Remove.

2003-10-06  Rachid REBIHA  <rebiha@src.lip6.fr>
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014

	* iface/gspn/ltlgspn.cc: We call tgba_emptiness_check before
	counter_example. And we print the prefix and the periode of
	counter_example's result.
	* src/tgbatest/emptinesscheckexplicit.cc (main):
	We call tgba_emptiness_check before counter_example.
	* src/tgbatest/emptinesscheck.cc (main):
	We call tgba_emptiness_check before counter_example.
	* src/tgbaalgos/emptinesscheck.hh (spot):
	(spot::print_result): New methode to print the prefix and the
	periode of counter_example's result.
	* src/tgbaalgos/emptinesscheck.cc (spot): counter_example doesn't
	call tgba_emptiness_check. counter_example must be executed after
	calling tgba_emptiness_check.  Remove tgba_emptiness_check calls.
	(print_result): New methode to print the prefix and the
	periode of counter_example's result.  Remove most of all std::cout
	during execution of emptiness_check's methodes.

1015
1016
2003-10-02  Alexandre Duret-Lutz  <adl@src.lip6.fr>

1017
1018
1019
1020
1021
1022
1023
	* iface/gspn/udcsfm.test, iface/gspn/udcsefm.test: New files.
	* iface/gspn/Makefile.am (TESTS) Add them.
	(check_PROGRAMS): Add emgspn-srg.
	(efmgspn_srg_SOURCES, efmgspn_srg_LDADD, efmgspn_srg_CPPFLAGS): New
	variables.
	* iface/gspn/udcsltl.test, iface/gspn/udcseltl.test: Complete.

1024
1025
	* src/ltlparse/ltlscan.ll: Allow doubly quoted atomic propositions.

1026
1027
2003-10-01  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1028
1029
1030
1031
1032
	* iface/gspn/udcsltl.test, iface/gspn/udcseltl.test,
	iface/gspn/dcswaveltl.test, iface/gspn/dcswaveeltl.test,
	iface/gspn/dcswavefm.test: Do not accept $? = 0 when
	a failure is expected.

1033
1034
1035
1036
1037
1038
1039
	* iface/gspn/udcsltl.test, iface/gspn/udcseltl.test: New files
	* iface/gspn/Makefile.am (TESTS): Add them.
	(XFAIL_TESTS): Add udcseltl.test.
	* iface/gspn/example/udcs/udcs.net, iface/gspn/example/udcs/udcs.def
	iface/gspn/example/udcs/udcs.tobs: New files.
	* iface/gspn/Makefile.am (EXTRA_DIST): Add them.

1040
1041
1042
1043
1044
1045
1046
	* iface/gspn/Makefile.am (check_PROGRAMS): Add eltlgspn-srg.
	(eltlgspn_srg_SOURCES, eltlgspn_srg_LDADD, eltlgspn_srg_CPPFLAGS):
	New variables.
	(TESTS): Add dcswaveeltl.test.
	* iface/gspn/dcswaveeltl.test: New file.
	* iface/gspn/ltlgspn.cc [CEC]: Use emptiness_check.

1047
1048
1049
1050
1051
	* m4/debug.m4, m4/devel.m4, m4/gccoptim.m4, m4/ndebug.m4: New files.
	* Makefile.am (EXTRA_DIST): Add them.
	* configure.ac: Call adl_ENABLE_DEVEL, adl_ENABLE_DEBUG, ad_GCC_OPTIM,
	and adl_NDEBUG.

1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
2003-09-30  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgba/state.hh (state_ptr_less_than, state_ptr_equal):
	Declare as std::binary_function.
	(state_ptr_hash): Declare as std::unary_function.
	* src/tgbaalgos/lbtt.cc (state_acc_pair_equal,
	state_acc_pair_hash): Likewise.
	* src/misc/bddlt.hh (bdd_less_than): Likewise.
	* src/misc/hash.hh (ptr_hash, string_hash): Likewise.

2003-09-25  Rachid REBIHA  <rebiha@src.lip6.fr>

	* src/tgbatest/emptinesscheckexplicit.test,
	src/tgbatest/emptinesscheckexplicit.cc
	src/tgbatest/emptinesscheck.test,
	src/tgbatest/emptinesscheck.cc,
	src/tgbaalgos/emptinesscheck.cc,
	src/tgbaalgos/emptinesscheck.hh: New files.
1070

1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
2003-09-22  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgbaalgos/ltl2tgba.cc, src/tgbaalgos/ltl2tgba.hh: Rename as ...
	* src/tgbaalgos/ltl2tgba_lacim.cc, src/tgbaalgos/ltl2tgba_lacim.hh:
	... this, and rename ltl_to_tgba() as ltl_to_tgba_lacim as well.
	* iface/gspn/ltlgspn.cc, src/tgbatest/explprod.cc,
	src/tgbatest/ltl2tgba.cc, src/tgbatest/ltlmagic.cc,
	src/tgbatest/ltlprod.cc, src/tgbatest/mixprod.cc,
	src/tgbatest/tripprod.cc, wrap/python/spot.i,
	wrap/python/cgi/ltl2tgba.in, wrap/python/tests/interdep.py,
	wrap/python/tests/ltl2tgba.py: Adjust.

1083
1084
1085
1086
2003-09-11  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgba/state.hh: Include cassert.

1087
1088
2003-08-29  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
	* src/tgba/state.hh (state::hash): New method.
	(state_ptr_equal, state_ptr_hash): New functors.
	* src/tgba/statebdd.hh, src/tgba/statebdd.cc (state_bdd::hash):
	New method.
	* src/tgba/tgbaexplicit.hh, src/tgba/tgbaexplicit.cc
	(state_explicit::hash): New method.
	(ns_map, sn_map): Use Sgi::hash_map instead of std::map.
	* src/tgba/tgbaproduct.hh, src/tgba/tgbaproduct.cc
	(state_product::hash): New method.
	* src/tgba/tgbatba.cc (state_tba_proxy::hash): New method.
	* src/tgbaalgos/lbtt.cc (acp_seen, todo_set, seen_map): Redefine
	using Sgi::hash_map or Sgi::hash_set.
	(lbtt_reachable): Don't erase a key that is pointed to by an
	iterator.
	* src/tgbaalgos/reachiter.cc
	(tgba_reachable_iterator::~tgba_reachable_iterator): Likewise.
	* src/tgbaalgos/magic.cc (magic_search::~magic_search()): Likewise.
	* src/tgbaalgos/magic.hh (hash_type): Redefine using Sgi::hash_map.
	* src/tgbaalgos/reachiter.hh (seen_map): Redefine using Sgi::hash_map.
	* iface/gspn/gspn.cc (state_gspn::hash): New method.
	* src/misc/hash.hh (string_hash): New functor.

1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
	* src/tgba/tgbaexplicit.cc (tgba_explicit::all_accepting_conditions)
	Compute all_accepting_conditions_ from neg_accepting_conditions_,
	not by browsing the dictionary.  The dictionary also contains
	accepting conditions from other automata...  This bug was a
	consequence of the change from 2003-07-14.
	* src/tgbaalgos/save.cc (save_bfs::start()): Likewise, do not
	browse the dictionary to print accepting conditions.  Call
	->all_accepting_conditions() instead.
	* src/tgba/tgbaproduct.cc (tgba_product::tgba_product): Typo
	from 2003-08-22 in the computation of all_accepting_conditions_.
	* src/tgbatest/explpro3.test: New file.
	* src/tgbatest/Makefile.am (TESTS): Add explpro3.test.
	* src/tgbatest/explprod.test, src/tgbatest/explpro2.test,
	 src/tgbatest/tripprod.test: Sort the output using Perl.

1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
2003-08-28  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	Rewrite all std::map<const formula*, ...> as
	Sgi::hash_map<const formula*, ...>.

	* src/misc/hash.hh: New file.
	* src/misc/Makefile.am (misc_HEADERS): Add it.
	* src/ltlvisit/dotty.cc (dotty_visitor::map): Use a hash_map instead
	of a map.
	* src/tgba/bdddict.hh (bdd_dict::fv_map, bdd_dict::vf_map,
	bdd_dict::ref_set, bdd_dict::var_map): Define as hash_map or
	hash_set.
	* src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::fv_map,
	translate_dict::vf_map): Likewise.
	* src/tgba/tgbabddconcretefactory.hh
	(tgba_bdd_concrete_factory::acc_map_): Likewise.
	* src/tgba/tgbatba.hh, src/tgbaalgos/reachiter.hh: Include <map>.

1144
1145
1146
1147
1148
2003-08-25  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgba/state.hh (state_ptr_less_than): Make sure left is
	non-null.  Suggested by Denis Poitreneaud.

1149
1150
1151
1152
1153
2003-08-23  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* wrap/python/Makefile.am (MAINTAINERCLEANFILES): Add
	buddy_wrap.cxx and buddy.py.

1154
1155
2003-08-22  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1156
1157
	* src/tgbaalgos/magic.cc (seen_with_magic, seen_without_magic): Remove.

1158
1159
1160
	* wrap/python/cgi/ltl2tgba.in: Fix display of relations for
	tgba_bdd_concrete automata.

1161
1162
1163
1164
1165
1166
1167
1168
1169
	Fix computation of product acceptance conditions, when the
	two operands share some acceptance conditions.
	* src/tgba/tgbaproduct.hh (tgba_product::left_acc_complement_,
	tgba_product::right_acc_complement_): New attribute.
	* src/tgba/tgbaproduct.cc (tgba_product::tgba_product): Set them.
	(tgba_product::succ_iter): Use them.
	* src/tgba/explpro2.test: New file.
	* src/tgba/Makefile.am (TESTS): Add it.

1170
1171
2003-08-20  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1172
1173
1174
1175
	* tgba/tgbaproduct.cc, tgba/tgbaproduct.hh:
	(state_bdd_product, tgba_product_succ_iterator): Rename as ...
	(state_product, tgba_succ_iterator_product): ... these.

1176
1177
1178
1179
1180
1181
1182
1183
	* iface/gspn/dcswavefm.test: New file.
	* iface/gspn/Makefile.am (check_PROGRAMS): Add fmgspn-rg and
	fmgspn-srg.
	(fmgspn_rg_SOURCES, fmgspn_rg_CPPFLAGS, fmgspn_rg_LDADD,
	fmgspn_srg_SOURCES, fmgspn_srg_CPPFLAGS, fmgspn_srg_LDADD):
	New variables.
	(TESTS): Add dcswavefm.test.

1184
1185
1186
1187
1188
2003-08-19  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/ltlast/formula.hh: Make it clear that ref() and unref()
	deals with one node, not a entire formula.

1189
1190
2003-08-18  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1191
1192
	* configure.ac: Bump version to 0.0i.

1193
	* configure.ac, NEWS: Bump version to 0.0h.
1194

1195
1196
	* wrap/python/cgi/Makefile.am (CLEANFILES): Clean ltl2tgba.py.

1197
1198
1199
1200
	* wrap/python/tests/ltl2tgba.test: Run $srcdir/ltl2tgba.py, not
	ltl2tgba.py.

2003-08-15  Alexandre Duret-Lutz  <aduret@src.lip6.fr>
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242

	This implements Couvreur's FM'99 ltl2tgba translation.
	* src/tgba/bdddict.cc (bdd_dict::is_registered): Split as ...
	(bdd_dict::is_registered_proposition, bdd_dict::is_registered_state,
	bdd_dict::is_registered_accepting_variable): ... these.
	* src/tgba/bdddict.hh: Likewise.
	* src/tgba/tgbaexplicit.cc (tgba_explicit::set_init_state): New method.
	(tgba_explicit::declare_accepting_condition): Arrange so that this
	function can be called during the construction of the automaton.
	(tgba_explicit::complement_all_accepting_conditions): New method.
	(tgba_explicit::has_accepting_condition): Adjust to call
	bdd_dict::is_registered_accepting_variable.
	* src/tgba/tgbaexplicit.hh (tgba_explicit::set_init_state,
	tgba_explicit::complement_all_accepting_conditions): New methods.
	* src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_fm.hh:
	New files.
	* src/tgbaalgos/Makefile.am (tgbaalgos_HEADERS,
	libtgbaalgos_la_SOURCES): Add them.
	* src/tgbaalgos/ltl2tgba.hh: Add bibtex entry in comment.
	* src/tgbatest/Makefile.am (check_PROGRAMS): Remove spotlbtt
	and tbalbtt.
	(tbalbtt_SOURCES, tbalbtt_CXXFLAGS, spotlbtt_SOURCES): Remove.
	* src/tgbatest/spotlbtt.cc: Delete, superseded by "ltl2tgba -F -t".
	* src/tgbatest/ltl2tgba.cc: Implement the -f and -F options.
	* src/tgbatest/spotlbtt.test: Use "ltl2tgba -F -t" instead of
	"spotlbtt", "ltl2tgba -F -t -D" instead of "tbalbtt", and add
	also check the ltl2tgba_fm translator.
	* wrap/python/spot.i: Wrap ltl2tgba_fm.
	* wrap/python/cgi/ltl2tgba.in: Add radio buttons to select
	between ltl2tgba and ltl2tgba_fm.
	* wrap/python/tests/ltl2tgba.py: Add support for the -f option.
	* wrap/python/tests/ltl2tgba.test: Try the -f option.

	varnum can be augmented by other allocator.  Keep track
	of a local varnum (lvarnum) in each allocator.
	* src/misc/bddalloc.cc (bdd_allocator::bdd_allocator): Initialize
	lvarnum.
	(bdd_allocator::extvarnum): New method.
	(bdd_allocator::allocate_variables): Use lvarnum and extvarnum.
	* src/misc/bddalloc.hh (bdd_allocator::extvarnum): New mathod.
	(bdd_allocator::lvarnum): New variable.

1243
1244
1245
1246
1247
2003-08-14  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgba/state.hh, src/tgba/statebdd.hh, src/tgba/statebdd.cc:
	Remove the translate() method.  Useless since 2003-07-14.

1248
1249
1250
1251
1252
2003-08-11  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* wrap/python/Makefile.am (SUBDIRS): Build `.' first.
	* wrap/python/cgi/Makefile.am (ltl2tgba.py): Depend on Makefile.

1253
1254
2003-08-10  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
	Revamp the multop interface to allow some basic optimizations like
	not constructing a single-child multop.
	* src/ltlast/multop.hh (multop::instance(type)): Remove.
	(multop::instance(type, formula*, formula*)): Return a formula*.
	(multop::instance(type, vec*)): Make it public and return a formula*.
	(multop::add_sorted, multop::add):
	* src/ltlast/multop.cc (multop::instance(type, vec*)): Rewrite.
	(multop::instance(type)): Delete.
	(multop::instance(type, formula*, formula*)): Adjust.
	(multop::add_sorted, multop::add): Remove.
	* src/ltlvisit/clone.cc (clone_visitor::visit(multop*)) Adjust.
	* src/ltlvisit/nenoform.cc
	(negative_normal_form_visitor::::visit(multop*)) Adjust.
	* src/ltltest/equals.test: Make sure `a & a' and `a' are equals.
	* wrap/python/tests/ltlsimple.py: Adjust.

1271
1272
1273
1274
	* src/tgba/succiterconcrete.cc, src/tgba/tgbaexplicit.cc,
	src/tgba/tgbatba.cc, src/tgbaalgos/lbtt.cc: Use `-' instead of `& !'
	between two BDDs.  That's one less call to BuDDy.

1275
1276
1277
	* src/tgbatest/tgbaread.test, src/tgbatest/explicit.test:
	Adjust expected output after 2003-08-07's change.

1278
1279
	* src/tgba/bdddict.hh: Typo in comments.

1280
1281
	* src/ltlenv/environment.hh: Typo in comments.

1282
1283
1284
1285
1286
1287
2003-08-08  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/ltlparse/ltlparse.yy: Handle and diagnose mismatched parentheses.
	* src/ltltest/parseerr.test: Add some examples.

2003-08-07  Alexandre Duret-Lutz  <aduret@src.lip6.fr>
1288
1289
1290
1291
1292
1293

	* wrap/python/cgi/ltl2tgba.in: Convert GIFs to PNGs.  Restrict
	the size of dot's output to 1024x1024.
	* src/tgbaalgos/dotty.cc (dotty_bfs::start): Do not preset
	the size of the graph.  Set height=0 for the invisible state.

1294
2003-08-06  Alexandre Duret-Lutz  <aduret@src.lip6.fr>
1295

1296
1297
1298
1299
1300
1301
	* src/ltlparse/ltlparse.yy: Fix precedence OP_OR < OP_XOR < OP_AND.
	* src/ltlast/binop.cc (binop::instance): Order operands for
	associative operators, so that e.g. "a xor b" and "b xor a" are
	mapped to the same formula.
	* src/ltltest/equals.test: Check this.

1302
	* src/ltlvisit/dotty.cc (draw_node_): s/shabe/shape/.
1303
	(visit): Draw rectangular nodes for atomic propositions and
1304
1305
	constant.  This is an attempt to mimic BuDDy's output.

1306
1307
1308
	* wrap/python/cgi/ltl2tgba.in: Handle show_formula_dot and
	show_formula_gif.

1309
1310
1311
1312
1313
	* src/ltlvisit/dotty.hh (dotty): Move the ostream argument first.
	* src/ltlvisit/dump.hh (dump): Likewise.
	* src/ltltest/equals.cc, src/ltltest/readltl.cc,
	src/ltlvisit/dotty.cc, src/ltlvisit/dump.cc: Adjust.

1314
1315
2003-08-05  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1316
1317
1318
1319
1320
	* src/misc/version.hh, src/misc/version.cc: New files.
	* src/misc/Makefile.am (libmisc_la_SOURCES, misc_HEADERS): Add them.
	* wrap/python/spot.i: Include misc/version.hh.
	* wrap/python/cgi/ltl2tgba.in: Print spot.version().

1321
1322
	* README: Update layout.

1323
1324
1325
1326
1327
	* wrap/python/cgi/Makefile.am, wrap/python/cgi/ltl2tgba.in,
	wrap/python/cgi/README: New files.
	* wrap/python/Makefile.am (SUBDIRS): Add cgi.
	* configure.ac: Output wrap/python/cgi/Makefile.

1328
1329
	* wrap/python/spot.i: Add an ostringstream emulation.

1330
1331
2003-08-04  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1332
1333
	* wrap/python/spot.i: Add an ofstream emulation.

1334
1335
1336
1337
	* wrap/python/spot.i: Declare spot::tgba::get_init_state,
	spot::tgba::succ_iter, and spot::tgba_succ_iterator::current_state
	as constructors.

1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
	* wrap/python/Makefile.am (lib_LTLIBRARIES)
	(libspotswigpy_la_SOURCES, libspotswigpy_la_CFLAGS)
	(libspotswigpy_la_LDFLAGS): New variables.
	(_spot_la_LIBADD, _buddy_la_LDFLAGS): Link with libspotswigpy.la
	($(srcdir)/spot_wrap.cxx, $(srcdir)/buddy_wrap.cxx): Run
	swig with -c.
	* wrap/python/tests/libpy.c: New file.
	* wrap/python/tests/run.in: Run python if no arguments are given.
	* wrap/python/tests/interdep.py: New file.
	* wrap/python/tests/Makefile.am (TESTS): Add interdep.py.

1349
1350
1351
	* wrap/python/spot.i: Declare spot::ltl_to_tgba as a constructor.
	* wrap/python/tests/ltl2tgba.py: Do not force `thisown=1' on tgba
	objects.
1352

1353
1354
1355
	* wrap/python/spot.i: Include headers from tgba/ and tgbaalgos/.
	* wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltl2tgba.test:
	New files.
1356

1357
1358
1359
1360
	* wrap/python/tests/Makefile.am (TESTS): Add ltl2tgba.test.
	(EXTRA_DIST): Add ltl2tgba.py.
	* wrap/python/tests/run.in: Distinguish *.py and *.test.

1361
1362
1363
	* wrap/python/tests/ltlparse.py: New file.
	* wrap/python/tests/Makefile.am (TESTS): Add it.

1364
1365
2003-08-01  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1366
1367
1368
1369
	* wrap/python/buddy.i: New file.
	* wrap/python/Makefile.am (EXTRA_DIST): Add it.
	(python_PYTHON, MAINTAINERCLEANFILES): Add buddy.py.
	(pyexec_LTLIBRARIES): Add _buddy.la.
Alexandre Duret-Lutz's avatar
spacing    
Alexandre Duret-Lutz committed
1370
	(_buddy_la_SOURCES, _buddy_la_LDFLAGS, $(srcdir)/buddy_wrap.cxx)
1371
1372
1373
1374
	($(srcdir)/buddy.py): New.
	* wrap/python/tests/bddnqueen.py: New file.
	* wrap/python/tests/Makefile.am (TESTS): Add it.

1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
	* src/ltlvisit/lunabbrev.cc, src/ltlvisit/lunabbrev.hh: Merge the
	two unabbreviate_logic definitions (const and non-const) into a
	function that takes a const formula* and return a non-const
	formula*.  Since formula* is convertible to const formula*, and
	the const version of the function just called the non-onst one, it
	makes no sense to keep both.  Also, it confused Swig.
	* src/ltlvisit/nenoform.cc, src/ltlvisit/nenoform.hh: Likewise
	for negative_normal_form.
	* src/ltlvisit/tunabbrev.cc, src/ltlvisit/tunabbrev.hh: Likewise
	for unabbreviate_ltl.
	* src/ltlvisit/clone.cc, src/ltlvisit/clone.hh: Likewise for clone.
	* src/ltlvisit/destroy.cc, src/ltlvisit/destroy.hh: Likewise
	for destroy.

1389
	* configure.ac: Bump version to 0.0g.
1390

1391
	* configure.ac, NEWS: Bump version to 0.0f.
1392

1393
1394
1395
1396
1397
1398
1399
	* iface/gspn/simple.test, iface/gspn/dcswave.test,
	iface/gspn/dcswaveltl.test: Make sure the example directory
	is writable.
	* m4/lbtt.m4, m4/buddy.m4: Always configure buddy/ and lbtt/,
	regardless of the --with-included-buddy and --with-included-lbtt
	settings.

1400
1401
1402
1403
1404
	* wrap/python/Makefile.am (python_PYTHON, _spot_la_SOURCES):
	Explicitely refer to spot_wrap.cxx and spot.py as
	$(srcdir)/spot_wrap.cxx and $(srcdir)/spot.py.
	(spot_wrap.cxx, spot.py):

1405
1406
1407
	* wrap/python/Makefile.am (spot_wrap.cxx, spot.py): Lookup
	spot.i in $(srcdir).

1408
1409
2003-07-31  Alexandre Duret-Lutz  <adl@gnu.org>

1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
	* configure.ac: Output wrap/python/tests/Makefile
	and wrap/python/tests/run.
	* wrap/python/Makefile.am (SUBDIRS): New variable.
	* wrap/python/spot.i: Include all formulae headers from ltlast/,
	as well as ltlvisit/destroy.hh.
	(spot::ltl::formula::__cmp__, spot::ltl::formula::__str__): New
	functions.
	* wrap/python/tests/Makefile.am, wrap/python/tests/ltlsimple.py,
	wrap/python/tests/run.in: New files.

1420
1421
1422
	* wrap/python/ltihooks.py: New file.
	* wrap/python/Makefile.am (EXTRA_DIST): Add ltihooks.py.

1423
1424
	* wrap/Makefile.am, wrap/spot.i: Move ...
	* wrap/python/Makefile.am, wrap/python/spot.i: ... here.
1425

1426
1427
1428
	* wrap/Makefile.am: New file.
	* configure.ac: Output wrap/python/Makefile.

1429
1430
1431
	* src/misc/const_sel.hh: Delete.
	* src/misc/Makefile.am (misc_HEADERS): Remove const_sel.hh.

1432
1433
1434
1435
	* src/tgbaalgos/magic.cc, src/tgbaalgos/reachiter.cc: Include cassert.
	* iface/Makefile.am (SUBDIRS): Recurse in gspn only if condition
	WITH_GSPN.

1436
1437
2003-07-30  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1438
1439
1440
	* iface/gspn/gspn.cc (tgba_gspn::format_state): Call gspn's
	print_state.

1441
	* iface/gspn/dcswaveltl.test: Check for a false formula too.
1442

1443
	* iface/gspn/dcswaveltl.test, iface/gspn/ltlgspn.cc: New files.
1444
1445
1446
1447
1448
1449
1450
1451
	* iface/gspn/Makefile.am (TESTS): Add dcswaveltl.test.
	(ltlgspn_rg_LDADD, ltlgspn_srg_LDADD, ltlgspn_rg_SOURCES)
	(ltlgspn_srg_SOURCES): New variables.
	(check_PROGRAMS): Add ltlgspn-rg and ltlgspn-srg.

	* iface/gspn/Makefile.am (gspn_HEADERS, gspndir): Install
	gspn.hh.

1452
1453
1454
1455
1456
1457
1458
1459
1460
	* src/tgba/tgba.hh, src/tgba/tgba.cc
	(tgba::project_state): New method.
	* src/tgba/tgbaproduct.hh, src/tgba/tgbaproduct.cc
	(tgba_product::project_state): New method.
	* src/tgba/tgbabta.hh, src/tgba/tgbabta.cc
	(tgba_bta_proxy::project_state): New method.
	* src/tgbaalgos/magic.cc (magic_search::print_result): Take
	a restrict argument.

1461
1462
2003-07-29  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1463
1464
1465
	* src/ltlparse/ltlscan.ll: Allow /\, \/, and xor, used in LBTT.
	* src/ltltest/parse.test: Test them.

1466
1467
1468
1469
	* src/tgbaalgos/lbtt.cc: Typos.

	* lbtt/: Upgrade to lbtt 1.0.2.

1470
1471
1472
1473
1474
	* src/tgbatest/Makefile.am (check_PROGRAMS): Add tbalbtt.
	(tbalbtt_SOURCES, tbalbtt_CXXFLAGS): New variables.
	* src/tgbatest/spotlbtt.cc [TBA]: Build tba proxies conditionally.
	* src/tgbatest/spotlbtt.test: Include tbalbtt in the tests.

1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
2003-07-28  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* src/tgba/tgbatba.hh, src/tgba/tgbatba.cc
	(tgba_tba_proxy::state_is_accepting): New method.
	* src/tgbaalgos/magic.hh, src/tgbaalgos/magic.cc: New files.
	* src/tgbaalgos/Makefile.am (libtgbaalgos_la_SOURCES,
	tgbaalgos_HEADERS): Add them.
	* src/tgbatest/ltlmagic.cc, src/tgbatest/ltlmagic.test: New files.
	* src/tgbatest/Makefile.am (TESTS, ltlmagic_SOURCES,
	check_PROGRAMS): Add them.

1486
1487
2003-07-25  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1488
1489
1490
1491
1492
1493
	* src/tgba/tgba.hh (tgba::~tgba): Make it public.
	* src/tgba/tgbatba.cc, src/tgba/tgbatba.hh: New files.
	* src/tgba/Makefile.am (tgba_HEADERS): Add tgbatba.hh.
	(libtgba_la_SOURCES): Add tgbatba.cc.
	* src/tgbatest/ltl2tgba.cc: Add option -D.

1494
1495
1496
1497
	* src/tgbaalgos/lbtt.cc (bdd_less_than): Move ...
	* src/misc/bddlt.hh: ... in this new file.
	* src/misc/Makefile.am (misc_HEADERS): Add bddlt.hh.

1498
1499
	* iface/gspn/dcswave.test: Comment state space sizes.

1500
1501
	* src/tgbaalgos/Makefile.am (tgbaalgos_HEADERS): Add reachiters.hh.
	(libtgbaalgos_la_SOURCES): Add reachiters.cc.
1502
	* src/tgbaalgos/dotty.cc, src/tgbaalgos/save.cc: Rewrite using
1503
1504
1505
1506
	spot::tgba_reachable_iterator_breadth_first.
	* src/tgbatest/explicit.test, src/tgbatest/tgbaread.test,
	src/tgbatest/tripprod.test: Adjust expected output.

1507
1508
1509
1510
1511
2003-07-24  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* configure.ac: Output iface/gspn/defs.
	* iface/gspn/Makefile.am (EXTRA_DIST): Add $(TESTS).
	(TESTS, check_SCRIPTS, distclean-local): New.
1512
	* iface/gspn/dcswave.test, iface/gspn/simple.test,
1513
1514
1515
1516
	iface/gspn/defs.in: New files.
	* iface/gspn/dottygspn.cc (main): Take the list of properties
	of interest in argument.

1517
1518
2003-07-23  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1519
1520
1521
1522
1523
	* iface/gspn/examples/DCSwave/DCSWave.def,
	iface/gspn/examples/DCSwave/DCSWave.net
	iface/gspn/examples/DCSwave/DCSWave.tobs,
	iface/gspn/examples/simple/simple.def,
	iface/gspn/examples/simple/simple.net,
1524
	iface/gspn/examples/simple/simple.tobs: New files, from
1525
1526
1527
1528
	Yann Thierry-Mieg.
	* iface/gspn/Makefile.am (EXTRA_DIST): New variables.

	* iface/gspn/gspn.cc (tgba_gspn_private_::tgba_gspn_private_):
1529
1530
	Rethrow caught expections.

1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
2003-07-22  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* m4/gspnlib.m4: Check for libgspnRG.a and libgspnSRG.a.
	Define LIBGSPNRG_LDFLAGS and LIBGSPNSRG_LDFLAGS, not
	LIBGSPN_LDFLAGS.
	* iface/gspn/Makefile.am: Adjust, build dottygspn-rg and
	dottygspn-srg instead of dottygspn.
	* iface/gspn/gspn.cc (EVENT_TRUE): Undefine.
	(tgba_gspn_private_::~tgba_gspn_private_): Free all_indexes.
	* iface/gspn/dottygspn.cc (main): Destroy the automaton before
1541
	its dictionary.
1542

1543
1544
2003-07-17  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
	Now succ_iter() can fetch extra information from
	the root of a product to reduce its number of successors.
	* src/tgba/Makefile.am (libtgba_la_SOURCES): Add tgba.cc.
	* src/tgba/tgba.hh (tgba::succ_iter): Add the global_state and
	global_automaton arguments.
	(tgba::support_conditions, tgba::support_variables,
	tgba::compute_support_conditions, tgba::compute_support_variables):
	New functions.
	(tgba::last_support_conditions_input_,
	tgba::last_support_conditions_output_,
	tgba::last_support_variables_input_,
	tgba::last_support_variables_output_): New attributes.
	* src/tgba/tgbabddconcrete.cc (tgba_bdd_concrete::succ_iter):
	Handle the two new arguments.
	(tgba_bdd_concrete::compute_support_conditions,
	tgba_bdd_concrete::compute_support_variables): Implement them.
	* src/tgba/tgbabddconcrete.hh: Adjust.
	* src/tgba/tgbaexplicit.cc (tgba_explicit::succ_iter):	Ignore
	the two new arguments.
	(tgba_explicit::compute_support_conditions,
	tgba_explicit::compute_support_variables): Implement them.
	* src/tgba/tgbaexplicit.hh: Adjust.
1567
	* src/tgba/tgbaproduct.cc (tgba_product::succ_iter): Handle the
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
	two new arguments.
	(tgba_product::compute_support_conditions,
	tgba_product::compute_support_variables): Implement them.
	* src/tgba/tgbaproduct.hh: Adjust.
	* iface/gspn/gspn.cc (tgba_gspn_private_::last_state_cond_input,
	tgba_gspn_private_::last_state_cond_output,
	(tgba_gspn_private_::tgba_gspn_private_): Set last_state_cond_input.
	(tgba_gspn_private_::~tgba_gspn_private_): Delete
	last_state_cond_input.
	(tgba_gspn_private_::state_conds): New function, eved out
	from tgba_gspn::succ_iter.
	(tgba_gspn::succ_iter): Use it.  Use the two new arguments.
	(tgba_gspn::compute_support_conditions,
	tgba_gspn::compute_support_variables): New functions.
	* iface/gspn/gspn.hh: Adjust.

	* iface/gspn/gspn.cc (EVENT_TRUE): Override temporarily.
1585
1586
	(tgba_gspn::succ_iter): Fix usage of cube.

1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
2003-07-16  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	* m4/gspnlib.m4: New file.
	* configure.ac: Call AX_CHECK_GSPNLIB.
	* Makefile.am (EXTRA_DIST): Add m4/gspnlib.m4.
	* iface/gspn/Makefile.am (AM_CPPFLAGS): Add $(LIBGSPN_CPPFLAGS).
	(libspotgspn_la_LIBADD, check_PROGRAMS, dottygspn_SOURCES,
	dottygspn_LDADD): New variables.
	* iface/gspn/gspn.hh (gspn_interface): New class.
	(gspn_exeption): Take a string argument and adjust all callers.
	(operator<<): Define for gspn_exeption.
	* iface/gspn/gspn.cc (gspn_interface::gspn_interface,
	gspn_interface::~gspn_interface): New.
	* iface/gspn/gspnlib.h: Delete, it belongs to GSPN.
	* iface/gspn/dottygspn.cc: New file.

1603
1604
2003-07-15  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1605
1606
1607
	* m4/lbtt.m4 (AX_CHECK_LBTT): Set LBTT and LBTT_TRANSLATE
	when using an already installed lbtt.

1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
	Homogenize passing of automata as pointers, not references.
	Disallow copy for security.

	* src/tgba/tgbabddconcrete.hh (tgba_bdd_concrete): Disallow copy.
	* src/tgba/tgbaexplicit.hh (tgba_explicit): Likewise.
	* src/tgba/tgbaexplicit.cc (tgba_explicit::operator=,
	tgba_explicit::tgba_explicit(tgba_explicit)): Remove.
	* src/tgba/tgbabddconcreteproduct.cc
	(tgba_bdd_concrete_product_factory::tgba_bdd_concrete_product_factory,
	product): Take operand automata as pointers.
	* src/tgba/tgbabddconcreteproduct.hh (product): Likewise.
	* src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh:
	(tgba_product): Disallow copy.
	(tgba_product::tgba_product): Take operand automata as pointers.
	* src/tgbaalgos/dotty.cc (dotty_state, dotty_rec, dotty_reachable):
	Take tgba arguments as pointer.
	* src/tgbaalgos/dotty.hh (dotty_reachable): Likewise.
	* src/tgbaalgos/lbtt.cc (fill_todo, lbtt_reachable): Likewise.
	* src/tgbaalgos/lbtt.hh (lbtt_reachable): Likewise.
	* src/tgbaalgos/ltl2tgba.cc, src/tgbaalgos/ltl2tgba.hh (ltl_to_tgba):
	Likewise.
	* src/tgbaalgos/save.cc (save_rec, tgba_save_reachable): Likewise.
	* src/tgbaalgos/save.hh (save): Likewise.
	* src/tgbatest/explicit.cc, src/tgbatest/explprod.cc,
	src/tgbatest/ltl2tgba.cc, src/tgbatest/ltlprod.cc,
	src/tgbatest/mixprod.cc, src/tgbatest/readsave.cc,
	src/tgbatest/spotlbtt.cc, src/tgbatest/tgbaread.cc,
	src/tgbatest/tripprod.cc: Likewise.

1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
2003-07-14  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

	Before this change, all automata would construct their own
	dictionaries (map of BDD variables to LTL formulae).  This was
	cumbersome, because to multiply two automata we had to build a
	common dictionary (the union of the two LTL formula spaces), and
	install wrappers to translate each automaton's BDD answers into
	the common dictionary.  This translation, that had to be repeated
	when several products were nested, was time consuming and was a
	hindrance for some optimizations.
	In the new scheme, all automata involved in a product must
	share the same dictionary.  An empty dictionary should be
	constructed by the user and passed to the automaton' constructors
	as necessary.
1651
	This huge change removes more code than it adds.
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710

	* src/Makefile.am (libspot_la_LIBADD): Add misc/libmisc.la.
	* src/misc/bddalloc.hh, src/misc/bddalloc.cc: New files.  These
	partly replace src/tgba/bddfactory.hh and src/tgba/bddfactory.cc.
	* src/misc/Makefile.am: Adjust to build bddalloc.hh and bddalloc.cc.
	* src/tgba/bddfactory.hh, src/tgba/bddfactory.cc,
	src/tgba/dictunion.hh, src/tgba/dictunion.cc,
	src/tgba/tgbabdddict.hh, src/tgba/tgbabdddict.cc,
	src/tgba/tgbabddtranslatefactory.hh,
	src/tgba/tgbabddtranslatefactory.cc,
	src/tgba/tgbatranslateproxy.hh, src/tgba/tgbatranslateproxy.cc:
	Delete.
	* src/tgba/bdddict.hh, src/tgba/bdddict.cc: New files.  These
	replaces tgbabdddict.hh and tgbabdddict.cc, and also part of
	bddfactory.hh and bddfactory.cc.
	* src/tgba/bddprint.cc, src/tgba/bddprint.hh: Adjust to
	use bdd_dict* instead of tgba_bdd_dict&.
	* src/tgba/succiterconcrete.cc (succ_iter_concrete::next()):
	Get next_to_now from the dictionary.
	* src/tgba/tgba.hh (tgba::get_dict): Return a bdd_dict*,
	not a const tgba_bdd_dict*.
	* src/tgba/tgbabddconcrete.cc, src/tgba/tgbabddconcrete.hh:
	Adjust to use the new dictionary, stored in data_.
	* src/tgba/tgbabddconcretefactory.cc,
	src/tgba/tgbabddconcretefactory.hh: Likewise.  Plus
	now_to_next_ is now also stored in the dictionary.
	* src/tgba/tgbabddconcreteproduct.cc: Likewise.  Now
	that both operand share the same product, there is not
	point in using tgba_bdd_translate_factory.
	* src/tgba/tgbabddcoredata.cc, src/tgba/tgbabddcoredata.hh:
	Store a bdd_dict (taken as constructor argument).
	(tgba_bdd_core_data::~tgba_bdd_core_data): Remove.
	(tgba_bdd_core_data::translate): Remove.
	(tgba_bdd_core_data::next_to_now): Remove (now in dict).
	(tgba_bdd_core_data::dict): New pointer.
	* src/tgba/tgbabddfactory.hh: (tgba_bdd_factory::get_dict): Remove.
	* src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh:
	Adjust to use the new dictionary.
	* src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh: Likewise.  Do
	not use tgba_bdd_dict_union and tgba_bdd_translate_proxy anymore.
	* src/tgbaalgos/lbtt.cc, src/tgbaalgos/save.cc: Adjust to
	use bdd_dict* instead of tgba_bdd_dict&.
	* src/tgbaalgos/ltl2tgba.cc, src/tgbaalgos/ltl2tgba.cc: Likewise.
	(ltl_to_tgba): Take a dict argument.
	* src/tgbaparse/public.hh (tgba_parse): Take a dict argument.
	* src/tgbaparse/tgbaparse.yy (tgba_parse): Take a dict argument.
	* src/tgbatest/explicit.cc, src/tgbatest/explprod.cc,
	src/tgbatest/ltlprod.cc, src/tgbatest/mixprod.cc,
	src/tgbatest/readsave.cc, src/tgbatest/spotlbtt.cc,
	src/tgbatest/tgbaread.cc, src/tgbatest/tripprod.cc: Instantiate
	a dictionary, and pass it to the automata' constructors.
	* src/tgbatest/ltl2tgba.cc: Likewise, and remove the -o (defrag)
	option.
	* iface/gspn/gspn.hh (tgba_gspn::tgba_gspn): Take a bdd_dict argument.
	(tgba_gspn::get_dict): Adjust return type.
	* iface/gspn/gspn.cc: Do not use bdd_factory, adjust to
	use the new dictionary instead.

2003-07-13  Alexandre Duret-Lutz  <aduret@src.lip6.fr>
1711

1712
1713
	* configure.ac: Bump version to 0.0e.

1714
1715
1716
	* configure.ac: Bump version to 0.0d.
	* NEWS, README: New files.

1717
1718
2003-07-12  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1719
1720
	* m4/lbtt.m4: Run lbtt-translate, not lbtt.

1721
1722
	* iface/gspn/gspn.cc: Include cassert.

1723
1724
2003-07-10  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1725
	* src/tgbaalgos/ltl2tgba.cc (ltl_trad_visitor::visit(multop)):
1726
1727
1728
	Forward root_ to children of And.
	(ltl_trad_visitor::recurse): Take a root argument.

1729
1730
1731
1732
1733
1734
	* src/tgba/tgbabddconcretefactory.hh
	(tgba_bdd_concrete_factory::add_relation): Rename as ...
	(tgba_bdd_concrete_factory::constrain_relation): ... this.
	* src/tgba/tgbabddconcretefactory.cc, src/tgbaalgos/ltl2tgba.cc:
	Adjust.

1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
	* src/tgbaalgos/ltl2tgba.cc (ltl_trad_visitor::visit(unop::G)): Do
	not create Now/Next variable when G is the root of the formula.
	(ltl_trad_visitor::ltl_trad_visitor): Take a root argument.
	(ltl_trad_visitor::recurse): Create a new visitor, do not copy
	the current one.
	(ltl_to_tgba): Build ltl_trad_visitor with root = true.

	* src/tgbaalgos/ltl2tgba.cc (ltl_trad_visitor::visit(unop::X)):
	Remove FIXME about handling X(a U b) and X(a R b) better, it's
	done naturally.

1746
1747
	* src/tgbatest/spotlbtt.test: Make 100 rounds.

1748
1749
1750
1751
1752
	* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):
	Fix so that !p.!Acc[g].Acc[f] + p.!Acc[g].Acc[f] + p.Acc[g].!Acc[f]
	is factored as !p.!Acc[g].Acc[f] + p.(!Acc[g].Acc[f] + Acc[g].!Acc[f]),
	not !Acc[g].Acc[f] + p.Acc[g].!Acc[f].

1753
1754
2003-07-09  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
	* lbtt/: New directory.  Contains a patched version of lbtt 1.0.1.
	* Makefile.am (MAYBE_LBTT): New variables.
	(SUBDIRS): Add $(MAYBE_LBTT).
	(EXTRA_DIST): Add m4/lbtt.m4.
	* configure.ac: Call AX_CHECK_LBTT.
	* m4/lbtt.m4: New file.
	* src/tgbatest/Makefile.am (check_PROGRAMS): Add spotlbtt.
	(spotlbtt_SOURCES): New variables.
	(TESTS): Add spotlbtt.test.
	(CLEANFILE): Add config.
	* src/tgbatest/defs.in (top_builddir, LBTT, LBTT_TRANSLATE): New
	substitutions.
	* src/tgbatest/spotlbtt.cc, src/tgbatest/spotlbtt.test: New files.

	* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):
1770
	Fix computation of states sharing the same accepting set.
1771

1772
1773
1774
1775
1776
1777
1778
	Make sure we only output one initial state in LBTT's output.
	* src/tgbaalgos/lbtt.cc (fill_todo): Add the 'first' argument
	to designate initial states.
	(lbtt_reachable): Adjust calls to fill_todo.  Handle the
	fake initial state accepting conditions specially.
	* src/tgbaalgos/lbtt.hh: Update comments.

1779
1780
1781
	* src/tgbaalgos/lbtt.cc (lbtt_reachable): Do not end transitions
	guards with -1 in output.

1782
1783
2003-07-08  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1784
1785
1786
1787
1788
1789
1790
	* src/tgbatest/ltl2tgba.cc: Add option -t to output the LBTT automata.
	* src/tgbaalgos/lbtt.cc, src/tgbaalgos/lbtt.hh: New files.
	* src/tgbaalgos/Makefile.am (tgbaalgos_HEADERS): Add lbtt.hh.
	(libtgbaalgos_la_SOURCES): Add lbtt.cc.
	* src/tgba/bddprint.cc (print_sat_handler): Put a space after "!".
	* src/tgbatest/readsave.test: Adjust spaces after "!".

1791
1792
	* src/ltlvisit/dump.cc: Strip useless spot::ltl:: prefixes.

1793
1794
2003-07-07  Alexandre Duret-Lutz  <aduret@src.lip6.fr>

1795
1796
1797
1798
	First sketch of the GSPN wrapper objects.
	* iface/gspn/gspn.cc, iface/gspn/gspn.hh: New files.
	* iface/gspn/Makefile.am (libspotgspn_la_SOURCES): Add them.

1799
1800
	* src/tgba/succiter.hh (current_state, current_conditions
	current_accepting_conditions): Mark as const.
1801
1802
1803
	* src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh,
	src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh,
	src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh,
1804
1805
1806
	src/tgba/tgbatranslateproxy.cc, src/tgba/tgbatranslateproxy.hh:
	Likewise.

1807
1808
1809
1810
	* iface/gspn/gspnlib.h: Fit 80 columns.
	[__cplusplus]: Wrap everything under extern "C".

	* src/tgba/succiterconcrete.hh
1811
	(tgba_succ_iterator_concrete::current_acc_): New attribute.
1812
	* src/tgba/succiterconcrete.cc
1813
	(tgba_succ_iterator_concrete::next): Set current_acc_.
1814
	(tgba_succ_iterator_concrete::current_accepting_conditions):
1815
1816
	Simply return it.

1817
1818
1819
1820
1821
	* configure.ac: Output iface/Makefile and iface/gspn/Makefile.
	* iface/Makefile.am, iface/gspn/Makefile.am: New files.
	* Makefile.am (SUBDIRS): Add iface.
	* iface/gspn/gspnlib.h: New file, from Yann and Souheib.

1822
1823
	* src/tgba/tgbabddcoredata.cc (tgba_bdd_core_data::tgba_bdd_core_data,
	tgba_bdd_core_data::translate): Handle all_accepting_conditions.
1824
	* src/tgba/tgbabddconcretefactory.cc
1825
1826
	(tgba_bdd_concrete_factory::finish): Fill all_accepting_conditions.