ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ContinuousLinearMap.smulRight_comp
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝²¹ : Semiring R₁
inst✝²⁰ : Semiring R₂
inst✝¹⁹ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁸ : TopologicalSpace M₁
inst✝¹⁷ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁶ : TopologicalSpace M'₁
inst✝¹⁵ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁴ : TopologicalSpace M₂
inst✝¹³ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹² : TopologicalSpace M₃
inst✝¹¹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝¹⁰ : TopologicalSpace M₄
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R₁ M₁
inst✝⁷ : Module R₁ M'₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝³ : Module R₁ M₂
inst✝² : TopologicalSpace R₁
inst✝¹ : ContinuousSMul R₁ M₂
inst✝ : ContinuousMul R₁
x : M₂
c : R₁
⊢ (smulRight 1 x).comp (smulRight 1 c) = smulRight 1 (c • x)
state_after: case h
R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝²¹ : Semiring R₁
inst✝²⁰ : Semiring R₂
inst✝¹⁹ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁸ : TopologicalSpace M₁
inst✝¹⁷ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁶ : TopologicalSpace M'₁
inst✝¹⁵ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁴ : TopologicalSpace M₂
inst✝¹³ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹² : TopologicalSpace M₃
inst✝¹¹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝¹⁰ : TopologicalSpace M₄
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R₁ M₁
inst✝⁷ : Module R₁ M'₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝³ : Module R₁ M₂
inst✝² : TopologicalSpace R₁
inst✝¹ : ContinuousSMul R₁ M₂
inst✝ : ContinuousMul R₁
x : M₂
c : R₁
⊢ ((smulRight 1 x).comp (smulRight 1 c)) 1 = (smulRight 1 (c • x)) 1
tactic: ext
state_before: case h
R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝²¹ : Semiring R₁
inst✝²⁰ : Semiring R₂
inst✝¹⁹ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁸ : TopologicalSpace M₁
inst✝¹⁷ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁶ : TopologicalSpace M'₁
inst✝¹⁵ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁴ : TopologicalSpace M₂
inst✝¹³ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹² : TopologicalSpace M₃
inst✝¹¹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝¹⁰ : TopologicalSpace M₄
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R₁ M₁
inst✝⁷ : Module R₁ M'₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝³ : Module R₁ M₂
inst✝² : TopologicalSpace R₁
inst✝¹ : ContinuousSMul R₁ M₂
inst✝ : ContinuousMul R₁
x : M₂
c : R₁
⊢ ((smulRight 1 x).comp (smulRight 1 c)) 1 = (smulRight 1 (c • x)) 1
state_after: no goals
tactic: simp [mul_smul]
Theorem: Function.Injective.wbtw_map_iff
File: Mathlib/Analysis/Convex/Between.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ⇑f
⊢ Wbtw R (f x) (f y) (f z) ↔ Wbtw R x y z
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ⇑f
h : Wbtw R (f x) (f y) (f z)
⊢ Wbtw R x y z
tactic: refine ⟨fun h => ?_, fun h => h.map _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ⇑f
h : Wbtw R (f x) (f y) (f z)
⊢ Wbtw R x y z
state_after: no goals
tactic: rwa [Wbtw, ← affineSegment_image, hf.mem_set_image] at h
Theorem: Ideal.coeff_zero_mem_comap_of_root_mem_of_eval_mem
File: Mathlib/RingTheory/Ideal/Over.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p ∈ I
⊢ p.coeff 0 ∈ comap f I
state_after: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ p.coeff 0 ∈ comap f I
tactic: rw [← p.divX_mul_X_add, eval₂_add, eval₂_C, eval₂_mul, eval₂_X] at hp
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ p.coeff 0 ∈ comap f I
state_after: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ eval₂ f r p.divX * r ∈ I
tactic: refine mem_comap.mpr ((I.add_mem_iff_right ?_).mp hp)
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ eval₂ f r p.divX * r ∈ I
state_after: no goals
tactic: exact I.mul_mem_left _ hr
Theorem: Num.add_one
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
p : PosNum
⊢ pos p + 1 = (pos p).succ
state_after: no goals
tactic: cases p <;> rfl
Theorem: Set.Finite.exists_lt_map_eq_of_forall_mem
File: Mathlib/Data/Set/Finite.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : ∀ (a : α), f a ∈ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b
tactic: rw [← mapsTo_univ_iff] at hf
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b
state_after: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
a b : α
h : a < b ∧ f a = f b
⊢ ∃ a b, a < b ∧ f a = f b
tactic: obtain ⟨a, -, b, -, h⟩ := infinite_univ.exists_lt_map_eq_of_mapsTo hf ht
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
a b : α
h : a < b ∧ f a = f b
⊢ ∃ a b, a < b ∧ f a = f b
state_after: no goals
tactic: exact ⟨a, b, h⟩
Theorem: NumberField.mixedEmbedding.mem_rat_span_latticeBasis
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ (mixedEmbedding K) x ∈ Submodule.span ℚ (Set.range ⇑(latticeBasis K))
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ ∑ x_1 : ChooseBasisIndex ℤ (𝓞 K), (mixedEmbedding K) (((integralBasis K).repr x) x_1 • (integralBasis K) x_1) ∈
    Submodule.span ℚ (Set.range ⇑(latticeBasis K))
tactic: rw [← Basis.sum_repr (integralBasis K) x, map_sum]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ ∑ x_1 : ChooseBasisIndex ℤ (𝓞 K), (mixedEmbedding K) (((integralBasis K).repr x) x_1 • (integralBasis K) x_1) ∈
    Submodule.span ℚ (Set.range ⇑(latticeBasis K))
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ ∑ x_1 : ChooseBasisIndex ℤ (𝓞 K), ((integralBasis K).repr x) x_1 • (mixedEmbedding K) ((integralBasis K) x_1) ∈
    Submodule.span ℚ (Set.range ⇑(latticeBasis K))
tactic: simp_rw [map_rat_smul]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ ∑ x_1 : ChooseBasisIndex ℤ (𝓞 K), ((integralBasis K).repr x) x_1 • (mixedEmbedding K) ((integralBasis K) x_1) ∈
    Submodule.span ℚ (Set.range ⇑(latticeBasis K))
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
i : ChooseBasisIndex ℤ (𝓞 K)
x✝ : i ∈ univ
⊢ (mixedEmbedding K) ((integralBasis K) i) ∈ Set.range ⇑(latticeBasis K)
tactic: refine Submodule.sum_smul_mem _ _ (fun i _ ↦ Submodule.subset_span ?_)
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
i : ChooseBasisIndex ℤ (𝓞 K)
x✝ : i ∈ univ
⊢ (mixedEmbedding K) ((integralBasis K) i) ∈ Set.range ⇑(latticeBasis K)
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
i : ChooseBasisIndex ℤ (𝓞 K)
x✝ : i ∈ univ
⊢ (latticeBasis K) i ∈ Set.range ⇑(latticeBasis K)
tactic: rw [← latticeBasis_apply]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
i : ChooseBasisIndex ℤ (𝓞 K)
x✝ : i ∈ univ
⊢ (latticeBasis K) i ∈ Set.range ⇑(latticeBasis K)
state_after: no goals
tactic: exact Set.mem_range_self i
Theorem: CategoryTheory.Limits.isLimitConeRightOpOfCocone_lift
File: Mathlib/CategoryTheory/Limits/Opposites.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
F : Jᵒᵖ ⥤ C
c : Cocone F
hc : IsColimit c
s : Cone F.rightOp
j : J
⊢ ((fun s => (hc.desc (coconeOfConeRightOp s)).op) s ≫ (coneRightOpOfCocone c).π.app j).unop = (s.π.app j).unop
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
F : Jᵒᵖ ⥤ C
c : Cocone F
hc : IsColimit c
s : Cone F.rightOp
m : s.pt ⟶ (coneRightOpOfCocone c).pt
w : ∀ (j : J), m ≫ (coneRightOpOfCocone c).π.app j = s.π.app j
⊢ m = (fun s => (hc.desc (coconeOfConeRightOp s)).op) s
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
F : Jᵒᵖ ⥤ C
c : Cocone F
hc : IsColimit c
s : Cone F.rightOp
m : s.pt ⟶ (coneRightOpOfCocone c).pt
w : ∀ (j : J), m ≫ (coneRightOpOfCocone c).π.app j = s.π.app j
j : Jᵒᵖ
⊢ (c.ι.app j ≫ m.unop).op = (c.ι.app j ≫ ((fun s => (hc.desc (coconeOfConeRightOp s)).op) s).unop).op
tactic: refine Quiver.Hom.unop_inj (hc.hom_ext fun j => Quiver.Hom.op_inj ?_)
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
F : Jᵒᵖ ⥤ C
c : Cocone F
hc : IsColimit c
s : Cone F.rightOp
m : s.pt ⟶ (coneRightOpOfCocone c).pt
w : ∀ (j : J), m ≫ (coneRightOpOfCocone c).π.app j = s.π.app j
j : Jᵒᵖ
⊢ (c.ι.app j ≫ m.unop).op = (c.ι.app j ≫ ((fun s => (hc.desc (coconeOfConeRightOp s)).op) s).unop).op
state_after: no goals
tactic: simpa only [Quiver.Hom.unop_op, IsColimit.fac] using w (unop j)
Theorem: Cardinal.mk_eq_two_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β : Type u
c : Cardinal.{?u.233813}
⊢ #α = 2 ↔ ∃ x y, x ≠ y ∧ {x, y} = univ
state_after: α β : Type u
c : Cardinal.{?u.233813}
⊢ (∃ t, ↑t = univ ∧ ∃ x y, x ≠ y ∧ t = {x, y}) ↔ ∃ x y, x ≠ y ∧ {x, y} = univ
tactic: simp only [← @Nat.cast_two Cardinal, mk_eq_nat_iff_finset, Finset.card_eq_two]
state_before: α β : Type u
c : Cardinal.{?u.233813}
⊢ (∃ t, ↑t = univ ∧ ∃ x y, x ≠ y ∧ t = {x, y}) ↔ ∃ x y, x ≠ y ∧ {x, y} = univ
state_after: case mp
α β : Type u
c : Cardinal.{?u.233813}
⊢ (∃ t, ↑t = univ ∧ ∃ x y, x ≠ y ∧ t = {x, y}) → ∃ x y, x ≠ y ∧ {x, y} = univ

