ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: FractionalIdeal.mul_self_le_self
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : FractionalIdeal S P
hI : I ≤ 1
⊢ I * I ≤ I
state_after: case h.e'_4
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : FractionalIdeal S P
hI : I ≤ 1
⊢ I = (fun x => I * x) 1
tactic: convert mul_left_mono I hI
state_before: case h.e'_4
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : FractionalIdeal S P
hI : I ≤ 1
⊢ I = (fun x => I * x) 1
state_after: no goals
tactic: exact (mul_one I).symm
Theorem: NormedSpace.eq_zero_iff_forall_dual_eq_zero
File: Mathlib/Analysis/Normed/Module/Dual.lean

Proof steps:
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
hx : x = 0
⊢ ∀ (g : Dual 𝕜 E), g x = 0
state_after: no goals
tactic: simp [hx]
Theorem: MulChar.orderOf_dvd_card_sub_one
File: Mathlib/NumberTheory/MulChar/Lemmas.lean

Proof steps:
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
R : Type u_2
inst✝ : CommRing R
χ : MulChar F R
⊢ orderOf χ ∣ Fintype.card F - 1
state_after: no goals
tactic: classical
  rw [← Fintype.card_units]
  exact orderOf_dvd_of_pow_eq_one χ.pow_card_eq_one
Theorem: Metric.exists_continuous_nnreal_forall_closedBall_subset
File: Mathlib/Topology/MetricSpace/PartitionOfUnity.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
⊢ ∃ δ, (∀ (x : X), 0 < δ x) ∧ ∀ (i : ι), ∀ x ∈ K i, closedBall x ↑(δ x) ⊆ U i
state_after: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
⊢ ∃ δ, (∀ (x : X), 0 < δ x) ∧ ∀ (i : ι), ∀ x ∈ K i, closedBall x ↑(δ x) ⊆ U i
tactic: rcases EMetric.exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
state_before: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
⊢ ∃ δ, (∀ (x : X), 0 < δ x) ∧ ∀ (i : ι), ∀ x ∈ K i, closedBall x ↑(δ x) ⊆ U i
state_after: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
i : ι
x : X
hx : x ∈ K i
⊢ closedBall x ↑(δ x) ⊆ U i
tactic: refine ⟨δ, hδ0, fun i x hx => ?_⟩
state_before: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
i : ι
x : X
hx : x ∈ K i
⊢ closedBall x ↑(δ x) ⊆ U i
state_after: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
i : ι
x : X
hx : x ∈ K i
⊢ EMetric.closedBall x ↑(δ x) ⊆ U i
tactic: rw [← emetric_closedBall_nnreal]
state_before: case intro.intro
ι : Type u_1
X : Type u_2
inst✝ : MetricSpace X
K U : ι → Set X
hK : ∀ (i : ι), IsClosed (K i)
hU : ∀ (i : ι), IsOpen (U i)
hKU : ∀ (i : ι), K i ⊆ U i
hfin : LocallyFinite K
δ : C(X, ℝ≥0)
hδ0 : ∀ (x : X), 0 < δ x
hδ : ∀ (i : ι), ∀ x ∈ K i, EMetric.closedBall x ↑(δ x) ⊆ U i
i : ι
x : X
hx : x ∈ K i
⊢ EMetric.closedBall x ↑(δ x) ⊆ U i
state_after: no goals
tactic: exact hδ i x hx
Theorem: Int.tendsto_zmultiplesHom_cofinite
File: Mathlib/Topology/Instances/Real.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ Tendsto (⇑((zmultiplesHom ℝ) a)) Filter.cofinite (cocompact ℝ)
state_after: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥((zmultiplesHom ℝ) a).range
tactic: apply (zmultiplesHom ℝ a).tendsto_coe_cofinite_of_discrete <| smul_left_injective ℤ ha
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥((zmultiplesHom ℝ) a).range
state_after: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples a)
tactic: rw [AddSubgroup.range_zmultiplesHom]
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples a)
state_after: no goals
tactic: infer_instance
Theorem: Submonoid.noncommProd_mem
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
⊢ t.noncommProd f comm ∈ S
state_after: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
⊢ ∀ x ∈ Multiset.map f t.val, x ∈ S
tactic: apply multiset_noncommProd_mem
state_before: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
⊢ ∀ x ∈ Multiset.map f t.val, x ∈ S
state_after: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
y : M
⊢ y ∈ Multiset.map f t.val → y ∈ S
tactic: intro y
state_before: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
y : M
⊢ y ∈ Multiset.map f t.val → y ∈ S
state_after: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
y : M
⊢ (∃ a ∈ t.val, f a = y) → y ∈ S
tactic: rw [Multiset.mem_map]
state_before: case h
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
y : M
⊢ (∃ a ∈ t.val, f a = y) → y ∈ S
state_after: case h.intro.intro
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
x : ι
hx : x ∈ t.val
⊢ f x ∈ S
tactic: rintro ⟨x, ⟨hx, rfl⟩⟩
state_before: case h.intro.intro
M : Type u_1
A : Type u_2
B : Type u_3
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S✝ : B
s S : Submonoid M
ι : Type u_4
t : Finset ι
f : ι → M
comm : (↑t).Pairwise fun a b => Commute (f a) (f b)
h : ∀ c ∈ t, f c ∈ S
x : ι
hx : x ∈ t.val
⊢ f x ∈ S
state_after: no goals
tactic: exact h x hx
Theorem: Multiset.aemeasurable_sum'
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

