ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.aevalTower_id
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : CommSemiring A'
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R A'
inst✝⁴ : Algebra R B
p q : R[X]
x : A
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Algebra S A'
inst✝ : Algebra S B
g : R →ₐ[S] A'
y : A'
⊢ aevalTower (AlgHom.id S S) = aeval
state_after: case h.hX
R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : CommSemiring A'
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R A'
inst✝⁴ : Algebra R B
p q : R[X]
x : A
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Algebra S A'
inst✝ : Algebra S B
g : R →ₐ[S] A'
y : A'
s : S
⊢ (aevalTower (AlgHom.id S S) s) X = (aeval s) X
tactic: ext s
state_before: case h.hX
R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : CommSemiring A'
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R A'
inst✝⁴ : Algebra R B
p q : R[X]
x : A
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Algebra S A'
inst✝ : Algebra S B
g : R →ₐ[S] A'
y : A'
s : S
⊢ (aevalTower (AlgHom.id S S) s) X = (aeval s) X
state_after: no goals
tactic: simp only [eval_X, aevalTower_X, coe_aeval_eq_eval]
Theorem: add_singleton_mem_nhds_of_nhds_zero
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : Group α
inst✝ : ContinuousConstSMul αᵐᵒᵖ α
s t : Set α
a : α
h : s ∈ 𝓝 1
⊢ s * {a} ∈ 𝓝 a
state_after: no goals
tactic: simpa only [one_mul] using mul_singleton_mem_nhds a h
Theorem: RatFunc.eval_eq_zero_of_eval₂_denom_eq_zero
File: Mathlib/FieldTheory/RatFunc/AsPolynomial.lean

Proof steps:
state_before: K : Type u
inst✝¹ : Field K
L : Type u
inst✝ : Field L
f : K →+* L
a : L
x : RatFunc K
h : Polynomial.eval₂ f a x.denom = 0
⊢ eval f a x = 0
state_after: no goals
tactic: rw [eval, h, div_zero]
Theorem: AlgebraicGeometry.AffineTargetMorphismProperty.cancel_right_of_respectsIso
File: Mathlib/AlgebraicGeometry/Morphisms/Basic.lean

Proof steps:
state_before: P : AffineTargetMorphismProperty
inst✝³ : P.toProperty.RespectsIso
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝² : IsIso g
inst✝¹ : IsAffine Z
inst✝ : IsAffine Y
⊢ P (f ≫ g) ↔ P f
state_after: no goals
tactic: rw [← P.toProperty_apply, ← P.toProperty_apply,
      P.toProperty.cancel_right_of_respectsIso]
Theorem: Ordinal.natCast_sub
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: m n : ℕ
⊢ ↑(m - n) = ↑m - ↑n
state_after: case inl
m n : ℕ
h : m ≤ n
⊢ ↑(m - n) = ↑m - ↑n

case inr
m n : ℕ
h : n ≤ m
⊢ ↑(m - n) = ↑m - ↑n
tactic: rcases le_total m n with h | h
Theorem: CategoryTheory.Pretriangulated.Triangle.eqToHom_hom₃
File: Mathlib/CategoryTheory/Triangulated/Basic.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A B : Triangle C
h : A = B
⊢ A.obj₃ = B.obj₃
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A : Triangle C
⊢ A.obj₃ = A.obj₃
tactic: subst h
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A : Triangle C
⊢ A.obj₃ = A.obj₃
state_after: no goals
tactic: rfl
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A B : Triangle C
h : A = B
⊢ (eqToHom h).hom₃ = eqToHom ⋯
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A : Triangle C
⊢ (eqToHom ⋯).hom₃ = eqToHom ⋯
tactic: subst h
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A : Triangle C
⊢ (eqToHom ⋯).hom₃ = eqToHom ⋯
state_after: no goals
tactic: rfl
Theorem: Inducing.isClosed_iff
File: Mathlib/Topology/Maps/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : Inducing f
s : Set X
⊢ IsClosed s ↔ ∃ t, IsClosed t ∧ f ⁻¹' t = s
state_after: no goals
tactic: rw [hf.induced, isClosed_induced_iff]
Theorem: ProjectiveSpectrum.zeroLocus_singleton_mul
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f g : A
x : ProjectiveSpectrum 𝒜
⊢ x ∈ zeroLocus 𝒜 {f * g} ↔ x ∈ zeroLocus 𝒜 {f} ∪ zeroLocus 𝒜 {g}
state_after: no goals
tactic: simpa using x.isPrime.mul_mem_iff_mem_or_mem
Theorem: MeasureTheory.Integrable.exists_hasCompactSupport_lintegral_sub_le
File: Mathlib/MeasureTheory/Function/ContinuousMapDense.lean

