Skip to content

Commit

Permalink
revert the revert
Browse files Browse the repository at this point in the history
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
  • Loading branch information
NikolajBjorner committed Aug 25, 2019
1 parent 75a40d8 commit f048cb2
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/api/python/z3/z3.py
Expand Up @@ -1861,6 +1861,15 @@ def is_lambda(self):
"""
return Z3_is_lambda(self.ctx_ref(), self.ast)

def __getitem__(self, arg):
"""Return the Z3 expression `self[arg]`.
"""
if z3_debug():
_z3_assert(self.is_lambda(), "quantifier should be a lambda expression")
arg = self.sort().domain().cast(arg)
return _to_expr_ref(Z3_mk_select(self.ctx_ref(), self.as_ast(), arg.as_ast()), self.ctx)


def weight(self):
"""Return the weight annotation of `self`.
Expand Down Expand Up @@ -4274,6 +4283,9 @@ def __getitem__(self, arg):
def default(self):
return _to_expr_ref(Z3_mk_array_default(self.ctx_ref(), self.as_ast()), self.ctx)

def is_array_sort(a):
return Z3_get_sort_kind(a.ctx.ref(), Z3_get_sort(a.ctx.ref(), a.ast)) == Z3_ARRAY_SORT


def is_array(a):
"""Return `True` if `a` is a Z3 array expression.
Expand Down Expand Up @@ -4412,7 +4424,7 @@ def Update(a, i, v):
proved
"""
if z3_debug():
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
i = a.domain().cast(i)
v = a.range().cast(v)
ctx = a.ctx
Expand All @@ -4425,7 +4437,7 @@ def Default(a):
proved
"""
if z3_debug():
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
return a.default()


Expand Down Expand Up @@ -4456,7 +4468,7 @@ def Select(a, i):
True
"""
if z3_debug():
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
return a[i]


Expand Down Expand Up @@ -4511,7 +4523,7 @@ def Ext(a, b):
"""
ctx = a.ctx
if z3_debug():
_z3_assert(is_array(a) and is_array(b), "arguments must be arrays")
_z3_assert(is_array_sort(a) and is_array(b), "arguments must be arrays")
return _to_expr_ref(Z3_mk_array_ext(ctx.ref(), a.as_ast(), b.as_ast()), ctx)

def SetHasSize(a, k):
Expand Down

0 comments on commit f048cb2

Please sign in to comment.