Theorem: Matrix.det_kronecker
File: Mathlib/Data/Matrix/Kronecker.lean

tactic: refine' (det_kroneckerMapBilinear (Algebra.lmul ℕ R).toLinearMap mul_mul_mul_comm _ _).trans _
state_before: R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
⊢ det (kroneckerMap (fun x x_1 => x * x_1) A B) = det A ^ Fintype.card n * det B ^ Fintype.card m

tactic: congr 3
state_before: R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
⊢ det (map A fun a => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) a) 1) ^ Fintype.card n *
      det (map B fun b => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) 1) b) ^ Fintype.card m =
    det A ^ Fintype.card n * det B ^ Fintype.card m

tactic: ext (i j)
state_before: case e_a.e_a.e_M
R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
⊢ (map A fun a => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) a) 1) = A

tactic: exact mul_one _
state_before: case e_a.e_a.e_M.a.h
R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
i j : m
⊢ map A (fun a => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) a) 1) i j = A i j

tactic: ext (i j)
state_before: case e_a.e_a.e_M
R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
⊢ (map B fun b => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) 1) b) = B

tactic: exact one_mul _
state_before: case e_a.e_a.e_M.a.h
R : Type u_3
α : Type ?u.168871
α' : Type ?u.168874
β : Type ?u.168877
β' : Type ?u.168880
γ : Type ?u.168883
γ' : Type ?u.168886
l : Type ?u.168889
m : Type u_1
n : Type u_2
p : Type ?u.168898
q : Type ?u.168901
r : Type ?u.168904
l' : Type ?u.168907
m' : Type ?u.168910
n' : Type ?u.168913
p' : Type ?u.168916
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing R
A : Matrix m m R
B : Matrix n n R
i j : n
⊢ map B (fun b => ↑(↑(AlgHom.toLinearMap (Algebra.lmul ℕ R)) 1) b) i j = B i j