Skip to content

Commit f048cb2

Browse files
revert the revert
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 75a40d8 commit f048cb2

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/api/python/z3/z3.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1861,6 +1861,15 @@ def is_lambda(self):
18611861
"""
18621862
return Z3_is_lambda(self.ctx_ref(), self.ast)
18631863

1864+
def __getitem__(self, arg):
1865+
"""Return the Z3 expression `self[arg]`.
1866+
"""
1867+
if z3_debug():
1868+
_z3_assert(self.is_lambda(), "quantifier should be a lambda expression")
1869+
arg = self.sort().domain().cast(arg)
1870+
return _to_expr_ref(Z3_mk_select(self.ctx_ref(), self.as_ast(), arg.as_ast()), self.ctx)
1871+
1872+
18641873
def weight(self):
18651874
"""Return the weight annotation of `self`.
18661875
@@ -4274,6 +4283,9 @@ def __getitem__(self, arg):
42744283
def default(self):
42754284
return _to_expr_ref(Z3_mk_array_default(self.ctx_ref(), self.as_ast()), self.ctx)
42764285

4286+
def is_array_sort(a):
4287+
return Z3_get_sort_kind(a.ctx.ref(), Z3_get_sort(a.ctx.ref(), a.ast)) == Z3_ARRAY_SORT
4288+
42774289

42784290
def is_array(a):
42794291
"""Return `True` if `a` is a Z3 array expression.
@@ -4412,7 +4424,7 @@ def Update(a, i, v):
44124424
proved
44134425
"""
44144426
if z3_debug():
4415-
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
4427+
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
44164428
i = a.domain().cast(i)
44174429
v = a.range().cast(v)
44184430
ctx = a.ctx
@@ -4425,7 +4437,7 @@ def Default(a):
44254437
proved
44264438
"""
44274439
if z3_debug():
4428-
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
4440+
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
44294441
return a.default()
44304442

44314443

@@ -4456,7 +4468,7 @@ def Select(a, i):
44564468
True
44574469
"""
44584470
if z3_debug():
4459-
_z3_assert(is_array(a), "First argument must be a Z3 array expression")
4471+
_z3_assert(is_array_sort(a), "First argument must be a Z3 array expression")
44604472
return a[i]
44614473

44624474

@@ -4511,7 +4523,7 @@ def Ext(a, b):
45114523
"""
45124524
ctx = a.ctx
45134525
if z3_debug():
4514-
_z3_assert(is_array(a) and is_array(b), "arguments must be arrays")
4526+
_z3_assert(is_array_sort(a) and is_array(b), "arguments must be arrays")
45154527
return _to_expr_ref(Z3_mk_array_ext(ctx.ref(), a.as_ast(), b.as_ast()), ctx)
45164528

45174529
def SetHasSize(a, k):

0 commit comments

Comments
 (0)