diff options
author | Mathias Preiner <mathias.preiner@gmail.com> | 2020-06-23 09:55:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-23 09:55:01 -0700 |
commit | 0539b0342b46e9fb96467a23f703bf2317692bb2 (patch) | |
tree | 1c2d54f7791ee472daa40efc63ce88e13b9e4cc8 /src/theory/arrays/kinds | |
parent | bea30aa5dd6b36fc5a206c4742abadf8c3fab5c1 (diff) |
Add support for eqrange predicate (#4562)
This commit adds support for an eqrange predicate. (eqrange a b i j) is true if arrays a and b are equal on all indices within indices i and j, i.e., \forall k . i <= k <= j --> a[k] = b[k]. Requires option --arrays-exp to be enabled.
Diffstat (limited to 'src/theory/arrays/kinds')
-rw-r--r-- | src/theory/arrays/kinds | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/theory/arrays/kinds b/src/theory/arrays/kinds index 1adbdb0b2..659f05ae8 100644 --- a/src/theory/arrays/kinds +++ b/src/theory/arrays/kinds @@ -31,6 +31,9 @@ operator SELECT 2 "array select; first parameter is an array term, second is the # store a i e is a[i] <= e operator STORE 3 "array store; first parameter is an array term, second is the store index, third is the term to store at the index" +# eqrange a b i j \forall k. i <= k <= j -> a[k] = b[k] +operator EQ_RANGE 4 "equality of two arrays over an index range lower/upper" + # storeall t e is \all i in indexType(t) <= e constant STORE_ALL \ ::CVC4::ArrayStoreAll \ @@ -53,6 +56,7 @@ typerule STORE ::CVC4::theory::arrays::ArrayStoreTypeRule typerule STORE_ALL ::CVC4::theory::arrays::ArrayStoreTypeRule typerule ARR_TABLE_FUN ::CVC4::theory::arrays::ArrayTableFunTypeRule typerule ARRAY_LAMBDA ::CVC4::theory::arrays::ArrayLambdaTypeRule +typerule EQ_RANGE ::CVC4::theory::arrays::ArrayEqRangeTypeRule operator PARTIAL_SELECT_0 0:2 "partial array select, for internal use only" operator PARTIAL_SELECT_1 0:2 "partial array select, for internal use only" |