1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.nonempty_Ioo
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_nonempty, coe_Ioo, Set.nonempty_Ioo]
state_before: ι : Type u_1
α : Type u_2
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
inst✝ : DenselyOrdered α
⊢ (Ioo a b).Nonempty ↔ a < b
state_after: no goals
Theorem: Set.range_sigma_eq_iUnion_range
File: Mathlib/Data/Set/Lattice.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
γ : α → Type u_11
f : Sigma γ → β
⊢ ∀ (x : β), x ∈ range f ↔ x ∈ ⋃ a, range fun b => f ⟨a, b⟩
state_after: no goals
Theorem: Nat.mul_le_of_le_div
File: Mathlib/Data/Nat/Defs.lean

tactic: if hk : k = 0 then
  rw [hk, Nat.mul_zero]; exact zero_le _
else
  rwa [← le_div_iff_mul_le (Nat.pos_iff_ne_zero.2 hk)]
state_before: a b c d m n k✝ : ℕ
p q : ℕ → Prop
k x y : ℕ
h : x ≤ y / k
⊢ x * k ≤ y
state_after: no goals

tactic: rw [hk, Nat.mul_zero]
state_before: a b c d m n k✝ : ℕ
p q : ℕ → Prop
k x y : ℕ
h : x ≤ y / k
hk : k = 0
⊢ x * k ≤ y
state_after: a b c d m n k✝ : ℕ
p q : ℕ → Prop
k x y : ℕ
h : x ≤ y / k
hk : k = 0
⊢ 0 ≤ y

tactic: exact zero_le _
state_before: a b c d m n k✝ : ℕ
p q : ℕ → Prop
k x y : ℕ
h : x ≤ y / k
hk : k = 0
⊢ 0 ≤ y
state_after: no goals

tactic: rwa [← le_div_iff_mul_le (Nat.pos_iff_ne_zero.2 hk)]
state_before: a b c d m n k✝ : ℕ
p q : ℕ → Prop
k x y : ℕ
h : x ≤ y / k
hk : ¬k = 0
⊢ x * k ≤ y
state_after: no goals
Theorem: Algebra.trace_algebraMap
File: Mathlib/RingTheory/Trace.lean

