Fix infinite recursion when translating E* and E accepts [*0].

* src/tgbaalgos/ltl2tgba_fm.cc (ratexp_trad_visitor::visit):
Use a different translating rule for E* if E accepts [*0].
* src/tgbatest/ltl2tgba.test: Add test case.
This commit is contained in:
Alexandre Duret-Lutz 2011-02-14 10:09:17 +01:00
parent cce6dd34f8
commit a29c87b2ed
2 changed files with 57 additions and 3 deletions

View file

@ -85,6 +85,9 @@ check_psl '{[*2];a[*2..4]}|->b'
check_psl '{a[*2..5] && b[*..3]}|->c'
check_psl '{{[+];a;[+]} && {[+];b;[+]}}<>->c'
check_psl '{(a[->3]) & {[+];b}}<>->c'
# This formula (built by a random formula generator), exhibited an
# infinite recursion in the translation:
check_psl '{(a|[*0])[*];1}'
# Example from "Beyond Hardware Verification" by Glazberg, Moulin, Orni,
# Ruah, Zarpas (2007).
check_psl '{[*];req;ack}|=>{start;busy[*];done}'