import proveit
from proveit import defaults
from proveit import ExprRange, ExprTuple, IndexedVar, var_range, ExprArray, VertExprArray
from proveit import i, j, k, m, n, p, q, A, B, C, D, E, F, G, H, I, X
from proveit.logic import InSet
from proveit.numbers import one, Natural, NaturalPos, subtract
%begin demonstrations
# defaults.assumptions = [InSet(i, Natural), InSet(j, Natural), InSet(k, Natural),
# InSet(subtract(j, i), Natural),
# InSet(n, Natural), InSet(m, NaturalPos)]
A_i_to_j = var_range(A, i, j)
B_i_to_j = var_range(B, i, j)
C_i_to_j = var_range(C, i, j)
D_i_to_j = var_range(D, i, j)
Aij = IndexedVar(A,(i,j))
Bij = IndexedVar(B,(i,j))
Cij = IndexedVar(C,(i,j))
Dij = IndexedVar(D,(i,j))
Eij = IndexedVar(E, (i,j))
Fij = IndexedVar(F, (i,j))
ExprRange(j, Aij, one, n).with_styles(parameterization='explicit').body
ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n), ExprRange(j, Bij, one, k)),one,m)
ExprTuple(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n), ExprRange(j, Bij, one, k)),
one,m))
ExprArray(ExprTuple(A, B), ExprTuple(C, D))
ExprArray(ExprTuple(A, B, C, A, B, C, A),
ExprTuple(D, E, F, D, E, F, D),
ExprTuple(G, H, I, G, H, I, G))
ExprArray(ExprTuple(A_i_to_j, A, B, C),
ExprTuple(C_i_to_j, D, E, F))
ExprArray(ExprTuple(A_i_to_j.with_front_expansion(3), A, B, C),
ExprTuple(C_i_to_j.with_front_expansion(3), D, E, F))
# Unable to format this in an array form.
ExprArray(ExprTuple(A_i_to_j.with_front_expansion(2), A, B, C),
ExprTuple(C_i_to_j.with_front_expansion(3), D, E, F))
ExprArray(ExprTuple(A_i_to_j.with_back_expansion(3), A, B, C),
ExprTuple(C_i_to_j.with_back_expansion(3), D, E, F))
# Unable to format this in an array form.
ExprArray(ExprTuple(A_i_to_j.with_front_expansion(3), A, B, C),
ExprTuple(C_i_to_j.with_back_expansion(3), D, E, F))
ExprArray(ExprTuple(A_i_to_j.with_explicit_parameterization(), A, B, C),
ExprTuple(C_i_to_j, D, E, F))
ExprArray(ExprTuple(A_i_to_j, B_i_to_j.with_explicit_parameterization()),
ExprTuple(C_i_to_j.with_explicit_parameterization(), D_i_to_j))
ExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m))
ExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m)
.with_explicit_parameterization(),
ExprTuple(D, C, B, A))
ExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m)
.with_explicit_parameterization(),
X, [D, C, B, A])
VertExprArray(ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m)
.with_explicit_parameterization(),
X, [D, C, B, A])
ExprArray(ExprTuple(A,B,C,D),
ExprRange(i, ExprTuple(Aij, Bij, Cij, Dij),one,m),
ExprTuple(A,B,C,D))
ExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n),
ExprRange(j, Bij, one, k)),one,m))
ExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n),
ExprRange(j, Bij, one, k)),one,m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n)
.with_explicit_parameterization(),
ExprRange(j, Bij, one, k)),one,m))
ExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n)
.with_explicit_parameterization(),
ExprRange(j, Bij, one, k)),one,m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n)
.with_explicit_parameterization(),
ExprRange(j, Bij, one, k)),one,m)
.with_explicit_parameterization())
VertExprArray(ExprRange(i, ExprTuple(ExprRange(j, Aij, one, n)
.with_explicit_parameterization(),
ExprRange(j, Bij, one, k)),one,m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(A, A, ExprRange(j, Aij, one, n), A, A), one, m))
ExprArray(ExprRange(i, ExprRange(j, Aij,
one, n),
one, m))
ExprArray(ExprRange(i, ExprRange(j, ExprTuple(Aij, Bij),
one, n),
one, m))
ExprArray(ExprRange(i, ExprTuple(A, A, ExprRange(j, Aij, one, n), A, A), one, m))
ExprArray(ExprRange(i, ExprTuple(A, A, ExprRange(j, Aij, one, n).with_explicit_parameterization(), A, A), one, m)
.with_explicit_parameterization())
ExprArray(ExprRange(i, ExprTuple(A, A, ExprRange(j, Aij, one, n), A, A), one, m)
.with_explicit_parameterization())
Apj = IndexedVar(A,(p,j))
Bpj = IndexedVar(B,(p,j))
Cjk = IndexedVar(C,(j,k))
Dki = IndexedVar(D,(k,i))
C_i_to_k = var_range(C, i, k)
D_j_to_i = var_range(B, j, i)
# Unable to format this in an array form.
ExprArray(ExprTuple(A, B, C, A, B, A),
ExprTuple(D, E, F, D, E, F, D),
ExprTuple(G, H, I, G, H, I, G))
ExprArray(ExprTuple(B_i_to_j, A, B, C),
ExprTuple(D, E, F, D_i_to_j))
ExprArray(ExprTuple(A, B, C, B_i_to_j),
ExprTuple(D_i_to_j, D, E, F))
ExprArray(ExprTuple(C_i_to_j, D_j_to_i),
ExprTuple(A_i_to_j, B_i_to_j))
ExprArray(ExprRange(i, ExprTuple(Apj, Bij, Cjk, Dki),one,m))
ExprArray(ExprTuple(ExprRange(i, ExprRange(j, Aij, one, n), one, m)),
ExprTuple(ExprRange(i, ExprRange(j, Bij, one, n), one, m)))
ExprArray(ExprRange(i, IndexedVar(A, i), one, n))
ExprArray(ExprRange(i, ExprTuple(IndexedVar(A, i), IndexedVar(B, i)), one, n))#.get_format_cell_entries()
ExprArray(ExprRange(i, IndexedVar(A, i), one, n)).get_format_cell_entries()
ExprArray(ExprRange(i, ExprRange(j, Aij, one, n), one, m))
VertExprArray(ExprRange(i, ExprRange(j, Aij, one, n), one, m))
VertExprArray(ExprRange(i, ExprRange(j, Aij, one, n), one, m).with_explicit_parameterization())
ExprTuple(ExprRange(i, ExprRange(j, Aij, one, n), one, m).with_explicit_parameterization())
ExprArray(ExprRange(i, ExprRange(j, ExprTuple(Aij, Bij), one, n), one, m))
ExprArray(ExprRange(i, ExprRange(j, ExprTuple(Aij, Bij), one, n), one, m)
.with_explicit_parameterization())
VertExprArray(ExprRange(i, ExprRange(j, ExprTuple(Aij, Bij), one, n), one, m).with_explicit_parameterization())
VertExprArray(ExprRange(i, ExprRange(j, ExprTuple(Aij, Bij), one, n).with_explicit_parameterization(),
one, m).with_explicit_parameterization())
VertExprArray(ExprRange(i, ExprRange(j, Aij, one, n), one, m))
ExprArray(ExprRange(i, ExprRange(j, Aij, one, n), one, m))
# Unable to format this in an array form.
ExprArray(ExprTuple(A,B,C,D),
ExprRange(i, ExprTuple(ExprTuple(Apj, Bij),
ExprTuple(Cjk, Dki)),one,m),
ExprTuple(A,B,C,D))
ExprArray(E, F, ExprTuple(A,B), C, D)
%end demonstrations