ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: NumberField.Units.fun_eq_repr
File: Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean

Proof steps:
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ f = ⇑((basisModTorsion K).repr (Additive.ofMul ↑x))
state_after: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • (basisModTorsion K) i
tactic: suffices Additive.ofMul ↑x = ∑ i, (f i) • (basisModTorsion K i) by
    rw [← (basisModTorsion K).repr_sum_self f, ← this]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • (basisModTorsion K) i
state_after: no goals
tactic: calc
    Additive.ofMul ↑x
    _ = ∑ i, (f i) • Additive.ofMul ↑(fundSystem K i) := by
          rw [h, QuotientGroup.mk_mul, (QuotientGroup.eq_one_iff _).mpr hζ, one_mul,
            QuotientGroup.mk_prod, ofMul_prod]; rfl
    _ = ∑ i, (f i) • (basisModTorsion K i) := by
          simp_rw [fundSystem, QuotientGroup.out_eq', ofMul_toMul]
Theorem: QuotientMap.continuous_lift_prod_right
File: Mathlib/Topology/CompactOpen.lean

Proof steps:
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
⊢ Continuous g
state_after: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this : Continuous fun p => g (p.swap.1, f p.swap.2)
⊢ Continuous g
tactic: have : Continuous fun p : X₀ × Y => g ((Prod.swap p).1, f (Prod.swap p).2) :=
    hg.comp continuous_swap
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this : Continuous fun p => g (p.swap.1, f p.swap.2)
⊢ Continuous g
state_after: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this✝ : Continuous fun p => g (p.swap.1, f p.swap.2)
this : Continuous fun p => (g ∘ Prod.swap) (f p.1, p.2)
⊢ Continuous g
tactic: have : Continuous fun p : X₀ × Y => (g ∘ Prod.swap) (f p.1, p.2) := this
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this✝ : Continuous fun p => g (p.swap.1, f p.swap.2)
this : Continuous fun p => (g ∘ Prod.swap) (f p.1, p.2)
⊢ Continuous g
state_after: no goals
tactic: exact (hf.continuous_lift_prod_left this).comp continuous_swap
Theorem: CategoryTheory.Monoidal.FunctorCategory.tensorHom_app
File: Mathlib/CategoryTheory/Monoidal/FunctorCategory.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F G F' G' : C ⥤ D
α : F ⟶ G
β : F' ⟶ G'
X Y : C
f : X ⟶ Y
⊢ (tensorObj F F').map f ≫ (fun X => α.app X ⊗ β.app X) Y = (fun X => α.app X ⊗ β.app X) X ≫ (tensorObj G G').map f
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F G F' G' : C ⥤ D
α : F ⟶ G
β : F' ⟶ G'
X Y : C
f : X ⟶ Y
⊢ (F.map f ⊗ F'.map f) ≫ (α.app Y ⊗ β.app Y) = (α.app X ⊗ β.app X) ≫ (G.map f ⊗ G'.map f)
tactic: dsimp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F G F' G' : C ⥤ D
α : F ⟶ G
β : F' ⟶ G'
X Y : C
f : X ⟶ Y
⊢ (F.map f ⊗ F'.map f) ≫ (α.app Y ⊗ β.app Y) = (α.app X ⊗ β.app X) ≫ (G.map f ⊗ G'.map f)
state_after: no goals
tactic: rw [← tensor_comp, α.naturality, β.naturality, tensor_comp]
Theorem: Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
Q : Type u_4
inst✝ : CommMonoid Q
k : N ≃* P
x : N
⊢ (f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k)) x = k x
state_after: no goals
tactic: simp
Theorem: Turing.ListBlank.cons_bind
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
a : Γ
l : ListBlank Γ
f : Γ → List Γ'
hf : ∃ n, f default = List.replicate n default
⊢ (cons a l).bind f hf = append (f a) (l.bind f hf)
state_after: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
a : Γ
l✝ : ListBlank Γ
f : Γ → List Γ'
hf : ∃ n, f default = List.replicate n default
l : List Γ
⊢ (cons a ⟦l⟧).bind f hf = append (f a) (bind ⟦l⟧ f hf)
tactic: refine l.inductionOn fun l ↦ ?_
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
a : Γ
l✝ : ListBlank Γ
f : Γ → List Γ'
hf : ∃ n, f default = List.replicate n default
l : List Γ
⊢ (cons a ⟦l⟧).bind f hf = append (f a) (bind ⟦l⟧ f hf)
state_after: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
a : Γ
l✝ : ListBlank Γ
f : Γ → List Γ'
hf : ∃ n, f default = List.replicate n default
l : List Γ
⊢ (cons a (mk l)).bind f hf = append (f a) ((mk l).bind f hf)
tactic: suffices ((mk l).cons a).bind f hf = ((mk l).bind f hf).append (f a) by exact this
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
a : Γ
l✝ : ListBlank Γ
f : Γ → List Γ'
hf : ∃ n, f default = List.replicate n default
l : List Γ
⊢ (cons a (mk l)).bind f hf = append (f a) ((mk l).bind f hf)
state_after: no goals
tactic: simp only [ListBlank.append_mk, ListBlank.bind_mk, ListBlank.cons_mk, List.cons_bind]
Theorem: Set.ncard_eq_three
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ s.ncard = 3 ↔ ∃ x y z, x ≠ y ∧ x ≠ z ∧ y ≠ z ∧ s = {x, y, z}
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 3 ↔ s.encard = 3
tactic: rw [← encard_eq_three, ncard_def, ← Nat.cast_inj (R := ℕ∞), Nat.cast_ofNat]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 3 ↔ s.encard = 3
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
⊢ s.encard = 3

case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑s.encard.toNat = 3
tactic: refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑s.encard.toNat = 3
state_after: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑(ENat.toNat 3) = 3
tactic: rw [h]
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑(ENat.toNat 3) = 3
state_after: no goals
tactic: rfl
Theorem: LinearMap.lTensor_sub
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹⁰ : CommSemiring R
M : Type u_2
N : Type u_3
P : Type u_4
Q : Type u_5
S : Type u_6
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup Q
inst✝⁵ : AddCommGroup S
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R Q
inst✝ : Module R S
f g : N →ₗ[R] P
⊢ lTensor M (f - g) = lTensor M f - lTensor M g
state_after: R : Type u_1
inst✝¹⁰ : CommSemiring R
M : Type u_2
N : Type u_3
P : Type u_4
Q : Type u_5
S : Type u_6
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup Q
inst✝⁵ : AddCommGroup S
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R Q
inst✝ : Module R S
f g : N →ₗ[R] P
⊢ (lTensorHom M) (f - g) = (lTensorHom M) f - (lTensorHom M) g
tactic: simp_rw [← coe_lTensorHom]
state_before: R : Type u_1
inst✝¹⁰ : CommSemiring R
M : Type u_2
N : Type u_3
P : Type u_4
Q : Type u_5
S : Type u_6
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup Q
inst✝⁵ : AddCommGroup S
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R Q
inst✝ : Module R S
f g : N →ₗ[R] P
⊢ (lTensorHom M) (f - g) = (lTensorHom M) f - (lTensorHom M) g
state_after: no goals
tactic: exact (lTensorHom (R := R) (N := N) (P := P) M).map_sub f g
Theorem: List.scanlTR_go_eq
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

Proof steps:
state_before: α✝¹ : Type u_1
α✝ : Type u_2
f : α✝¹ → α✝ → α✝¹
a : α✝¹
acc : Array α✝¹
⊢ scanlTR.go f [] a acc = acc.data ++ scanl f a []
state_after: no goals
tactic: simp [scanlTR.go, scanl]
state_before: α✝¹ : Type u_1
α✝ : Type u_2
f : α✝¹ → α✝ → α✝¹
a✝ : α✝¹
acc : Array α✝¹
a : α✝
l : List α✝
⊢ scanlTR.go f (a :: l) a✝ acc = acc.data ++ scanl f a✝ (a :: l)
state_after: no goals
tactic: simp [scanlTR.go, scanl, scanlTR_go_eq l]
Theorem: InnerProductSpace.unique_continuousLinearMapOfBilin
File: Mathlib/Analysis/InnerProductSpace/Dual.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
⊢ f = B♯ v
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
⊢ ∀ (v_1 : E), ⟪f, v_1⟫_𝕜 = ⟪B♯ v, v_1⟫_𝕜
tactic: refine ext_inner_right 𝕜 ?_
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
⊢ ∀ (v_1 : E), ⟪f, v_1⟫_𝕜 = ⟪B♯ v, v_1⟫_𝕜
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
w : E
⊢ ⟪f, w⟫_𝕜 = ⟪B♯ v, w⟫_𝕜
tactic: intro w
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
w : E
⊢ ⟪f, w⟫_𝕜 = ⟪B♯ v, w⟫_𝕜
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
w : E
⊢ ⟪f, w⟫_𝕜 = (B v) w
tactic: rw [continuousLinearMapOfBilin_apply]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v f : E
is_lax_milgram : ∀ (w : E), ⟪f, w⟫_𝕜 = (B v) w
w : E
⊢ ⟪f, w⟫_𝕜 = (B v) w
state_after: no goals
tactic: exact is_lax_milgram w
Theorem: Polynomial.natSepDegree_C_mul
File: Mathlib/FieldTheory/SeparableDegree.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
x : F
hx : x ≠ 0
⊢ (C x * f).natSepDegree = f.natSepDegree
state_after: no goals
tactic: simp only [natSepDegree_eq_of_isAlgClosed (AlgebraicClosure F), aroots_C_mul _ hx]
Theorem: borel_eq_generateFrom_Iic
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ borel α = MeasurableSpace.generateFrom (range Iic)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ MeasurableSpace.generateFrom (range Ioi) = MeasurableSpace.generateFrom (range Iic)
tactic: rw [borel_eq_generateFrom_Ioi]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ MeasurableSpace.generateFrom (range Ioi) = MeasurableSpace.generateFrom (range Iic)
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ MeasurableSpace.generateFrom (range Ioi) ≤ MeasurableSpace.generateFrom (range Iic)

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ MeasurableSpace.generateFrom (range Iic) ≤ MeasurableSpace.generateFrom (range Ioi)
tactic: refine le_antisymm ?_ ?_
Theorem: Polynomial.taylor_coeff_one
File: Mathlib/Algebra/Polynomial/Taylor.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
⊢ ((taylor r) f).coeff 1 = eval r (derivative f)
state_after: no goals
tactic: rw [taylor_coeff, hasseDeriv_one]
Theorem: infEdist_neg_neg
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s✝ t : Set E
x✝ y x : E
s : Set E
⊢ infEdist x⁻¹ s⁻¹ = infEdist x s
state_after: no goals
tactic: rw [← image_inv, infEdist_image isometry_inv]
Theorem: AkraBazziRecurrence.GrowsPolynomially.eventually_atTop_ge
File: Mathlib/Computability/AkraBazzi/GrowsPolynomially.lean

Proof steps:
state_before: f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
⊢ ∃ c > 0, ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, c * f x ≤ f u
state_after: case intro.intro.intro.intro
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∃ c > 0, ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, c * f x ≤ f u
tactic: obtain ⟨c₁, hc₁, c₂, _, h⟩ := hf b hb
state_before: case intro.intro.intro.intro
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∃ c > 0, ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, c * f x ≤ f u
state_after: case intro.intro.intro.intro
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, c₁ * f x ≤ f u
tactic: refine ⟨c₁, hc₁, ?_⟩
state_before: case intro.intro.intro.intro
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, c₁ * f x ≤ f u
state_after: case h
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∀ (a : ℝ), (∀ u ∈ Set.Icc (b * a) a, f u ∈ Set.Icc (c₁ * f a) (c₂ * f a)) → ∀ u ∈ Set.Icc (b * a) a, c₁ * f a ≤ f u
tactic: filter_upwards [h]
state_before: case h
f : ℝ → ℝ
b : ℝ
hb : b ∈ Set.Ioo 0 1
hf : GrowsPolynomially f
c₁ : ℝ
hc₁ : c₁ > 0
c₂ : ℝ
left✝ : c₂ > 0
h : ∀ᶠ (x : ℝ) in atTop, ∀ u ∈ Set.Icc (b * x) x, f u ∈ Set.Icc (c₁ * f x) (c₂ * f x)
⊢ ∀ (a : ℝ), (∀ u ∈ Set.Icc (b * a) a, f u ∈ Set.Icc (c₁ * f a) (c₂ * f a)) → ∀ u ∈ Set.Icc (b * a) a, c₁ * f a ≤ f u
state_after: no goals
tactic: exact fun _ H u hu => (H u hu).1
Theorem: DirectSum.induction_on
File: Mathlib/Algebra/DirectSum/Basic.lean

Proof steps:
state_before: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
C : (⨁ (i : ι), β i) → Prop
x : ⨁ (i : ι), β i
H_zero : C 0
H_basic : ∀ (i : ι) (x : β i), C ((of β i) x)
H_plus : ∀ (x y : ⨁ (i : ι), β i), C x → C y → C (x + y)
⊢ C x
state_after: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
C : (⨁ (i : ι), β i) → Prop
x : ⨁ (i : ι), β i
H_zero : C 0
H_basic : ∀ (i : ι) (x : β i), C ((of β i) x)
H_plus : ∀ (x y : ⨁ (i : ι), β i), C x → C y → C (x + y)
⊢ ∀ (i : ι) (b : β i) (f : Π₀ (i : ι), β i), f i = 0 → b ≠ 0 → C f → C (DFinsupp.single i b + f)
tactic: apply DFinsupp.induction x H_zero
state_before: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
C : (⨁ (i : ι), β i) → Prop
x : ⨁ (i : ι), β i
H_zero : C 0
H_basic : ∀ (i : ι) (x : β i), C ((of β i) x)
H_plus : ∀ (x y : ⨁ (i : ι), β i), C x → C y → C (x + y)
⊢ ∀ (i : ι) (b : β i) (f : Π₀ (i : ι), β i), f i = 0 → b ≠ 0 → C f → C (DFinsupp.single i b + f)
state_after: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
C : (⨁ (i : ι), β i) → Prop
x : ⨁ (i : ι), β i
H_zero : C 0
H_basic : ∀ (i : ι) (x : β i), C ((of β i) x)
H_plus : ∀ (x y : ⨁ (i : ι), β i), C x → C y → C (x + y)
i : ι
b : β i
f : Π₀ (i : ι), β i
h1 : f i = 0
h2 : b ≠ 0
ih : C f
⊢ C (DFinsupp.single i b + f)
tactic: intro i b f h1 h2 ih
state_before: ι : Type v
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
inst✝ : DecidableEq ι
C : (⨁ (i : ι), β i) → Prop
x : ⨁ (i : ι), β i
H_zero : C 0
H_basic : ∀ (i : ι) (x : β i), C ((of β i) x)
H_plus : ∀ (x y : ⨁ (i : ι), β i), C x → C y → C (x + y)
i : ι
b : β i
f : Π₀ (i : ι), β i
h1 : f i = 0
h2 : b ≠ 0
ih : C f
⊢ C (DFinsupp.single i b + f)
state_after: no goals
tactic: solve_by_elim
Theorem: AffineSubspace.Parallel.vectorSpan_eq
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ vectorSpan k s₁ = vectorSpan k s₂
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ (affineSpan k s₁).direction = (affineSpan k s₂).direction
tactic: simp_rw [← direction_affineSpan]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ (affineSpan k s₁).direction = (affineSpan k s₂).direction
state_after: no goals
tactic: exact h.direction_eq
Theorem: MeromorphicAt.neg
File: Mathlib/Analysis/Analytic/Meromorphic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
⊢ MeromorphicAt (-f) x
state_after: case h.e'_6
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
⊢ -f = (fun x => -1) • f
tactic: convert (MeromorphicAt.const (-1 : 𝕜) x).smul hf using 1
state_before: case h.e'_6
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
⊢ -f = (fun x => -1) • f
state_after: case h.e'_6.h
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
z : 𝕜
⊢ (-f) z = ((fun x => -1) • f) z
tactic: ext1 z
state_before: case h.e'_6.h
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
z : 𝕜
⊢ (-f) z = ((fun x => -1) • f) z
state_after: no goals
tactic: simp only [Pi.neg_apply, Pi.smul_apply', neg_smul, one_smul]
Theorem: IsCyclic.ext
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

Proof steps:
state_before: α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
g : G
hg : ∀ (x : G), x ∈ zpowers g
⊢ a = b
tactic: obtain ⟨g, hg⟩ := IsCyclic.exists_generator (α := G)
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
g : G
hg : ∀ (x : G), x ∈ zpowers g
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
g : G
hg : ∀ (x : G), x ∈ zpowers g
h : g ^ a.val = g ^ b.val
⊢ a = b
tactic: specialize h g
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
g : G
hg : ∀ (x : G), x ∈ zpowers g
h : g ^ a.val = g ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : g ^ a.val = g ^ b.val
⊢ a = b
tactic: subst hGcard
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : g ^ a.val = g ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : ↑a.val = ↑b.val
⊢ a = b
tactic: rw [pow_eq_pow_iff_modEq, orderOf_eq_card_of_forall_mem_zpowers hg,
    ← ZMod.natCast_eq_natCast_iff] at h
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : ↑a.val = ↑b.val
⊢ a = b
state_after: no goals
tactic: simpa [ZMod.natCast_val, ZMod.cast_id'] using h
Theorem: Complex.sin_eq_neg_one_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

Proof steps:
state_before: x : ℂ
⊢ sin x = -1 ↔ ∃ k, -(↑π / 2) + ↑k * (2 * ↑π) = x
state_after: x : ℂ
⊢ (∃ k, ↑k * (2 * ↑π) = x + ↑π / 2) ↔ ∃ k, -(↑π / 2) + ↑k * (2 * ↑π) = x
tactic: rw [← neg_eq_iff_eq_neg, ← cos_add_pi_div_two, cos_eq_one_iff]
state_before: x : ℂ
⊢ (∃ k, ↑k * (2 * ↑π) = x + ↑π / 2) ↔ ∃ k, -(↑π / 2) + ↑k * (2 * ↑π) = x
state_after: no goals
tactic: simp only [← sub_eq_neg_add, sub_eq_iff_eq_add]