# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.1
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""
Expr module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_expr.html
"""

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _Expr
else:
    import _Expr

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _Expr.SWIG_PyInstanceMethod_New
_swig_new_static_method = _Expr.SWIG_PyStaticMethod_New

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _Expr.delete_SwigPyIterator
    value = _swig_new_instance_method(_Expr.SwigPyIterator_value)
    incr = _swig_new_instance_method(_Expr.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_Expr.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_Expr.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_Expr.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_Expr.SwigPyIterator_copy)
    next = _swig_new_instance_method(_Expr.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_Expr.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_Expr.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_Expr.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_Expr.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_Expr.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_Expr.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_Expr.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_Expr.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_Expr.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _Expr:
_Expr.SwigPyIterator_swigregister(SwigPyIterator)


def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TColStd
import OCC.Core.TCollection
Handle_Expr_GeneralExpression_Create = _Expr.Handle_Expr_GeneralExpression_Create
Handle_Expr_GeneralExpression_DownCast = _Expr.Handle_Expr_GeneralExpression_DownCast
Handle_Expr_GeneralExpression_IsNull = _Expr.Handle_Expr_GeneralExpression_IsNull
Handle_Expr_GeneralFunction_Create = _Expr.Handle_Expr_GeneralFunction_Create
Handle_Expr_GeneralFunction_DownCast = _Expr.Handle_Expr_GeneralFunction_DownCast
Handle_Expr_GeneralFunction_IsNull = _Expr.Handle_Expr_GeneralFunction_IsNull
Handle_Expr_GeneralRelation_Create = _Expr.Handle_Expr_GeneralRelation_Create
Handle_Expr_GeneralRelation_DownCast = _Expr.Handle_Expr_GeneralRelation_DownCast
Handle_Expr_GeneralRelation_IsNull = _Expr.Handle_Expr_GeneralRelation_IsNull
Handle_Expr_BinaryExpression_Create = _Expr.Handle_Expr_BinaryExpression_Create
Handle_Expr_BinaryExpression_DownCast = _Expr.Handle_Expr_BinaryExpression_DownCast
Handle_Expr_BinaryExpression_IsNull = _Expr.Handle_Expr_BinaryExpression_IsNull
Handle_Expr_FunctionDerivative_Create = _Expr.Handle_Expr_FunctionDerivative_Create
Handle_Expr_FunctionDerivative_DownCast = _Expr.Handle_Expr_FunctionDerivative_DownCast
Handle_Expr_FunctionDerivative_IsNull = _Expr.Handle_Expr_FunctionDerivative_IsNull
Handle_Expr_NamedExpression_Create = _Expr.Handle_Expr_NamedExpression_Create
Handle_Expr_NamedExpression_DownCast = _Expr.Handle_Expr_NamedExpression_DownCast
Handle_Expr_NamedExpression_IsNull = _Expr.Handle_Expr_NamedExpression_IsNull
Handle_Expr_NamedFunction_Create = _Expr.Handle_Expr_NamedFunction_Create
Handle_Expr_NamedFunction_DownCast = _Expr.Handle_Expr_NamedFunction_DownCast
Handle_Expr_NamedFunction_IsNull = _Expr.Handle_Expr_NamedFunction_IsNull
Handle_Expr_NumericValue_Create = _Expr.Handle_Expr_NumericValue_Create
Handle_Expr_NumericValue_DownCast = _Expr.Handle_Expr_NumericValue_DownCast
Handle_Expr_NumericValue_IsNull = _Expr.Handle_Expr_NumericValue_IsNull
Handle_Expr_PolyExpression_Create = _Expr.Handle_Expr_PolyExpression_Create
Handle_Expr_PolyExpression_DownCast = _Expr.Handle_Expr_PolyExpression_DownCast
Handle_Expr_PolyExpression_IsNull = _Expr.Handle_Expr_PolyExpression_IsNull
Handle_Expr_SingleRelation_Create = _Expr.Handle_Expr_SingleRelation_Create
Handle_Expr_SingleRelation_DownCast = _Expr.Handle_Expr_SingleRelation_DownCast
Handle_Expr_SingleRelation_IsNull = _Expr.Handle_Expr_SingleRelation_IsNull
Handle_Expr_SystemRelation_Create = _Expr.Handle_Expr_SystemRelation_Create
Handle_Expr_SystemRelation_DownCast = _Expr.Handle_Expr_SystemRelation_DownCast
Handle_Expr_SystemRelation_IsNull = _Expr.Handle_Expr_SystemRelation_IsNull
Handle_Expr_UnaryExpression_Create = _Expr.Handle_Expr_UnaryExpression_Create
Handle_Expr_UnaryExpression_DownCast = _Expr.Handle_Expr_UnaryExpression_DownCast
Handle_Expr_UnaryExpression_IsNull = _Expr.Handle_Expr_UnaryExpression_IsNull
Handle_Expr_Absolute_Create = _Expr.Handle_Expr_Absolute_Create
Handle_Expr_Absolute_DownCast = _Expr.Handle_Expr_Absolute_DownCast
Handle_Expr_Absolute_IsNull = _Expr.Handle_Expr_Absolute_IsNull
Handle_Expr_ArcCosine_Create = _Expr.Handle_Expr_ArcCosine_Create
Handle_Expr_ArcCosine_DownCast = _Expr.Handle_Expr_ArcCosine_DownCast
Handle_Expr_ArcCosine_IsNull = _Expr.Handle_Expr_ArcCosine_IsNull
Handle_Expr_ArcSine_Create = _Expr.Handle_Expr_ArcSine_Create
Handle_Expr_ArcSine_DownCast = _Expr.Handle_Expr_ArcSine_DownCast
Handle_Expr_ArcSine_IsNull = _Expr.Handle_Expr_ArcSine_IsNull
Handle_Expr_ArcTangent_Create = _Expr.Handle_Expr_ArcTangent_Create
Handle_Expr_ArcTangent_DownCast = _Expr.Handle_Expr_ArcTangent_DownCast
Handle_Expr_ArcTangent_IsNull = _Expr.Handle_Expr_ArcTangent_IsNull
Handle_Expr_ArgCosh_Create = _Expr.Handle_Expr_ArgCosh_Create
Handle_Expr_ArgCosh_DownCast = _Expr.Handle_Expr_ArgCosh_DownCast
Handle_Expr_ArgCosh_IsNull = _Expr.Handle_Expr_ArgCosh_IsNull
Handle_Expr_ArgSinh_Create = _Expr.Handle_Expr_ArgSinh_Create
Handle_Expr_ArgSinh_DownCast = _Expr.Handle_Expr_ArgSinh_DownCast
Handle_Expr_ArgSinh_IsNull = _Expr.Handle_Expr_ArgSinh_IsNull
Handle_Expr_ArgTanh_Create = _Expr.Handle_Expr_ArgTanh_Create
Handle_Expr_ArgTanh_DownCast = _Expr.Handle_Expr_ArgTanh_DownCast
Handle_Expr_ArgTanh_IsNull = _Expr.Handle_Expr_ArgTanh_IsNull
Handle_Expr_BinaryFunction_Create = _Expr.Handle_Expr_BinaryFunction_Create
Handle_Expr_BinaryFunction_DownCast = _Expr.Handle_Expr_BinaryFunction_DownCast
Handle_Expr_BinaryFunction_IsNull = _Expr.Handle_Expr_BinaryFunction_IsNull
Handle_Expr_Cosh_Create = _Expr.Handle_Expr_Cosh_Create
Handle_Expr_Cosh_DownCast = _Expr.Handle_Expr_Cosh_DownCast
Handle_Expr_Cosh_IsNull = _Expr.Handle_Expr_Cosh_IsNull
Handle_Expr_Cosine_Create = _Expr.Handle_Expr_Cosine_Create
Handle_Expr_Cosine_DownCast = _Expr.Handle_Expr_Cosine_DownCast
Handle_Expr_Cosine_IsNull = _Expr.Handle_Expr_Cosine_IsNull
Handle_Expr_Difference_Create = _Expr.Handle_Expr_Difference_Create
Handle_Expr_Difference_DownCast = _Expr.Handle_Expr_Difference_DownCast
Handle_Expr_Difference_IsNull = _Expr.Handle_Expr_Difference_IsNull
Handle_Expr_Different_Create = _Expr.Handle_Expr_Different_Create
Handle_Expr_Different_DownCast = _Expr.Handle_Expr_Different_DownCast
Handle_Expr_Different_IsNull = _Expr.Handle_Expr_Different_IsNull
Handle_Expr_Division_Create = _Expr.Handle_Expr_Division_Create
Handle_Expr_Division_DownCast = _Expr.Handle_Expr_Division_DownCast
Handle_Expr_Division_IsNull = _Expr.Handle_Expr_Division_IsNull
Handle_Expr_Equal_Create = _Expr.Handle_Expr_Equal_Create
Handle_Expr_Equal_DownCast = _Expr.Handle_Expr_Equal_DownCast
Handle_Expr_Equal_IsNull = _Expr.Handle_Expr_Equal_IsNull
Handle_Expr_Exponential_Create = _Expr.Handle_Expr_Exponential_Create
Handle_Expr_Exponential_DownCast = _Expr.Handle_Expr_Exponential_DownCast
Handle_Expr_Exponential_IsNull = _Expr.Handle_Expr_Exponential_IsNull
Handle_Expr_Exponentiate_Create = _Expr.Handle_Expr_Exponentiate_Create
Handle_Expr_Exponentiate_DownCast = _Expr.Handle_Expr_Exponentiate_DownCast
Handle_Expr_Exponentiate_IsNull = _Expr.Handle_Expr_Exponentiate_IsNull
Handle_Expr_GreaterThan_Create = _Expr.Handle_Expr_GreaterThan_Create
Handle_Expr_GreaterThan_DownCast = _Expr.Handle_Expr_GreaterThan_DownCast
Handle_Expr_GreaterThan_IsNull = _Expr.Handle_Expr_GreaterThan_IsNull
Handle_Expr_GreaterThanOrEqual_Create = _Expr.Handle_Expr_GreaterThanOrEqual_Create
Handle_Expr_GreaterThanOrEqual_DownCast = _Expr.Handle_Expr_GreaterThanOrEqual_DownCast
Handle_Expr_GreaterThanOrEqual_IsNull = _Expr.Handle_Expr_GreaterThanOrEqual_IsNull
Handle_Expr_LessThan_Create = _Expr.Handle_Expr_LessThan_Create
Handle_Expr_LessThan_DownCast = _Expr.Handle_Expr_LessThan_DownCast
Handle_Expr_LessThan_IsNull = _Expr.Handle_Expr_LessThan_IsNull
Handle_Expr_LessThanOrEqual_Create = _Expr.Handle_Expr_LessThanOrEqual_Create
Handle_Expr_LessThanOrEqual_DownCast = _Expr.Handle_Expr_LessThanOrEqual_DownCast
Handle_Expr_LessThanOrEqual_IsNull = _Expr.Handle_Expr_LessThanOrEqual_IsNull
Handle_Expr_LogOf10_Create = _Expr.Handle_Expr_LogOf10_Create
Handle_Expr_LogOf10_DownCast = _Expr.Handle_Expr_LogOf10_DownCast
Handle_Expr_LogOf10_IsNull = _Expr.Handle_Expr_LogOf10_IsNull
Handle_Expr_LogOfe_Create = _Expr.Handle_Expr_LogOfe_Create
Handle_Expr_LogOfe_DownCast = _Expr.Handle_Expr_LogOfe_DownCast
Handle_Expr_LogOfe_IsNull = _Expr.Handle_Expr_LogOfe_IsNull
Handle_Expr_NamedConstant_Create = _Expr.Handle_Expr_NamedConstant_Create
Handle_Expr_NamedConstant_DownCast = _Expr.Handle_Expr_NamedConstant_DownCast
Handle_Expr_NamedConstant_IsNull = _Expr.Handle_Expr_NamedConstant_IsNull
Handle_Expr_NamedUnknown_Create = _Expr.Handle_Expr_NamedUnknown_Create
Handle_Expr_NamedUnknown_DownCast = _Expr.Handle_Expr_NamedUnknown_DownCast
Handle_Expr_NamedUnknown_IsNull = _Expr.Handle_Expr_NamedUnknown_IsNull
Handle_Expr_PolyFunction_Create = _Expr.Handle_Expr_PolyFunction_Create
Handle_Expr_PolyFunction_DownCast = _Expr.Handle_Expr_PolyFunction_DownCast
Handle_Expr_PolyFunction_IsNull = _Expr.Handle_Expr_PolyFunction_IsNull
Handle_Expr_Product_Create = _Expr.Handle_Expr_Product_Create
Handle_Expr_Product_DownCast = _Expr.Handle_Expr_Product_DownCast
Handle_Expr_Product_IsNull = _Expr.Handle_Expr_Product_IsNull
Handle_Expr_Sine_Create = _Expr.Handle_Expr_Sine_Create
Handle_Expr_Sine_DownCast = _Expr.Handle_Expr_Sine_DownCast
Handle_Expr_Sine_IsNull = _Expr.Handle_Expr_Sine_IsNull
Handle_Expr_Sinh_Create = _Expr.Handle_Expr_Sinh_Create
Handle_Expr_Sinh_DownCast = _Expr.Handle_Expr_Sinh_DownCast
Handle_Expr_Sinh_IsNull = _Expr.Handle_Expr_Sinh_IsNull
Handle_Expr_Square_Create = _Expr.Handle_Expr_Square_Create
Handle_Expr_Square_DownCast = _Expr.Handle_Expr_Square_DownCast
Handle_Expr_Square_IsNull = _Expr.Handle_Expr_Square_IsNull
Handle_Expr_SquareRoot_Create = _Expr.Handle_Expr_SquareRoot_Create
Handle_Expr_SquareRoot_DownCast = _Expr.Handle_Expr_SquareRoot_DownCast
Handle_Expr_SquareRoot_IsNull = _Expr.Handle_Expr_SquareRoot_IsNull
Handle_Expr_Sum_Create = _Expr.Handle_Expr_Sum_Create
Handle_Expr_Sum_DownCast = _Expr.Handle_Expr_Sum_DownCast
Handle_Expr_Sum_IsNull = _Expr.Handle_Expr_Sum_IsNull
Handle_Expr_Tangent_Create = _Expr.Handle_Expr_Tangent_Create
Handle_Expr_Tangent_DownCast = _Expr.Handle_Expr_Tangent_DownCast
Handle_Expr_Tangent_IsNull = _Expr.Handle_Expr_Tangent_IsNull
Handle_Expr_Tanh_Create = _Expr.Handle_Expr_Tanh_Create
Handle_Expr_Tanh_DownCast = _Expr.Handle_Expr_Tanh_DownCast
Handle_Expr_Tanh_IsNull = _Expr.Handle_Expr_Tanh_IsNull
Handle_Expr_UnaryFunction_Create = _Expr.Handle_Expr_UnaryFunction_Create
Handle_Expr_UnaryFunction_DownCast = _Expr.Handle_Expr_UnaryFunction_DownCast
Handle_Expr_UnaryFunction_IsNull = _Expr.Handle_Expr_UnaryFunction_IsNull
Handle_Expr_UnaryMinus_Create = _Expr.Handle_Expr_UnaryMinus_Create
Handle_Expr_UnaryMinus_DownCast = _Expr.Handle_Expr_UnaryMinus_DownCast
Handle_Expr_UnaryMinus_IsNull = _Expr.Handle_Expr_UnaryMinus_IsNull
class Expr_Array1OfNamedUnknown(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_begin)
    end = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_end)
    cbegin = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_cend)

    def __init__(self, *args):
        _Expr.Expr_Array1OfNamedUnknown_swiginit(self, _Expr.new_Expr_Array1OfNamedUnknown(*args))
    Init = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Init)
    Size = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Size)
    Length = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Length)
    IsEmpty = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_IsEmpty)
    Lower = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Lower)
    Upper = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Upper)
    IsDeletable = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_IsDeletable)
    IsAllocated = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_IsAllocated)
    Assign = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Assign)
    Move = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Move)
    Set = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Set)
    First = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_First)
    ChangeFirst = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_ChangeFirst)
    Last = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Last)
    ChangeLast = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_ChangeLast)
    Value = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Value)
    ChangeValue = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_ChangeValue)
    __call__ = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown___call__)
    SetValue = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_SetValue)
    Resize = _swig_new_instance_method(_Expr.Expr_Array1OfNamedUnknown_Resize)
    __swig_destroy__ = _Expr.delete_Expr_Array1OfNamedUnknown

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Expr_Array1OfNamedUnknown in _Expr:
_Expr.Expr_Array1OfNamedUnknown_swigregister(Expr_Array1OfNamedUnknown)

class Expr_MapOfNamedUnknown(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    cbegin = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_cend)

    def __init__(self, *args):
        _Expr.Expr_MapOfNamedUnknown_swiginit(self, _Expr.new_Expr_MapOfNamedUnknown(*args))
    Exchange = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Exchange)
    Assign = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Assign)
    Set = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Set)
    ReSize = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_ReSize)
    Add = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Add)
    Contains = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Contains)
    Substitute = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Substitute)
    Swap = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Swap)
    RemoveLast = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_RemoveLast)
    RemoveFromIndex = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_RemoveFromIndex)
    RemoveKey = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_RemoveKey)
    FindKey = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_FindKey)
    __call__ = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown___call__)
    FindIndex = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_FindIndex)
    Clear = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Clear)
    __swig_destroy__ = _Expr.delete_Expr_MapOfNamedUnknown
    Size = _swig_new_instance_method(_Expr.Expr_MapOfNamedUnknown_Size)

# Register Expr_MapOfNamedUnknown in _Expr:
_Expr.Expr_MapOfNamedUnknown_swigregister(Expr_MapOfNamedUnknown)

class Expr_Array1OfGeneralExpression(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_begin)
    end = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_end)
    cbegin = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_cend)

    def __init__(self, *args):
        _Expr.Expr_Array1OfGeneralExpression_swiginit(self, _Expr.new_Expr_Array1OfGeneralExpression(*args))
    Init = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Init)
    Size = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Size)
    Length = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Length)
    IsEmpty = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_IsEmpty)
    Lower = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Lower)
    Upper = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Upper)
    IsDeletable = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_IsDeletable)
    IsAllocated = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_IsAllocated)
    Assign = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Assign)
    Move = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Move)
    Set = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Set)
    First = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_First)
    ChangeFirst = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_ChangeFirst)
    Last = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Last)
    ChangeLast = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_ChangeLast)
    Value = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Value)
    ChangeValue = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_ChangeValue)
    __call__ = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression___call__)
    SetValue = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_SetValue)
    Resize = _swig_new_instance_method(_Expr.Expr_Array1OfGeneralExpression_Resize)
    __swig_destroy__ = _Expr.delete_Expr_Array1OfGeneralExpression

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Expr_Array1OfGeneralExpression in _Expr:
_Expr.Expr_Array1OfGeneralExpression_swigregister(Expr_Array1OfGeneralExpression)

class Expr_Array1OfSingleRelation(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_begin)
    end = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_end)
    cbegin = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_cend)

    def __init__(self, *args):
        _Expr.Expr_Array1OfSingleRelation_swiginit(self, _Expr.new_Expr_Array1OfSingleRelation(*args))
    Init = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Init)
    Size = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Size)
    Length = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Length)
    IsEmpty = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_IsEmpty)
    Lower = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Lower)
    Upper = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Upper)
    IsDeletable = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_IsDeletable)
    IsAllocated = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_IsAllocated)
    Assign = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Assign)
    Move = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Move)
    Set = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Set)
    First = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_First)
    ChangeFirst = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_ChangeFirst)
    Last = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Last)
    ChangeLast = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_ChangeLast)
    Value = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Value)
    ChangeValue = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_ChangeValue)
    __call__ = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation___call__)
    SetValue = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_SetValue)
    Resize = _swig_new_instance_method(_Expr.Expr_Array1OfSingleRelation_Resize)
    __swig_destroy__ = _Expr.delete_Expr_Array1OfSingleRelation

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

    def __len__(self):
        return self.Length()

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Expr_Array1OfSingleRelation in _Expr:
_Expr.Expr_Array1OfSingleRelation_swigregister(Expr_Array1OfSingleRelation)

class Expr_SequenceOfGeneralRelation(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_begin)
    end = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_end)
    cbegin = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_cend)

    def __init__(self, *args):
        _Expr.Expr_SequenceOfGeneralRelation_swiginit(self, _Expr.new_Expr_SequenceOfGeneralRelation(*args))
    Size = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Size)
    Length = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Length)
    Lower = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Lower)
    Upper = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Upper)
    IsEmpty = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_IsEmpty)
    Reverse = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Reverse)
    Exchange = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Exchange)
    delNode = _swig_new_static_method(_Expr.Expr_SequenceOfGeneralRelation_delNode)
    Clear = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Clear)
    Assign = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Assign)
    Set = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Set)
    Remove = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Remove)
    Append = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Append)
    Prepend = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Prepend)
    InsertBefore = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_InsertBefore)
    InsertAfter = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_InsertAfter)
    Split = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Split)
    First = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_First)
    ChangeFirst = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_ChangeFirst)
    Last = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Last)
    ChangeLast = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_ChangeLast)
    Value = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_Value)
    ChangeValue = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_ChangeValue)
    __call__ = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation___call__)
    SetValue = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralRelation_SetValue)
    __swig_destroy__ = _Expr.delete_Expr_SequenceOfGeneralRelation

# Register Expr_SequenceOfGeneralRelation in _Expr:
_Expr.Expr_SequenceOfGeneralRelation_swigregister(Expr_SequenceOfGeneralRelation)
Expr_SequenceOfGeneralRelation_delNode = _Expr.Expr_SequenceOfGeneralRelation_delNode

class Expr_SequenceOfGeneralExpression(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_begin)
    end = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_end)
    cbegin = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_cbegin)
    cend = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_cend)

    def __init__(self, *args):
        _Expr.Expr_SequenceOfGeneralExpression_swiginit(self, _Expr.new_Expr_SequenceOfGeneralExpression(*args))
    Size = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Size)
    Length = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Length)
    Lower = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Lower)
    Upper = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Upper)
    IsEmpty = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_IsEmpty)
    Reverse = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Reverse)
    Exchange = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Exchange)
    delNode = _swig_new_static_method(_Expr.Expr_SequenceOfGeneralExpression_delNode)
    Clear = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Clear)
    Assign = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Assign)
    Set = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Set)
    Remove = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Remove)
    Append = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Append)
    Prepend = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Prepend)
    InsertBefore = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_InsertBefore)
    InsertAfter = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_InsertAfter)
    Split = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Split)
    First = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_First)
    ChangeFirst = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_ChangeFirst)
    Last = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Last)
    ChangeLast = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_ChangeLast)
    Value = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_Value)
    ChangeValue = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_ChangeValue)
    __call__ = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression___call__)
    SetValue = _swig_new_instance_method(_Expr.Expr_SequenceOfGeneralExpression_SetValue)
    __swig_destroy__ = _Expr.delete_Expr_SequenceOfGeneralExpression

# Register Expr_SequenceOfGeneralExpression in _Expr:
_Expr.Expr_SequenceOfGeneralExpression_swigregister(Expr_SequenceOfGeneralExpression)
Expr_SequenceOfGeneralExpression_delNode = _Expr.Expr_SequenceOfGeneralExpression_delNode

class expr(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    CopyShare = _swig_new_static_method(_Expr.expr_CopyShare)
    NbOfFreeVariables = _swig_new_static_method(_Expr.expr_NbOfFreeVariables)
    Sign = _swig_new_static_method(_Expr.expr_Sign)

    __repr__ = _dumps_object


    def __init__(self):
        _Expr.expr_swiginit(self, _Expr.new_expr())
    __swig_destroy__ = _Expr.delete_expr

# Register expr in _Expr:
_Expr.expr_swigregister(expr)
expr_CopyShare = _Expr.expr_CopyShare
expr_NbOfFreeVariables = _Expr.expr_NbOfFreeVariables
expr_Sign = _Expr.expr_Sign

class Expr_GeneralExpression(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    Contains = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Contains)
    ContainsUnknowns = _swig_new_instance_method(_Expr.Expr_GeneralExpression_ContainsUnknowns)
    Copy = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Copy)
    Derivative = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Derivative)
    Evaluate = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Evaluate)
    EvaluateNumeric = _swig_new_instance_method(_Expr.Expr_GeneralExpression_EvaluateNumeric)
    IsIdentical = _swig_new_instance_method(_Expr.Expr_GeneralExpression_IsIdentical)
    IsLinear = _swig_new_instance_method(_Expr.Expr_GeneralExpression_IsLinear)
    IsShareable = _swig_new_instance_method(_Expr.Expr_GeneralExpression_IsShareable)
    NDerivative = _swig_new_instance_method(_Expr.Expr_GeneralExpression_NDerivative)
    NbSubExpressions = _swig_new_instance_method(_Expr.Expr_GeneralExpression_NbSubExpressions)
    Replace = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Replace)
    ShallowSimplified = _swig_new_instance_method(_Expr.Expr_GeneralExpression_ShallowSimplified)
    Simplified = _swig_new_instance_method(_Expr.Expr_GeneralExpression_Simplified)
    String = _swig_new_instance_method(_Expr.Expr_GeneralExpression_String)
    SubExpression = _swig_new_instance_method(_Expr.Expr_GeneralExpression_SubExpression)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_GeneralExpression_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_GeneralExpression

# Register Expr_GeneralExpression in _Expr:
_Expr.Expr_GeneralExpression_swigregister(Expr_GeneralExpression)

class Expr_GeneralFunction(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    Copy = _swig_new_instance_method(_Expr.Expr_GeneralFunction_Copy)
    Derivative = _swig_new_instance_method(_Expr.Expr_GeneralFunction_Derivative)
    Evaluate = _swig_new_instance_method(_Expr.Expr_GeneralFunction_Evaluate)
    GetStringName = _swig_new_instance_method(_Expr.Expr_GeneralFunction_GetStringName)
    IsIdentical = _swig_new_instance_method(_Expr.Expr_GeneralFunction_IsIdentical)
    IsLinearOnVariable = _swig_new_instance_method(_Expr.Expr_GeneralFunction_IsLinearOnVariable)
    NbOfVariables = _swig_new_instance_method(_Expr.Expr_GeneralFunction_NbOfVariables)
    Variable = _swig_new_instance_method(_Expr.Expr_GeneralFunction_Variable)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_GeneralFunction_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_GeneralFunction

# Register Expr_GeneralFunction in _Expr:
_Expr.Expr_GeneralFunction_swigregister(Expr_GeneralFunction)

class Expr_GeneralRelation(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    Contains = _swig_new_instance_method(_Expr.Expr_GeneralRelation_Contains)
    Copy = _swig_new_instance_method(_Expr.Expr_GeneralRelation_Copy)
    IsLinear = _swig_new_instance_method(_Expr.Expr_GeneralRelation_IsLinear)
    IsSatisfied = _swig_new_instance_method(_Expr.Expr_GeneralRelation_IsSatisfied)
    NbOfSingleRelations = _swig_new_instance_method(_Expr.Expr_GeneralRelation_NbOfSingleRelations)
    NbOfSubRelations = _swig_new_instance_method(_Expr.Expr_GeneralRelation_NbOfSubRelations)
    Replace = _swig_new_instance_method(_Expr.Expr_GeneralRelation_Replace)
    Simplified = _swig_new_instance_method(_Expr.Expr_GeneralRelation_Simplified)
    Simplify = _swig_new_instance_method(_Expr.Expr_GeneralRelation_Simplify)
    String = _swig_new_instance_method(_Expr.Expr_GeneralRelation_String)
    SubRelation = _swig_new_instance_method(_Expr.Expr_GeneralRelation_SubRelation)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_GeneralRelation_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_GeneralRelation

# Register Expr_GeneralRelation in _Expr:
_Expr.Expr_GeneralRelation_swigregister(Expr_GeneralRelation)

class Expr_RUIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates an iterator on every NamedUnknown contained in <rel>.
        	:param rel:
        	:type rel: Expr_GeneralRelation
        	:rtype: None
        """
        _Expr.Expr_RUIterator_swiginit(self, _Expr.new_Expr_RUIterator(*args))
    More = _swig_new_instance_method(_Expr.Expr_RUIterator_More)
    Next = _swig_new_instance_method(_Expr.Expr_RUIterator_Next)
    Value = _swig_new_instance_method(_Expr.Expr_RUIterator_Value)

    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_RUIterator

# Register Expr_RUIterator in _Expr:
_Expr.Expr_RUIterator_swigregister(Expr_RUIterator)

class Expr_RelationIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        :param rel:
        	:type rel: Expr_GeneralRelation
        	:rtype: None
        """
        _Expr.Expr_RelationIterator_swiginit(self, _Expr.new_Expr_RelationIterator(*args))
    More = _swig_new_instance_method(_Expr.Expr_RelationIterator_More)
    Next = _swig_new_instance_method(_Expr.Expr_RelationIterator_Next)
    Value = _swig_new_instance_method(_Expr.Expr_RelationIterator_Value)

    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_RelationIterator

# Register Expr_RelationIterator in _Expr:
_Expr.Expr_RelationIterator_swigregister(Expr_RelationIterator)

class Expr_UnknownIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        :param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_UnknownIterator_swiginit(self, _Expr.new_Expr_UnknownIterator(*args))
    More = _swig_new_instance_method(_Expr.Expr_UnknownIterator_More)
    Next = _swig_new_instance_method(_Expr.Expr_UnknownIterator_Next)
    Value = _swig_new_instance_method(_Expr.Expr_UnknownIterator_Value)

    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_UnknownIterator

# Register Expr_UnknownIterator in _Expr:
_Expr.Expr_UnknownIterator_swigregister(Expr_UnknownIterator)

class Expr_BinaryExpression(Expr_GeneralExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    FirstOperand = _swig_new_instance_method(_Expr.Expr_BinaryExpression_FirstOperand)
    SecondOperand = _swig_new_instance_method(_Expr.Expr_BinaryExpression_SecondOperand)
    SetFirstOperand = _swig_new_instance_method(_Expr.Expr_BinaryExpression_SetFirstOperand)
    SetSecondOperand = _swig_new_instance_method(_Expr.Expr_BinaryExpression_SetSecondOperand)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_BinaryExpression_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_BinaryExpression

# Register Expr_BinaryExpression in _Expr:
_Expr.Expr_BinaryExpression_swigregister(Expr_BinaryExpression)

class Expr_FunctionDerivative(Expr_GeneralFunction):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Degree = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_Degree)
    DerivVariable = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_DerivVariable)
    Derivative = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_Derivative)

    def __init__(self, *args):
        r"""
        * Creates a FunctionDerivative of degree <deg> relative to the <withX> variable. Raises OutOfRange if <deg> lower or equal to zero.
        	:param func:
        	:type func: Expr_GeneralFunction
        	:param withX:
        	:type withX: Expr_NamedUnknown
        	:param deg:
        	:type deg: int
        	:rtype: None
        """
        _Expr.Expr_FunctionDerivative_swiginit(self, _Expr.new_Expr_FunctionDerivative(*args))
    Expression = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_Expression)
    Function = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_Function)
    UpdateExpression = _swig_new_instance_method(_Expr.Expr_FunctionDerivative_UpdateExpression)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_FunctionDerivative_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_FunctionDerivative

# Register Expr_FunctionDerivative in _Expr:
_Expr.Expr_FunctionDerivative_swigregister(Expr_FunctionDerivative)

class Expr_NamedExpression(Expr_GeneralExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    GetName = _swig_new_instance_method(_Expr.Expr_NamedExpression_GetName)
    SetName = _swig_new_instance_method(_Expr.Expr_NamedExpression_SetName)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_NamedExpression_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_NamedExpression

# Register Expr_NamedExpression in _Expr:
_Expr.Expr_NamedExpression_swigregister(Expr_NamedExpression)

class Expr_NamedFunction(Expr_GeneralFunction):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Derivative = _swig_new_instance_method(_Expr.Expr_NamedFunction_Derivative)

    def __init__(self, *args):
        r"""
        * Creates a function of given variables <vars> with name <name> defined by the expression <exp>.
        	:param name:
        	:type name: TCollection_AsciiString
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:param vars:
        	:type vars: Expr_Array1OfNamedUnknown
        	:rtype: None
        """
        _Expr.Expr_NamedFunction_swiginit(self, _Expr.new_Expr_NamedFunction(*args))
    Expression = _swig_new_instance_method(_Expr.Expr_NamedFunction_Expression)
    GetName = _swig_new_instance_method(_Expr.Expr_NamedFunction_GetName)
    SetExpression = _swig_new_instance_method(_Expr.Expr_NamedFunction_SetExpression)
    SetName = _swig_new_instance_method(_Expr.Expr_NamedFunction_SetName)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_NamedFunction_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_NamedFunction

# Register Expr_NamedFunction in _Expr:
_Expr.Expr_NamedFunction_swigregister(Expr_NamedFunction)

class Expr_NumericValue(Expr_GeneralExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        :param val:
        	:type val: float
        	:rtype: None
        """
        _Expr.Expr_NumericValue_swiginit(self, _Expr.new_Expr_NumericValue(*args))
    GetValue = _swig_new_instance_method(_Expr.Expr_NumericValue_GetValue)
    SetValue = _swig_new_instance_method(_Expr.Expr_NumericValue_SetValue)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_NumericValue_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_NumericValue

# Register Expr_NumericValue in _Expr:
_Expr.Expr_NumericValue_swigregister(Expr_NumericValue)

class Expr_PolyExpression(Expr_GeneralExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    NbOperands = _swig_new_instance_method(_Expr.Expr_PolyExpression_NbOperands)
    Operand = _swig_new_instance_method(_Expr.Expr_PolyExpression_Operand)
    SetOperand = _swig_new_instance_method(_Expr.Expr_PolyExpression_SetOperand)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_PolyExpression_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_PolyExpression

# Register Expr_PolyExpression in _Expr:
_Expr.Expr_PolyExpression_swigregister(Expr_PolyExpression)

class Expr_SingleRelation(Expr_GeneralRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    FirstMember = _swig_new_instance_method(_Expr.Expr_SingleRelation_FirstMember)
    SecondMember = _swig_new_instance_method(_Expr.Expr_SingleRelation_SecondMember)
    SetFirstMember = _swig_new_instance_method(_Expr.Expr_SingleRelation_SetFirstMember)
    SetSecondMember = _swig_new_instance_method(_Expr.Expr_SingleRelation_SetSecondMember)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_SingleRelation_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_SingleRelation

# Register Expr_SingleRelation in _Expr:
_Expr.Expr_SingleRelation_swigregister(Expr_SingleRelation)

class Expr_SystemRelation(Expr_GeneralRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Add = _swig_new_instance_method(_Expr.Expr_SystemRelation_Add)

    def __init__(self, *args):
        r"""
        * Creates a system with one relation
        	:param relation:
        	:type relation: Expr_GeneralRelation
        	:rtype: None
        """
        _Expr.Expr_SystemRelation_swiginit(self, _Expr.new_Expr_SystemRelation(*args))
    Remove = _swig_new_instance_method(_Expr.Expr_SystemRelation_Remove)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_SystemRelation_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_SystemRelation

# Register Expr_SystemRelation in _Expr:
_Expr.Expr_SystemRelation_swigregister(Expr_SystemRelation)

class Expr_UnaryExpression(Expr_GeneralExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    Operand = _swig_new_instance_method(_Expr.Expr_UnaryExpression_Operand)
    SetOperand = _swig_new_instance_method(_Expr.Expr_UnaryExpression_SetOperand)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_UnaryExpression_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_UnaryExpression

# Register Expr_UnaryExpression in _Expr:
_Expr.Expr_UnaryExpression_swigregister(Expr_UnaryExpression)

class Expr_Absolute(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Abs of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Absolute_swiginit(self, _Expr.new_Expr_Absolute(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Absolute_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Absolute

# Register Expr_Absolute in _Expr:
_Expr.Expr_Absolute_swigregister(Expr_Absolute)

class Expr_ArcCosine(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Arccos of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArcCosine_swiginit(self, _Expr.new_Expr_ArcCosine(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArcCosine_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArcCosine

# Register Expr_ArcCosine in _Expr:
_Expr.Expr_ArcCosine_swigregister(Expr_ArcCosine)

class Expr_ArcSine(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Arcsin of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArcSine_swiginit(self, _Expr.new_Expr_ArcSine(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArcSine_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArcSine

# Register Expr_ArcSine in _Expr:
_Expr.Expr_ArcSine_swigregister(Expr_ArcSine)

class Expr_ArcTangent(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Arctan of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArcTangent_swiginit(self, _Expr.new_Expr_ArcTangent(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArcTangent_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArcTangent

# Register Expr_ArcTangent in _Expr:
_Expr.Expr_ArcTangent_swigregister(Expr_ArcTangent)

class Expr_ArgCosh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the ArgCosh of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArgCosh_swiginit(self, _Expr.new_Expr_ArgCosh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArgCosh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArgCosh

# Register Expr_ArgCosh in _Expr:
_Expr.Expr_ArgCosh_swigregister(Expr_ArgCosh)

class Expr_ArgSinh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the ArgSinh of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArgSinh_swiginit(self, _Expr.new_Expr_ArgSinh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArgSinh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArgSinh

# Register Expr_ArgSinh in _Expr:
_Expr.Expr_ArgSinh_swigregister(Expr_ArgSinh)

class Expr_ArgTanh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Argtanh of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_ArgTanh_swiginit(self, _Expr.new_Expr_ArgTanh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_ArgTanh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_ArgTanh

# Register Expr_ArgTanh in _Expr:
_Expr.Expr_ArgTanh_swigregister(Expr_ArgTanh)

class Expr_BinaryFunction(Expr_BinaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates <self> as <func> (<exp1>,<exp2>). Raises exception if <func> is not binary.
        	:param func:
        	:type func: Expr_GeneralFunction
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_BinaryFunction_swiginit(self, _Expr.new_Expr_BinaryFunction(*args))
    Function = _swig_new_instance_method(_Expr.Expr_BinaryFunction_Function)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_BinaryFunction_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_BinaryFunction

# Register Expr_BinaryFunction in _Expr:
_Expr.Expr_BinaryFunction_swigregister(Expr_BinaryFunction)

class Expr_Cosh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the Cosh of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Cosh_swiginit(self, _Expr.new_Expr_Cosh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Cosh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Cosh

# Register Expr_Cosh in _Expr:
_Expr.Expr_Cosh_swigregister(Expr_Cosh)

class Expr_Cosine(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the cosine of Exp
        	:param Exp:
        	:type Exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Cosine_swiginit(self, _Expr.new_Expr_Cosine(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Cosine_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Cosine

# Register Expr_Cosine in _Expr:
_Expr.Expr_Cosine_swigregister(Expr_Cosine)

class Expr_Difference(Expr_BinaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the difference <exp1> - <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Difference_swiginit(self, _Expr.new_Expr_Difference(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Difference_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Difference

# Register Expr_Difference in _Expr:
_Expr.Expr_Difference_swigregister(Expr_Difference)

class Expr_Different(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> # <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Different_swiginit(self, _Expr.new_Expr_Different(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Different_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Different

# Register Expr_Different in _Expr:
_Expr.Expr_Different_swigregister(Expr_Different)

class Expr_Division(Expr_BinaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the division <exp1>/<exp2>
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Division_swiginit(self, _Expr.new_Expr_Division(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Division_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Division

# Register Expr_Division in _Expr:
_Expr.Expr_Division_swigregister(Expr_Division)

class Expr_Equal(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> = <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Equal_swiginit(self, _Expr.new_Expr_Equal(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Equal_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Equal

# Register Expr_Equal in _Expr:
_Expr.Expr_Equal_swigregister(Expr_Equal)

class Expr_Exponential(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the exponential of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Exponential_swiginit(self, _Expr.new_Expr_Exponential(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Exponential_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Exponential

# Register Expr_Exponential in _Expr:
_Expr.Expr_Exponential_swigregister(Expr_Exponential)

class Expr_Exponentiate(Expr_BinaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the exponential <exp1> ^ <exp2>
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Exponentiate_swiginit(self, _Expr.new_Expr_Exponentiate(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Exponentiate_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Exponentiate

# Register Expr_Exponentiate in _Expr:
_Expr.Expr_Exponentiate_swigregister(Expr_Exponentiate)

class Expr_GreaterThan(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> > <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_GreaterThan_swiginit(self, _Expr.new_Expr_GreaterThan(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_GreaterThan_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_GreaterThan

# Register Expr_GreaterThan in _Expr:
_Expr.Expr_GreaterThan_swigregister(Expr_GreaterThan)

class Expr_GreaterThanOrEqual(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> >= <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_GreaterThanOrEqual_swiginit(self, _Expr.new_Expr_GreaterThanOrEqual(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_GreaterThanOrEqual_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_GreaterThanOrEqual

# Register Expr_GreaterThanOrEqual in _Expr:
_Expr.Expr_GreaterThanOrEqual_swigregister(Expr_GreaterThanOrEqual)

class Expr_LessThan(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> < <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_LessThan_swiginit(self, _Expr.new_Expr_LessThan(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_LessThan_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_LessThan

# Register Expr_LessThan in _Expr:
_Expr.Expr_LessThan_swigregister(Expr_LessThan)

class Expr_LessThanOrEqual(Expr_SingleRelation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the relation <exp1> <= <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_LessThanOrEqual_swiginit(self, _Expr.new_Expr_LessThanOrEqual(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_LessThanOrEqual_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_LessThanOrEqual

# Register Expr_LessThanOrEqual in _Expr:
_Expr.Expr_LessThanOrEqual_swigregister(Expr_LessThanOrEqual)

class Expr_LogOf10(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the base 10 logarithm of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_LogOf10_swiginit(self, _Expr.new_Expr_LogOf10(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_LogOf10_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_LogOf10

# Register Expr_LogOf10 in _Expr:
_Expr.Expr_LogOf10_swigregister(Expr_LogOf10)

class Expr_LogOfe(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the natural logarithm of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_LogOfe_swiginit(self, _Expr.new_Expr_LogOfe(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_LogOfe_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_LogOfe

# Register Expr_LogOfe in _Expr:
_Expr.Expr_LogOfe_swigregister(Expr_LogOfe)

class Expr_NamedConstant(Expr_NamedExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates a constant value of name <name> and value <value>.
        	:param name:
        	:type name: TCollection_AsciiString
        	:param value:
        	:type value: float
        	:rtype: None
        """
        _Expr.Expr_NamedConstant_swiginit(self, _Expr.new_Expr_NamedConstant(*args))
    GetValue = _swig_new_instance_method(_Expr.Expr_NamedConstant_GetValue)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_NamedConstant_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_NamedConstant

# Register Expr_NamedConstant in _Expr:
_Expr.Expr_NamedConstant_swigregister(Expr_NamedConstant)

class Expr_NamedUnknown(Expr_NamedExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Assign = _swig_new_instance_method(_Expr.Expr_NamedUnknown_Assign)
    AssignedExpression = _swig_new_instance_method(_Expr.Expr_NamedUnknown_AssignedExpression)
    Deassign = _swig_new_instance_method(_Expr.Expr_NamedUnknown_Deassign)

    def __init__(self, *args):
        r"""
        :param name:
        	:type name: TCollection_AsciiString
        	:rtype: None
        """
        _Expr.Expr_NamedUnknown_swiginit(self, _Expr.new_Expr_NamedUnknown(*args))
    IsAssigned = _swig_new_instance_method(_Expr.Expr_NamedUnknown_IsAssigned)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_NamedUnknown_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_NamedUnknown

# Register Expr_NamedUnknown in _Expr:
_Expr.Expr_NamedUnknown_swigregister(Expr_NamedUnknown)

class Expr_PolyFunction(Expr_PolyExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates <self> as <func>(<exps_1>,<exps_2>,...,<exps_n>)
        	:param func:
        	:type func: Expr_GeneralFunction
        	:param exps:
        	:type exps: Expr_Array1OfGeneralExpression
        	:rtype: None
        """
        _Expr.Expr_PolyFunction_swiginit(self, _Expr.new_Expr_PolyFunction(*args))
    Function = _swig_new_instance_method(_Expr.Expr_PolyFunction_Function)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_PolyFunction_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_PolyFunction

# Register Expr_PolyFunction in _Expr:
_Expr.Expr_PolyFunction_swigregister(Expr_PolyFunction)

class Expr_Product(Expr_PolyExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the product of all members of sequence <exps>
        	:param exps:
        	:type exps: Expr_SequenceOfGeneralExpression
        	:rtype: None* Creates the product of <exp1> and <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Product_swiginit(self, _Expr.new_Expr_Product(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Product_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Product

# Register Expr_Product in _Expr:
_Expr.Expr_Product_swigregister(Expr_Product)

class Expr_Sine(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the sine of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Sine_swiginit(self, _Expr.new_Expr_Sine(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Sine_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Sine

# Register Expr_Sine in _Expr:
_Expr.Expr_Sine_swigregister(Expr_Sine)

class Expr_Sinh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the sinh of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Sinh_swiginit(self, _Expr.new_Expr_Sinh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Sinh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Sinh

# Register Expr_Sinh in _Expr:
_Expr.Expr_Sinh_swigregister(Expr_Sinh)

class Expr_Square(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the square of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Square_swiginit(self, _Expr.new_Expr_Square(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Square_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Square

# Register Expr_Square in _Expr:
_Expr.Expr_Square_swigregister(Expr_Square)

class Expr_SquareRoot(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the square root of <exp>
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_SquareRoot_swiginit(self, _Expr.new_Expr_SquareRoot(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_SquareRoot_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_SquareRoot

# Register Expr_SquareRoot in _Expr:
_Expr.Expr_SquareRoot_swigregister(Expr_SquareRoot)

class Expr_Sum(Expr_PolyExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the sum of all the members of sequence <exps>.
        	:param exps:
        	:type exps: Expr_SequenceOfGeneralExpression
        	:rtype: None* Creates the sum of <exp1> and <exp2>.
        	:param exp1:
        	:type exp1: Expr_GeneralExpression
        	:param exp2:
        	:type exp2: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Sum_swiginit(self, _Expr.new_Expr_Sum(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Sum_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Sum

# Register Expr_Sum in _Expr:
_Expr.Expr_Sum_swigregister(Expr_Sum)

class Expr_Tangent(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the tangent of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Tangent_swiginit(self, _Expr.new_Expr_Tangent(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Tangent_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Tangent

# Register Expr_Tangent in _Expr:
_Expr.Expr_Tangent_swigregister(Expr_Tangent)

class Expr_Tanh(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates the hyperbolic tangent of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_Tanh_swiginit(self, _Expr.new_Expr_Tanh(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_Tanh_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_Tanh

# Register Expr_Tanh in _Expr:
_Expr.Expr_Tanh_swigregister(Expr_Tanh)

class Expr_UnaryFunction(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Creates me as <func>(<exp>). Raises exception if <func> is not unary.
        	:param func:
        	:type func: Expr_GeneralFunction
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_UnaryFunction_swiginit(self, _Expr.new_Expr_UnaryFunction(*args))
    Function = _swig_new_instance_method(_Expr.Expr_UnaryFunction_Function)


    @staticmethod
    def DownCast(t):
      return Handle_Expr_UnaryFunction_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_UnaryFunction

# Register Expr_UnaryFunction in _Expr:
_Expr.Expr_UnaryFunction_swigregister(Expr_UnaryFunction)

class Expr_UnaryMinus(Expr_UnaryExpression):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        * Create the unary minus of <exp>.
        	:param exp:
        	:type exp: Expr_GeneralExpression
        	:rtype: None
        """
        _Expr.Expr_UnaryMinus_swiginit(self, _Expr.new_Expr_UnaryMinus(*args))


    @staticmethod
    def DownCast(t):
      return Handle_Expr_UnaryMinus_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _Expr.delete_Expr_UnaryMinus

# Register Expr_UnaryMinus in _Expr:
_Expr.Expr_UnaryMinus_swigregister(Expr_UnaryMinus)



