ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: IsSubgroup.normalizer_isSubgroup
File: Mathlib/Deprecated/Subgroup.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
s : Set G
⊢ 1 ∈ normalizer s
state_after: no goals
tactic: simp [normalizer]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b✝ c : G
inst✝ : Group G
s : Set G
a b : G
ha : ∀ (n : G), n ∈ s ↔ a * n * a⁻¹ ∈ s
hb : ∀ (n : G), n ∈ s ↔ b * n * b⁻¹ ∈ s
n : G
⊢ n ∈ s ↔ a * b * n * (a * b)⁻¹ ∈ s
state_after: no goals
tactic: rw [mul_inv_rev, ← mul_assoc, mul_assoc a, mul_assoc a, ← ha, ← hb]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s : Set G
a : G
ha : ∀ (n : G), n ∈ s ↔ a * n * a⁻¹ ∈ s
n : G
⊢ n ∈ s ↔ a⁻¹ * n * a⁻¹⁻¹ ∈ s
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s : Set G
a : G
ha : ∀ (n : G), n ∈ s ↔ a * n * a⁻¹ ∈ s
n : G
⊢ n ∈ s ↔ a * (a⁻¹ * n * a⁻¹⁻¹) * a⁻¹ ∈ s
tactic: rw [ha (a⁻¹ * n * a⁻¹⁻¹)]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s : Set G
a : G
ha : ∀ (n : G), n ∈ s ↔ a * n * a⁻¹ ∈ s
n : G
⊢ n ∈ s ↔ a * (a⁻¹ * n * a⁻¹⁻¹) * a⁻¹ ∈ s
state_after: no goals
tactic: simp [mul_assoc]
Theorem: Monoid.Coprod.mrange_eq
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
f : M ∗ N →* P
⊢ MonoidHom.mrange f = MonoidHom.mrange (f.comp inl) ⊔ MonoidHom.mrange (f.comp inr)
state_after: no goals
tactic: rw [MonoidHom.mrange_eq_map, ← mrange_inl_sup_mrange_inr, Submonoid.map_sup, MonoidHom.map_mrange,
    MonoidHom.map_mrange]
Theorem: Stream'.WSeq.head_ofSeq
File: Mathlib/Data/Seq/WSeq.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ (↑s).head = Computation.pure s.head
state_after: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ Computation.pure (Option.map (Prod.fst ∘ fun a => (a, ↑s.tail)) s.head) = Computation.pure s.head
tactic: simp only [head, Option.map_eq_map, destruct_ofSeq, Computation.map_pure, Option.map_map]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ Computation.pure (Option.map (Prod.fst ∘ fun a => (a, ↑s.tail)) s.head) = Computation.pure s.head
state_after: no goals
tactic: cases Seq.head s <;> rfl
Theorem: Module.End_isUnit_inv_apply_apply_of_isUnit
File: Mathlib/Algebra/Module/LinearMap/End.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f : Module.End R M
h : IsUnit f
x : M
⊢ (h.unit.inv * f) x = x
state_after: no goals
tactic: simp
Theorem: MeasureTheory.SimpleFunc.measure_support_lt_top
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
⊢ μ (support ↑f) < ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
⊢ μ (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y}) < ⊤
tactic: rw [support_eq]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
⊢ μ (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y}) < ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ filter (fun y => y ≠ 0) f.range
⊢ μ (↑f ⁻¹' {y}) < ⊤
tactic: refine (measure_biUnion_finset_le _ _).trans_lt (ENNReal.sum_lt_top_iff.mpr fun y hy => ?_)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ filter (fun y => y ≠ 0) f.range
⊢ μ (↑f ⁻¹' {y}) < ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ f.range ∧ y ≠ 0
⊢ μ (↑f ⁻¹' {y}) < ⊤
tactic: rw [Finset.mem_filter] at hy
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ f.range ∧ y ≠ 0
⊢ μ (↑f ⁻¹' {y}) < ⊤
state_after: no goals
tactic: exact hf y hy.2
Theorem: SmoothPartitionOfUnity.contMDiffAt_finsum
File: Mathlib/Geometry/Manifold/PartitionOfUnity.lean

Proof steps:
state_before: ι : Type uι
E : Type uE
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
s : Set M
f : SmoothPartitionOfUnity ι I M s
n : ℕ∞
x₀ : M
g : ι → M → F
hφ : ∀ (i : ι), x₀ ∈ tsupport ⇑(f i) → ContMDiffAt I 𝓘(ℝ, F) n (g i) x₀
⊢ ContMDiffAt I 𝓘(ℝ, F) n (fun x => ∑ᶠ (i : ι), (f i) x • g i x) x₀
state_after: ι : Type uι
E : Type uE
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
s : Set M
f : SmoothPartitionOfUnity ι I M s
n : ℕ∞
x₀ : M
g : ι → M → F
hφ : ∀ (i : ι), x₀ ∈ tsupport ⇑(f i) → ContMDiffAt I 𝓘(ℝ, F) n (g i) x₀
i : ι
⊢ ContMDiffAt I 𝓘(ℝ, F) n (fun x => (f i) x • g i x) x₀
tactic: refine _root_.contMDiffAt_finsum (f.locallyFinite.smul_left _) fun i ↦ ?_
state_before: ι : Type uι
E : Type uE
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
s : Set M
f : SmoothPartitionOfUnity ι I M s
n : ℕ∞
x₀ : M
g : ι → M → F
hφ : ∀ (i : ι), x₀ ∈ tsupport ⇑(f i) → ContMDiffAt I 𝓘(ℝ, F) n (g i) x₀
i : ι
⊢ ContMDiffAt I 𝓘(ℝ, F) n (fun x => (f i) x • g i x) x₀
state_after: case pos
ι : Type uι
E : Type uE
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
s : Set M
f : SmoothPartitionOfUnity ι I M s
n : ℕ∞
x₀ : M
g : ι → M → F
hφ : ∀ (i : ι), x₀ ∈ tsupport ⇑(f i) → ContMDiffAt I 𝓘(ℝ, F) n (g i) x₀
i : ι
hx : x₀ ∈ tsupport ⇑(f i)
⊢ ContMDiffAt I 𝓘(ℝ, F) n (fun x => (f i) x • g i x) x₀

case neg
ι : Type uι
E : Type uE
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
s : Set M
f : SmoothPartitionOfUnity ι I M s
n : ℕ∞
x₀ : M
g : ι → M → F
hφ : ∀ (i : ι), x₀ ∈ tsupport ⇑(f i) → ContMDiffAt I 𝓘(ℝ, F) n (g i) x₀
i : ι
hx : x₀ ∉ tsupport ⇑(f i)
⊢ ContMDiffAt I 𝓘(ℝ, F) n (fun x => (f i) x • g i x) x₀
tactic: by_cases hx : x₀ ∈ tsupport (f i)
Theorem: dNext_nat
File: Mathlib/Algebra/Homology/Homotopy.lean

Proof steps:
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
f✝ g : C✝ ⟶ D✝
h k : D✝ ⟶ E
i✝ : ι
C D : ChainComplex V ℕ
i : ℕ
f : (i j : ℕ) → C.X i ⟶ D.X j
⊢ (dNext i) f = C.d i (i - 1) ≫ f (i - 1) i
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
f✝ g : C✝ ⟶ D✝
h k : D✝ ⟶ E
i✝ : ι
C D : ChainComplex V ℕ
i : ℕ
f : (i j : ℕ) → C.X i ⟶ D.X j
⊢ C.d i ((ComplexShape.down ℕ).next i) ≫ f ((ComplexShape.down ℕ).next i) i = C.d i (i - 1) ≫ f (i - 1) i
tactic: dsimp [dNext]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
f✝ g : C✝ ⟶ D✝
h k : D✝ ⟶ E
i✝ : ι
C D : ChainComplex V ℕ
i : ℕ
f : (i j : ℕ) → C.X i ⟶ D.X j
⊢ C.d i ((ComplexShape.down ℕ).next i) ≫ f ((ComplexShape.down ℕ).next i) i = C.d i (i - 1) ≫ f (i - 1) i
state_after: case zero
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
f✝ g : C✝ ⟶ D✝
h k : D✝ ⟶ E
i : ι
C D : ChainComplex V ℕ
f : (i j : ℕ) → C.X i ⟶ D.X j
⊢ C.d 0 ((ComplexShape.down ℕ).next 0) ≫ f ((ComplexShape.down ℕ).next 0) 0 = C.d 0 (0 - 1) ≫ f (0 - 1) 0

case succ
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
f✝ g : C✝ ⟶ D✝
h k : D✝ ⟶ E
i : ι
C D : ChainComplex V ℕ
f : (i j : ℕ) → C.X i ⟶ D.X j
n✝ : ℕ
⊢ C.d (n✝ + 1) ((ComplexShape.down ℕ).next (n✝ + 1)) ≫ f ((ComplexShape.down ℕ).next (n✝ + 1)) (n✝ + 1) =
    C.d (n✝ + 1) (n✝ + 1 - 1) ≫ f (n✝ + 1 - 1) (n✝ + 1)
tactic: cases i
Theorem: Int.succ_neg_succ
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a✝ b c d m n a : ℤ
⊢ (-a.succ).succ = -a
state_after: no goals
tactic: rw [neg_succ, succ_pred]
Theorem: SimpleGraph.Preconnected.ofBoxProdRight
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
inst✝ : Nonempty α
h : (G □ H).Preconnected
⊢ H.Preconnected
state_after: no goals
tactic: classical
  rintro b₁ b₂
  obtain ⟨w⟩ := h (Classical.arbitrary _, b₁) (Classical.arbitrary _, b₂)
  exact ⟨w.ofBoxProdRight⟩
Theorem: AkraBazziRecurrence.tendsto_atTop_r
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ Tendsto (r i) atTop atTop
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ ∀ (b : ℕ), ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
tactic: rw [tendsto_atTop]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ ∀ (b : ℕ), ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
tactic: intro b
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ᶠ (n : ℕ) in atTop, ∀ (i : α), ↑b ≤ ↑(r i n)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
tactic: have := R.eventually_r_ge b
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ᶠ (n : ℕ) in atTop, ∀ (i : α), ↑b ≤ ↑(r i n)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ (i : α), ∀ᶠ (x : ℕ) in atTop, ↑b ≤ ↑(r i x)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
tactic: rw [Filter.eventually_all] at this
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ (i : α), ∀ᶠ (x : ℕ) in atTop, ↑b ≤ ↑(r i x)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: no goals
tactic: exact_mod_cast this i
Theorem: Nat.evenOddRec_odd
File: Mathlib/Data/Nat/EvenOddRec.lean

Proof steps:
state_before: P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
n : ℕ
⊢ evenOddRec h0 h_even h_odd (2 * n + 1) = h_odd n (evenOddRec h0 h_even h_odd n)
state_after: P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
n : ℕ
⊢ (match false, 0, h0 with
      | false, i, hi => h_even i hi
      | true, i, hi => h_odd i hi) =
      h0 ∨
    (n = 0 → true = true)
tactic: apply binaryRec_eq' true n
state_before: P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
n : ℕ
⊢ (match false, 0, h0 with
      | false, i, hi => h_even i hi
      | true, i, hi => h_odd i hi) =
      h0 ∨
    (n = 0 → true = true)
state_after: no goals
tactic: simp [H]
Theorem: AList.insert_union
File: Mathlib/Data/List/AList.lean

Proof steps:
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s₁ s₂ : AList β
⊢ insert a b (s₁ ∪ s₂) = insert a b s₁ ∪ s₂
state_after: case a.h.a
α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s₁ s₂ : AList β
n✝ : ℕ
a✝ : Sigma β
⊢ a✝ ∈ (insert a b (s₁ ∪ s₂)).entries[n✝]? ↔ a✝ ∈ (insert a b s₁ ∪ s₂).entries[n✝]?
tactic: ext
state_before: case a.h.a
α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s₁ s₂ : AList β
n✝ : ℕ
a✝ : Sigma β
⊢ a✝ ∈ (insert a b (s₁ ∪ s₂)).entries[n✝]? ↔ a✝ ∈ (insert a b s₁ ∪ s₂).entries[n✝]?
state_after: no goals
tactic: simp
Theorem: Ideal.isPrimary_of_isMaximal_radical
File: Mathlib/RingTheory/JacobsonIdeal.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝ : CommRing R
I : Ideal R
hi : I.radical.IsMaximal
this : I.radical = I.jacobson
x y : R
hxy : x * y ∈ I
x✝ : ∃ y_1, y_1 * y - 1 ∈ I
z : R
hz : z * y - 1 ∈ I
⊢ x ∈ I
state_after: R : Type u
S : Type v
inst✝ : CommRing R
I : Ideal R
hi : I.radical.IsMaximal
this : I.radical = I.jacobson
x y : R
hxy : x * y ∈ I
x✝ : ∃ y_1, y_1 * y - 1 ∈ I
z : R
hz : z * y - 1 ∈ I
⊢ z * (x * y) - x * (z * y - 1) ∈ I
tactic: rw [← mul_one x, ← sub_sub_cancel (z * y) 1, mul_sub, mul_left_comm]
state_before: R : Type u
S : Type v
inst✝ : CommRing R
I : Ideal R
hi : I.radical.IsMaximal
this : I.radical = I.jacobson
x y : R
hxy : x * y ∈ I
x✝ : ∃ y_1, y_1 * y - 1 ∈ I
z : R
hz : z * y - 1 ∈ I
⊢ z * (x * y) - x * (z * y - 1) ∈ I
state_after: no goals
tactic: exact I.sub_mem (I.mul_mem_left _ hxy) (I.mul_mem_left _ hz)
Theorem: Ordinal.lt_opow_succ_log_self
File: Mathlib/SetTheory/Ordinal/Exponential.lean

Proof steps:
state_before: b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
⊢ x < b ^ succ (log b x)
state_after: case inl
b : Ordinal.{u_1}
hb : 1 < b
⊢ 0 < b ^ succ (log b 0)

case inr
b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
hx : x ≠ 0
⊢ x < b ^ succ (log b x)
tactic: rcases eq_or_ne x 0 with (rfl | hx)
Theorem: CategoryTheory.ShortComplex.toCycles_comp_leftHomologyπ
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
A : C
k : A ⟶ S.X₂
hk : k ≫ S.g = 0
inst✝ : S.HasLeftHomology
⊢ S.f = 𝟙 S.X₁ ≫ S.f
state_after: no goals
tactic: rw [id_comp]
Theorem: SetLike.list_prod_map_mem_graded
File: Mathlib/Algebra/GradedMonoid.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝³ : SetLike S R
inst✝² : Monoid R
inst✝¹ : AddMonoid ι
A : ι → S
inst✝ : GradedMonoid A
ι' : Type u_4
l : List ι'
i : ι' → ι
r : ι' → R
h : ∀ j ∈ l, r j ∈ A (i j)
⊢ (List.map r l).prod ∈ A (List.map i l).sum
state_after: no goals
tactic: match l with
  | [] =>
    rw [List.map_nil, List.map_nil, List.prod_nil, List.sum_nil]
    exact one_mem_graded _
  | head::tail =>
    rw [List.map_cons, List.map_cons, List.prod_cons, List.sum_cons]
    exact
      mul_mem_graded (h _ <| List.mem_cons_self _ _)
        (list_prod_map_mem_graded tail _ _ fun j hj => h _ <| List.mem_cons_of_mem _ hj)
Theorem: Ordinal.lt_cof_type
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
inst✝ : IsWellOrder α r
S : Set α
⊢ #↑S < (type r).cof → Bounded r S
state_after: no goals
tactic: simpa using not_imp_not.2 cof_type_le
Theorem: CategoryTheory.Subobject.symm_apply_mem_iff_mem_image
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered C
inst✝¹ : HasCoproducts C
inst✝ : HasImages C
α : Type u_1
β : Type u_2
e : α ≃ β
s : Set α
x : β
h : e.symm x ∈ s
⊢ e (e.symm x) = x
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered C
inst✝¹ : HasCoproducts C
inst✝ : HasImages C
α : Type u_1
β : Type u_2
e : α ≃ β
s : Set α
x : β
⊢ x ∈ ⇑e '' s → e.symm x ∈ s
state_after: case intro.intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered C
inst✝¹ : HasCoproducts C
inst✝ : HasImages C
α : Type u_1
β : Type u_2
e : α ≃ β
s : Set α
a : α
m : a ∈ s
⊢ e.symm (e a) ∈ s
tactic: rintro ⟨a, m, rfl⟩
state_before: case intro.intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered C
inst✝¹ : HasCoproducts C
inst✝ : HasImages C
α : Type u_1
β : Type u_2
e : α ≃ β
s : Set α
a : α
m : a ∈ s
⊢ e.symm (e a) ∈ s
state_after: no goals
tactic: simpa using m
Theorem: sum_eq_tsum_indicator
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
s : Finset β
⊢ ∏ x ∈ s, f x = ∏' (x : β), (↑s).mulIndicator f x
state_after: no goals
tactic: rw [tprod_eq_prod' (Set.mulSupport_mulIndicator_subset),
      Finset.prod_mulIndicator_subset _ Finset.Subset.rfl]
Theorem: Ideal.smul_restrictScalars
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R✝ : Type u
S✝ : Type v
F : Type u_1
inst✝¹⁰ : Semiring R✝
inst✝⁹ : Semiring S✝
inst✝⁸ : FunLike F R✝ S✝
rc : RingHomClass F R✝ S✝
f : F
I✝ J : Ideal R✝
K L : Ideal S✝
G : Type u_2
inst✝⁷ : FunLike G S✝ R✝
rcg : RingHomClass G S✝ R✝
ι : Sort u_3
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
I : Ideal R
N : Submodule S M
⊢ Submodule.restrictScalars R (map (algebraMap R S) I • N) = I • Submodule.restrictScalars R N
state_after: R✝ : Type u
S✝ : Type v
F : Type u_1
inst✝¹⁰ : Semiring R✝
inst✝⁹ : Semiring S✝
inst✝⁸ : FunLike F R✝ S✝
rc : RingHomClass F R✝ S✝
f : F
I✝ J : Ideal R✝
K L : Ideal S✝
G : Type u_2
inst✝⁷ : FunLike G S✝ R✝
rcg : RingHomClass G S✝ R✝
ι : Sort u_3
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
I : Ideal R
N : Submodule S M
⊢ Submodule.restrictScalars R (⨆ b ∈ ↑I, (algebraMap R S) b • N) =
    ⨆ a ∈ ↑I, Submodule.restrictScalars R ((algebraMap R S) a • N)
tactic: simp_rw [map, Submodule.span_smul_eq, ← Submodule.coe_set_smul,
    Submodule.set_smul_eq_iSup, ← element_smul_restrictScalars, iSup_image]
state_before: R✝ : Type u
S✝ : Type v
F : Type u_1
inst✝¹⁰ : Semiring R✝
inst✝⁹ : Semiring S✝
inst✝⁸ : FunLike F R✝ S✝
rc : RingHomClass F R✝ S✝
f : F
I✝ J : Ideal R✝
K L : Ideal S✝
G : Type u_2
inst✝⁷ : FunLike G S✝ R✝
rcg : RingHomClass G S✝ R✝
ι : Sort u_3
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
I : Ideal R
N : Submodule S M
⊢ Submodule.restrictScalars R (⨆ b ∈ ↑I, (algebraMap R S) b • N) =
    ⨆ a ∈ ↑I, Submodule.restrictScalars R ((algebraMap R S) a • N)
state_after: no goals
tactic: exact (_root_.map_iSup₂ (Submodule.restrictScalarsLatticeHom R S M) _)
Theorem: HasDerivWithinAt.const_mul
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ HasDerivWithinAt (fun y => c * d y) (c * d') s x
state_after: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ c * d' = 0 * d x + c * d'
tactic: convert (hasDerivWithinAt_const x s c).mul hd using 1
state_before: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ c * d' = 0 * d x + c * d'
state_after: no goals
tactic: rw [zero_mul, zero_add]
Theorem: orderOf_dvd_iff_zpow_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
⊢ ↑(orderOf x) ∣ i ↔ x ^ i = 1
state_after: case intro.inl
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℕ
⊢ ↑(orderOf x) ∣ ↑i ↔ x ^ ↑i = 1

case intro.inr
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℕ
⊢ ↑(orderOf x) ∣ -↑i ↔ x ^ (-↑i) = 1
tactic: rcases Int.eq_nat_or_neg i with ⟨i, rfl | rfl⟩