-- Mathlib/LinearAlgebra/Matrix/ToLinearEquiv.lean
/-- A matrix whose nondiagonal entries are negative with the sum of the entries of each
row positive has nonzero determinant. -/
lemma det_ne_zero_of_sum_row_pos [DecidableEq n] {S : Type*} [LinearOrderedCommRing S]
    {A : Matrix n n S} (h1 : Pairwise fun i j => A i j < 0) (h2 : ∀ i, 0 < ∑ j, A i j) :
    A.det ≠ 0

Proof state:
case refine_1
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Pairwise fun i j => Aᵀ i j < 0

Tactic:
simp_rw [Matrix.transpose_apply]

Result:
case refine_1
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Pairwise fun i j => A j i < 0

Proof state:
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ A.det ≠ 0

Tactic:
rw [← Matrix.det_transpose]

Result:
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Aᵀ.det ≠ 0

Proof state:
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Aᵀ.det ≠ 0

Tactic:
refine det_ne_zero_of_sum_col_pos ?_ ?_

Result:
case refine_1
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Pairwise fun i j => Aᵀ i j < 0

case refine_2
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ ∀ (j : n), 0 < ∑ i : n, Aᵀ i j

Proof state:
case refine_2
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ ∀ (j : n), 0 < ∑ i : n, Aᵀ i j

Tactic:
simp_rw [Matrix.transpose_apply]

Result:
case refine_2
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ ∀ (j : n), 0 < ∑ x : n, A j x

Proof state:
case refine_1
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ Pairwise fun i j => A j i < 0

Tactic:
exact fun i j h => h1 h.symm

Result:
no goals

Proof state:
case refine_2
n : Type u_1
inst✝² : Fintype n
inst✝¹ : DecidableEq n
S : Type u_2
inst✝ : LinearOrderedCommRing S
A : Matrix n n S
h1 : Pairwise fun i j => A i j < 0
h2 : ∀ (i : n), 0 < ∑ j : n, A i j
⊢ ∀ (j : n), 0 < ∑ x : n, A j x

Tactic:
exact h2

Result:
no goals