Proof steps:
state_before: α : Type u_1
inst✝⁸ : TopologicalSpace α
inst✝⁷ : NormalSpace α
inst✝⁶ : R1Space α
inst✝⁵ : MeasurableSpace α
inst✝⁴ : BorelSpace α
E : Type u_2
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : WeaklyLocallyCompactSpace α
inst✝ : μ.Regular
f : α → E
hf : Integrable f μ
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ g, HasCompactSupport g ∧ ∫⁻ (x : α), ↑‖f x - g x‖₊ ∂μ ≤ ε ∧ Continuous g ∧ Integrable g μ
state_after: α : Type u_1
inst✝⁸ : TopologicalSpace α
inst✝⁷ : NormalSpace α
inst✝⁶ : R1Space α
inst✝⁵ : MeasurableSpace α
inst✝⁴ : BorelSpace α
E : Type u_2
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : WeaklyLocallyCompactSpace α
inst✝ : μ.Regular
f : α → E
ε : ℝ≥0∞
hε : ε ≠ 0
hf : Memℒp f 1 μ
⊢ ∃ g, HasCompactSupport g ∧ eLpNorm (fun x => f x - g x) 1 μ ≤ ε ∧ Continuous g ∧ Memℒp g 1 μ
tactic: simp only [← memℒp_one_iff_integrable, ← eLpNorm_one_eq_lintegral_nnnorm] at hf ⊢
state_before: α : Type u_1
inst✝⁸ : TopologicalSpace α
inst✝⁷ : NormalSpace α
inst✝⁶ : R1Space α
inst✝⁵ : MeasurableSpace α
inst✝⁴ : BorelSpace α
E : Type u_2
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : WeaklyLocallyCompactSpace α
inst✝ : μ.Regular
f : α → E
ε : ℝ≥0∞
hε : ε ≠ 0
hf : Memℒp f 1 μ
⊢ ∃ g, HasCompactSupport g ∧ eLpNorm (fun x => f x - g x) 1 μ ≤ ε ∧ Continuous g ∧ Memℒp g 1 μ
state_after: no goals
tactic: exact hf.exists_hasCompactSupport_eLpNorm_sub_le ENNReal.one_ne_top hε
Theorem: Real.le_tan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Bounds.lean

Proof steps:
state_before: x✝ x : ℝ
h1 : 0 ≤ x
h2 : x < π / 2
⊢ x ≤ tan x
state_after: case inl
x : ℝ
h1 : 0 ≤ 0
h2 : 0 < π / 2
⊢ 0 ≤ tan 0

