It also separates Bags (i.e., integer-valued maps) from generic Maps and removes some ad-hoc Map operations that are currently only implementable as Z3 lambdas (prj, shift and to_set). This is a precursor to adding CVC5 support, as the latter does not support arbitrary Array operations, but instead has a generic SMTLIB Array theory (with const, store and select) and separate theories of Sets and Bags.
As a continuation of https://github.com/ucsd-progsys/liquid-fixpoint/pull/688, this PR elaborates Map operations into Array ones, allowing for the correct handling of polymorphic Map values.
It also separates Bags (i.e., integer-valued maps) from generic Maps and removes some ad-hoc Map operations that are currently only implementable as Z3 lambdas (
prj
,shift
andto_set
). This is a precursor to adding CVC5 support, as the latter does not support arbitrary Array operations, but instead has a generic SMTLIB Array theory (withconst
,store
andselect
) and separate theories of Sets and Bags.