Commit e2fad2d7 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz

complement: fix handling of output_aborter with postproc

Reported by Salomon Sickert.

* spot/twaalgos/complement.cc: Make sure the output of postproc
is deterministic.
* tests/core/ltlcross.test: Add test case.
* NEWS: Mention the bug.
parent 1f8a777e
Pipeline #10844 passed with stages
in 262 minutes and 30 seconds
New in spot 2.8.0.dev (not yet released)
Nothing yet.
Bugs fixed:
- When complement() was called with an output_aborter, it could
return an alternating automaton on large automata. This in turn
caused ltlcross to emit errors like "remove_alternation() only
works with weak alternating automata" or "product() does not
support alternating automata".
New in spot 2.8 (2019-07-10)
......
......@@ -534,7 +534,7 @@ namespace spot
p.set_pref(spot::postprocessor::Deterministic);
p.set_level(spot::postprocessor::Low);
auto det = p.run(std::const_pointer_cast<twa_graph>(aut));
if (!det)
if (!det || !is_universal(det))
return nullptr;
return dualize(det);
}
......
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2012, 2013, 2014, 2016 Laboratoire de Recherche et
# Copyright (C) 2012-2014, 2016, 2019 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
......@@ -59,3 +59,9 @@ ltlcross -D \
"$ltl2tgba -t -taa -r4 %f > %T" \
"$ltl2tgba -t -taa -r4 -c %f > %T" \
"$ltl2tgba -t -taa -r4 -R3 -RDS %f > %T"
# This case, reported by Salomon Sickert, used to break ltlcross in
# Spot 2.8. We use ltl2tgba twice so ltlcross build cross-products.
ltlcross --verbose ltl2tgba ltl2tgba \
-f '(G(F((a1)&(X(X(b1))))))&(G(F((a2)&(X(X(b2))))))&(G(F((a3)&(X(X(b3))))))'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment