ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ProbabilityTheory.Kernel.setLIntegral_piecewise
File: Mathlib/Probability/Kernel/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ η : Kernel α β
s : Set α
hs : MeasurableSet s
inst✝ : DecidablePred fun x => x ∈ s
a : α
g : β → ℝ≥0∞
t : Set β
⊢ ∫⁻ (b : β) in t, g b ∂(piecewise hs κ η) a = if a ∈ s then ∫⁻ (b : β) in t, g b ∂κ a else ∫⁻ (b : β) in t, g b ∂η a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ η : Kernel α β
s : Set α
hs : MeasurableSet s
inst✝ : DecidablePred fun x => x ∈ s
a : α
g : β → ℝ≥0∞
t : Set β
⊢ (∫⁻ (b : β) in t, g b ∂if a ∈ s then κ a else η a) =
    if a ∈ s then ∫⁻ (b : β) in t, g b ∂κ a else ∫⁻ (b : β) in t, g b ∂η a
tactic: simp_rw [piecewise_apply]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ η : Kernel α β
s : Set α
hs : MeasurableSet s
inst✝ : DecidablePred fun x => x ∈ s
a : α
g : β → ℝ≥0∞
t : Set β
⊢ (∫⁻ (b : β) in t, g b ∂if a ∈ s then κ a else η a) =
    if a ∈ s then ∫⁻ (b : β) in t, g b ∂κ a else ∫⁻ (b : β) in t, g b ∂η a
state_after: no goals
tactic: split_ifs <;> rfl
Theorem: Homeomorph.toPartialHomeomorph_target
File: Mathlib/Topology/PartialHomeomorph.lean

Proof steps:
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e✝ : PartialHomeomorph X Y
e : X ≃ₜ Y
⊢ ⇑e '' univ = univ
state_after: no goals
tactic: rw [image_univ, e.surjective.range_eq]
Theorem: Finset.addEnergy_eq_sum_sq
File: Mathlib/Combinatorics/Additive/Energy.lean

