ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Padic.exi_rat_seq_conv
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

Proof steps:
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
⊢ ∃ N, ∀ i ≥ N, padicNormE (↑f i - ↑(limSeq f i)) < ε
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
⊢ padicNormE (↑f i - ↑(limSeq f i)) < ε
tactic: refine (exists_nat_gt (1 / ε)).imp fun N hN i hi ↦ ?_
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
⊢ padicNormE (↑f i - ↑(limSeq f i)) < ε
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ padicNormE (↑f i - ↑(limSeq f i)) < ε
tactic: have h := Classical.choose_spec (rat_dense' (f i) (div_nat_pos i))
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ padicNormE (↑f i - ↑(limSeq f i)) < ε
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 1 ≤ (↑i + 1) * ε
tactic: refine lt_of_lt_of_le h ((div_le_iff' <| mod_cast succ_pos _).mpr ?_)
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 1 ≤ (↑i + 1) * ε
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 1 ≤ ↑i * ε + 1 * ε
tactic: rw [right_distrib]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 1 ≤ ↑i * ε + 1 * ε
state_after: case hbc
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 1 ≤ ↑i * ε

case ha
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : CauSeq ℚ_[p] ⇑padicNormE
ε : ℚ
hε : 0 < ε
N : ℕ
hN : 1 / ε < ↑N
i : ℕ
hi : i ≥ N
h : padicNormE (↑f i - ↑(Classical.choose ⋯)) < 1 / (↑i + 1)
⊢ 0 ≤ 1 * ε
tactic: apply le_add_of_le_of_nonneg
Theorem: MeasureTheory.Measure.restrict_toOuterMeasure_eq_toOuterMeasure_restrict
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
h : MeasurableSet s
⊢ (μ.restrict s).toOuterMeasure = (OuterMeasure.restrict s) μ.toOuterMeasure
state_after: no goals
tactic: simp_rw [restrict, restrictₗ, liftLinear, LinearMap.coe_mk, AddHom.coe_mk,
    toMeasure_toOuterMeasure, OuterMeasure.restrict_trim h, μ.trimmed]
Theorem: Ordinal.cof_cof
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
a : Ordinal.{u}
⊢ a.cof.ord.cof = a.cof
state_after: case intro
α : Type u_1
r : α → α → Prop
a : Ordinal.{u}
f : (b : Ordinal.{u}) → b < a.cof.ord → Ordinal.{u}
hf : a.IsFundamentalSequence a.cof.ord f
⊢ a.cof.ord.cof = a.cof
tactic: cases' exists_fundamental_sequence a with f hf
state_before: case intro
α : Type u_1
r : α → α → Prop
a : Ordinal.{u}
f : (b : Ordinal.{u}) → b < a.cof.ord → Ordinal.{u}
hf : a.IsFundamentalSequence a.cof.ord f
⊢ a.cof.ord.cof = a.cof
state_after: case intro.intro
α : Type u_1
r : α → α → Prop
a : Ordinal.{u}
f : (b : Ordinal.{u}) → b < a.cof.ord → Ordinal.{u}
hf : a.IsFundamentalSequence a.cof.ord f
g : (b : Ordinal.{u}) → b < a.cof.ord.cof.ord → Ordinal.{u}
hg : a.cof.ord.IsFundamentalSequence a.cof.ord.cof.ord g
⊢ a.cof.ord.cof = a.cof
tactic: cases' exists_fundamental_sequence a.cof.ord with g hg
state_before: case intro.intro
α : Type u_1
r : α → α → Prop
a : Ordinal.{u}
f : (b : Ordinal.{u}) → b < a.cof.ord → Ordinal.{u}
hf : a.IsFundamentalSequence a.cof.ord f
g : (b : Ordinal.{u}) → b < a.cof.ord.cof.ord → Ordinal.{u}
hg : a.cof.ord.IsFundamentalSequence a.cof.ord.cof.ord g
⊢ a.cof.ord.cof = a.cof
state_after: no goals
tactic: exact ord_injective (hf.trans hg).cof_eq.symm
Theorem: _private.Mathlib.CategoryTheory.Galois.Decomposition.0.CategoryTheory.PreGaloisCategory.subobj_selfProd_trans
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ ∃ f, F.map f.hom b = a
state_after: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ F.map u b = F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a
tactic: apply connected_component_unique F b a u (selfProdPermIncl h b)
state_before: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ F.map u b = F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a
state_after: no goals
tactic: exact selfProdTermIncl_fib_eq h b
Theorem: disjoint_principal_nhdsSet
File: Mathlib/Topology/NhdsSet.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : Filter X
s t s₁ s₂ t₁ t₂ : Set X
x : X
⊢ Disjoint (𝓟 s) (𝓝ˢ t) ↔ Disjoint (closure s) t
state_after: no goals
tactic: rw [disjoint_principal_left, ← subset_interior_iff_mem_nhdsSet, interior_compl,
    subset_compl_iff_disjoint_left]
Theorem: Function.mulSupport_nonempty_iff
File: Mathlib/Algebra/Group/Support.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
⊢ (mulSupport f).Nonempty ↔ f ≠ 1
state_after: no goals
tactic: rw [nonempty_iff_ne_empty, Ne, mulSupport_eq_empty_iff]
Theorem: PowerBasis.map_basis
File: Mathlib/RingTheory/PowerBasis.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Algebra A B
K : Type u_6
inst✝² : Field K
S' : Type u_7
inst✝¹ : CommRing S'
inst✝ : Algebra R S'
pb : PowerBasis R S
e : S ≃ₐ[R] S'
i : Fin pb.dim
⊢ (pb.basis.map e.toLinearEquiv) i = e pb.gen ^ ↑i
state_after: no goals
tactic: rw [Basis.map_apply, pb.basis_eq_pow, e.toLinearEquiv_apply, map_pow]
Theorem: Nat.sum_div_divisors
File: Mathlib/NumberTheory/Divisors.lean

Proof steps:
state_before: n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
state_after: case pos
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f

case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
tactic: by_cases hn : n = 0
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
state_after: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ x ∈ image (HDiv.hDiv n) n.divisors, f x = n.divisors.prod f

case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∀ x ∈ n.divisors, ∀ y ∈ n.divisors, n / x = n / y → x = y
tactic: rw [← prod_image]
Theorem: PartialEquiv.IsImage.leftInvOn_piecewise
File: Mathlib/Logic/Equiv/PartialEquiv.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e'✝ : PartialEquiv β γ
s : Set α
t : Set β
x : α
y : β
e' : PartialEquiv α β
inst✝¹ : (i : α) → Decidable (i ∈ s)
inst✝ : (i : β) → Decidable (i ∈ t)
h : e.IsImage s t
h' : e'.IsImage s t
⊢ LeftInvOn (t.piecewise ↑e.symm ↑e'.symm) (s.piecewise ↑e ↑e') (s.ite e.source e'.source)
state_after: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e'✝ : PartialEquiv β γ
s : Set α
t : Set β
x✝ : α
y : β
e' : PartialEquiv α β
inst✝¹ : (i : α) → Decidable (i ∈ s)
inst✝ : (i : β) → Decidable (i ∈ t)
h : e.IsImage s t
h' : e'.IsImage s t
x : α
he : x ∈ e.source
hs : x ∈ s
⊢ t.piecewise (↑e.symm) (↑e'.symm) (s.piecewise (↑e) (↑e') x) = x

case inr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e'✝ : PartialEquiv β γ
s : Set α
t : Set β
x✝ : α
y : β
e' : PartialEquiv α β
inst✝¹ : (i : α) → Decidable (i ∈ s)
inst✝ : (i : β) → Decidable (i ∈ t)
h : e.IsImage s t
h' : e'.IsImage s t
x : α
he : x ∈ e'.source
hs : x ∉ s
⊢ t.piecewise (↑e.symm) (↑e'.symm) (s.piecewise (↑e) (↑e') x) = x
tactic: rintro x (⟨he, hs⟩ | ⟨he, hs : x ∉ s⟩)
Theorem: Set.pairwise_disjoint_Ioc_intCast
File: Mathlib/Algebra/Order/Interval/Set/Group.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedRing α
a : α
⊢ Pairwise (Disjoint on fun n => Ioc (↑n) (↑n + 1))
state_after: no goals
tactic: simpa only [zero_add] using pairwise_disjoint_Ioc_add_intCast (0 : α)
Theorem: WittVector.constantCoeff_wittZSMul
File: Mathlib/RingTheory/WittVector/Defs.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (wittZSMul p z n) = 0
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (z • X 0) = 0
tactic: apply constantCoeff_wittStructureInt p _ _ n
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (z • X 0) = 0
state_after: no goals
tactic: simp only [smul_zero, map_zsmul, constantCoeff_X]
Theorem: mul_self_lt_one_iff
File: Mathlib/Algebra/Order/Monoid/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedCommMonoid α
a : α
⊢ a * a < 1 ↔ a < 1
state_after: no goals
tactic: simp [← not_iff_not]
Theorem: MeasureTheory.Measure.restrict_sum
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
μ : ι → Measure α
s : Set α
hs : MeasurableSet s
t : Set α
ht : MeasurableSet t
⊢ ((sum μ).restrict s) t = (sum fun i => (μ i).restrict s) t
state_after: no goals
tactic: simp only [sum_apply, restrict_apply, ht, ht.inter hs]
Theorem: Filter.eventuallyConst_pred
File: Mathlib/Order/Filter/EventuallyConst.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l : Filter α
f : α → β
p : α → Prop
⊢ EventuallyConst p l ↔ (∀ᶠ (x : α) in l, p x) ∨ ∀ᶠ (x : α) in l, ¬p x
state_after: no goals
tactic: simp [eventuallyConst_pred', or_comm, EventuallyEq]
Theorem: MeasureTheory.Measure.haar.addPrehaar_sup_eq
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ prehaar (↑K₀) U (K₁ ⊔ K₂) = prehaar (↑K₀) U K₁ + prehaar (↑K₀) U K₂
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) / ↑(index (↑K₀) U) = ↑(index (↑K₁) U) / ↑(index (↑K₀) U) + ↑(index (↑K₂) U) / ↑(index (↑K₀) U)
tactic: simp only [prehaar]
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) / ↑(index (↑K₀) U) = ↑(index (↑K₁) U) / ↑(index (↑K₀) U) + ↑(index (↑K₂) U) / ↑(index (↑K₀) U)
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) / ↑(index (↑K₀) U) = (↑(index (↑K₁) U) + ↑(index (↑K₂) U)) / ↑(index (↑K₀) U)
tactic: rw [div_add_div_same]
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) / ↑(index (↑K₀) U) = (↑(index (↑K₁) U) + ↑(index (↑K₂) U)) / ↑(index (↑K₀) U)
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) = ↑(index (↑K₁) U) + ↑(index (↑K₂) U)
tactic: refine congr_arg (fun x : ℝ => x / index K₀ U) ?_
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
K₁ K₂ : Compacts G
hU : (interior U).Nonempty
h : Disjoint (K₁.carrier * U⁻¹) (K₂.carrier * U⁻¹)
⊢ ↑(index (↑(K₁ ⊔ K₂)) U) = ↑(index (↑K₁) U) + ↑(index (↑K₂) U)
state_after: no goals
tactic: exact mod_cast index_union_eq K₁ K₂ hU h
Theorem: NNReal.one_lt_coe
File: Mathlib/Data/NNReal/Basic.lean

