Reglan equality fix for #96 - #118
Conversation
|
I don't think this commit is doing quite the right thing. According to SMT-LIB, the RegLan sort is interpreted by the set of regex ground terms, without any normalization of expressions. That means that the following equation should evaluate to false? |
|
I am trying to understand this conflict a bit more. As far as I understand the semantics of RegLan is defined as: ⟦RegLan⟧ is the powerset of ⟦String⟧, the set of all subsets of ⟦String⟧. Does this not mean that ⟦(re.union (str.to_re "a") (str.to_re "b"))⟧ = {a,b} = ⟦(re.range "a" "b")⟧? |
|
Ok, yes, I think you are right. The description in the SMT-LIB theory is a bit inconsistent, this part is confusing: But you are right that, further down in the semantics part, the interpretation of a regex term is the corresponding regular language! |
55fa20c to
70d4ed8
Compare
Add preprocessing for
RegLanequality and an early fast path for fully groundstr.containsexpressions. These changes address failures (soundness and stack overflow) encountered in the20250410-matchingbenchmarks from the nonincremental QF_S release.