case mpr
α β : Type u
c : Cardinal.{?u.233813}
⊢ (∃ x y, x ≠ y ∧ {x, y} = univ) → ∃ t, ↑t = univ ∧ ∃ x y, x ≠ y ∧ t = {x, y}
tactic: constructor
Theorem: mul_inv_lt_iff_le_mul'
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : LT α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
⊢ a * b⁻¹ < c ↔ a < b * c
state_after: no goals
tactic: rw [← inv_mul_lt_iff_lt_mul, mul_comm]
Theorem: padicValInt.one
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p : ℕ
⊢ padicValInt p 1 = 0
state_after: no goals
tactic: simp [padicValInt]
Theorem: smul_lt_smul_of_neg_left
File: Mathlib/Algebra/Order/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ a • b₂ < a • b₁
state_after: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ -a • b₁ < -a • b₂
tactic: rw [← neg_neg a, neg_smul, neg_smul (-a), neg_lt_neg_iff]
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ -a • b₁ < -a • b₂
state_after: no goals
tactic: exact smul_lt_smul_of_pos_left hb (neg_pos_of_neg ha)
Theorem: CategoryTheory.ShortComplex.abLeftHomologyData_K
File: Mathlib/Algebra/Homology/ShortComplex/Ab.lean

Proof steps:
state_before: S : ShortComplex Ab
⊢ (AddMonoidHom.ker S.g).subtype ≫ S.g = 0
state_after: case w.mk
S : ShortComplex Ab
val✝ : ↑S.X₂
hx : val✝ ∈ AddMonoidHom.ker S.g
⊢ ((AddMonoidHom.ker S.g).subtype ≫ S.g) ⟨val✝, hx⟩ = 0 ⟨val✝, hx⟩
tactic: ext ⟨_, hx⟩
state_before: case w.mk
S : ShortComplex Ab
val✝ : ↑S.X₂
hx : val✝ ∈ AddMonoidHom.ker S.g
⊢ ((AddMonoidHom.ker S.g).subtype ≫ S.g) ⟨val✝, hx⟩ = 0 ⟨val✝, hx⟩
state_after: no goals
tactic: exact hx
state_before: S : ShortComplex Ab
⊢ (AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯) ≫ QuotientAddGroup.mk' S.abToCycles.range = 0
state_after: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯) ≫ QuotientAddGroup.mk' S.abToCycles.range) x = 0 x
tactic: ext (x : S.X₁)
state_before: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯) ≫ QuotientAddGroup.mk' S.abToCycles.range) x = 0 x
state_after: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯)) x ∈ S.abToCycles.range
tactic: erw [QuotientAddGroup.eq_zero_iff]
state_before: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯)) x ∈ S.abToCycles.range
state_after: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ∃ x_1, S.abToCycles x_1 = ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯)) x
tactic: rw [AddMonoidHom.mem_range]
state_before: case w
S : ShortComplex Ab
x : ↑S.X₁
⊢ ∃ x_1, S.abToCycles x_1 = ((AddCommGrp.kernelIsLimit S.g).lift (Limits.KernelFork.ofι S.f ⋯)) x
state_after: no goals
tactic: apply exists_apply_eq_apply
Theorem: Nat.pred_le_iff
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m ≤ n.succ → m.pred ≤ n
state_after: case zero
a b c d n k : ℕ
p q : ℕ → Prop
⊢ 0 ≤ n.succ → pred 0 ≤ n

