Z3
Public Member Functions
SortRef Class Reference
+ Inheritance diagram for SortRef:

Public Member Functions

def as_ast (self)
 
def get_id (self)
 
def kind (self)
 
def subsort (self, other)
 
def cast (self, val)
 
def name (self)
 
def __eq__ (self, other)
 
def __ne__ (self, other)
 
def __gt__ (self, other)
 
def __hash__ (self)
 
- Public Member Functions inherited from AstRef
def __init__
 
def __del__ (self)
 
def __deepcopy__
 
def __str__ (self)
 
def __repr__ (self)
 
def __eq__ (self, other)
 
def __hash__ (self)
 
def __nonzero__ (self)
 
def __bool__ (self)
 
def sexpr (self)
 
def as_ast (self)
 
def get_id (self)
 
def ctx_ref (self)
 
def eq (self, other)
 
def translate (self, target)
 
def __copy__ (self)
 
def hash (self)
 
def py_value (self)
 
- Public Member Functions inherited from Z3PPObject
def use_pp (self)
 

Additional Inherited Members

- Data Fields inherited from AstRef
 ast
 
 ctx
 

Detailed Description

A Sort is essentially a type. Every Z3 expression has a sort. A sort is an AST node.

Definition at line 590 of file z3py.py.

Member Function Documentation

def __eq__ (   self,
  other 
)
Return `True` if `self` and `other` are the same Z3 sort.

>>> p = Bool('p')
>>> p.sort() == BoolSort()
True
>>> p.sort() == IntSort()
False

Definition at line 649 of file z3py.py.

Referenced by CheckSatResult.__ne__(), and Probe.__ne__().

649  def __eq__(self, other):
650  """Return `True` if `self` and `other` are the same Z3 sort.
651 
652  >>> p = Bool('p')
653  >>> p.sort() == BoolSort()
654  True
655  >>> p.sort() == IntSort()
656  False
657  """
658  if other is None:
659  return False
660  return Z3_is_eq_sort(self.ctx_ref(), self.ast, other.ast)
661 
bool Z3_API Z3_is_eq_sort(Z3_context c, Z3_sort s1, Z3_sort s2)
compare sorts.
def ctx_ref(self)
Definition: z3py.py:427
def __eq__(self, other)
Definition: z3py.py:649
def __gt__ (   self,
  other 
)
Create the function space Array(self, other)

Definition at line 673 of file z3py.py.

673  def __gt__(self, other):
674  """Create the function space Array(self, other)"""
675  return ArraySort(self, other)
676 
def ArraySort(sig)
Definition: z3py.py:4890
def __gt__(self, other)
Definition: z3py.py:673
def __hash__ (   self)
Hash code. 

Definition at line 677 of file z3py.py.

677  def __hash__(self):
678  """ Hash code. """
679  return AstRef.__hash__(self)
680 
681 
def __hash__(self)
Definition: z3py.py:677
def __ne__ (   self,
  other 
)
Return `True` if `self` and `other` are not the same Z3 sort.

>>> p = Bool('p')
>>> p.sort() != BoolSort()
False
>>> p.sort() != IntSort()
True

Definition at line 662 of file z3py.py.

662  def __ne__(self, other):
663  """Return `True` if `self` and `other` are not the same Z3 sort.
664 
665  >>> p = Bool('p')
666  >>> p.sort() != BoolSort()
667  False
668  >>> p.sort() != IntSort()
669  True
670  """
671  return not Z3_is_eq_sort(self.ctx_ref(), self.ast, other.ast)
672 
bool Z3_API Z3_is_eq_sort(Z3_context c, Z3_sort s1, Z3_sort s2)
compare sorts.
def __ne__(self, other)
Definition: z3py.py:662
def ctx_ref(self)
Definition: z3py.py:427
def as_ast (   self)

Definition at line 593 of file z3py.py.

593  def as_ast(self):
594  return Z3_sort_to_ast(self.ctx_ref(), self.ast)
595 
def as_ast(self)
Definition: z3py.py:593
Z3_ast Z3_API Z3_sort_to_ast(Z3_context c, Z3_sort s)
Convert a Z3_sort into Z3_ast. This is just type casting.
def ctx_ref(self)
Definition: z3py.py:427
def cast (   self,
  val 
)
Try to cast `val` as an element of sort `self`.

