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
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