Proof steps:
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ Eₘ[s, t] =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
state_after: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ ∑ a ∈ s * t,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2 =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
tactic: rw [mulEnergy_eq_sum_sq']
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ ∑ a ∈ s * t,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2 =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
state_after: no goals
tactic: exact Fintype.sum_subset $ by aesop (add simp [filter_eq_empty_iff, mul_mem_mul])
Theorem: descPochhammer_succ_left
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
n : ℕ
⊢ descPochhammer R (n + 1) = X * (descPochhammer R n).comp (X - 1)
state_after: no goals
tactic: rw [descPochhammer]
Theorem: Cardinal.eq_of_add_eq_of_aleph0_le
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ b = c
state_after: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ b ≤ c

case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ c ≤ b
tactic: apply le_antisymm
state_before: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ c ≤ b
state_after: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ ¬b < c
tactic: rw [← not_lt]
state_before: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
⊢ ¬b < c
state_after: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
hb : b < c
⊢ False
tactic: intro hb
state_before: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
hb : b < c
⊢ False
state_after: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
hb : b < c
this : a + b < c
⊢ False
tactic: have : a + b < c := add_lt_of_lt hc ha hb
state_before: case a
a b c : Cardinal.{u_1}
h : a + b = c
ha : a < c
hc : ℵ₀ ≤ c
hb : b < c
this : a + b < c
⊢ False
state_after: no goals
tactic: simp [h, lt_irrefl] at this
Theorem: ascending_central_series_le_upper
File: Mathlib/GroupTheory/Nilpotent.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
n : ℕ
⊢ H (n + 1) ≤ upperCentralSeries G (n + 1)
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
n : ℕ
x : G
hx : x ∈ H (n + 1)
⊢ x ∈ upperCentralSeries G (n + 1)
tactic: intro x hx
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
n : ℕ
x : G
hx : x ∈ H (n + 1)
⊢ x ∈ upperCentralSeries G (n + 1)
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
n : ℕ
x : G
hx : x ∈ H (n + 1)
⊢ ∀ (y : G), x * y * x⁻¹ * y⁻¹ ∈ upperCentralSeries G n
tactic: rw [mem_upperCentralSeries_succ_iff]
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
n : ℕ
x : G
hx : x ∈ H (n + 1)
⊢ ∀ (y : G), x * y * x⁻¹ * y⁻¹ ∈ upperCentralSeries G n
state_after: no goals
tactic: exact fun y => ascending_central_series_le_upper H hH n (hH.2 x n hx y)
Theorem: bot_bihimp
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : HeytingAlgebra α
a : α
⊢ ⊥ ⇔ a = aᶜ
state_after: no goals
tactic: simp [bihimp]
Theorem: EMetric.mem_closure_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 α
⊢ (∀ (i : ℝ≥0∞), 0 < i → ∃ y ∈ s, y ∈ ball x i) ↔ ∀ ε > 0, ∃ y ∈ s, edist x y < ε
state_after: no goals
tactic: simp only [mem_ball, edist_comm x]
Theorem: Polynomial.mapEquiv_symm_apply
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
e : R ≃+* S
⊢ (↑(mapRingHom ↑e.symm)).comp ↑(mapRingHom ↑e) = RingHom.id R[X]
state_after: no goals
tactic: ext <;> simp
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
e : R ≃+* S
⊢ (↑(mapRingHom ↑e)).comp ↑(mapRingHom ↑e.symm) = RingHom.id S[X]
state_after: no goals
tactic: ext <;> simp
Theorem: LinearMap.rank_add_le
File: Mathlib/LinearAlgebra/Dimension/LinearMap.lean

Proof steps:
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ (f + g).rank ≤ Module.rank K ↥(range f ⊔ range g)
state_after: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ range (f + g) ≤ range f ⊔ range g
tactic: refine rank_le_of_submodule _ _ ?_
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ range (f + g) ≤ range f ⊔ range g
state_after: no goals
tactic: exact LinearMap.range_le_iff_comap.2 <| eq_top_iff'.2 fun x =>
        show f x + g x ∈ (LinearMap.range f ⊔ LinearMap.range g : Submodule K V') from
        mem_sup.2 ⟨_, ⟨x, rfl⟩, _, ⟨x, rfl⟩, rfl⟩
Theorem: AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.desc_fac
File: Mathlib/Geometry/RingedSpace/PresheafedSpace/HasColimits.lean

Proof steps:
state_before: J : Type u'
inst✝⁴ : Category.{v', u'} J
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasColimitsOfShape J TopCat
inst✝¹ : ∀ (X : TopCat), HasLimitsOfShape Jᵒᵖ (Presheaf C X)
inst✝ : HasLimitsOfShape Jᵒᵖ C
F : J ⥤ PresheafedSpace C
s : Cocone F
j : J
⊢ (colimitCocone F).ι.app j ≫ desc F s = s.ι.app j
state_after: case w.w
J : Type u'
inst✝⁴ : Category.{v', u'} J
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasColimitsOfShape J TopCat
inst✝¹ : ∀ (X : TopCat), HasLimitsOfShape Jᵒᵖ (Presheaf C X)
inst✝ : HasLimitsOfShape Jᵒᵖ C
F : J ⥤ PresheafedSpace C
s : Cocone F
j : J
U : (CategoryTheory.forget TopCat).obj ↑(F.obj j)
⊢ ((colimitCocone F).ι.app j ≫ desc F s).base U = (s.ι.app j).base U

case h.w
J : Type u'
inst✝⁴ : Category.{v', u'} J
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasColimitsOfShape J TopCat
inst✝¹ : ∀ (X : TopCat), HasLimitsOfShape Jᵒᵖ (Presheaf C X)
inst✝ : HasLimitsOfShape Jᵒᵖ C
F : J ⥤ PresheafedSpace C
s : Cocone F
j : J
U : Opens ↑↑s.pt
⊢ (((colimitCocone F).ι.app j ≫ desc F s).c ≫ whiskerRight (eqToHom ⋯) (F.obj j).presheaf).app (op U) =
    (s.ι.app j).c.app (op U)
tactic: ext U
Theorem: LinearMap.polar_weak_closed
File: Mathlib/Analysis/LocallyConvex/Polar.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
⊢ IsClosed (B.polar s)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
⊢ IsClosed (⋂ x ∈ s, {y | ‖(B x) y‖ ≤ 1})
tactic: rw [polar_eq_iInter]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
⊢ IsClosed (⋂ x ∈ s, {y | ‖(B x) y‖ ≤ 1})
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
x : E
x✝ : x ∈ s
⊢ IsClosed {y | ‖(B x) y‖ ≤ 1}
tactic: refine isClosed_iInter fun x => isClosed_iInter fun _ => ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
x : E
x✝ : x ∈ s
⊢ IsClosed {y | ‖(B x) y‖ ≤ 1}
state_after: no goals
tactic: exact isClosed_le (WeakBilin.eval_continuous B.flip x).norm continuous_const
Theorem: hasGradientAtFilter_const
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasGradientAtFilter (fun x => c) 0 x L
state_after: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasFDerivAtFilter (fun x => c) 0 x L
tactic: rw [HasGradientAtFilter, map_zero]
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasFDerivAtFilter (fun x => c) 0 x L
state_after: no goals
tactic: apply hasFDerivAtFilter_const c x L
Theorem: MeasureTheory.pdf.integrable_pdf_smul_iff
File: Mathlib/Probability/Density.lean

Proof steps:
state_before: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable (fun x => (pdf X ℙ μ x).toReal • f x) μ ↔ Integrable (fun x => f (X x)) ℙ
state_after: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable f (map X ℙ) ↔ Integrable f (μ.withDensity ((map X ℙ).rnDeriv μ))
tactic: erw [← integrable_map_measure (hf.mono_ac HasPDF.absolutelyContinuous)
    (HasPDF.aemeasurable X ℙ μ),
    map_eq_withDensity_pdf X ℙ μ, pdf_def, integrable_rnDeriv_smul_iff HasPDF.absolutelyContinuous]
state_before: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable f (map X ℙ) ↔ Integrable f (μ.withDensity ((map X ℙ).rnDeriv μ))
state_after: no goals
tactic: rw [withDensity_rnDeriv_eq _ _ HasPDF.absolutelyContinuous]
Theorem: CategoryTheory.ComposableArrows.mk₅_surjective
File: Mathlib/CategoryTheory/ComposableArrows.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : ComposableArrows C 5
⊢ X.map' 0 1 ⋯ ⋯ =
    eqToHom ⋯ ≫
      (mk₅ (X.map' 0 1 ⋯ ⋯) (X.map' 1 2 ⋯ ⋯) (X.map' 2 3 ⋯ ⋯) (X.map' 3 4 ⋯ ⋯) (X.map' 4 5 ⋯ ⋯)).map' 0 1 ⋯ ⋯ ≫
        eqToHom ⋯
state_after: no goals
tactic: simp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : ComposableArrows C 5
⊢ X.map' 1 2 ⋯ ⋯ =
    eqToHom ⋯ ≫
      (mk₅ (X.map' 0 1 ⋯ ⋯) (X.map' 1 2 ⋯ ⋯) (X.map' 2 3 ⋯ ⋯) (X.map' 3 4 ⋯ ⋯) (X.map' 4 5 ⋯ ⋯)).map' 1 2 ⋯ ⋯ ≫
        eqToHom ⋯
state_after: no goals
tactic: simp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : ComposableArrows C 5
⊢ X.map' 2 3 ⋯ ⋯ =
    eqToHom ⋯ ≫
      (mk₅ (X.map' 0 1 ⋯ ⋯) (X.map' 1 2 ⋯ ⋯) (X.map' 2 3 ⋯ ⋯) (X.map' 3 4 ⋯ ⋯) (X.map' 4 5 ⋯ ⋯)).map' 2 3 ⋯ ⋯ ≫
        eqToHom ⋯
state_after: no goals
tactic: simp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : ComposableArrows C 5
⊢ X.map' 3 4 ⋯ ⋯ =
    eqToHom ⋯ ≫
      (mk₅ (X.map' 0 1 ⋯ ⋯) (X.map' 1 2 ⋯ ⋯) (X.map' 2 3 ⋯ ⋯) (X.map' 3 4 ⋯ ⋯) (X.map' 4 5 ⋯ ⋯)).map' 3 4 ⋯ ⋯ ≫
        eqToHom ⋯
state_after: no goals
tactic: simp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : ComposableArrows C 5
⊢ X.map' 4 5 ⋯ ⋯ =
    eqToHom ⋯ ≫
      (mk₅ (X.map' 0 1 ⋯ ⋯) (X.map' 1 2 ⋯ ⋯) (X.map' 2 3 ⋯ ⋯) (X.map' 3 4 ⋯ ⋯) (X.map' 4 5 ⋯ ⋯)).map' 4 5 ⋯ ⋯ ≫
        eqToHom ⋯
state_after: no goals
tactic: simp
Theorem: pi_norm_le_iff_of_nonempty
File: Mathlib/Analysis/Normed/Group/Constructions.lean

Proof steps:
state_before: ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r
state_after: case pos
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : 0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r

case neg
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : ¬0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r
tactic: by_cases hr : 0 ≤ r
Theorem: WittVector.iterate_verschiebung_coeff
File: Mathlib/RingTheory/WittVector/Identities.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
n k : ℕ
⊢ ((⇑verschiebung)^[n] x).coeff (k + n) = x.coeff k
state_after: case zero
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
k : ℕ
⊢ ((⇑verschiebung)^[0] x).coeff (k + 0) = x.coeff k

case succ
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
k✝ k : ℕ
ih : ((⇑verschiebung)^[k] x).coeff (k✝ + k) = x.coeff k✝
⊢ ((⇑verschiebung)^[k + 1] x).coeff (k✝ + (k + 1)) = x.coeff k✝
tactic: induction' n with k ih
Theorem: Matroid.map_basis_iff'
File: Mathlib/Data/Matroid/Map.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
I X : Set β
hf : InjOn f M.E
⊢ (M.map f hf).Basis I X ↔ ∃ I₀ X₀, M.Basis I₀ X₀ ∧ I = f '' I₀ ∧ X = f '' X₀
state_after: case refine_1
α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
I X : Set β
hf : InjOn f M.E
h : (M.map f hf).Basis I X
⊢ ∃ I₀ X₀, M.Basis I₀ X₀ ∧ I = f '' I₀ ∧ X = f '' X₀

case refine_2
α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
I X : Set β
hf : InjOn f M.E
⊢ (∃ I₀ X₀, M.Basis I₀ X₀ ∧ I = f '' I₀ ∧ X = f '' X₀) → (M.map f hf).Basis I X
tactic: refine ⟨fun h ↦ ?_, ?_⟩
state_before: case refine_2
α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
I X : Set β
hf : InjOn f M.E
⊢ (∃ I₀ X₀, M.Basis I₀ X₀ ∧ I = f '' I₀ ∧ X = f '' X₀) → (M.map f hf).Basis I X
state_after: case refine_2.intro.intro.intro.intro
α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f M.E
I X : Set α
hIX : M.Basis I X
⊢ (M.map f hf).Basis (f '' I) (f '' X)
tactic: rintro ⟨I, X, hIX, rfl, rfl⟩
state_before: case refine_2.intro.intro.intro.intro
α : Type u_1
β : Type u_2
f : α → β
E I✝ s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f M.E
I X : Set α
hIX : M.Basis I X
⊢ (M.map f hf).Basis (f '' I) (f '' X)
state_after: no goals
tactic: exact hIX.map hf
Theorem: Multiset.add_singleton_eq_iff
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ s + {a} = t ↔ a ∈ t ∧ s = t.erase a
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t ↔ a ∈ t ∧ s = t.erase a
tactic: rw [add_comm, singleton_add]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t ↔ a ∈ t ∧ s = t.erase a
state_after: case mp
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t → a ∈ t ∧ s = t.erase a

case mpr
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ∈ t ∧ s = t.erase a → a ::ₘ s = t
tactic: constructor
Theorem: AffineBasis.linear_combination_coord_eq_self
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b✝ : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
b : AffineBasis ι k V
v : V
⊢ ∑ i : ι, (b.coord i) v • b i = v
state_after: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b✝ : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
b : AffineBasis ι k V
v : V
hb : ((Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) v) = v
⊢ ∑ i : ι, (b.coord i) v • b i = v
tactic: have hb := b.affineCombination_coord_eq_self v
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b✝ : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
b : AffineBasis ι k V
v : V
hb : ((Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) v) = v
⊢ ∑ i : ι, (b.coord i) v • b i = v
state_after: no goals
tactic: rwa [Finset.univ.affineCombination_eq_linear_combination _ _ (b.sum_coord_apply_eq_one v)] at hb
Theorem: Function.graph_comp
File: Mathlib/Data/Rel.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : β → γ
g : α → β
⊢ graph (f ∘ g) = (graph g).comp (graph f)
state_after: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → γ
g : α → β
x : α
y : γ
⊢ graph (f ∘ g) x y ↔ (graph g).comp (graph f) x y
tactic: ext x y
state_before: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → γ
g : α → β
x : α
y : γ
⊢ graph (f ∘ g) x y ↔ (graph g).comp (graph f) x y
state_after: no goals
tactic: simp [Rel.comp]
Theorem: Mathlib.Vector.map₂_map_right
File: Mathlib/Data/Vector/MapLemmas.lean

Proof steps:
state_before: α : Type u_3
n : ℕ
β : Type u_4
xs : Vector α n
ys : Vector β n
γ : Type u_1
ζ : Type u_2
f₁ : α → γ → ζ
f₂ : β → γ
⊢ map₂ f₁ xs (map f₂ ys) = map₂ (fun x y => f₁ x (f₂ y)) xs ys
state_after: no goals
tactic: induction xs, ys using Vector.revInductionOn₂ <;> simp_all
Theorem: isCyclic_of_surjective
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

Proof steps:
state_before: α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
hH : IsCyclic H
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
⊢ IsCyclic G
state_after: case mk.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
⊢ IsCyclic G
tactic: obtain ⟨x, hx⟩ := hH
state_before: case mk.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
⊢ IsCyclic G
state_after: case mk.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : G
⊢ a ∈ zpowers (f x)
tactic: refine ⟨f x, fun a ↦ ?_⟩
state_before: case mk.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : G
⊢ a ∈ zpowers (f x)
state_after: case mk.intro.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : H
⊢ f a ∈ zpowers (f x)
tactic: obtain ⟨a, rfl⟩ := hf a
state_before: case mk.intro.intro
α : Type u
a✝ : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
a : H
⊢ f a ∈ zpowers (f x)
state_after: case mk.intro.intro.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
n : ℤ
⊢ f ((fun x_1 => x ^ x_1) n) ∈ zpowers (f x)
tactic: obtain ⟨n, rfl⟩ := hx a
state_before: case mk.intro.intro.intro
α : Type u
a : α
inst✝⁴ : Group α
H : Type u_1
G : Type u_2
F : Type u_3
inst✝³ : Group H
inst✝² : Group G
inst✝¹ : FunLike F H G
inst✝ : MonoidHomClass F H G
f : F
hf : Function.Surjective ⇑f
x : H
hx : ∀ (x_1 : H), x_1 ∈ zpowers x
n : ℤ
⊢ f ((fun x_1 => x ^ x_1) n) ∈ zpowers (f x)
state_after: no goals
tactic: exact ⟨n, (map_zpow _ _ _).symm⟩