Example #1
0
 def __new__(cls, n, m, set):
     n, m, set = _sympify(n), _sympify(m), _sympify(set)
     cls._check_dim(n)
     cls._check_dim(m)
     if not isinstance(set, Set):
         raise TypeError("{} should be an instance of Set.".format(set))
     return Set.__new__(cls, n, m, set)
Example #2
0
    def __new__(cls, sets):

        new_sets = []
        # sets is Union of ProductSets
        if not sets.is_ProductSet:
            for k in sets.args:
                new_sets.append(k)
        # sets is ProductSets
        else:
            new_sets.append(sets)
        # Normalize input theta
        for k, v in enumerate(new_sets):
            new_sets[k] = ProductSet(v.args[0], normalize_theta_set(v.args[1]))
        sets = Union(*new_sets)
        return Set.__new__(cls, sets)
Example #3
0
 def _has(self, pattern):
     """Helper for .has()"""
     x = self.variable
     if self.variable == pattern:
         return self.base_set._has(pattern)
     if x.is_Slice and pattern.is_Slice and x.base == pattern.base:
         if pattern in x:
             return False
         if x in pattern:
             start, stop = x.indices
             _start, _stop = pattern.indices
             if _start < start:
                 if self._has(pattern[_start : start]):
                     return True
             if stop < _stop:
                 if self._has(pattern[stop  : _stop]):
                     return True
         return False
     return Set._has(self, pattern)
Example #4
0
    def __new__(cls, sets):

        if sets == S.Reals * S.Reals:
            return S.Complexes

        if all(_a.is_FiniteSet for _a in sets.args) and (len(sets.args) == 2):

            # ** ProductSet of FiniteSets in the Complex Plane. **
            # For Cases like ComplexRegion({2, 4}*{3}), It
            # would return {2 + 3*I, 4 + 3*I}

            # FIXME: This should probably be handled with something like:
            # return ImageSet(Lambda((x, y), x+I*y), sets).rewrite(FiniteSet)
            complex_num = []
            for x in sets.args[0]:
                for y in sets.args[1]:
                    complex_num.append(x + S.ImaginaryUnit * y)
            return FiniteSet(*complex_num)
        else:
            return Set.__new__(cls, sets)
Example #5
0
 def __new__(cls):
     return Set.__new__(cls)