Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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)