Closed BenjaminCosman closed 9 years ago
@bmcfluff I can fix this (the fix is to just memoize names of function symbols so we don't define the same symbol twice in SMT land...
See:
https://github.com/ucsd-progsys/liquid-fixpoint/blob/cutsolver/tests/todo/overwrite-names2.fq
Renaming Set_emp makes it pass.
note to self @ranjitjhala:
This test ALSO passes if we replace FAppTy Set_set X
with Set_set X
. Wonder why.
@bmcfluff -- what is the original haskell source that generates this .fq file? Can you re-run it? The .fq file should not have FAppTy Set X
it should just have have Set X
.
FAppTy
(however it is used internally to denote type application),app_of_t
so that it eliminates the FAppTy
BEFORE converting to Z3,Theories.hs
(it should not appear in Serialize.hs
)This should be addressed by PR #103
Strangely, all LH tests are passing (hopefully no strange caching taking place!) so I didn't (yet) have to do step 4 above.
@bmcfluff can you check the above (and the original overwrite.hs
and confirm before we close this?) Thanks!
Looks like it works; closing and merging PR #103
See:
https://github.com/ucsd-progsys/liquid-fixpoint/blob/cutsolver/tests/todo/overwrite-names.fq
(excerpt from LH https://github.com/ucsd-progsys/liquidhaskell/blob/master/tests/pos/Overwrite.hs)
If you change the name of the constant, the test will pass. How do we avoid this kind of name conflict?