ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CliffordAlgebra.toProd_comp_ofProd
File: Mathlib/LinearAlgebra/CliffordAlgebra/Prod.lean

Proof steps:
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
⊢ (toProd Q₁ Q₂).comp (ofProd Q₁ Q₂) = AlgHom.id R (CliffordAlgebra (QuadraticMap.prod Q₁ Q₂))
state_after: case a.hl.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₁
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (QuadraticMap.prod Q₁ Q₂)) (m, 0))) = (ι (QuadraticMap.prod Q₁ Q₂)) (m, 0)

case a.hr.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₂
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (QuadraticMap.prod Q₁ Q₂)) (0, m))) = (ι (QuadraticMap.prod Q₁ Q₂)) (0, m)
tactic: ext m <;> dsimp
Theorem: sbtw_comm
File: Mathlib/Analysis/Convex/Between.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ Sbtw R x y z ↔ Sbtw R z y x
state_after: no goals
tactic: rw [Sbtw, Sbtw, wbtw_comm, ← and_assoc, ← and_assoc, and_right_comm]
Theorem: ZetaAsymptotics.tendsto_riemannZeta_sub_one_div_Gammaℝ
File: Mathlib/NumberTheory/Harmonic/ZetaAsymp.lean

Proof steps:
state_before: ⊢ Tendsto (fun s => riemannZeta s - 1 / s.Gammaℝ / (s - 1)) (𝓝[≠] 1) (𝓝 ((↑γ - Complex.log (4 * ↑π)) / 2))
state_after: this :
  Tendsto (fun x => riemannZeta x - 1 / (x - 1) + (1 / (x - 1) - 1 / x.Gammaℝ / (x - 1))) (𝓝[≠] 1)
    (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ Tendsto (fun s => riemannZeta s - 1 / s.Gammaℝ / (s - 1)) (𝓝[≠] 1) (𝓝 ((↑γ - Complex.log (4 * ↑π)) / 2))
tactic: have := tendsto_riemannZeta_sub_one_div.add tendsto_Gamma_term_aux
state_before: this :
  Tendsto (fun x => riemannZeta x - 1 / (x - 1) + (1 / (x - 1) - 1 / x.Gammaℝ / (x - 1))) (𝓝[≠] 1)
    (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ Tendsto (fun s => riemannZeta s - 1 / s.Gammaℝ / (s - 1)) (𝓝[≠] 1) (𝓝 ((↑γ - Complex.log (4 * ↑π)) / 2))
state_after: this : Tendsto (fun x => riemannZeta x - 1 / x.Gammaℝ / (x - 1)) (𝓝[≠] 1) (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ Tendsto (fun s => riemannZeta s - 1 / s.Gammaℝ / (s - 1)) (𝓝[≠] 1) (𝓝 ((↑γ - Complex.log (4 * ↑π)) / 2))
tactic: simp_rw [sub_add_sub_cancel] at this
state_before: this : Tendsto (fun x => riemannZeta x - 1 / x.Gammaℝ / (x - 1)) (𝓝[≠] 1) (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ Tendsto (fun s => riemannZeta s - 1 / s.Gammaℝ / (s - 1)) (𝓝[≠] 1) (𝓝 ((↑γ - Complex.log (4 * ↑π)) / 2))
state_after: case h.e'_5.h.e'_3
this : Tendsto (fun x => riemannZeta x - 1 / x.Gammaℝ / (x - 1)) (𝓝[≠] 1) (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ (↑γ - Complex.log (4 * ↑π)) / 2 = ↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2
tactic: convert this using 2
state_before: case h.e'_5.h.e'_3
this : Tendsto (fun x => riemannZeta x - 1 / x.Gammaℝ / (x - 1)) (𝓝[≠] 1) (𝓝 (↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2))
⊢ (↑γ - Complex.log (4 * ↑π)) / 2 = ↑γ + -(↑γ + Complex.log (4 * ↑π)) / 2
state_after: no goals
tactic: ring_nf
Theorem: Real.Angle.toReal_coe_eq_self_iff_mem_Ioc
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

Proof steps:
state_before: θ : ℝ
⊢ (↑θ).toReal = θ ↔ θ ∈ Set.Ioc (-π) π
state_after: no goals
tactic: rw [toReal_coe_eq_self_iff, ← Set.mem_Ioc]
Theorem: MulHom.compLeft_apply
File: Mathlib/Algebra/Group/Pi/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α✝ : Type u_2
I✝ : Type u
f✝ : I✝ → Type v
x y : (i : I✝) → f✝ i
i j : I✝
inst✝² : (i : I✝) → Mul (f✝ i)
α : Type u_3
β : Type u_4
inst✝¹ : Mul α
inst✝ : Mul β
f : α →ₙ* β
I : Type u_5
x✝¹ x✝ : I → α
⊢ (fun h => ⇑f ∘ h) (x✝¹ * x✝) = (fun h => ⇑f ∘ h) x✝¹ * (fun h => ⇑f ∘ h) x✝
state_after: case h
ι : Type u_1
α✝ : Type u_2
I✝ : Type u
f✝ : I✝ → Type v
x y : (i : I✝) → f✝ i
i j : I✝
inst✝² : (i : I✝) → Mul (f✝ i)
α : Type u_3
β : Type u_4
inst✝¹ : Mul α
inst✝ : Mul β
f : α →ₙ* β
I : Type u_5
x✝² x✝¹ : I → α
x✝ : I
⊢ (fun h => ⇑f ∘ h) (x✝² * x✝¹) x✝ = ((fun h => ⇑f ∘ h) x✝² * (fun h => ⇑f ∘ h) x✝¹) x✝
tactic: ext
state_before: case h
ι : Type u_1
α✝ : Type u_2
I✝ : Type u
f✝ : I✝ → Type v
x y : (i : I✝) → f✝ i
i j : I✝
inst✝² : (i : I✝) → Mul (f✝ i)
α : Type u_3
β : Type u_4
inst✝¹ : Mul α
inst✝ : Mul β
f : α →ₙ* β
I : Type u_5
x✝² x✝¹ : I → α
x✝ : I
⊢ (fun h => ⇑f ∘ h) (x✝² * x✝¹) x✝ = ((fun h => ⇑f ∘ h) x✝² * (fun h => ⇑f ∘ h) x✝¹) x✝
state_after: no goals
tactic: simp
Theorem: EMetric.diam_image_le_iff
File: Mathlib/Topology/EMetricSpace/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
d : ℝ≥0∞
f : β → α
s : Set β
⊢ diam (f '' s) ≤ d ↔ ∀ x ∈ s, ∀ y ∈ s, edist (f x) (f y) ≤ d
state_after: no goals
tactic: simp only [diam_le_iff, forall_mem_image]
Theorem: SemidirectProduct.lift_comp_inr
File: Mathlib/GroupTheory/SemidirectProduct.lean

Proof steps:
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
⊢ (lift f₁ f₂ h).comp inr = f₂
state_after: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
x✝ : G
⊢ ((lift f₁ f₂ h).comp inr) x✝ = f₂ x✝
tactic: ext
state_before: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
x✝ : G
⊢ ((lift f₁ f₂ h).comp inr) x✝ = f₂ x✝
state_after: no goals
tactic: simp
Theorem: MonoidHom.range_eq_top_of_cancel
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

Proof steps:
state_before: A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : ∀ (u v : B →* B ⧸ f.range), u.comp f = v.comp f → u = v
⊢ f.range = ⊤
state_after: A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : ∀ (u v : B →* B ⧸ f.range), u.comp f = v.comp f → u = v
⊢ comp 1 f = (QuotientGroup.mk' f.range).comp f

A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : 1 = QuotientGroup.mk' f.range
⊢ f.range = ⊤
tactic: specialize h 1 (QuotientGroup.mk' _) _
state_before: A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : 1 = QuotientGroup.mk' f.range
⊢ f.range = ⊤
state_after: A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : (QuotientGroup.mk' f.range).ker = ker 1
⊢ f.range = ⊤
tactic: replace h : (QuotientGroup.mk' f.range).ker = (1 : B →* B ⧸ f.range).ker := by rw [h]
state_before: A : Type u
B : Type v
inst✝¹ : CommGroup A
inst✝ : CommGroup B
f : A →* B
h : (QuotientGroup.mk' f.range).ker = ker 1
⊢ f.range = ⊤
state_after: no goals
tactic: rwa [ker_one, QuotientGroup.ker_mk'] at h
Theorem: IsPrimitiveRoot.pow_isRoot_minpoly
File: Mathlib/RingTheory/RootsOfUnity/Minpoly.lean

Proof steps:
state_before: n : ℕ
K : Type u_1
inst✝² : CommRing K
μ : K
h : IsPrimitiveRoot μ n
inst✝¹ : IsDomain K
inst✝ : CharZero K
m : ℕ
hcop : m.Coprime n
⊢ (map (Int.castRingHom K) (minpoly ℤ μ)).IsRoot (μ ^ m)
state_after: n : ℕ
K : Type u_1
inst✝² : CommRing K
μ : K
h : IsPrimitiveRoot μ n
inst✝¹ : IsDomain K
inst✝ : CharZero K
m : ℕ
hcop : m.Coprime n
⊢ eval₂ (Int.castRingHom K) (μ ^ m) (minpoly ℤ (μ ^ m)) = 0
tactic: simp only [minpoly_eq_pow_coprime h hcop, IsRoot.def, eval_map]
state_before: n : ℕ
K : Type u_1
inst✝² : CommRing K
μ : K
h : IsPrimitiveRoot μ n
inst✝¹ : IsDomain K
inst✝ : CharZero K
m : ℕ
hcop : m.Coprime n
⊢ eval₂ (Int.castRingHom K) (μ ^ m) (minpoly ℤ (μ ^ m)) = 0
state_after: no goals
tactic: exact minpoly.aeval ℤ (μ ^ m)
Theorem: IntermediateField.splits_of_splits
File: Mathlib/FieldTheory/SplittingField/IsSplittingField.lean

Proof steps:
state_before: F✝ : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p : K[X]
F : IntermediateField K L
h : Splits (algebraMap K L) p
hF : ∀ x ∈ p.rootSet L, x ∈ F
⊢ Splits (algebraMap K ↥F) p
state_after: F✝ : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p : K[X]
F : IntermediateField K L
h : Splits (algebraMap K L) p
hF : ∀ x ∈ p.aroots L, x ∈ F.val.fieldRange
⊢ Splits (algebraMap K ↥F) p
tactic: simp_rw [← F.fieldRange_val, rootSet_def, Finset.mem_coe, Multiset.mem_toFinset] at hF
state_before: F✝ : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p : K[X]
F : IntermediateField K L
h : Splits (algebraMap K L) p
hF : ∀ x ∈ p.aroots L, x ∈ F.val.fieldRange
⊢ Splits (algebraMap K ↥F) p
state_after: no goals
tactic: exact splits_of_comp _ F.val.toRingHom h hF
Theorem: Equivalence.eqvGen_iff
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 : α
h : Equivalence r
⊢ EqvGen r a b → r a b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b : α
h✝ : Equivalence r
h : EqvGen r a b
⊢ r a b
tactic: intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b : α
h✝ : Equivalence r
h : EqvGen r a b
⊢ r a b
state_after: no goals
tactic: induction h with
      | rel => assumption
      | refl => exact h.1 _
      | symm => apply h.symm; assumption
      | trans _ _ _ _ _ hab hbc => exact h.trans hab hbc
Theorem: LinearMap.im_inner_adjoint_mul_self_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Adjoint.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✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
x : E
⊢ im ⟪x, (adjoint T) (T x)⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
x : E
⊢ im (↑‖T x‖ ^ 2) = 0
tactic: simp only [mul_apply, adjoint_inner_right, inner_self_eq_norm_sq_to_K]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
x : E
⊢ im (↑‖T x‖ ^ 2) = 0
state_after: no goals
tactic: norm_cast
Theorem: quasiIsoAt_iff_exactAt'
File: Mathlib/Algebra/Homology/QuasiIso.lean

Proof steps:
state_before: ι : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
hL : L.ExactAt i
⊢ QuasiIsoAt f i ↔ K.ExactAt i
state_after: ι : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
hL : IsZero (L.sc i).homology
⊢ IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f)) ↔ IsZero (K.sc i).homology
tactic: simp only [quasiIsoAt_iff, ShortComplex.quasiIso_iff, exactAt_iff,
    ShortComplex.exact_iff_isZero_homology] at hL ⊢
state_before: ι : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
hL : IsZero (L.sc i).homology
⊢ IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f)) ↔ IsZero (K.sc i).homology
state_after: case mp
ι : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
hL : IsZero (L.sc i).homology
⊢ IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f)) → IsZero (K.sc i).homology

case mpr
ι : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
hL : IsZero (L.sc i).homology
⊢ IsZero (K.sc i).homology → IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f))
tactic: constructor
Theorem: inner_orthogonalProjection_eq_of_mem_right
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u : ↥K
v : E
⊢ ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 =
    ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 + ⟪v - ↑((orthogonalProjection K) v), ↑u⟫_𝕜
state_after: no goals
tactic: rw [orthogonalProjection_inner_eq_zero _ _ (Submodule.coe_mem _), add_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u : ↥K
v : E
⊢ ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 + ⟪v - ↑((orthogonalProjection K) v), ↑u⟫_𝕜 = ⟪v, ↑u⟫_𝕜
state_after: no goals
tactic: rw [← inner_add_left, add_sub_cancel]
Theorem: MeasureTheory.integral_zero
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
G : Type u_5
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
⊢ ∫ (x : α), 0 ∂μ = 0
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
G : Type u_5
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
hG : CompleteSpace G
⊢ ∫ (x : α), 0 ∂μ = 0

case neg
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
G : Type u_5
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
hG : ¬CompleteSpace G
⊢ ∫ (x : α), 0 ∂μ = 0
tactic: by_cases hG : CompleteSpace G
Theorem: Nat.divModEquiv_apply
File: Mathlib/Logic/Equiv/Fin.lean

Proof steps:
state_before: m n✝ n : ℕ
inst✝ : NeZero n
p : ℕ × Fin n
⊢ (fun a => (a / n, ↑a)) ((fun p => p.1 * n + ↑p.2) p) = p
state_after: m n✝ n : ℕ
inst✝ : NeZero n
p : ℕ × Fin n
⊢ ((fun a => (a / n, ↑a)) ((fun p => p.1 * n + ↑p.2) p)).1 = p.1
tactic: refine Prod.ext ?_ (Fin.ext <| Nat.mul_add_mod_of_lt p.2.is_lt)
state_before: m n✝ n : ℕ
inst✝ : NeZero n
p : ℕ × Fin n
⊢ ((fun a => (a / n, ↑a)) ((fun p => p.1 * n + ↑p.2) p)).1 = p.1
state_after: m n✝ n : ℕ
inst✝ : NeZero n
p : ℕ × Fin n
⊢ (p.1 * n + ↑p.2) / n = p.1
tactic: dsimp only
state_before: m n✝ n : ℕ
inst✝ : NeZero n
p : ℕ × Fin n
⊢ (p.1 * n + ↑p.2) / n = p.1
state_after: no goals
tactic: rw [Nat.add_comm, Nat.add_mul_div_right _ _ n.pos_of_neZero, Nat.div_eq_of_lt p.2.is_lt,
      Nat.zero_add]
Theorem: one_lt_div_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ 1 < a / b ↔ a < b
state_after: no goals
tactic: rw [lt_div_iff_of_neg hb, one_mul]
Theorem: CategoryTheory.Idempotents.FunctorExtension₁.obj_obj_X
File: Mathlib/CategoryTheory/Idempotents/FunctorExtension.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝² : Category.{?u.1617, u_1} C
inst✝¹ : Category.{?u.1621, u_2} D
inst✝ : Category.{?u.1625, u_3} E
F : C ⥤ Karoubi D
P : Karoubi C
⊢ (F.map P.p).f ≫ (F.map P.p).f = (F.map P.p).f
state_after: no goals
tactic: simpa only [F.map_comp, hom_ext_iff] using F.congr_map P.idem
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝² : Category.{?u.1617, u_1} C
inst✝¹ : Category.{?u.1621, u_2} D
inst✝ : Category.{?u.1625, u_3} E
F : C ⥤ Karoubi D
X✝ Y✝ : Karoubi C
f : X✝ ⟶ Y✝
⊢ (F.map f.f).f =
    ((fun P => { X := (F.obj P.X).X, p := (F.map P.p).f, idem := ⋯ }) X✝).p ≫
      (F.map f.f).f ≫ ((fun P => { X := (F.obj P.X).X, p := (F.map P.p).f, idem := ⋯ }) Y✝).p
state_after: no goals
tactic: simpa only [F.map_comp, hom_ext_iff] using F.congr_map f.comm
Theorem: AddMonoid.closure_subset
File: Mathlib/Deprecated/Submonoid.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : Monoid M
s✝ : Set M
A : Type u_2
inst✝ : AddMonoid A
t✝ : Set A
s t : Set M
ht : IsSubmonoid t
h : s ⊆ t
a : M
ha : a ∈ Closure s
⊢ a ∈ t
state_after: no goals
tactic: induction ha <;> simp [h _, *, IsSubmonoid.one_mem, IsSubmonoid.mul_mem]
Theorem: tprod_ne_one_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : CanonicallyOrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f : ι → α
a : α
hf : Multipliable f
⊢ ∏' (i : ι), f i ≠ 1 ↔ ∃ x, f x ≠ 1
state_after: no goals
tactic: rw [Ne, tprod_eq_one_iff hf, not_forall]
Theorem: MulChar.apply_mem_rootsOfUnity_of_pow_eq_one
File: Mathlib/NumberTheory/MulChar/Lemmas.lean

Proof steps:
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
a : F
ha : a ≠ 0
⊢ ∃ ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R, ↑ζ = χ a
state_after: case intro.intro
F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
a : F
ha : a ≠ 0
μ : Rˣ
hμ₁ : μ ∈ rootsOfUnity ⟨orderOf χ, ⋯⟩ R
hμ₂ : ↑μ = χ a
⊢ ∃ ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R, ↑ζ = χ a
tactic: obtain ⟨μ, hμ₁, hμ₂⟩ := χ.apply_mem_rootsOfUnity_orderOf ha
state_before: case intro.intro
F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
a : F
ha : a ≠ 0
μ : Rˣ
hμ₁ : μ ∈ rootsOfUnity ⟨orderOf χ, ⋯⟩ R
hμ₂ : ↑μ = χ a
⊢ ∃ ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R, ↑ζ = χ a
state_after: case intro.intro
F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
a : F
ha : a ≠ 0
μ : Rˣ
hμ₁ : μ ∈ rootsOfUnity ⟨orderOf χ, ⋯⟩ R
hμ₂ : ↑μ = χ a
hχ' : ↑⟨orderOf χ, ⋯⟩ ∣ ↑⟨n, ⋯⟩
⊢ ∃ ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R, ↑ζ = χ a
tactic: have hχ' : PNat.val ⟨orderOf χ, χ.orderOf_pos⟩ ∣ PNat.val ⟨n, Nat.pos_of_ne_zero hn⟩ :=
    orderOf_dvd_of_pow_eq_one hχ
state_before: case intro.intro
F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
a : F
ha : a ≠ 0
μ : Rˣ
hμ₁ : μ ∈ rootsOfUnity ⟨orderOf χ, ⋯⟩ R
hμ₂ : ↑μ = χ a
hχ' : ↑⟨orderOf χ, ⋯⟩ ∣ ↑⟨n, ⋯⟩
⊢ ∃ ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R, ↑ζ = χ a
state_after: no goals
tactic: exact ⟨μ, rootsOfUnity_le_of_dvd (PNat.dvd_iff.mpr hχ') hμ₁, hμ₂⟩
Theorem: Matrix.eval_det
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

Proof steps:
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ eval r M.det = (eval ((scalar n) r) (matPolyEquiv M)).det
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ ((eval₂RingHom (RingHom.id R) r).mapMatrix M).det = (eval ((scalar n) r) (matPolyEquiv M)).det
tactic: rw [Polynomial.eval, ← coe_eval₂RingHom, RingHom.map_det]
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ ((eval₂RingHom (RingHom.id R) r).mapMatrix M).det = (eval ((scalar n) r) (matPolyEquiv M)).det
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ (eval₂RingHom (RingHom.id R) r).mapMatrix M = eval ((scalar n) r) (matPolyEquiv M)
tactic: apply congr_arg det
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ (eval₂RingHom (RingHom.id R) r).mapMatrix M = eval ((scalar n) r) (matPolyEquiv M)
state_after: case a
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
i✝ j✝ : n
⊢ (eval₂RingHom (RingHom.id R) r).mapMatrix M i✝ j✝ = eval ((scalar n) r) (matPolyEquiv M) i✝ j✝
tactic: ext
state_before: case a
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
i✝ j✝ : n
⊢ (eval₂RingHom (RingHom.id R) r).mapMatrix M i✝ j✝ = eval ((scalar n) r) (matPolyEquiv M) i✝ j✝
state_after: case a
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
i✝ j✝ : n
⊢ eval ((scalar n) r) (matPolyEquiv M) i✝ j✝ = (eval₂RingHom (RingHom.id R) r).mapMatrix M i✝ j✝
tactic: symm
state_before: case a
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
i✝ j✝ : n
⊢ eval ((scalar n) r) (matPolyEquiv M) i✝ j✝ = (eval₂RingHom (RingHom.id R) r).mapMatrix M i✝ j✝
state_after: no goals
tactic: exact matPolyEquiv_eval _ _ _ _