mirror of
https://github.com/Z3Prover/z3
synced 2025-07-26 06:07:01 +00:00
add character sort to Python API and allchar function to API for ease. #5500
This commit is contained in:
parent
4b3b4b95d9
commit
170ef1dcca
7 changed files with 39 additions and 1 deletions
|
@ -680,6 +680,8 @@ def _to_sort_ref(s, ctx):
|
|||
return ReSortRef(s, ctx)
|
||||
elif k == Z3_SEQ_SORT:
|
||||
return SeqSortRef(s, ctx)
|
||||
elif k == Z3_CHAR_SORT:
|
||||
return CharSortRef(s, ctx)
|
||||
return SortRef(s, ctx)
|
||||
|
||||
|
||||
|
@ -10574,6 +10576,10 @@ class SeqSortRef(SortRef):
|
|||
def basis(self):
|
||||
return _to_sort_ref(Z3_get_seq_sort_basis(self.ctx_ref(), self.ast), self.ctx)
|
||||
|
||||
class CharSortRef(SortRef):
|
||||
"""Character sort."""
|
||||
|
||||
|
||||
|
||||
def StringSort(ctx=None):
|
||||
"""Create a string sort
|
||||
|
@ -10584,6 +10590,15 @@ def StringSort(ctx=None):
|
|||
ctx = _get_ctx(ctx)
|
||||
return SeqSortRef(Z3_mk_string_sort(ctx.ref()), ctx)
|
||||
|
||||
def CharSort(ctx=None):
|
||||
"""Create a character sort
|
||||
>>> ch = CharSort()
|
||||
>>> print(ch)
|
||||
Char
|
||||
"""
|
||||
ctx = _get_ctx(ctx)
|
||||
return CharSortRef(Z3_mk_char_sort(ctx.ref()), ctx)
|
||||
|
||||
|
||||
def SeqSort(s):
|
||||
"""Create a sequence sort over elements provided in the argument
|
||||
|
@ -11051,6 +11066,11 @@ def Range(lo, hi, ctx=None):
|
|||
hi = _coerce_seq(hi, ctx)
|
||||
return ReRef(Z3_mk_re_range(lo.ctx_ref(), lo.ast, hi.ast), lo.ctx)
|
||||
|
||||
def AllChar(regex_sort, ctx=None):
|
||||
"""Create a regular expression that accepts all single character strings
|
||||
"""
|
||||
return ReRef(Z3_mk_re_allchar(regex_sort.ctx_ref(), regex_sort.ast), regex_sort.ctx)
|
||||
|
||||
# Special Relations
|
||||
|
||||
|
||||
|
|
|
@ -757,6 +757,8 @@ class Formatter:
|
|||
if s.is_string():
|
||||
return to_format("String")
|
||||
return seq1("Seq", (self.pp_sort(s.basis()), ))
|
||||
elif isinstance(s, z3.CharSortRef):
|
||||
return to_format("Char")
|
||||
else:
|
||||
return to_format(s.name())
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue