ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MulAction.IsBlock.mk_subset
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ IsBlock G B ↔ ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), (g • B ∩ B).Nonempty → g • B = B) ↔ ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
tactic: simp_rw [IsBlock.mk_notempty_one, ← Set.nonempty_iff_ne_empty]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), (g • B ∩ B).Nonempty → g • B = B) ↔ ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B
state_after: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), (g • B ∩ B).Nonempty → g • B = B) → ∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B

case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ {g : G} {b : X}, b ∈ B → b ∈ g • B → g • B ⊆ B) → ∀ (g : G), (g • B ∩ B).Nonempty → g • B = B
tactic: constructor
Theorem: OrderIso.symm_symm
File: Mathlib/Order/Hom/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
⊢ e.symm.symm = e
state_after: case h.h
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
x✝ : α
⊢ e.symm.symm x✝ = e x✝
tactic: ext
state_before: case h.h
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
x✝ : α
⊢ e.symm.symm x✝ = e x✝
state_after: no goals
tactic: rfl
Theorem: MeasureTheory.SimpleFunc.measurableSet_support
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (support ↑f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y})
tactic: rw [f.support_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y})
state_after: no goals
tactic: exact Finset.measurableSet_biUnion _ fun y _ => measurableSet_fiber _ _
Theorem: map_eq_zero_iff_eq_zero
File: Mathlib/Algebra/Order/Hom/Basic.lean

Proof steps:
state_before: ι : Type u_1
F : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝³ : FunLike F α β
inst✝² : Group α
inst✝¹ : OrderedAddCommMonoid β
inst✝ : GroupNormClass F α β
f : F
x : α
⊢ x = 1 → f x = 0
state_after: ι : Type u_1
F : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝³ : FunLike F α β
inst✝² : Group α
inst✝¹ : OrderedAddCommMonoid β
inst✝ : GroupNormClass F α β
f : F
⊢ f 1 = 0
tactic: rintro rfl
state_before: ι : Type u_1
F : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝³ : FunLike F α β
inst✝² : Group α
inst✝¹ : OrderedAddCommMonoid β
inst✝ : GroupNormClass F α β
f : F
⊢ f 1 = 0
state_after: no goals
tactic: exact map_one_eq_zero _
Theorem: Cardinal.cantorFunctionAux_succ
File: Mathlib/Data/Real/Cardinality.lean

