@[instance_reducible]
Equations
- HexMatrixMathlib.instAdd = { add := fun (A B : Hex.Matrix R n m) => { data := A.data + B.data } }
@[instance_reducible]
Equations
- HexMatrixMathlib.instNeg = { neg := fun (A : Hex.Matrix R n m) => { data := -A.data } }
@[instance_reducible]
Equations
- HexMatrixMathlib.instSub = { sub := fun (A B : Hex.Matrix R n m) => { data := A.data - B.data } }
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
HexMatrixMathlib.matrixEquiv_smul
{R : Type u}
{n m : ℕ}
{S : Type u_1}
[SMul S R]
(c : S)
(A : Hex.Matrix R n m)
:
@[instance_reducible]
instance
HexMatrixMathlib.instOne
{R : Type u}
{n : ℕ}
[OfNat R 0]
[OfNat R 1]
:
One (Hex.Matrix R n n)
1 on a square matrix is the identity matrix. The instance is here rather than
in HexMatrix because the Semiring/Ring structures transported below need it,
while HexMatrix states its own lemmas with Matrix.identity.
Equations
- HexMatrixMathlib.instOne = { one := Hex.Matrix.identity n }
@[instance_reducible]
instance
HexMatrixMathlib.instAddCommMonoid
{R : Type u}
{n m : ℕ}
[AddCommMonoid R]
:
AddCommMonoid (Hex.Matrix R n m)
@[instance_reducible]
instance
HexMatrixMathlib.instAddCommGroup
{R : Type u}
{n m : ℕ}
[AddCommGroup R]
:
AddCommGroup (Hex.Matrix R n m)
Equations
matrixEquiv as an additive equivalence.
Equations
- HexMatrixMathlib.matrixAddEquiv = { toEquiv := HexMatrixMathlib.matrixEquiv, map_add' := ⋯ }
Instances For
@[simp]
theorem
HexMatrixMathlib.matrixAddEquiv_apply
{R : Type u}
{n m : ℕ}
[AddCommMonoid R]
(M : Hex.Matrix R n m)
:
@[instance_reducible]
instance
HexMatrixMathlib.instModule
{R : Type u}
{n m : ℕ}
[Semiring R]
:
Module R (Hex.Matrix R n m)
matrixEquiv as an R-linear equivalence.
Equations
- HexMatrixMathlib.matrixLinearEquiv = { toFun := HexMatrixMathlib.matrixEquiv.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := HexMatrixMathlib.matrixEquiv.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
@[simp]
theorem
HexMatrixMathlib.matrixLinearEquiv_apply
{R : Type u}
{n m : ℕ}
[Semiring R]
(M : Hex.Matrix R n m)
:
@[simp]
@[simp]
theorem
HexMatrixMathlib.matrixEquiv_mul
{R : Type u}
{n : ℕ}
[Semiring R]
(A B : Hex.Matrix R n n)
:
@[instance_reducible]
Equations
- HexMatrixMathlib.instNatCast = { natCast := fun (k : ℕ) => HexMatrixMathlib.matrixEquiv.symm ↑k }
@[instance_reducible]
Equations
- HexMatrixMathlib.instIntCast = { intCast := fun (k : ℤ) => HexMatrixMathlib.matrixEquiv.symm ↑k }
@[instance_reducible]
Equations
- HexMatrixMathlib.instPow = { pow := fun (M : Hex.Matrix R n n) (k : ℕ) => HexMatrixMathlib.matrixEquiv.symm (HexMatrixMathlib.matrixEquiv M ^ k) }
@[simp]
@[simp]
@[simp]
theorem
HexMatrixMathlib.matrixEquiv_pow
{R : Type u}
{n : ℕ}
[Semiring R]
(M : Hex.Matrix R n n)
(k : ℕ)
:
@[instance_reducible]
instance
HexMatrixMathlib.instSemiring
{R : Type u}
{n : ℕ}
[Semiring R]
:
Semiring (Hex.Matrix R n n)
Equations
@[instance_reducible]
Equations
- HexMatrixMathlib.instRing = Function.Injective.ring ⇑HexMatrixMathlib.matrixEquiv ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
matrixEquiv as a ring equivalence on square matrices.
Equations
- HexMatrixMathlib.matrixRingEquiv = { toEquiv := HexMatrixMathlib.matrixEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
theorem
HexMatrixMathlib.matrixRingEquiv_apply
{R : Type u}
{n : ℕ}
[Semiring R]
(M : Hex.Matrix R n n)
:
@[instance_reducible]
instance
HexMatrixMathlib.instAlgebra
{R : Type u}
{n : ℕ}
[CommSemiring R]
:
Algebra R (Hex.Matrix R n n)
Equations
matrixEquiv as an R-algebra equivalence on square matrices.
Equations
- HexMatrixMathlib.matrixAlgEquiv = { toEquiv := HexMatrixMathlib.matrixRingEquiv.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
@[simp]
theorem
HexMatrixMathlib.matrixAlgEquiv_apply
{R : Type u}
{n : ℕ}
[CommSemiring R]
(M : Hex.Matrix R n n)
: