Example #1
0
    def transform_to_distributive_context(self, context):
        """Generate distributive context from current
        
        Can add relations I(j,m) but can't destroy one
        
        """

        #         print('Generate the distributive context \''+context.context_name+'_d\' of the context \''+context.context_name+'\'')
        if context.mode == Context.distributive:
            return context

        distributive_context = Context(context.context_name + '_d')
        distributive_context.J = copy(context.J)
        for j in distributive_context.J:
            j_prime = context.get_j_prime(j)
            j_filters = set()
            X = set()
            for k in distributive_context.J:
                i_prime = context.get_j_prime(k)
                if j_prime >= i_prime:
                    j_filters.add(k)
                else:
                    X.add(k)
            mj = 'm_' + j
            distributive_context.add_m(mj)
            for x in X:
                distributive_context.add_i(x, mj)

        return distributive_context
Example #2
0
    def transform_to_standard_context(self, context):
        """Create standard context from current."""

        #         print('Generate the standard context of \''+context.context_name+'\'')
        if context.mode == Context.standard:
            return context
        standard_context = Context(context.context_name)
        standard_context.J = copy(context.get_irreductibles_infs(False))
        standard_context.M = copy(context.get_irreductibles_sups(False))
        for i in context.I:
            if (i[0] in standard_context.J) and (i[1] in standard_context.M):
                standard_context.add_i(i[0], i[1])
        standard_context.mode = Context.standard
        return standard_context