Proof steps:
state_before: c : ℝ
f✝ g : ℕ → Bool
n : ℕ
f : ℕ → Bool
⊢ (fun n => cantorFunctionAux c f (n + 1)) = fun n => c * cantorFunctionAux c (fun n => f (n + 1)) n
state_after: case h
c : ℝ
f✝ g : ℕ → Bool
n✝ : ℕ
f : ℕ → Bool
n : ℕ
⊢ cantorFunctionAux c f (n + 1) = c * cantorFunctionAux c (fun n => f (n + 1)) n
tactic: ext n
state_before: case h
c : ℝ
f✝ g : ℕ → Bool
n✝ : ℕ
f : ℕ → Bool
n : ℕ
⊢ cantorFunctionAux c f (n + 1) = c * cantorFunctionAux c (fun n => f (n + 1)) n
state_after: no goals
tactic: cases h : f (n + 1) <;> simp [h, _root_.pow_succ']
Theorem: Filter.Tendsto.val_inv_units
File: Mathlib/Topology/Algebra/Monoid.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ r₁ * r₂ = 1
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₁ * r₂
tactic: symm
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₁ * r₂
state_after: no goals
tactic: simpa using h₁.mul h₂
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ r₂ * r₁ = 1
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₂ * r₁
tactic: symm
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace X
inst✝⁷ : TopologicalSpace M
inst✝⁶ : Mul M
inst✝⁵ : ContinuousMul M
inst✝⁴ : TopologicalSpace N
inst✝³ : Monoid N
inst✝² : ContinuousMul N
inst✝¹ : T2Space N
f : ι → Nˣ
r₁ r₂ : N
l : Filter ι
inst✝ : l.NeBot
h₁ : Tendsto (fun x => ↑(f x)) l (𝓝 r₁)
h₂ : Tendsto (fun x => ↑(f x)⁻¹) l (𝓝 r₂)
⊢ 1 = r₂ * r₁
state_after: no goals
tactic: simpa using h₂.mul h₁
Theorem: Matrix.det_comm'
File: Mathlib/LinearAlgebra/Determinant.lean

Proof steps:
state_before: R : Type u_1
inst✝¹¹ : CommRing R
M✝ : Type u_2
inst✝¹⁰ : AddCommGroup M✝
inst✝⁹ : Module R M✝
M'✝ : Type u_3
inst✝⁸ : AddCommGroup M'✝
inst✝⁷ : Module R M'✝
ι : Type u_4
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M✝
A : Type u_5
inst✝⁴ : CommRing A
m : Type u_6
n : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
M : Matrix n m A
N M' : Matrix m n A
hMM' : M * M' = 1
hM'M : M' * M = 1
⊢ (M * N).det = (N * M).det
state_after: R : Type u_1
inst✝¹¹ : CommRing R
M✝ : Type u_2
inst✝¹⁰ : AddCommGroup M✝
inst✝⁹ : Module R M✝
M'✝ : Type u_3
inst✝⁸ : AddCommGroup M'✝
inst✝⁷ : Module R M'✝
ι : Type u_4
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M✝
A : Type u_5
inst✝⁴ : CommRing A
m : Type u_6
n : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
M : Matrix n m A
N M' : Matrix m n A
hMM' : M * M' = 1
hM'M : M' * M = 1
a✝ : Nontrivial A
⊢ (M * N).det = (N * M).det
tactic: nontriviality A
state_before: R : Type u_1
inst✝¹¹ : CommRing R
M✝ : Type u_2
inst✝¹⁰ : AddCommGroup M✝
inst✝⁹ : Module R M✝
M'✝ : Type u_3
inst✝⁸ : AddCommGroup M'✝
inst✝⁷ : Module R M'✝
ι : Type u_4
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M✝
A : Type u_5
inst✝⁴ : CommRing A
m : Type u_6
n : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
M : Matrix n m A
N M' : Matrix m n A
hMM' : M * M' = 1
hM'M : M' * M = 1
a✝ : Nontrivial A
⊢ (M * N).det = (N * M).det
state_after: R : Type u_1
inst✝¹¹ : CommRing R
M✝ : Type u_2
inst✝¹⁰ : AddCommGroup M✝
inst✝⁹ : Module R M✝
M'✝ : Type u_3
inst✝⁸ : AddCommGroup M'✝
inst✝⁷ : Module R M'✝
ι : Type u_4
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e✝ : Basis ι R M✝
A : Type u_5
inst✝⁴ : CommRing A
m : Type u_6
n : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
M : Matrix n m A
N M' : Matrix m n A
hMM' : M * M' = 1
hM'M : M' * M = 1
a✝ : Nontrivial A
e : n ≃ m := indexEquivOfInv hMM' hM'M
⊢ (M * N).det = (N * M).det
tactic: let e := indexEquivOfInv hMM' hM'M
state_before: R : Type u_1
inst✝¹¹ : CommRing R
M✝ : Type u_2
inst✝¹⁰ : AddCommGroup M✝
inst✝⁹ : Module R M✝
M'✝ : Type u_3
inst✝⁸ : AddCommGroup M'✝
inst✝⁷ : Module R M'✝
ι : Type u_4
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e✝ : Basis ι R M✝
A : Type u_5
inst✝⁴ : CommRing A
m : Type u_6
n : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
M : Matrix n m A
N M' : Matrix m n A
hMM' : M * M' = 1
hM'M : M' * M = 1
a✝ : Nontrivial A
e : n ≃ m := indexEquivOfInv hMM' hM'M
⊢ (M * N).det = (N * M).det
state_after: no goals
tactic: rw [← det_submatrix_equiv_self e, ← submatrix_mul_equiv _ _ _ (Equiv.refl n) _, det_comm,
    submatrix_mul_equiv, Equiv.coe_refl, submatrix_id_id]
Theorem: Fin.succ_predAbove_zero
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
inst✝ : NeZero n
j : Fin (n + 1)
h : j ≠ 0
⊢ (predAbove 0 j).succ = j
state_after: case intro
n m : ℕ
inst✝ : NeZero n
k : Fin n
h : k.succ ≠ 0
⊢ (predAbove 0 k.succ).succ = k.succ
tactic: rcases exists_succ_eq_of_ne_zero h with ⟨k, rfl⟩
state_before: case intro
n m : ℕ
inst✝ : NeZero n
k : Fin n
h : k.succ ≠ 0
⊢ (predAbove 0 k.succ).succ = k.succ
state_after: no goals
tactic: rw [predAbove_zero_succ]
Theorem: Nat.properDivisors_one
File: Mathlib/NumberTheory/Divisors.lean

Proof steps:
state_before: n : ℕ
⊢ properDivisors 1 = ∅
state_after: no goals
tactic: rw [properDivisors, Ico_self, filter_empty]
Theorem: SymplecticGroup.neg_mem
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

Proof steps:
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
h : A ∈ symplecticGroup l R
⊢ -A ∈ symplecticGroup l R
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
h : A * J l R * Aᵀ = J l R
⊢ -A * J l R * (-A)ᵀ = J l R
tactic: rw [mem_iff] at h ⊢
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
h : A * J l R * Aᵀ = J l R
⊢ -A * J l R * (-A)ᵀ = J l R
state_after: no goals
tactic: simp [h]
Theorem: Module.Ray.units_smul_of_neg
File: Mathlib/LinearAlgebra/Ray.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ u • v = -v
state_after: case hu
R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ 0 < ↑(-u)
tactic: rw [← neg_inj, neg_neg, ← neg_units_smul, units_smul_of_pos]
state_before: case hu
R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ 0 < ↑(-u)
state_after: no goals
tactic: rwa [Units.val_neg, Right.neg_pos_iff]
Theorem: Polynomial.support_update_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q p : R[X]
n : ℕ
⊢ (p.update n 0).support = p.support.erase n
state_after: no goals
tactic: rw [update_zero_eq_erase, support_erase]
Theorem: MvPolynomial.eval₂_assoc
File: Mathlib/Algebra/MvPolynomial/Basic.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
⊢ eval₂ f (fun t => eval₂ f g (q t)) p = eval₂ f g (eval₂ C q p)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
⊢ eval₂ f (fun t => eval₂ f g (q t)) p = (eval₂Hom f g) (eval₂ C q p)
tactic: show _ = eval₂Hom f g (eval₂ C q p)
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
⊢ eval₂ f (fun t => eval₂ f g (q t)) p = (eval₂Hom f g) (eval₂ C q p)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
⊢ eval₂ f (fun t => eval₂ f g (q t)) p = eval₂ ((eval₂Hom f g).comp C) (⇑(eval₂Hom f g) ∘ q) p
tactic: rw [eval₂_comp_left (eval₂Hom f g)]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
⊢ eval₂ f (fun t => eval₂ f g (q t)) p = eval₂ ((eval₂Hom f g).comp C) (⇑(eval₂Hom f g) ∘ q) p
state_after: case e_f.a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a✝ a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
a : R
⊢ f a = ((eval₂Hom f g).comp C) a
tactic: congr with a
state_before: case e_f.a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a✝ a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q✝ : MvPolynomial σ R
f : R →+* S₁
g : σ → S₁
q : S₂ → MvPolynomial σ R
p : MvPolynomial S₂ R
a : R
⊢ f a = ((eval₂Hom f g).comp C) a
state_after: no goals
tactic: simp
Theorem: Nat.nth_eq_zero
File: Mathlib/Data/Nat/Nth.lean

Proof steps:
state_before: p : ℕ → Prop
n : ℕ
⊢ nth p n = 0 ↔ p 0 ∧ n = 0 ∨ ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ n
state_after: case refine_1
p : ℕ → Prop
n : ℕ
h : nth p n = 0
⊢ p 0 ∧ n = 0 ∨ ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ n

case refine_2
p : ℕ → Prop
n : ℕ
⊢ (p 0 ∧ n = 0 ∨ ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ n) → nth p n = 0
tactic: refine ⟨fun h => ?_, ?_⟩
Theorem: RootPairing.IsOrthogonal.symm
File: Mathlib/LinearAlgebra/RootSystem/Defs.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
⊢ P.IsOrthogonal i j ↔ P.IsOrthogonal j i
state_after: no goals
tactic: simp only [IsOrthogonal, and_comm]
Theorem: NNReal.IsConjExponent.mul_eq_add
File: Mathlib/Data/Real/ConjExponents.lean

Proof steps:
state_before: a b p q : ℝ≥0
h : p.IsConjExponent q
⊢ p * q = p + q
state_after: no goals
tactic: simpa only [← NNReal.coe_mul, ← NNReal.coe_add, NNReal.coe_inj] using h.coe.mul_eq_add
Theorem: Real.Angle.expMapCircle_neg
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

Proof steps:
state_before: θ : Angle
⊢ (-θ).expMapCircle = θ.expMapCircle⁻¹
state_after: case h
x✝ : ℝ
⊢ (-↑x✝).expMapCircle = (↑x✝).expMapCircle⁻¹
tactic: induction θ using Real.Angle.induction_on
state_before: case h
x✝ : ℝ
⊢ (-↑x✝).expMapCircle = (↑x✝).expMapCircle⁻¹
state_after: no goals
tactic: simp_rw [← Real.Angle.coe_neg, Real.Angle.expMapCircle_coe, _root_.expMapCircle_neg]
Theorem: AddCommute.neg_add_cancel_assoc
File: Mathlib/Algebra/Group/Commute/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
a b : G
h : Commute a b
⊢ a⁻¹ * (b * a) = b
state_after: no goals
tactic: rw [← mul_assoc, h.inv_mul_cancel]
Theorem: Relation.reflGen_eq_self
File: Mathlib/Logic/Relation.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hr : Reflexive r
⊢ ReflGen r = r
state_after: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hr : Reflexive r
x y : α
⊢ ReflGen r x y ↔ r x y
tactic: ext x y
state_before: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hr : Reflexive r
x y : α
⊢ ReflGen r x y ↔ r x y
state_after: no goals
tactic: simpa only [reflGen_iff, or_iff_right_iff_imp] using fun h ↦ h ▸ hr y
Theorem: lt_add_neg_iff_lt
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ 1 < a * b⁻¹ ↔ b < a
state_after: no goals
tactic: rw [← mul_lt_mul_iff_right b, one_mul, inv_mul_cancel_right]
Theorem: MeasureTheory.SignedMeasure.toComplexMeasure_apply_im
File: Mathlib/MeasureTheory/Measure/Complex.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
⊢ (fun i => { re := ↑s i, im := ↑t i }) ∅ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
⊢ { re := ↑s ∅, im := ↑t ∅ } = 0
tactic: dsimp only
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
⊢ { re := ↑s ∅, im := ↑t ∅ } = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
⊢ { re := 0, im := 0 } = 0
tactic: rw [s.empty, t.empty]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
⊢ { re := 0, im := 0 } = 0
state_after: no goals
tactic: rfl
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
i : Set α
hi : ¬MeasurableSet i
⊢ (fun i => { re := ↑s i, im := ↑t i }) i = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
i : Set α
hi : ¬MeasurableSet i
⊢ { re := ↑s i, im := ↑t i } = 0
tactic: dsimp only
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
i : Set α
hi : ¬MeasurableSet i
⊢ { re := ↑s i, im := ↑t i } = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
i : Set α
hi : ¬MeasurableSet i
⊢ { re := 0, im := 0 } = 0
tactic: rw [s.not_measurable hi, t.not_measurable hi]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s t : SignedMeasure α
i : Set α
hi : ¬MeasurableSet i
⊢ { re := 0, im := 0 } = 0
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.Bicategory.unitors_inv_equal
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

Proof steps:
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
⊢ (λ_ (𝟙 a)).inv = (ρ_ (𝟙 a)).inv
state_after: no goals
tactic: simp [Iso.inv_eq_inv]
Theorem: AffineIndependent.finrank_vectorSpan_add_one
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
inst✝¹ : Fintype ι
inst✝ : Nonempty ι
p : ι → P
hi : AffineIndependent k p
⊢ finrank k ↥(vectorSpan k (Set.range p)) + 1 = Fintype.card ι
state_after: no goals
tactic: rw [hi.finrank_vectorSpan (tsub_add_cancel_of_le _).symm, tsub_add_cancel_of_le] <;>
    exact Fintype.card_pos
Theorem: ContinuousLinearMap.toPMap_adjoint_eq_adjoint_toPMap_of_dense
File: Mathlib/Analysis/InnerProductSpace/LinearPMap.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
⊢ ((↑A).toPMap p).adjoint = (↑(adjoint A)).toPMap ⊤
state_after: case h.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : F
⊢ x ∈ ((↑A).toPMap p).adjoint.domain ↔ x ∈ ((↑(adjoint A)).toPMap ⊤).domain

case h'
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : ↥((↑A).toPMap p).adjoint.domain
y : ↥((↑(adjoint A)).toPMap ⊤).domain
hxy : ↑x = ↑y
⊢ ↑((↑A).toPMap p).adjoint x = ↑((↑(adjoint A)).toPMap ⊤) y
tactic: ext x y hxy
state_before: case h'
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : ↥((↑A).toPMap p).adjoint.domain
y : ↥((↑(adjoint A)).toPMap ⊤).domain
hxy : ↑x = ↑y
⊢ ↑((↑A).toPMap p).adjoint x = ↑((↑(adjoint A)).toPMap ⊤) y
state_after: case h'.refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : ↥((↑A).toPMap p).adjoint.domain
y : ↥((↑(adjoint A)).toPMap ⊤).domain
hxy : ↑x = ↑y
⊢ Dense ↑((↑A).toPMap p).domain

case h'.refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : ↥((↑A).toPMap p).adjoint.domain
y : ↥((↑(adjoint A)).toPMap ⊤).domain
hxy : ↑x = ↑y
v : ↥((↑A).toPMap p).domain
⊢ ⟪↑((↑(adjoint A)).toPMap ⊤) y, ↑v⟫_𝕜 = ⟪↑x, ↑((↑A).toPMap p) v⟫_𝕜
tactic: refine LinearPMap.adjoint_apply_eq ?_ _ fun v => ?_
Theorem: UniformCauchySeqOn.add
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Type u_3
l : Filter ι
l' : Filter β
f f' : ι → β → α
g g' : β → α
s : Set β
hf : UniformCauchySeqOn f l s
hf' : UniformCauchySeqOn f' l s
u : Set (α × α)
hu : u ∈ 𝓤 α
⊢ ∀ᶠ (m : ι × ι) in l ×ˢ l, ∀ x ∈ s, ((f * f') m.1 x, (f * f') m.2 x) ∈ u
state_after: no goals
tactic: simpa using (uniformContinuous_mul.comp_uniformCauchySeqOn (hf.prod' hf')) u hu
Theorem: Polynomial.toLaurent_C_mul_T
File: Mathlib/Algebra/Polynomial/Laurent.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
r : R
⊢ Finsupp.mapDomain Nat.cast ((monomial n) r).toFinsupp = C r * T ↑n
state_after: no goals
tactic: rw [toFinsupp_monomial, Finsupp.mapDomain_single, single_eq_C_mul_T]