This method is used in Z3Py to convert Python objects such as integers,
floats, longs and strings into Z3 expressions.

>>> x = Int('x')
>>> RealSort().cast(x)
ToReal(x)

Definition at line 624 of file z3py.py.

624  def cast(self, val):
625  """Try to cast `val` as an element of sort `self`.
626 
627  This method is used in Z3Py to convert Python objects such as integers,
628  floats, longs and strings into Z3 expressions.
629 
630  >>> x = Int('x')
631  >>> RealSort().cast(x)
632  ToReal(x)
633  """
634  if z3_debug():
635  _z3_assert(is_expr(val), "Z3 expression expected")
636  _z3_assert(self.eq(val.sort()), "Sort mismatch")
637  return val
638 
def cast(self, val)
Definition: z3py.py:624
def eq(self, other)
Definition: z3py.py:431
def z3_debug()
Definition: z3py.py:70
def is_expr(a)
Definition: z3py.py:1345
def get_id (   self)

Definition at line 596 of file z3py.py.

596  def get_id(self):
597  return Z3_get_ast_id(self.ctx_ref(), self.as_ast())
598 
def as_ast(self)
Definition: z3py.py:419
def get_id(self)
Definition: z3py.py:596
unsigned Z3_API Z3_get_ast_id(Z3_context c, Z3_ast t)
Return a unique identifier for t. The identifier is unique up to structural equality. Thus, two ast nodes created by the same context and having the same children and same function symbols have the same identifiers. Ast nodes created in the same context, but having different children or different functions have different identifiers. Variables and quantifiers are also assigned different identifiers according to their structure.
def ctx_ref(self)
Definition: z3py.py:427
def kind (   self)
Return the Z3 internal kind of a sort.
This method can be used to test if `self` is one of the Z3 builtin sorts.

>>> b = BoolSort()
>>> b.kind() == Z3_BOOL_SORT
True
>>> b.kind() == Z3_INT_SORT
False
>>> A = ArraySort(IntSort(), IntSort())
>>> A.kind() == Z3_ARRAY_SORT
True
>>> A.kind() == Z3_INT_SORT
False

Definition at line 599 of file z3py.py.

Referenced by ArithSortRef.is_int(), and ArithSortRef.is_real().

599  def kind(self):
600  """Return the Z3 internal kind of a sort.
601  This method can be used to test if `self` is one of the Z3 builtin sorts.
602 
603  >>> b = BoolSort()
604  >>> b.kind() == Z3_BOOL_SORT
605  True
606  >>> b.kind() == Z3_INT_SORT
607  False
608  >>> A = ArraySort(IntSort(), IntSort())
609  >>> A.kind() == Z3_ARRAY_SORT
610  True
611  >>> A.kind() == Z3_INT_SORT
612  False
613  """
614  return _sort_kind(self.ctx, self.ast)
615 
def kind(self)
Definition: z3py.py:599
def name (   self)
Return the name (string) of sort `self`.

>>> BoolSort().name()
'Bool'
>>> ArraySort(IntSort(), IntSort()).name()
'Array'

Definition at line 639 of file z3py.py.

639  def name(self):
640  """Return the name (string) of sort `self`.
641 
642  >>> BoolSort().name()
643  'Bool'
644  >>> ArraySort(IntSort(), IntSort()).name()
645  'Array'
646  """
647  return _symbol2py(self.ctx, Z3_get_sort_name(self.ctx_ref(), self.ast))
648 
def ctx_ref(self)
Definition: z3py.py:427
Z3_symbol Z3_API Z3_get_sort_name(Z3_context c, Z3_sort d)
Return the sort name as a symbol.
def name(self)
Definition: z3py.py:639
def subsort (   self,
  other 
)
Return `True` if `self` is a subsort of `other`.

>>> IntSort().subsort(RealSort())
True

Definition at line 616 of file z3py.py.

616  def subsort(self, other):
617  """Return `True` if `self` is a subsort of `other`.
618 
619  >>> IntSort().subsort(RealSort())
620  True
621  """
622  return False
623 
def subsort(self, other)
Definition: z3py.py:616