def solve(self, f): n = self.n Fbot = self.Fbot if is_bottom(self.F, f): return self.R.U(self.R.get_bottom()) elif is_top(self.F, f): return self.R.U(self.R.get_top()) else: minimals = set() for i in range(n): tops = [Fbot] * n tops[i] = f minimals.add(tuple(tops)) return self.R.Us(minimals)
def solve_r(self, r): Rtop = self.Rtop n = self.n if is_top(self.R, r): return self.F.L(self.F.get_top()) elif is_bottom(self.R, r): return self.F.L(self.F.get_bottom()) else: maximals = set() for i in range(n): tops = [Rtop] * n tops[i] = r maximals.add(tuple(tops)) return self.F.Ls(maximals)