Proof steps:
state_before: r r₁ r₂ : ℝ≥0
x y : ℝ
⊢ 1 < ↑r ↔ 1 < r
state_after: no goals
tactic: rw [← coe_lt_coe, coe_one]
Theorem: BoundedContinuousFunction.coe_nsmulRec
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

Proof steps:
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : AddMonoid β
inst✝¹ : BoundedAdd β
inst✝ : ContinuousAdd β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ⇑(nsmulRec 0 f) = 0 • ⇑f
state_after: no goals
tactic: rw [nsmulRec, zero_smul, coe_zero]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : AddMonoid β
inst✝¹ : BoundedAdd β
inst✝ : ContinuousAdd β
f g : α →ᵇ β
x : α
C : ℝ
n : ℕ
⊢ ⇑(nsmulRec (n + 1) f) = (n + 1) • ⇑f
state_after: no goals
tactic: rw [nsmulRec, succ_nsmul, coe_add, coe_nsmulRec n]
Theorem: AddMonoid.Coprod.range_inl_sup_range_inr
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
⊢ inl.range ⊔ inr.range = ⊤
state_after: no goals
tactic: rw [← closure_range_inl_union_inr, Subgroup.closure_union, ← MonoidHom.coe_range,
    ← MonoidHom.coe_range, Subgroup.closure_eq, Subgroup.closure_eq]