case succ
a b c d n k : ℕ
p q : ℕ → Prop
n✝ : ℕ
⊢ n✝ + 1 ≤ n.succ → (n✝ + 1).pred ≤ n
tactic: cases m
state_before: case zero
a b c d n k : ℕ
p q : ℕ → Prop
⊢ 0 ≤ n.succ → pred 0 ≤ n

case succ
a b c d n k : ℕ
p q : ℕ → Prop
n✝ : ℕ
⊢ n✝ + 1 ≤ n.succ → (n✝ + 1).pred ≤ n
state_after: no goals
tactic: exacts [fun _ ↦ zero_le n, le_of_succ_le_succ]
Theorem: List.length_replaceF
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α✝ : Type u_1
f : α✝ → Option α✝
l : List α✝
⊢ (replaceF f l).length = l.length
state_after: case cons
α✝ : Type u_1
f : α✝ → Option α✝
head✝ : α✝
tail✝ : List α✝
tail_ih✝ : (replaceF f tail✝).length = tail✝.length
⊢ (match f head✝ with
      | none => head✝ :: replaceF f tail✝
      | some a => a :: tail✝).length =
    tail✝.length + 1
tactic: induction l <;> simp [replaceF]
state_before: case cons
α✝ : Type u_1
f : α✝ → Option α✝
head✝ : α✝
tail✝ : List α✝
tail_ih✝ : (replaceF f tail✝).length = tail✝.length
⊢ (match f head✝ with
      | none => head✝ :: replaceF f tail✝
      | some a => a :: tail✝).length =
    tail✝.length + 1
state_after: no goals
tactic: split <;> simp [*]
Theorem: HolorIndex.take_take
File: Mathlib/Data/Holor.lean

Proof steps:
state_before: ds₁ ds₂ ds₃ is : List ℕ
h : Forall₂ (fun x x_1 => x < x_1) is (ds₁ ++ ds₂ ++ ds₃)
⊢ ↑(assocRight ⟨is, h⟩).take = ↑(take ⟨is, h⟩).take
state_after: no goals
tactic: simp [assocRight, take, cast_type, List.take_take, Nat.le_add_right, min_eq_left]
Theorem: Complex.ext_iff
File: Mathlib/Data/Complex/Basic.lean

Proof steps:
state_before: z w : ℂ
H : z = w
⊢ z.re = w.re ∧ z.im = w.im
state_after: no goals
tactic: simp [H]
Theorem: iteratedDerivWithin_const_smul
File: Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f g : 𝕜 → F
c : R
hf : ContDiffOn 𝕜 (↑n) f s
⊢ iteratedDerivWithin n (c • f) s x = c • iteratedDerivWithin n f s x
state_after: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f g : 𝕜 → F
c : R
hf : ContDiffOn 𝕜 (↑n) f s
⊢ ((iteratedFDerivWithin 𝕜 n (c • f) s x) fun x => 1) = c • (iteratedFDerivWithin 𝕜 n f s x) fun x => 1
tactic: simp_rw [iteratedDerivWithin]
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f g : 𝕜 → F
c : R
hf : ContDiffOn 𝕜 (↑n) f s
⊢ ((iteratedFDerivWithin 𝕜 n (c • f) s x) fun x => 1) = c • (iteratedFDerivWithin 𝕜 n f s x) fun x => 1
state_after: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f g : 𝕜 → F
c : R
hf : ContDiffOn 𝕜 (↑n) f s
⊢ ((c • iteratedFDerivWithin 𝕜 n f s x) fun x => 1) = c • (iteratedFDerivWithin 𝕜 n f s x) fun x => 1
tactic: rw [iteratedFDerivWithin_const_smul_apply hf h hx]
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f g : 𝕜 → F
c : R
hf : ContDiffOn 𝕜 (↑n) f s
⊢ ((c • iteratedFDerivWithin 𝕜 n f s x) fun x => 1) = c • (iteratedFDerivWithin 𝕜 n f s x) fun x => 1
state_after: no goals
tactic: simp only [ContinuousMultilinearMap.smul_apply]
Theorem: ENorm.map_sub_rev
File: Mathlib/Analysis/NormedSpace/ENorm.lean

