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, ))
def prove(Eq): n = Symbol.n(domain=[2, oo], integer=True) Eq << apply(n) 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]) Eq << Eq[-1][i] Eq << U[i].this.definition Eq << Eq[-2].this.rhs.as_KroneckerDelta() Eq << Eq[-2] - Eq[-1] Eq << Eq[-1].reference((i, )) Eq << Eq[-1].subs(Eq[1]).subs(Eq[2])