Example #1
0
    def solve_r(self, r):
        F = self.get_fun_space()

        s = []

        mcdp_dev_warning('use specific operation on antichains')
        for dp in self.dps:
            lf = dp.solve_r(r)
            s.extend(lf.maximals)

        res = F.Ls(poset_maxima(s, F.leq))

        return res
Example #2
0
    def solve_r(self, r):
        F = self.get_fun_space()

        s = []

        mcdp_dev_warning('use specific operation on antichains')
        for dp in self.dps:
            lf = dp.solve_r(r)
            s.extend(lf.maximals)

        res = F.Ls(poset_maxima(s, F.leq))

        return res
Example #3
0
    def meet(self, a, b):
        from mcdp_posets.find_poset_minima.baseline_n2 import poset_maxima

        # find all descendants
        da = self._get_lower_closure(a)
        db = self._get_lower_closure(b)
        # take intersection
        inter = set(da) & set(db)
        if not inter:
            msg = 'There exists no join because lower closures separate.'
            raise_desc(NotMeetable, msg, a=self.format(a), b=self.format(b),
                       da=da, db=db)
        maxima = poset_maxima(inter, self.leq)
        if len(maxima) > 1:
            msg = 'There exists no least element of intersection of lower closure.'
            raise_desc(NotMeetable, msg)
        return list(maxima)[0]
Example #4
0
    def meet(self, a, b):
        from mcdp_posets.find_poset_minima.baseline_n2 import poset_maxima

        # find all descendants
        da = self._get_lower_closure(a)
        db = self._get_lower_closure(b)
        # take intersection
        inter = set(da) & set(db)
        if not inter:
            msg = 'There exists no join because lower closures separate.'
            raise_desc(NotMeetable, msg, a=self.format(a), b=self.format(b),
                       da=da, db=db)
        maxima = poset_maxima(inter, self.leq)
        if len(maxima) > 1:
            msg = 'There exists no least element of intersection of lower closure.'
            raise_desc(NotMeetable, msg)
        return list(maxima)[0]
Example #5
0
    def solve_r(self, r):
        l2 = self.dp2.solve_r(r)

        if do_extra_checks():
            F2 = self.dp2.get_fun_space()
            LF2 = LowerSets(F2)
            LF2.belongs(l2)

        maxs = set([])
        
        # todo: express as operation on antichains
        for l in l2.maximals:    
            v = self.dp1.solve_r(l)
            maxs.update(v.maximals)

        F = self.get_fun_space()
        maximals = poset_maxima(maxs, F.leq)

        lf = LowerSet(maximals, F)
        return lf
Example #6
0
File: utils.py Project: rusi/mcdp
def check_maximal(elements, poset):
    m2 = poset_maxima(elements, poset.leq)
    if not len(m2) == len(elements):
        msg = 'Set of elements is not minimal: %s' % elements
        raise ValueError(msg)
Example #7
0
def check_maximal(elements, poset):
    m2 = poset_maxima(elements, poset.leq)
    if not len(m2) == len(elements):
        msg = 'Set of elements is not minimal: %s' % elements
        raise ValueError(msg)