def eval_constant_MakeTuple(op, context): ops = get_odd_ops(unwrap_list(op.ops)) constants = [eval_constant(_, context) for _ in ops] # TODO: generic product Fs = [_.unit for _ in constants] vs = [_.value for _ in constants] F = PosetProduct(tuple(Fs)) v = tuple(vs) F.belongs(v) return ValueWithUnits(v, F)
def check_products2(): print('------') F1 = PosetProduct(()) M, pack, unpack = get_product_compact(F1) print('M: %s' % M) element = () F1.belongs(element) print('elements: %s' % F1.format(element)) s = pack(*(element, )) print('packed: %s' % str(s)) u, = unpack(s) print('depacked: %s' % str(u)) assert_equal(u, element)
def check_products2(): print('------') F1 = PosetProduct(()) M, pack, unpack = get_product_compact(F1) print('M: %s' % M) element = () F1.belongs(element) print('elements: %s' % F1.format(element)) s = pack(*(element,)) print('packed: %s' % str(s)) u, = unpack(s) print('depacked: %s' % str(u)) assert_equal(u, element)
def _execute(self, dp1, dp2): a = dp1 b = dp2 One = PosetProduct(()) assert a.get_res_space() == One and b.get_res_space() == One mux = Mux(One, [(), ()]) solutions_a = a.solve_r(()) solutions_b = b.solve_r(()) prod = lowerset_product(solutions_a, solutions_b) F = PosetProduct((a.get_fun_space(), b.get_fun_space())) elements = prod.maximals if len(elements) == 1: e = list(elements)[0] F.belongs(e) dpconstant = Limit(F, e) else: dpconstant = LimitMaximals(F, elements) res = Series( dpconstant, mux) return res
def _execute(self, dp1, dp2): a = dp1 b = dp2 One = PosetProduct(()) assert a.get_res_space() == One and b.get_res_space() == One mux = Mux(One, [(), ()]) solutions_a = a.solve_r(()) solutions_b = b.solve_r(()) prod = lowerset_product(solutions_a, solutions_b) F = PosetProduct((a.get_fun_space(), b.get_fun_space())) elements = prod.maximals if len(elements) == 1: e = list(elements)[0] F.belongs(e) dpconstant = Limit(F, e) else: dpconstant = LimitMaximals(F, elements) res = Series(dpconstant, mux) return res
def check_coproduct1(): S1 = R_Weight S2 = PosetProduct((R_Time, R_Energy)) C = Coproduct1((S1, S2)) x = C.witness() C.belongs(x) print C.format(x) i, xi = C.unpack(x) if i == 0: S1.belongs(xi) elif i == 1: S2.belongs(xi) else: assert False r = C.pack(i, xi) C.check_equal(r, x)