tactic: by_cases H : ∃ s : Finset L, Nonempty (Basis s K L)
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
x : K
⊢ (trace K L) ((algebraMap K L) x) = finrank K L • x
state_after: case pos
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
x : K
H : ∃ s, Nonempty (Basis { x // x ∈ s } K L)
⊢ (trace K L) ((algebraMap K L) x) = finrank K L • x

case neg
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
x : K
H : ¬∃ s, Nonempty (Basis { x // x ∈ s } K L)
⊢ (trace K L) ((algebraMap K L) x) = finrank K L • x

tactic: rw [trace_algebraMap_of_basis H.choose_spec.some, finrank_eq_card_basis H.choose_spec.some]
state_before: case pos
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
x : K
H : ∃ s, Nonempty (Basis { x // x ∈ s } K L)
⊢ (trace K L) ((algebraMap K L) x) = finrank K L • x
state_after: no goals

tactic: simp [trace_eq_zero_of_not_exists_basis K H, finrank_eq_zero_of_not_exists_basis_finset H]
state_before: case neg
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
x : K
H : ¬∃ s, Nonempty (Basis { x // x ∈ s } K L)
⊢ (trace K L) ((algebraMap K L) x) = finrank K L • x
state_after: no goals
Theorem: Nat.nonempty_of_pos_sInf
File: Mathlib/Data/Nat/Lattice.lean

tactic: by_contra contra
state_before: s : Set ℕ
h : 0 < sInf s
⊢ s.Nonempty
state_after: s : Set ℕ
h : 0 < sInf s
contra : ¬s.Nonempty
⊢ False

tactic: rw [Set.not_nonempty_iff_eq_empty] at contra
state_before: s : Set ℕ
h : 0 < sInf s
contra : ¬s.Nonempty
⊢ False
state_after: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
⊢ False

tactic: have h' : sInf s ≠ 0 := ne_of_gt h
state_before: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
⊢ False
state_after: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ False

tactic: apply h'
state_before: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ False
state_after: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ sInf s = 0

tactic: rw [Nat.sInf_eq_zero]
state_before: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ sInf s = 0
state_after: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ 0 ∈ s ∨ s = ∅

tactic: right
state_before: s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ 0 ∈ s ∨ s = ∅
state_after: case h
s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ s = ∅

tactic: assumption
state_before: case h
s : Set ℕ
h : 0 < sInf s
contra : s = ∅
h' : sInf s ≠ 0
⊢ s = ∅
state_after: no goals
Theorem: Pell.IsFundamental.zpow_eq_one_iff
File: Mathlib/NumberTheory/Pell.lean

tactic: rw [← zpow_zero a]
state_before: d : ℤ
a : Solution₁ d
h : IsFundamental a
n : ℤ
⊢ a ^ n = 1 ↔ n = 0
state_after: d : ℤ
a : Solution₁ d
h : IsFundamental a
n : ℤ
⊢ a ^ n = a ^ 0 ↔ n = 0

tactic: exact ⟨fun H => h.y_strictMono.injective (congr_arg Solution₁.y H), fun H => H ▸ rfl⟩
state_before: d : ℤ
a : Solution₁ d
h : IsFundamental a
n : ℤ
⊢ a ^ n = a ^ 0 ↔ n = 0
state_after: no goals
Theorem: TrivSqZeroExt.fst_map
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: simp [map, lift_def, Algebra.ofId_apply, algebraMap_eq_inl]
state_before: S : Type u_1
R R' : Type u
M : Type v
inst✝²⁶ : CommSemiring S
inst✝²⁵ : Semiring R
inst✝²⁴ : CommSemiring R'
inst✝²³ : AddCommMonoid M
inst✝²² : Algebra S R
inst✝²¹ : Algebra S R'
inst✝²⁰ : Module S M
inst✝¹⁹ : Module R M
inst✝¹⁸ : Module Rᵐᵒᵖ M
inst✝¹⁷ : SMulCommClass R Rᵐᵒᵖ M
inst✝¹⁶ : IsScalarTower S R M
inst✝¹⁵ : IsScalarTower S Rᵐᵒᵖ M
inst✝¹⁴ : Module R' M
inst✝¹³ : Module R'ᵐᵒᵖ M
inst✝¹² : IsCentralScalar R' M
inst✝¹¹ : IsScalarTower S R' M
A : Type u_2
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra S A
inst✝⁸ : Algebra R' A
N : Type u_3
P : Type u_4
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R' N
inst✝⁵ : Module R'ᵐᵒᵖ N
inst✝⁴ : IsCentralScalar R' N
inst✝³ : AddCommMonoid P
inst✝² : Module R' P
inst✝¹ : Module R'ᵐᵒᵖ P
inst✝ : IsCentralScalar R' P
f : M →ₗ[R'] N
x : tsze R' M
⊢ ((map f) x).fst = x.fst
state_after: no goals
Theorem: LinearMap.mulLeft_injective
File: Mathlib/Algebra/Algebra/Bilinear.lean

tactic: letI : Nontrivial A := ⟨⟨x, 0, hx⟩⟩
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
⊢ Function.Injective ⇑(mulLeft R x)
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
⊢ Function.Injective ⇑(mulLeft R x)

tactic: letI := NoZeroDivisors.to_isDomain A
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
⊢ Function.Injective ⇑(mulLeft R x)
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this✝ : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
this : IsDomain A := NoZeroDivisors.to_isDomain A
⊢ Function.Injective ⇑(mulLeft R x)

tactic: exact mul_right_injective₀ hx
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this✝ : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
this : IsDomain A := NoZeroDivisors.to_isDomain A
⊢ Function.Injective ⇑(mulLeft R x)
state_after: no goals
Theorem: List.mem_sigma
File: Mathlib/Data/List/ProdSigma.lean

tactic: simp [List.sigma, mem_bind, mem_map, exists_prop, exists_and_left, and_left_comm,
  exists_eq_left, heq_iff_eq, exists_eq_right]
state_before: α : Type u_1
β : Type u_2
σ : α → Type u_3
l₁ : List α
l₂ : (a : α) → List (σ a)
a : α
b : σ a
⊢ ⟨a, b⟩ ∈ l₁.sigma l₂ ↔ a ∈ l₁ ∧ b ∈ l₂ a
state_after: no goals
Theorem: Algebra.trace_comp_trace_of_basis
File: Mathlib/RingTheory/Trace.lean

tactic: ext
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι✝ κ✝ : Type w
inst✝⁴ : Fintype ι✝
b✝ : Basis ι✝ R S
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
ι : Type u_6
κ : Type u_7
inst✝¹ : Finite ι
inst✝ : Finite κ
b : Basis ι R S
c : Basis κ S T
⊢ trace R S ∘ₗ ↑R (trace S T) = trace R T
state_after: case h
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι✝ κ✝ : Type w
inst✝⁴ : Fintype ι✝
b✝ : Basis ι✝ R S
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
ι : Type u_6
κ : Type u_7
inst✝¹ : Finite ι
inst✝ : Finite κ
b : Basis ι R S
c : Basis κ S T
x✝ : T
⊢ (trace R S ∘ₗ ↑R (trace S T)) x✝ = (trace R T) x✝

tactic: rw [LinearMap.comp_apply, LinearMap.restrictScalars_apply, trace_trace_of_basis b c]
state_before: case h
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι✝ κ✝ : Type w
inst✝⁴ : Fintype ι✝
b✝ : Basis ι✝ R S
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
ι : Type u_6
κ : Type u_7
inst✝¹ : Finite ι
inst✝ : Finite κ
b : Basis ι R S
c : Basis κ S T
x✝ : T
⊢ (trace R S ∘ₗ ↑R (trace S T)) x✝ = (trace R T) x✝
state_after: no goals
Theorem: Fin.cycleRange_zero'
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: cases' n with n
state_before: n : ℕ
h : 0 < n
⊢ ⟨0, h⟩.cycleRange = 1
state_after: case zero
h : 0 < 0
⊢ ⟨0, h⟩.cycleRange = 1

case succ
n : ℕ
h : 0 < n + 1
⊢ ⟨0, h⟩.cycleRange = 1

tactic: exact cycleRange_zero n
state_before: case succ
n : ℕ
h : 0 < n + 1
⊢ ⟨0, h⟩.cycleRange = 1
state_after: no goals

tactic: cases h
state_before: case zero
h : 0 < 0
⊢ ⟨0, h⟩.cycleRange = 1
state_after: no goals
Theorem: RCLike.real_smul_eq_coe_smul
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [RCLike.ofReal_alg, smul_one_smul]
state_before: K : Type u_1
E : Type u_2
inst✝⁴ : RCLike K
inst✝³ : AddCommGroup E
inst✝² : Module K E
inst✝¹ : Module ℝ E
inst✝ : IsScalarTower ℝ K E
r : ℝ
x : E
⊢ r • x = ↑r • x
state_after: no goals
Theorem: MonoidAlgebra.support_mul_single
File: Mathlib/Algebra/MonoidAlgebra/Support.lean

tactic: classical
  ext
  simp only [support_mul_single_eq_image f hr (IsRightRegular.all x),
    mem_image, mem_map, mulRightEmbedding_apply]
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : Mul G
inst✝ : IsRightCancelMul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
⊢ (f * single x r).support = map (mulRightEmbedding x) f.support
state_after: no goals

tactic: ext
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : Mul G
inst✝ : IsRightCancelMul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
⊢ (f * single x r).support = map (mulRightEmbedding x) f.support
state_after: case a
k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : Mul G
inst✝ : IsRightCancelMul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x a✝ : G
⊢ a✝ ∈ (f * single x r).support ↔ a✝ ∈ map (mulRightEmbedding x) f.support

tactic: simp only [support_mul_single_eq_image f hr (IsRightRegular.all x),
  mem_image, mem_map, mulRightEmbedding_apply]
state_before: case a
k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : Mul G
inst✝ : IsRightCancelMul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x a✝ : G
⊢ a✝ ∈ (f * single x r).support ↔ a✝ ∈ map (mulRightEmbedding x) f.support
state_after: no goals
Theorem: HurwitzZeta.cosKernel_neg
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: induction' a using QuotientAddGroup.induction_on' with a'
state_before: a : UnitAddCircle
x : ℝ
⊢ cosKernel (-a) x = cosKernel a x
state_after: case H
x a' : ℝ
⊢ cosKernel (-↑a') x = cosKernel (↑a') x

tactic: simp only [← QuotientAddGroup.mk_neg, ← ofReal_inj, cosKernel_def, ofReal_neg,
  jacobiTheta₂_neg_left]
state_before: case H
x a' : ℝ
⊢ cosKernel (-↑a') x = cosKernel (↑a') x
state_after: no goals
Theorem: Module.End.iSup_genEigenspace_restrict_eq_top
File: Mathlib/LinearAlgebra/Eigenspace/Triangularizable.lean

tactic: have := congr_arg (Submodule.comap p.subtype) (Submodule.eq_iSup_inf_genEigenspace h h')
state_before: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤

tactic: have h_inj : Function.Injective p.subtype := Subtype.coe_injective
state_before: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
h_inj : Injective ⇑p.subtype
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤

tactic: simp_rw [Submodule.inf_genEigenspace f p h, Submodule.comap_subtype_self,
  ← Submodule.map_iSup, Submodule.comap_map_eq_of_injective h_inj] at this
state_before: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
h_inj : Injective ⇑p.subtype
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_inj : Injective ⇑p.subtype
this : ⊤ = ⨆ i, ⨆ i_1, (genEigenspace (LinearMap.restrict f h) i) i_1
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤

tactic: exact this.symm
state_before: K : Type u_1
V : Type u_2
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_inj : Injective ⇑p.subtype
this : ⊤ = ⨆ i, ⨆ i_1, (genEigenspace (LinearMap.restrict f h) i) i_1
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: no goals
Theorem: Matrix.inv_inj
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: refine left_inv_eq_left_inv (mul_nonsing_inv _ h') ?_
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ A = B
state_after: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ B * A⁻¹ = 1

tactic: rw [h]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ B * A⁻¹ = 1
state_after: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ B * B⁻¹ = 1

tactic: refine mul_nonsing_inv _ ?_
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ B * B⁻¹ = 1
state_after: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ IsUnit B.det

tactic: rwa [← isUnit_nonsing_inv_det_iff, ← h, isUnit_nonsing_inv_det_iff]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A⁻¹ = B⁻¹
h' : IsUnit A.det
⊢ IsUnit B.det
state_after: no goals
Theorem: Cardinal.mk_set_nat
File: Mathlib/SetTheory/Cardinal/Continuum.lean

tactic: simp
state_before: ⊢ #(Set ℕ) = 𝔠
state_after: no goals
Theorem: Real.rpow_natCast
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_intCast x n
state_before: x✝ y z x : ℝ
n : ℕ
⊢ x ^ ↑n = x ^ n
state_after: no goals
Theorem: List.reduceOption_length_le
File: Mathlib/Data/List/ReduceOption.lean

tactic: rw [length_eq_reduceOption_length_add_filter_none]
state_before: α : Type u_1
β : Type u_2
l : List (Option α)
⊢ l.reduceOption.length ≤ l.length
state_after: α : Type u_1
β : Type u_2
l : List (Option α)
⊢ l.reduceOption.length ≤ l.reduceOption.length + (filter Option.isNone l).length

tactic: apply Nat.le_add_right
state_before: α : Type u_1
β : Type u_2
l : List (Option α)
⊢ l.reduceOption.length ≤ l.reduceOption.length + (filter Option.isNone l).length
state_after: no goals
Theorem: Real.negMulLog_eq_neg
File: Mathlib/Analysis/SpecialFunctions/Log/NegMulLog.lean

tactic: simp [negMulLog_def]
state_before: ⊢ negMulLog = fun x => -(x * log x)
state_after: no goals
Theorem: Finset.max'_insert
File: Mathlib/Data/Finset/Lattice.lean

tactic: rw [coe_insert, max_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsGreatest (↑(insert a s)) (max (s.max' H) a)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsGreatest (insert a ↑s) (max a (s.max' H))

tactic: exact (isGreatest_max' _ _).insert _
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsGreatest (insert a ↑s) (max a (s.max' H))
state_after: no goals
Theorem: LieSubmodule.ucs_bot_one
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: simp [LieSubmodule.normalizer_bot_eq_maxTrivSubmodule]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N N₁ N₂ : LieSubmodule R L M
⊢ ucs 1 ⊥ = LieModule.maxTrivSubmodule R L M
state_after: no goals
Theorem: IsHilbertSum.linearIsometryEquiv_symm_apply_single
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: simp [IsHilbertSum.linearIsometryEquiv, OrthogonalFamily.linearIsometry_apply_single]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
F : ι → Submodule 𝕜 E
hV : IsHilbertSum 𝕜 G V
i : ι
x : G i
⊢ hV.linearIsometryEquiv.symm (lp.single 2 i x) = (V i) x
state_after: no goals
Theorem: RingTopology.toTopologicalSpace_injective
File: Mathlib/Topology/Algebra/Ring/Basic.lean

tactic: intro f g _
state_before: α : Type u_1
inst✝ : Ring α
⊢ Injective toTopologicalSpace
state_after: α : Type u_1
inst✝ : Ring α
f g : RingTopology α
a✝ : f.toTopologicalSpace = g.toTopologicalSpace
⊢ f = g

tactic: cases f
state_before: α : Type u_1
inst✝ : Ring α
f g : RingTopology α
a✝ : f.toTopologicalSpace = g.toTopologicalSpace
⊢ f = g
state_after: case mk
α : Type u_1
inst✝ : Ring α
g : RingTopology α
toTopologicalSpace✝ : TopologicalSpace α
toTopologicalRing✝ : TopologicalRing α
a✝ :
  { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }.toTopologicalSpace =
    g.toTopologicalSpace
⊢ { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ } = g

tactic: cases g
state_before: case mk
α : Type u_1
inst✝ : Ring α
g : RingTopology α
toTopologicalSpace✝ : TopologicalSpace α
toTopologicalRing✝ : TopologicalRing α
a✝ :
  { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }.toTopologicalSpace =
    g.toTopologicalSpace
⊢ { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ } = g
state_after: case mk.mk
α : Type u_1
inst✝ : Ring α
toTopologicalSpace✝¹ : TopologicalSpace α
toTopologicalRing✝¹ : TopologicalRing α
toTopologicalSpace✝ : TopologicalSpace α
toTopologicalRing✝ : TopologicalRing α
a✝ :
  { toTopologicalSpace := toTopologicalSpace✝¹, toTopologicalRing := toTopologicalRing✝¹ }.toTopologicalSpace =
    { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }.toTopologicalSpace
⊢ { toTopologicalSpace := toTopologicalSpace✝¹, toTopologicalRing := toTopologicalRing✝¹ } =
    { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }

tactic: congr
state_before: case mk.mk
α : Type u_1
inst✝ : Ring α
toTopologicalSpace✝¹ : TopologicalSpace α
toTopologicalRing✝¹ : TopologicalRing α
toTopologicalSpace✝ : TopologicalSpace α
toTopologicalRing✝ : TopologicalRing α
a✝ :
  { toTopologicalSpace := toTopologicalSpace✝¹, toTopologicalRing := toTopologicalRing✝¹ }.toTopologicalSpace =
    { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }.toTopologicalSpace
⊢ { toTopologicalSpace := toTopologicalSpace✝¹, toTopologicalRing := toTopologicalRing✝¹ } =
    { toTopologicalSpace := toTopologicalSpace✝, toTopologicalRing := toTopologicalRing✝ }
state_after: no goals