Arrays
Basic Array Term Builders
- cvc5.pythonic.Array(name, dom, rng)
Return an array constant named name with the given domain and range sorts.
>>> a = Array('a', IntSort(), IntSort()) >>> a.sort() Array(Int, Int) >>> a[0] a[0]
- cvc5.pythonic.ConstArray(dom, v)
Return an SMT constant array expression.
>>> a = ConstArray(IntSort(), 10) >>> a ConstArray(Int, 10) >>> a.sort() Array(Int, Int) >>> i = Int('i') >>> a[i] ConstArray(Int, 10)[i] >>> simplify(a[i]) 10
- cvc5.pythonic.K(dom, v)
Return an SMT constant array expression. An alias for ConstArray.
>>> a = K(IntSort(), 10) >>> a ConstArray(Int, 10) >>> a.sort() Array(Int, Int) >>> i = Int('i') >>> a[i] ConstArray(Int, 10)[i] >>> simplify(a[i]) 10
- cvc5.pythonic.ArraySort(*sig)
Return the SMT array sort with the given domain and range sorts.
>>> A = ArraySort(IntSort(), BoolSort()) >>> A Array(Int, Bool) >>> A.domain() Int >>> A.range() Bool >>> AA = ArraySort(IntSort(), A) >>> AA Array(Int, Array(Int, Bool)) >>> try: ... ArraySort(IntSort(), IntSort(), BoolSort()) ... except SMTException as e: ... print("failed: %s" % e) failed: Unimplemented: multi-domain array
Array Operators
- cvc5.pythonic.Select(a, i)
Return an SMT select array expression.
>>> a = Array('a', IntSort(), IntSort()) >>> i = Int('i') >>> Select(a, i) a[i] >>> eq(Select(a, i), a[i]) True
- cvc5.pythonic.Store(a, i, v)
Return an SMT
store
array expression.>>> a = Array('a', IntSort(), IntSort()) >>> i, v = Ints('i v') >>> s = Store(a, i, v) >>> s.sort() Array(Int, Int) >>> prove(s[i] == v) proved >>> j = Int('j') >>> prove(Implies(i != j, s[j] == a[j])) proved
- cvc5.pythonic.Update(a, i, v)
Return an SMT
store
array expression. An alias for Store.>>> a = Array('a', IntSort(), IntSort()) >>> i, v = Ints('i v') >>> s = Update(a, i, v) >>> s.sort() Array(Int, Int) >>> prove(s[i] == v) proved >>> j = Int('j') >>> prove(Implies(i != j, s[j] == a[j])) proved
See the following operator overloads for building other kinds of array terms:
Testers
- cvc5.pythonic.is_array_sort(a)
Is this an array sort?
>>> is_array_sort(ArraySort(BoolSort(), BoolSort())) True >>> is_array_sort(BoolSort()) False
- cvc5.pythonic.is_array(a)
Return True if a is an SMT array expression.
>>> a = Array('a', IntSort(), IntSort()) >>> is_array(a) True >>> is_array(Store(a, 0, 1)) True >>> is_array(a[0]) False
- cvc5.pythonic.is_const_array(a)
Return True if a is an SMT constant array.
>>> a = ConstArray(IntSort(), 10) >>> is_const_array(a) True >>> a = Array('a', IntSort(), IntSort()) >>> is_const_array(a) False
- cvc5.pythonic.is_K(a)
Return True if a is an SMT constant array. An alias for is_const_array.
>>> a = ConstArray(IntSort(), 10) >>> is_K(a) True >>> a = Array('a', IntSort(), IntSort()) >>> is_K(a) False
- cvc5.pythonic.is_select(a)
Return True if a is an SMT array select application.
>>> a = Array('a', IntSort(), IntSort()) >>> is_select(a) False >>> i = Int('i') >>> is_select(a[i]) True
- cvc5.pythonic.is_store(a)
Return True if a is an SMT array
store
application.>>> a = Array('a', IntSort(), IntSort()) >>> is_store(a) False >>> is_store(Store(a, 0, 1)) True
- cvc5.pythonic.is_update(a)
Return True if a is an SMT array
store
application. An alias for is_store.>>> a = Array('a', IntSort(), IntSort()) >>> is_update(a) False >>> is_update(Update(a, 0, 1)) True
Classes (with overloads)
- class cvc5.pythonic.ArraySortRef(ast, ctx=None)
Array sorts.
- domain()
Return the domain of the array sort self.
>>> A = ArraySort(IntSort(), BoolSort()) >>> A.domain() Int
- range()
Return the range of the array sort self.
>>> A = ArraySort(IntSort(), BoolSort()) >>> A.range() Bool
- class cvc5.pythonic.ArrayRef(ast, ctx=None, reverse_children=False)
Array expressions.
- __getitem__(arg)
Return the SMT expression self[arg].
>>> a = Array('a', IntSort(), BoolSort()) >>> i = Int('i') >>> a[i] a[i] >>> a[i].sexpr() '(select a i)'
- arg(idx)
Get the “argument” (base element) of this constant array.
>>> b = ConstArray(IntSort(), 1) >>> b.arg(0) 1
- default()
Get the constant element of this (constant) array >>> b = ConstArray(IntSort(), 1) >>> b.default() 1
- domain()
Shorthand for self.sort().domain().
>>> a = Array('a', IntSort(), BoolSort()) >>> a.domain() Int
- range()
Shorthand for self.sort().range().
>>> a = Array('a', IntSort(), BoolSort()) >>> a.range() Bool
- sort()
Return the array sort of the array expression self.
>>> a = Array('a', IntSort(), BoolSort()) >>> a.sort() Array(Int, Bool)