Proof steps:
state_before: α✝ : Type u_1
M : Type u_2
ι : Type u_3
α : Type u_4
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : ι → α → M
l : Multiset (α → M)
hl : ∀ f ∈ l, AEMeasurable f μ
⊢ AEMeasurable l.prod μ
state_after: case mk
α✝ : Type u_1
M : Type u_2
ι : Type u_3
α : Type u_4
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : ι → α → M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ f ∈ Quot.mk Setoid.r l, AEMeasurable f μ
⊢ AEMeasurable (prod (Quot.mk Setoid.r l)) μ
tactic: rcases l with ⟨l⟩
state_before: case mk
α✝ : Type u_1
M : Type u_2
ι : Type u_3
α : Type u_4
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : ι → α → M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ f ∈ Quot.mk Setoid.r l, AEMeasurable f μ
⊢ AEMeasurable (prod (Quot.mk Setoid.r l)) μ
state_after: no goals
tactic: simpa using l.aemeasurable_prod' (by simpa using hl)
Theorem: Sigma.uncurry_mulSingle_mulSingle
File: Mathlib/Algebra/Group/Pi/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α✝ : Type u_2
I : Type u
f : I → Type v
x✝ y : (i : I) → f i
i j : I
α : Type u_3
β : α → Type u_4
γ : (a : α) → β a → Type u_5
inst✝² : DecidableEq α
inst✝¹ : (a : α) → DecidableEq (β a)
inst✝ : (a : α) → (b : β a) → One (γ a b)
a : α
b : β a
x : γ a b
⊢ uncurry (Pi.mulSingle a (Pi.mulSingle b x)) = Pi.mulSingle ⟨a, b⟩ x
state_after: no goals
tactic: rw [← curry_mulSingle ⟨a, b⟩, uncurry_curry]
Theorem: Subgroup.IsComplement.equiv_snd_eq_self_of_mem_of_one_mem
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g : G
h1 : 1 ∈ S
hg : g ∈ T
⊢ (hST.equiv g).2 = ⟨g, hg⟩
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g : G
h1 : 1 ∈ S
hg : g ∈ T
this : hST.equiv.symm (⟨1, h1⟩, ⟨g, hg⟩) = g
⊢ (hST.equiv g).2 = ⟨g, hg⟩
tactic: have : hST.equiv.symm (⟨1, h1⟩, ⟨g, hg⟩) = g := by
    rw [equiv, Equiv.ofBijective]; simp
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g : G
h1 : 1 ∈ S
hg : g ∈ T
this : hST.equiv.symm (⟨1, h1⟩, ⟨g, hg⟩) = g
⊢ (hST.equiv g).2 = ⟨g, hg⟩
state_after: no goals
tactic: conv_lhs => rw [← this, Equiv.apply_symm_apply]
Theorem: Con.lift_apply_mk'
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y✝ : M
f✝ : M →* P
f : c.Quotient →* P
x y : M
h : c x y
⊢ f ↑x = f ↑y
state_after: no goals
tactic: rw [c.eq.2 h]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f : c.Quotient →* P
⊢ c.lift (f.comp c.mk') ⋯ = f
state_after: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ : M →* P
f : c.Quotient →* P
x : c.Quotient
⊢ (c.lift (f.comp c.mk') ⋯) x = f x
tactic: ext x
state_before: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ : M →* P
f : c.Quotient →* P
x : c.Quotient
⊢ (c.lift (f.comp c.mk') ⋯) x = f x
state_after: case h.mk
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ : M →* P
f : c.Quotient →* P
x : c.Quotient
a✝ : M
⊢ (c.lift (f.comp c.mk') ⋯) (Quot.mk r a✝) = f (Quot.mk r a✝)
tactic: rcases x with ⟨⟩
state_before: case h.mk
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f✝ : M →* P
f : c.Quotient →* P
x : c.Quotient
a✝ : M
⊢ (c.lift (f.comp c.mk') ⋯) (Quot.mk r a✝) = f (Quot.mk r a✝)
state_after: no goals
tactic: rfl
Theorem: AddSubsemigroup.closure_singleton_le_iff_mem
File: Mathlib/Algebra/Group/Subsemigroup/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : Mul M
s : Set M
inst✝ : Add A
t : Set A
S : Subsemigroup M
m : M
p : Subsemigroup M
⊢ closure {m} ≤ p ↔ m ∈ p
state_after: no goals
tactic: rw [closure_le, singleton_subset_iff, SetLike.mem_coe]
Theorem: Ordnode.dual_node3R
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
⊢ (l.node3R x m y r).dual = r.dual.node3L y m.dual x l.dual
state_after: no goals
tactic: simp [node3L, node3R, dual_node', add_comm]
Theorem: TietzeExtension.of_homeo
File: Mathlib/Topology/TietzeExtension.lean

Proof steps:
state_before: X₁ : Type u₁
inst✝⁷ : TopologicalSpace X₁
X : Type u
inst✝⁶ : TopologicalSpace X
inst✝⁵ : NormalSpace X
s : Set X
hs : IsClosed s
e✝ : X₁ → X
he : ClosedEmbedding e✝
Y✝ : Type v
inst✝⁴ : TopologicalSpace Y✝
inst✝³ : TietzeExtension Y✝
Y : Type v
Z : Type w
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TietzeExtension Z
e : Y ≃ₜ Z
⊢ e.symm.toContinuousMap.comp e.toContinuousMap = ContinuousMap.id Y
state_after: no goals
tactic: simp
Theorem: InnerProductGeometry.angle_comm
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ angle x y = angle y x
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ arccos (⟪x, y⟫_ℝ / (‖x‖ * ‖y‖)) = arccos (⟪y, x⟫_ℝ / (‖y‖ * ‖x‖))
tactic: unfold angle
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ arccos (⟪x, y⟫_ℝ / (‖x‖ * ‖y‖)) = arccos (⟪y, x⟫_ℝ / (‖y‖ * ‖x‖))
state_after: no goals
tactic: rw [real_inner_comm, mul_comm]
Theorem: fderivWithin_id
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 _root_.id s x = ContinuousLinearMap.id 𝕜 E
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 _root_.id x = ContinuousLinearMap.id 𝕜 E
tactic: rw [DifferentiableAt.fderivWithin differentiableAt_id hxs]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 _root_.id x = ContinuousLinearMap.id 𝕜 E
state_after: no goals
tactic: exact fderiv_id
Theorem: Complex.equivRealProdLm_apply
File: Mathlib/Data/Complex/Module.lean

Proof steps:
state_before: r : ℝ
c : ℂ
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (r • c) =
    (RingHom.id ℝ) r • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun c
state_after: no goals
tactic: simp [equivRealProdAddHom, Prod.smul_def, smul_eq_mul]
Theorem: Complex.tan_int_mul_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

Proof steps:
state_before: n : ℤ
⊢ ∃ k, ↑k * ↑π / 2 = ↑n * ↑π / 2
state_after: no goals
tactic: use n
Theorem: le_iff_posPart_negPart
File: Mathlib/Algebra/Order/Group/PosPart.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
⊢ a ≤ b ↔ a⁺ᵐ ≤ b⁺ᵐ ∧ b⁻ᵐ ≤ a⁻ᵐ
state_after: α : Type u_1
β : Type u_2
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a⁺ᵐ ≤ b⁺ᵐ ∧ b⁻ᵐ ≤ a⁻ᵐ
⊢ a ≤ b
tactic: refine ⟨fun h ↦ ⟨oneLePart_mono h, leOnePart_anti h⟩, fun h ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a⁺ᵐ ≤ b⁺ᵐ ∧ b⁻ᵐ ≤ a⁻ᵐ
⊢ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a⁺ᵐ ≤ b⁺ᵐ ∧ b⁻ᵐ ≤ a⁻ᵐ
⊢ a⁺ᵐ / a⁻ᵐ ≤ b⁺ᵐ / b⁻ᵐ
tactic: rw [← oneLePart_div_leOnePart a, ← oneLePart_div_leOnePart b]
state_before: α : Type u_1
β : Type u_2
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a⁺ᵐ ≤ b⁺ᵐ ∧ b⁻ᵐ ≤ a⁻ᵐ
⊢ a⁺ᵐ / a⁻ᵐ ≤ b⁺ᵐ / b⁻ᵐ
state_after: no goals
tactic: exact div_le_div'' h.1 h.2
Theorem: Set.preimage_add_const_Ioc
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x + a) ⁻¹' Ioc b c = Ioc (b - a) (c - a)
state_after: no goals
tactic: simp [← Ioi_inter_Iic]
Theorem: _private.Mathlib.Computability.Ackermann.0.ack_strict_mono_left'
File: Mathlib/Computability/Ackermann.lean

Proof steps:
state_before: m : ℕ
_h : 0 < m + 1
⊢ ack 0 0 < ack (m + 1) 0
state_after: no goals
tactic: simpa using one_lt_ack_succ_right m 0
state_before: m n : ℕ
h : 0 < m + 1
⊢ ack 0 (n + 1) < ack (m + 1) (n + 1)
state_after: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 < ack m (ack (m + 1) n)
tactic: rw [ack_zero, ack_succ_succ]
state_before: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 < ack m (ack (m + 1) n)
state_after: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 ≤ m + (m + 1 + n + 1)
tactic: apply lt_of_le_of_lt (le_trans _ <| add_le_add_left (add_add_one_le_ack _ _) m) (add_lt_ack _ _)
state_before: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 ≤ m + (m + 1 + n + 1)
state_after: no goals
tactic: omega
state_before: m₁ m₂ : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack (m₁ + 1) 0 < ack (m₂ + 1) 0
state_after: no goals
tactic: simpa using ack_strict_mono_left' 1 ((add_lt_add_iff_right 1).1 h)
state_before: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack (m₁ + 1) (n + 1) < ack (m₂ + 1) (n + 1)
state_after: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack m₁ (ack (m₁ + 1) n) < ack m₂ (ack (m₂ + 1) n)
tactic: rw [ack_succ_succ, ack_succ_succ]
state_before: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack m₁ (ack (m₁ + 1) n) < ack m₂ (ack (m₂ + 1) n)
state_after: no goals
tactic: exact
      (ack_strict_mono_left' _ <| (add_lt_add_iff_right 1).1 h).trans
        (ack_strictMono_right _ <| ack_strict_mono_left' n h)
Theorem: Turing.ListBlank.append_mk
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ : List Γ
⊢ append l₁ (mk l₂) = mk (l₁ ++ l₂)
state_after: no goals
tactic: induction l₁ <;>
    simp only [*, ListBlank.append, List.nil_append, List.cons_append, ListBlank.cons_mk]
Theorem: Nat.Prime.multiplicity_factorial_le_div_pred
File: Mathlib/Data/Nat/Multiplicity.lean

Proof steps:
state_before: p : ℕ
hp : Prime p
n : ℕ
⊢ multiplicity p n ! ≤ ↑(n / (p - 1))
state_after: p : ℕ
hp : Prime p
n : ℕ
⊢ ∑ i ∈ Ico 1 (log p n).succ, n / p ^ i ≤ n / (p - 1)
tactic: rw [hp.multiplicity_factorial (lt_succ_self _), PartENat.coe_le_coe]
state_before: p : ℕ
hp : Prime p
n : ℕ
⊢ ∑ i ∈ Ico 1 (log p n).succ, n / p ^ i ≤ n / (p - 1)
state_after: no goals
tactic: exact Nat.geom_sum_Ico_le hp.two_le _ _
Theorem: PrimeMultiset.coePNat_nat
File: Mathlib/Data/PNat/Factors.lean

Proof steps:
state_before: v : PrimeMultiset
⊢ Multiset.map PNat.val v.toPNatMultiset = v.toNatMultiset
state_after: v : PrimeMultiset
⊢ Multiset.map Subtype.val (Multiset.map Coe.coe v) = Multiset.map Subtype.val v
tactic: change (v.map (Coe.coe : Nat.Primes → ℕ+)).map Subtype.val = v.map Subtype.val
state_before: v : PrimeMultiset
⊢ Multiset.map Subtype.val (Multiset.map Coe.coe v) = Multiset.map Subtype.val v
state_after: v : PrimeMultiset
⊢ Multiset.map (Subtype.val ∘ Coe.coe) v = Multiset.map Subtype.val v
tactic: rw [Multiset.map_map]
state_before: v : PrimeMultiset
⊢ Multiset.map (Subtype.val ∘ Coe.coe) v = Multiset.map Subtype.val v
state_after: no goals
tactic: congr
Theorem: Nat.pow_dvd_pow_iff
File: Mathlib/Data/Nat/GCD/Basic.lean

Proof steps:
state_before: a b n : ℕ
n0 : n ≠ 0
⊢ a ^ n ∣ b ^ n ↔ a ∣ b
state_after: a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
⊢ a ∣ b
tactic: refine ⟨fun h => ?_, fun h => pow_dvd_pow_of_dvd h _⟩
state_before: a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
⊢ a ∣ b
state_after: case inl
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b = 0
⊢ a ∣ b

case inr
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b > 0
⊢ a ∣ b
tactic: rcases Nat.eq_zero_or_pos (gcd a b) with g0 | g0
state_before: case inr
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b > 0
⊢ a ∣ b
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : (a' * g) ^ n ∣ (b' * g) ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
tactic: rcases exists_coprime' g0 with ⟨g, a', b', g0', co, rfl, rfl⟩
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : (a' * g) ^ n ∣ (b' * g) ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : a' ^ n * g ^ n ∣ b' ^ n * g ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
tactic: rw [mul_pow, mul_pow] at h
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : a' ^ n * g ^ n ∣ b' ^ n * g ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
⊢ a' * g ∣ b' * g
tactic: replace h := Nat.dvd_of_mul_dvd_mul_right (Nat.pos_pow_of_pos _ g0') h
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ^ succ 0 ∣ a' ^ n
⊢ a' * g ∣ b' * g
tactic: have := pow_dvd_pow a' <| Nat.pos_of_ne_zero n0
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ^ succ 0 ∣ a' ^ n
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ∣ 1
⊢ a' * g ∣ b' * g
tactic: rw [pow_one, (co.pow n n).eq_one_of_dvd h] at this
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ∣ 1
⊢ a' * g ∣ b' * g
state_after: no goals
tactic: simp [eq_one_of_dvd_one this]
Theorem: CategoryTheory.Cat.associator_inv_app
File: Mathlib/CategoryTheory/Category/Cat.lean

Proof steps:
state_before: B C D E : Cat
F : B ⟶ C
G : C ⟶ D
H : D ⟶ E
X : ↑B
⊢ (F ≫ G ≫ H).obj X = ((F ≫ G) ≫ H).obj X
state_after: no goals
tactic: simp