Exemplo n.º 1
0
def prove(Eq):
    n = Symbol.n(domain=[2, oo], integer=True)
    Eq << apply(n)

    _, i, j = Eq[0].rhs.args
    _i = i.copy(domain=[0, n - 1])
    _j = j.copy(domain=[0, n - 1])

    W = Symbol.W(definition=Eq[0].lhs._subs(i, _i)._subs(j, _j))
    V = Symbol.V(definition=Eq[0].rhs._subs(i, _i)._subs(j, _j))

    Eq << W.this.definition
    Eq << V.this.definition

    h = Symbol.h(integer=True, domain=[0, n])
    k = Symbol.k(integer=True, domain=[0, n])

    Eq << (V[h, k].this.definition, W[h, k].this.definition)

    Eq << (Eq[-1].this.rhs.as_KroneckerDelta(),
           Eq[-2].this.rhs.as_KroneckerDelta())

    Eq << Eq[-2] - Eq[-1]

    Eq << Eq[-1].reference((k, ), (h, ))

    Eq << Eq[-1].subs(Eq[1]).subs(Eq[2])

    Eq << Eq[-1].forall((_i, ), (_j, ))
Exemplo n.º 2
0
def prove(Eq):
    n = Symbol.n(integer=True)
    x = Symbol.x(shape=(n, ), real=True)
    y = Symbol.y(shape=(n, ), real=True)
    W = Symbol.W(shape=(n, n), real=True)

    Eq << apply(x, y, W)

    i = Symbol.i(domain=Interval(0, n - 1, integer=True))
    j = Symbol.j(domain=Interval(0, n - 1, integer=True))

    Eq << (x @ W).this.expand(free_symbol={i, j})

    Eq << Eq[-1] @ y

    Eq << Eq[-1].this.rhs.expand()

    Eq.expansion = Eq[-1].this.rhs.function.distribute()

    Eq << Eq.expansion.subs(W, W.T)

    Eq << Eq[-1].swap(x, y)

    Eq << Eq[-1].this.rhs.limits_subs(i, j)

    Eq << Eq[-1].this.rhs.limits_swap()

    Eq << Eq.expansion.subs(Eq[-1].reversed)
Exemplo n.º 3
0
def prove(Eq):
    n = Symbol.n(domain=[2, oo], integer=True)
    W = Symbol.W(shape=(n, n), complex=True)
    Eq << apply(W)

    U = Symbol.U(definition=Eq[0].lhs)
    V = Symbol.V(definition=Eq[0].rhs)

    Eq << U.this.definition
    Eq << V.this.definition

    i = Symbol.i(integer=True, domain=[0, n])
    j = Symbol.j(integer=True, domain=[0, n])

    Eq << (V[i, j].this.definition, U[i, j].this.definition)

    Eq << (Eq[-1].this.rhs.as_KroneckerDelta(),
           Eq[-2].this.rhs.as_KroneckerDelta())

    Eq << Eq[-2] - Eq[-1]

    Eq << Eq[-1].reference((j, ), (i, ))

    Eq << Eq[-1].subs(Eq[1]).subs(Eq[2])

    Eq << Eq[-1].forall((j, ), (i, ))
Exemplo n.º 4
0
def prove(Eq):
    n = Symbol.n(integer=True)
    x = Symbol.x(shape=(n, ), real=True)
    y = Symbol.y(shape=(n, ), real=True)
    W = Symbol.W(shape=(n, n), real=True)

    Eq << apply(x, y, Equality(W.T, W))

    Eq << bilinear.transpose.apply(x, y, W)

    Eq << Eq[-1].subs(Eq[0])