Arrays over nullables, sort-erased #
One lifted constructor per liftable operator, <id>?, each answering none unless every argument
is some.
select? and store? take and answer nullable terms: it is the array term that becomes
nullable, not its indices or elements. An array whose elements are themselves nullable is a
different thing, of sort (Array I (Nullable E)).
eqRange lifted over nullables, strictly: none unless every argument is some.
Equations
- lft.eqRange? rgt lo hi = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkNullableLift cvc5.Kind.EQ_RANGE #[lft, rgt, lo, hi]
Instances For
store lifted over nullables, strictly: none unless every argument is some.
Equations
- arr.store? idx elm = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkNullableLift cvc5.Kind.STORE #[arr, idx, elm]
Instances For
select lifted over nullables, strictly: none unless every argument is some.
Equations
- arr.select? idx = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkNullableLift cvc5.Kind.SELECT #[arr, idx]