Proof steps:
state_before: 𝕜 : Type u_1
V : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e : ENorm 𝕜 V
x y : V
⊢ ↑e (x - y) = ↑e (y - x)
state_after: no goals
tactic: rw [← neg_sub, e.map_neg]
Theorem: Fin.heq_ext_iff
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m k l : ℕ
h : k = l
i : Fin k
j : Fin l
⊢ HEq i j ↔ ↑i = ↑j
state_after: n m k : ℕ
i j : Fin k
⊢ HEq i j ↔ ↑i = ↑j
tactic: subst h
state_before: n m k : ℕ
i j : Fin k
⊢ HEq i j ↔ ↑i = ↑j
state_after: no goals
tactic: simp [val_eq_val]
Theorem: HasFPowerSeriesAt.hasStrictFDerivAt
File: Mathlib/Analysis/Calculus/FDeriv/Analytic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ HasStrictFDerivAt f ((continuousMultilinearCurryFin1 𝕜 E F) (p 1)) x
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ (fun y => ‖y - (x, x)‖ * ‖y.1 - y.2‖) =o[nhds (x, x)] fun x => ‖x.1 - x.2‖
tactic: refine h.isBigO_image_sub_norm_mul_norm_sub.trans_isLittleO (IsLittleO.of_norm_right ?_)
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ (fun y => ‖y - (x, x)‖ * ‖y.1 - y.2‖) =o[nhds (x, x)] fun x => ‖x.1 - x.2‖
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ Tendsto (fun y => ‖y - (x, x)‖) (nhds (x, x)) (nhds 0)
tactic: refine isLittleO_iff_exists_eq_mul.2 ⟨fun y => ‖y - (x, x)‖, ?_, EventuallyEq.rfl⟩
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ Tendsto (fun y => ‖y - (x, x)‖) (nhds (x, x)) (nhds 0)
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ ‖id (x, x) - (x, x)‖ = 0
tactic: refine (continuous_id.sub continuous_const).norm.tendsto' _ _ ?_
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
f : E → F
x : E
s : Set E
h : HasFPowerSeriesAt f p x
⊢ ‖id (x, x) - (x, x)‖ = 0
state_after: no goals
tactic: rw [_root_.id, sub_self, norm_zero]
Theorem: bernsteinPolynomial.flip'
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ν ≤ n
⊢ bernsteinPolynomial R n ν = (bernsteinPolynomial R n (n - ν)).comp (1 - X)
state_after: no goals
tactic: simp [← flip _ _ _ h, Polynomial.comp_assoc]
Theorem: Submonoid.LocalizationMap.mk'_mul
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
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap (x₁ * x₂) =
    f.toMap ↑(y₁ * y₂) *
      (f.toMap x₁ * ↑((IsUnit.liftRight (f.toMap.restrict S) ⋯) y₁)⁻¹ *
        (f.toMap x₂ * ↑((IsUnit.liftRight (f.toMap.restrict S) ⋯) y₂)⁻¹))
state_after: 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
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap x₁ * f.toMap x₂ * f.toMap ↑y₂ * f.toMap ↑y₁ = f.toMap ↑y₁ * f.toMap ↑y₂ * f.toMap x₁ * f.toMap x₂
tactic: rw [← mul_assoc, ← mul_assoc, mul_inv_right f.map_units, mul_assoc, mul_assoc,
          mul_comm _ (f.toMap x₂), ← mul_assoc, ← mul_assoc, mul_inv_right f.map_units,
          Submonoid.coe_mul, f.toMap.map_mul, f.toMap.map_mul]
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
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap x₁ * f.toMap x₂ * f.toMap ↑y₂ * f.toMap ↑y₁ = f.toMap ↑y₁ * f.toMap ↑y₂ * f.toMap x₁ * f.toMap x₂
state_after: no goals
tactic: ac_rfl