In SVN 10565, custom equals/hashCode methods were introduced for the
various ASTElements/Expressions, providing semantic equality. In the
implementation of ConvertForJltl2ba, a Hashtable was used to store
SimpleLTL formulas for the already handled Expression objects. With
the new equals/hashCode, this can lead to SimpleLTL formulas that
share subtrees, resulting in a DAG instead of a tree.
The SimpleLTL.simplify() function behaves incorrectly for DAGs, e.g.,
for "! (X (s1=7)) | (X (X s1=7))", producing wrong output formulas.
We refactor ConvertForJltl2ba to do a simple recursive transformation
from Expression-based LTL to SimpleLTL. Optionally, sharing of
identical subtrees can be enabled.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10894 bbc10eb1-c90d-0410-af57-cb519fbb1720