Theorem: AlgebraicGeometry.LocallyRingedSpace.IsOpenImmersion.isoRestrict_hom_ofRestrict
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ (isoRestrict f).hom ≫ Y.ofRestrict ⋯ = f
state_after: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ ((isoRestrict f).hom ≫ Y.ofRestrict ⋯).val = f.val
tactic: ext1
state_before: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ ((isoRestrict f).hom ≫ Y.ofRestrict ⋯).val = f.val
state_after: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ SheafedSpace.forgetToPresheafedSpace.preimage (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
      (Y.ofRestrict ⋯).val =
    f.val
tactic: dsimp [isoRestrict, isoOfSheafedSpaceIso]
state_before: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ SheafedSpace.forgetToPresheafedSpace.preimage (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
      (Y.ofRestrict ⋯).val =
    f.val
state_after: case h.a
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ SheafedSpace.forgetToPresheafedSpace.map
      (SheafedSpace.forgetToPresheafedSpace.preimage (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
        (Y.ofRestrict ⋯).val) =
    SheafedSpace.forgetToPresheafedSpace.map f.val
tactic: apply SheafedSpace.forgetToPresheafedSpace.map_injective
state_before: case h.a
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ SheafedSpace.forgetToPresheafedSpace.map
      (SheafedSpace.forgetToPresheafedSpace.preimage (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
        (Y.ofRestrict ⋯).val) =
    SheafedSpace.forgetToPresheafedSpace.map f.val
state_after: case h.a
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
      SheafedSpace.forgetToPresheafedSpace.map (Y.ofRestrict ⋯).val =
    SheafedSpace.forgetToPresheafedSpace.map f.val
tactic: rw [Functor.map_comp, SheafedSpace.forgetToPresheafedSpace.map_preimage]
state_before: case h.a
C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ (PresheafedSpace.IsOpenImmersion.isoRestrict f.val).hom ≫
      SheafedSpace.forgetToPresheafedSpace.map (Y.ofRestrict ⋯).val =
    SheafedSpace.forgetToPresheafedSpace.map f.val
state_after: no goals
tactic: exact SheafedSpace.IsOpenImmersion.isoRestrict_hom_ofRestrict f.1
Theorem: finprod_eq_prod
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport f).Finite
⊢ ∏ᶠ (i : α), f i = ∏ i ∈ hf.toFinset, f i
state_after: no goals
tactic: classical rw [finprod_def, dif_pos hf]
Theorem: Subgroup.relindex_inf_mul_relindex
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
⊢ H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L
state_after: no goals
tactic: rw [← inf_relindex_right H (K ⊓ L), ← inf_relindex_right K L, ← inf_relindex_right (H ⊓ K) L,
    inf_assoc, relindex_mul_relindex (H ⊓ (K ⊓ L)) (K ⊓ L) L inf_le_right inf_le_right]
Theorem: LocallyConstant.congrLeft_symm_apply
File: Mathlib/Topology/LocallyConstant/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
⊢ Function.LeftInverse (comap e.toContinuousMap) (comap e.symm.toContinuousMap)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant X Z
⊢ comap e.toContinuousMap (comap e.symm.toContinuousMap x✝) = x✝
tactic: intro
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant X Z
⊢ comap e.toContinuousMap (comap e.symm.toContinuousMap x✝) = x✝
state_after: no goals
tactic: simp [comap_comap]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
⊢ Function.RightInverse (comap e.toContinuousMap) (comap e.symm.toContinuousMap)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant Y Z
⊢ comap e.symm.toContinuousMap (comap e.toContinuousMap x✝) = x✝
tactic: intro
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
e : X ≃ₜ Y
x✝ : LocallyConstant Y Z
⊢ comap e.symm.toContinuousMap (comap e.toContinuousMap x✝) = x✝
state_after: no goals
tactic: simp [comap_comap]
Theorem: ContinuousLinearMap.add_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 σ₁₂ σ₂₃ σ₁₃
inst✝ : ContinuousAdd M₃
g₁ g₂ : M₂ →SL[σ₂₃] M₃
f : M₁ →SL[σ₁₂] M₂
⊢ (g₁ + g₂).comp f = g₁.comp f + g₂.comp f
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 σ₁₂ σ₂₃ σ₁₃
inst✝ : ContinuousAdd M₃
g₁ g₂ : M₂ →SL[σ₂₃] M₃
f : M₁ →SL[σ₁₂] M₂
x✝ : M₁
⊢ ((g₁ + g₂).comp f) x✝ = (g₁.comp f + g₂.comp f) x✝
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 σ₁₂ σ₂₃ σ₁₃
inst✝ : ContinuousAdd M₃
g₁ g₂ : M₂ →SL[σ₂₃] M₃
f : M₁ →SL[σ₁₂] M₂
x✝ : M₁
⊢ ((g₁ + g₂).comp f) x✝ = (g₁.comp f + g₂.comp f) x✝
state_after: no goals
tactic: simp
Theorem: List.cons_subset_cons
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
l₁ l₂ : List α
a : α
s : l₁ ⊆ l₂
x✝ : α
⊢ x✝ ∈ a :: l₁ → x✝ ∈ a :: l₂
state_after: α : Type u_1
l₁ l₂ : List α
a : α
s : l₁ ⊆ l₂
x✝ : α
⊢ x✝ = a ∨ x✝ ∈ l₁ → x✝ = a ∨ x✝ ∈ l₂
tactic: simp only [mem_cons]
state_before: α : Type u_1
l₁ l₂ : List α
a : α
s : l₁ ⊆ l₂
x✝ : α
⊢ x✝ = a ∨ x✝ ∈ l₁ → x✝ = a ∨ x✝ ∈ l₂
state_after: no goals
tactic: exact Or.imp_right (@s _)