case inr
x✝ x : ℝ
h1 : 0 ≤ x
h2 : x < π / 2
h1' : 0 < x
⊢ x ≤ tan x
tactic: rcases eq_or_lt_of_le h1 with (rfl | h1')
Theorem: zero_dvd_iff
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

Proof steps:
state_before: α : Type u_1
inst✝ : SemigroupWithZero α
a : α
h : a = 0
⊢ 0 ∣ a
state_after: α : Type u_1
inst✝ : SemigroupWithZero α
a : α
h : a = 0
⊢ 0 ∣ 0
tactic: rw [h]
state_before: α : Type u_1
inst✝ : SemigroupWithZero α
a : α
h : a = 0
⊢ 0 ∣ 0
state_after: no goals
tactic: exact ⟨0, by simp⟩
Theorem: MeasureTheory.integral_diff
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ ∫ (x : X) in s \ t, f x ∂μ = ∫ (x : X) in s, f x ∂μ - ∫ (x : X) in t, f x ∂μ
state_after: case hst
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ Disjoint (s \ t) t

case ht
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ MeasurableSet t

case hfs
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ IntegrableOn f (s \ t) μ

case hft
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ IntegrableOn f t μ
tactic: rw [eq_sub_iff_add_eq, ← integral_union, diff_union_of_subset hts]
state_before: case hst
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ Disjoint (s \ t) t

case ht
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ MeasurableSet t

case hfs
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ IntegrableOn f (s \ t) μ

case hft
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
ht : MeasurableSet t
hfs : IntegrableOn f s μ
hts : t ⊆ s
⊢ IntegrableOn f t μ
state_after: no goals
tactic: exacts [disjoint_sdiff_self_left, ht, hfs.mono_set diff_subset, hfs.mono_set hts]
Theorem: Complex.abs_exp_ofReal_mul_I
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x : ℝ
⊢ abs (cexp (↑x * I)) = 1
state_after: no goals
tactic: rw [exp_mul_I, abs_cos_add_sin_mul_I]
Theorem: Matrix.IsDiag.isSymm
File: Mathlib/LinearAlgebra/Matrix/IsDiag.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
⊢ A.IsSymm
state_after: case a
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
i j : n
⊢ Aᵀ i j = A i j
tactic: ext i j
state_before: case a
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
i j : n
⊢ Aᵀ i j = A i j
state_after: case pos
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
i j : n
g : i = j
⊢ Aᵀ i j = A i j

case neg
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
i j : n
g : ¬i = j
⊢ Aᵀ i j = A i j
tactic: by_cases g : i = j
state_before: case neg
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝ : Zero α
A : Matrix n n α
h : A.IsDiag
i j : n
g : ¬i = j
⊢ Aᵀ i j = A i j
state_after: no goals
tactic: simp [h g, h (Ne.symm g)]
Theorem: Set.countable_union
File: Mathlib/Data/Set/Countable.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s t : Set α
⊢ (s ∪ t).Countable ↔ s.Countable ∧ t.Countable
state_after: no goals
tactic: simp [union_eq_iUnion, and_comm]
Theorem: AddCon.mapOfSurjective_eq_mapGen
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c✝ c : Con M
f : M → N
H : ∀ (x y : M), f (x * y) = f x * f y
h : mulKer f H ≤ c
hf : Surjective f
⊢ c.mapGen f = c.mapOfSurjective f H h hf
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c✝ c : Con M
f : M → N
H : ∀ (x y : M), f (x * y) = f x * f y
h : mulKer f H ≤ c
hf : Surjective f
⊢ c.mapGen f = conGen ⇑(c.mapOfSurjective f H h hf)
tactic: rw [← conGen_of_con (c.mapOfSurjective f H h hf)]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c✝ c : Con M
f : M → N
H : ∀ (x y : M), f (x * y) = f x * f y
h : mulKer f H ≤ c
hf : Surjective f
⊢ c.mapGen f = conGen ⇑(c.mapOfSurjective f H h hf)
state_after: no goals
tactic: rfl
Theorem: AnalyticAt.analyticWithinAt
File: Mathlib/Analysis/Analytic/Within.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup H
inst✝ : NormedSpace 𝕜 H
f : E → F
s : Set E
x : E
h : AnalyticAt 𝕜 f x
⊢ AnalyticWithinAt 𝕜 f s x
state_after: case intro.intro
α : Type u_1
𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup H
inst✝ : NormedSpace 𝕜 H
f : E → F
s : Set E
x : E
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
hp : HasFPowerSeriesOnBall f p x r
⊢ AnalyticWithinAt 𝕜 f s x
tactic: rcases h with ⟨p, r, hp⟩
state_before: case intro.intro
α : Type u_1
𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup H
inst✝ : NormedSpace 𝕜 H
f : E → F
s : Set E
x : E
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
hp : HasFPowerSeriesOnBall f p x r
⊢ AnalyticWithinAt 𝕜 f s x
state_after: no goals
tactic: exact ⟨p, r, {
    r_le := hp.r_le
    r_pos := hp.r_pos
    hasSum := fun {y} _ yr ↦ hp.hasSum yr
    continuousWithinAt :=
      (hp.continuousOn.continuousAt (EMetric.ball_mem_nhds x hp.r_pos)).continuousWithinAt
  }⟩
Theorem: Submodule.torsionBy_one
File: Mathlib/Algebra/Module/Torsion.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
x✝ : M
h : x✝ ∈ torsionBy R M 1
⊢ x✝ ∈ ⊥
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
x✝ : M
h : x✝ = 0
⊢ x✝ ∈ ⊥
tactic: rw [mem_torsionBy_iff, one_smul] at h
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
x✝ : M
h : x✝ = 0
⊢ x✝ ∈ ⊥
state_after: no goals
tactic: exact h
Theorem: List.takeI_left'
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI n (l₁ ++ l₂) = l₁
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI l₁.length (l₁ ++ l₂) = l₁
tactic: rw [← h]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI l₁.length (l₁ ++ l₂) = l₁
state_after: no goals
tactic: apply takeI_left
Theorem: CategoryTheory.MonoidalCategory.pentagon_inv_hom_hom_hom_hom
File: Mathlib/CategoryTheory/Monoidal/Category.lean

Proof steps:
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
⊢ (α_ W X Y).inv ▷ Z ≫ (α_ (W ⊗ X) Y Z).hom ≫ (α_ W X (Y ⊗ Z)).hom = (α_ W (X ⊗ Y) Z).hom ≫ W ◁ (α_ X Y Z).hom
state_after: no goals
tactic: simp [← cancel_epi ((α_ W X Y).hom ▷ Z)]
Theorem: CategoryTheory.ShortComplex.HomologyData.map_right
File: Mathlib/Algebra/Homology/ShortComplex/PreservesHomology.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{?u.45702, u_1} C
inst✝⁵ : Category.{?u.45706, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : h.left.IsPreservedBy F
inst✝ : h.right.IsPreservedBy F
⊢ (h.left.map F).π ≫ (F.mapIso h.iso).hom ≫ (h.right.map F).ι = (h.left.map F).i ≫ (h.right.map F).p
state_after: no goals
tactic: simpa only [F.map_comp] using F.congr_map h.comm
Theorem: CategoryTheory.Comonad.adj_unit
File: Mathlib/CategoryTheory/Monad/Algebra.lean

Proof steps:
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ X.a ≫ G.map (X.a ≫ G.map f) = (X.a ≫ G.map f) ≫ (G.cofree.obj Y).a
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ X.a ≫ G.map (X.a ≫ G.map f) = (X.a ≫ G.map f) ≫ G.δ.app Y
tactic: dsimp
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ X.a ≫ G.map (X.a ≫ G.map f) = (X.a ≫ G.map f) ≫ G.δ.app Y
state_after: no goals
tactic: simp [← Coalgebra.coassoc_assoc]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ (fun g => g.f ≫ G.ε.app Y) ((fun f => { f := X.a ≫ G.map f, h := ⋯ }) f) = f
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ (X.a ≫ G.map f) ≫ G.ε.app Y = f
tactic: dsimp
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
f : G.forget.obj X ⟶ Y
⊢ (X.a ≫ G.map f) ≫ G.ε.app Y = f
state_after: no goals
tactic: rw [Category.assoc, G.ε.naturality, Functor.id_map, X.counit_assoc]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ (fun f => { f := X.a ≫ G.map f, h := ⋯ }) ((fun g => g.f ≫ G.ε.app Y) g) = g
state_after: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ ((fun f => { f := X.a ≫ G.map f, h := ⋯ }) ((fun g => g.f ≫ G.ε.app Y) g)).f = g.f
tactic: ext1
state_before: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ ((fun f => { f := X.a ≫ G.map f, h := ⋯ }) ((fun g => g.f ≫ G.ε.app Y) g)).f = g.f
state_after: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ X.a ≫ G.map (g.f ≫ G.ε.app Y) = g.f
tactic: dsimp
state_before: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ X.a ≫ G.map (g.f ≫ G.ε.app Y) = g.f
state_after: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ g.f ≫ 𝟙 (G.obj Y) = g.f
tactic: rw [Functor.map_comp, g.h_assoc, cofree_obj_a, Comonad.right_counit]
state_before: case h
C : Type u₁
inst✝ : Category.{v₁, u₁} C
G : Comonad C
X : G.Coalgebra
Y : C
g : X ⟶ G.cofree.obj Y
⊢ g.f ≫ 𝟙 (G.obj Y) = g.f
state_after: no goals
tactic: apply comp_id
Theorem: Ideal.isMaximal_iff
File: Mathlib/RingTheory/Ideal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
I J : Ideal α
⊢ I < J → J = ⊤ ↔ ∀ (x : α), I ≤ J → x ∉ I → x ∈ J → 1 ∈ J
state_after: α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
I J : Ideal α
⊢ I ≤ J ∧ ¬J ≤ I → J = ⊤ ↔ ∀ (x : α), I ≤ J → x ∉ I → x ∈ J → 1 ∈ J
tactic: rw [lt_iff_le_not_le]
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
I J : Ideal α
⊢ I ≤ J ∧ ¬J ≤ I → J = ⊤ ↔ ∀ (x : α), I ≤ J → x ∉ I → x ∈ J → 1 ∈ J
state_after: no goals
tactic: exact
          ⟨fun H x h hx₁ hx₂ => J.eq_top_iff_one.1 <| H ⟨h, not_subset.2 ⟨_, hx₂, hx₁⟩⟩,
            fun H ⟨h₁, h₂⟩ =>
            let ⟨x, xJ, xI⟩ := not_subset.1 h₂
            J.eq_top_iff_one.2 <| H x h₁ xI xJ⟩
Theorem: Set.right_mem_Icc
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ b ∈ Icc a b ↔ a ≤ b
state_after: no goals
tactic: simp [le_refl]
Theorem: mfderivWithin_inter
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
ht : t ∈ 𝓝 x
⊢ mfderivWithin I I' f (s ∩ t) x = mfderivWithin I I' f s x
state_after: no goals
tactic: rw [mfderivWithin, mfderivWithin, extChartAt_preimage_inter_eq, mdifferentiableWithinAt_inter ht,
    fderivWithin_inter (extChartAt_preimage_mem_nhds I ht)]
Theorem: UniformSpace.mem_closure_iff_symm_ball
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
x : α
⊢ x ∈ closure s ↔ ∀ {V : Set (α × α)}, V ∈ 𝓤 α → SymmetricRel V → (s ∩ ball x V).Nonempty
state_after: no goals
tactic: simp [mem_closure_iff_nhds_basis (hasBasis_nhds x), Set.Nonempty]
Theorem: PowerSeries.order_finite_iff_ne_zero
File: Mathlib/RingTheory/PowerSeries/Order.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ φ.order.Dom ↔ φ ≠ 0
state_after: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom ↔ φ ≠ 0
tactic: simp only [order]
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom ↔ φ ≠ 0
state_after: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom → φ ≠ 0

case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ φ ≠ 0 → (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom
tactic: constructor
Theorem: Nat.ofDigits_zmodeq'
File: Mathlib/Data/Nat/Digits.lean

Proof steps:
state_before: n : ℕ
b b' : ℤ
k : ℕ
h : b ≡ b' [ZMOD ↑k]
L : List ℕ
⊢ ofDigits b L ≡ ofDigits b' L [ZMOD ↑k]
state_after: case nil
n : ℕ
b b' : ℤ
k : ℕ
h : b ≡ b' [ZMOD ↑k]
⊢ ofDigits b [] ≡ ofDigits b' [] [ZMOD ↑k]

case cons
n : ℕ
b b' : ℤ
k : ℕ
h : b ≡ b' [ZMOD ↑k]
d : ℕ
L : List ℕ
ih : ofDigits b L ≡ ofDigits b' L [ZMOD ↑k]
⊢ ofDigits b (d :: L) ≡ ofDigits b' (d :: L) [ZMOD ↑k]
tactic: induction' L with d L ih
Theorem: CochainComplex.HomComplex.Cochain.rightUnshift_units_smul
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
n' a : ℤ
γ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn : n' + a = n
x : Rˣ
⊢ (x • γ).rightUnshift n hn = x • γ.rightUnshift n hn
state_after: no goals
tactic: apply rightUnshift_smul