ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.InjOn.image_diff
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
t : Set α
h : InjOn f s
⊢ f '' (s \ t) = f '' s \ f '' (s ∩ t)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
t : Set α
h : InjOn f s
⊢ Disjoint (f '' (s \ t)) (f '' (s ∩ t))
tactic: refine subset_antisymm (subset_diff.2 ⟨image_subset f diff_subset, ?_⟩)
    (diff_subset_iff.2 (by rw [← image_union, inter_union_diff]))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
t : Set α
h : InjOn f s
⊢ Disjoint (f '' (s \ t)) (f '' (s ∩ t))
state_after: no goals
tactic: exact Disjoint.image disjoint_sdiff_inter h diff_subset inter_subset_left
Theorem: Part.inter_mem_inter
File: Mathlib/Data/Part.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Inter α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ma ∩ mb ∈ a ∩ b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Inter α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ∃ a_1 ∈ a, ∃ a ∈ b, a_1 ∩ a = ma ∩ mb
tactic: simp [inter_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Inter α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ∃ a_1 ∈ a, ∃ a ∈ b, a_1 ∩ a = ma ∩ mb
state_after: no goals
tactic: aesop
Theorem: Localization.mkOrderEmbedding_apply
File: Mathlib/GroupTheory/MonoidLocalization/Order.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s : Submonoid α
a₁ b₁ : α
a₂ b₂ b✝ : ↥s
a b : α
⊢ { toFun := fun a => mk a b✝, inj' := ⋯ } a ≤ { toFun := fun a => mk a b✝, inj' := ⋯ } b ↔ a ≤ b
state_after: no goals
tactic: simp [-mk_eq_monoidOf_mk', mk_le_mk]
Theorem: Matroid.Indep.insert_diff_indep_iff
File: Mathlib/Data/Matroid/Closure.lean

Proof steps:
state_before: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep (I \ {e})
heI : e ∈ I
⊢ M.Indep (insert f I \ {e}) ↔ f ∈ M.E \ M.closure (I \ {e}) ∨ f ∈ I
state_after: case inl
ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
x y : α
hI : M.Indep (I \ {e})
heI : e ∈ I
⊢ M.Indep (insert e I \ {e}) ↔ e ∈ M.E \ M.closure (I \ {e}) ∨ e ∈ I

case inr
ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep (I \ {e})
heI : e ∈ I
hne : e ≠ f
⊢ M.Indep (insert f I \ {e}) ↔ f ∈ M.E \ M.closure (I \ {e}) ∨ f ∈ I
tactic: obtain rfl | hne := eq_or_ne e f
state_before: case inr
ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep (I \ {e})
heI : e ∈ I
hne : e ≠ f
⊢ M.Indep (insert f I \ {e}) ↔ f ∈ M.E \ M.closure (I \ {e}) ∨ f ∈ I
state_after: no goals
tactic: rw [← insert_diff_singleton_comm hne.symm, hI.insert_indep_iff, mem_diff_singleton,
    and_iff_left hne.symm]
Theorem: Polynomial.smeval_smul
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : Semiring R
p q : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : Module R S
x : S
r : R
⊢ (r • p).smeval x = r • p.smeval x
state_after: no goals
tactic: induction p using Polynomial.induction_on' with
  | h_add p q ph qh =>
    rw [smul_add, smeval_add, ph, qh, ← smul_add, smeval_add]
  | h_monomial n a =>
    rw [smul_monomial, smeval_monomial, smeval_monomial, smul_assoc]
Theorem: CategoryTheory.ran_isSheaf_of_isCocontinuous
File: Mathlib/CategoryTheory/Sites/CoverLifting.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{u_4, u_2} D
G : C ⥤ D
A : Type w
inst✝² : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝¹ : G.IsCocontinuous J K
inst✝ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
ℱ : Sheaf J A
⊢ Presheaf.IsSheaf K (G.op.ran.obj ℱ.val)
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{u_4, u_2} D
G : C ⥤ D
A : Type w
inst✝² : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝¹ : G.IsCocontinuous J K
inst✝ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
ℱ : Sheaf J A
⊢ ∀ (X : D) (S : K.Cover X), Nonempty (IsLimit (S.multifork (G.op.ran.obj ℱ.val)))
tactic: rw [Presheaf.isSheaf_iff_multifork]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{u_4, u_2} D
G : C ⥤ D
A : Type w
inst✝² : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝¹ : G.IsCocontinuous J K
inst✝ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
ℱ : Sheaf J A
⊢ ∀ (X : D) (S : K.Cover X), Nonempty (IsLimit (S.multifork (G.op.ran.obj ℱ.val)))
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{u_4, u_2} D
G : C ⥤ D
A : Type w
inst✝² : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝¹ : G.IsCocontinuous J K
inst✝ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
ℱ : Sheaf J A
X : D
S : K.Cover X
⊢ Nonempty (IsLimit (S.multifork (G.op.ran.obj ℱ.val)))
tactic: intros X S
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{u_4, u_2} D
G : C ⥤ D
A : Type w
inst✝² : Category.{w', w} A
J : GrothendieckTopology C
K : GrothendieckTopology D
inst✝¹ : G.IsCocontinuous J K
inst✝ : ∀ (F : Cᵒᵖ ⥤ A), G.op.HasPointwiseRightKanExtension F
ℱ : Sheaf J A
X : D
S : K.Cover X
⊢ Nonempty (IsLimit (S.multifork (G.op.ran.obj ℱ.val)))
state_after: no goals
tactic: exact ⟨RanIsSheafOfIsCocontinuous.isLimitMultifork ℱ.2
    (G.op.isPointwiseRightKanExtensionRanCounit ℱ.val) S⟩
Theorem: Submodule.IsOrtho.map
File: Mathlib/Analysis/InnerProductSpace/Orthogonal.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : U ⟂ V
⊢ Submodule.map f U ⟂ Submodule.map f V
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ u ∈ Submodule.map f U, ∀ v ∈ Submodule.map f V, ⟪u, v⟫_𝕜 = 0
tactic: rw [isOrtho_iff_inner_eq] at *
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ u ∈ Submodule.map f U, ∀ v ∈ Submodule.map f V, ⟪u, v⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ a ∈ U, ∀ a_2 ∈ V, ⟪a, a_2⟫_𝕜 = 0
tactic: simp_rw [mem_map, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂,
    LinearIsometry.inner_map_map]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ a ∈ U, ∀ a_2 ∈ V, ⟪a, a_2⟫_𝕜 = 0
state_after: no goals
tactic: exact h
Theorem: List.length_lookmap
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → Option α
l : List α
⊢ (lookmap f l).length = l.length
state_after: case h
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → Option α
l : List α
⊢ ∀ (a b : α), b ∈ f a → () = ()
tactic: rw [← length_map, lookmap_map_eq _ fun _ => (), length_map]
state_before: case h
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → Option α
l : List α
⊢ ∀ (a b : α), b ∈ f a → () = ()
state_after: no goals
tactic: simp
Theorem: primorial_add
File: Mathlib/NumberTheory/Primorial.lean

Proof steps:
state_before: m n : ℕ
⊢ (m + n)# = m# * ∏ p ∈ filter Nat.Prime (Ico (m + 1) (m + n + 1)), p
state_after: case hab
m n : ℕ
⊢ 0 ≤ m + 1

case hbc
m n : ℕ
⊢ m + 1 ≤ m + n + 1

m n : ℕ
⊢ Disjoint (filter Nat.Prime (Ico 0 (m + 1))) (filter Nat.Prime (Ico (m + 1) (m + n + 1)))
tactic: rw [primorial, primorial, ← Ico_zero_eq_range, ← prod_union, ← filter_union, Ico_union_Ico_eq_Ico]
state_before: case hab
m n : ℕ
⊢ 0 ≤ m + 1

case hbc
m n : ℕ
⊢ m + 1 ≤ m + n + 1

m n : ℕ
⊢ Disjoint (filter Nat.Prime (Ico 0 (m + 1))) (filter Nat.Prime (Ico (m + 1) (m + n + 1)))
state_after: no goals
tactic: exacts [Nat.zero_le _, add_le_add_right (Nat.le_add_right _ _) _,
    disjoint_filter_filter <| Ico_disjoint_Ico_consecutive _ _ _]
Theorem: Set.Finite.toFinset_diff
File: Mathlib/Data/Set/Finite.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s \ t).Finite
⊢ h.toFinset = hs.toFinset \ ht.toFinset
state_after: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s \ t).Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinset \ ht.toFinset
tactic: ext
state_before: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s \ t).Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinset \ ht.toFinset
state_after: no goals
tactic: simp
Theorem: Real.tendsto_toNNReal_atTop_iff
File: Mathlib/Topology/Instances/NNReal.lean

Proof steps:
state_before: α : Type u_1
l : Filter α
f : α → ℝ
⊢ Tendsto (fun x => (f x).toNNReal) l atTop ↔ Tendsto f l atTop
state_after: no goals
tactic: rw [← Real.comap_toNNReal_atTop, tendsto_comap_iff, Function.comp_def]
Theorem: normSq_eq_of_mem_circle
File: Mathlib/Analysis/Complex/Circle.lean

Proof steps:
state_before: z : ↥circle
⊢ normSq ↑z = 1
state_after: no goals
tactic: simp [normSq_eq_abs]
Theorem: SimpleGraph.Walk.IsHamiltonian.mem_support
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p : G.Walk a b
hp : p.IsHamiltonian
c : α
⊢ c ∈ p.support
state_after: no goals
tactic: simp only [← List.count_pos_iff_mem, hp _, Nat.zero_lt_one]
Theorem: LinearEquiv.det_coe_symm
File: Mathlib/LinearAlgebra/Determinant.lean

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
𝕜 : Type u_5
inst✝¹ : Field 𝕜
inst✝ : Module 𝕜 M
f : M ≃ₗ[𝕜] M
⊢ LinearMap.det ↑f.symm = (LinearMap.det ↑f)⁻¹
state_after: no goals
tactic: field_simp [IsUnit.ne_zero f.isUnit_det']
Theorem: nsmul_add_comm'
File: Mathlib/Algebra/Group/Defs.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m n✝ : ℕ
a : M
n : ℕ
⊢ a ^ n * a = a * a ^ n
state_after: no goals
tactic: rw [← pow_succ, pow_succ']
Theorem: Derivation.compAEval_apply
File: Mathlib/Algebra/Polynomial/Derivation.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
M : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
d : Derivation R A M
a : A
⊢ ∀ (x y : R[X]),
    (fun f => (AEval.of R M a) (d ((aeval a) f))) (x + y) =
      (fun f => (AEval.of R M a) (d ((aeval a) f))) x + (fun f => (AEval.of R M a) (d ((aeval a) f))) y
state_after: no goals
tactic: simp
state_before: R : Type u_1
A : Type u_2
M : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
d : Derivation R A M
a : A
⊢ ∀ (m : R) (x : R[X]),
    { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯ }.toFun (m • x) =
      (RingHom.id R) m • { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯ }.toFun x
state_after: no goals
tactic: simp
state_before: R : Type u_1
A : Type u_2
M : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
d : Derivation R A M
a : A
⊢ ∀ (a_1 b : R[X]),
    { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯, map_smul' := ⋯ } (a_1 * b) =
      a_1 • { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯, map_smul' := ⋯ } b +
        b • { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯, map_smul' := ⋯ } a_1
state_after: no goals
tactic: simp [AEval.of_aeval_smul, -Derivation.map_aeval]
state_before: R : Type u_1
A : Type u_2
M : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
d : Derivation R A M
a : A
⊢ { toFun := fun f => (AEval.of R M a) (d ((aeval a) f)), map_add' := ⋯, map_smul' := ⋯ } 1 = 0
state_after: no goals
tactic: simp
Theorem: Polynomial.EisensteinCriterionAux.eval_zero_mem_ideal_of_eq_mul_X_pow
File: Mathlib/RingTheory/EisensteinCriterion.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
P : Ideal R
q : R[X]
c : (R ⧸ P)[X]
hq : map (mk P) q = c * X ^ n
hn0 : n ≠ 0
⊢ eval 0 q ∈ P
state_after: no goals
tactic: rw [← coeff_zero_eq_eval_zero, ← eq_zero_iff_mem, ← coeff_map, hq,
    coeff_zero_eq_eval_zero, eval_mul, eval_pow, eval_X, zero_pow hn0, mul_zero]
Theorem: MeasureTheory.eventuallyConst_vadd_set_ae
File: Mathlib/MeasureTheory/Group/Action.lean

Proof steps:
state_before: G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace G
inst✝² : Group G
inst✝¹ : MulAction G α
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
c : G
s : Set α
⊢ EventuallyConst (c • s) (ae μ) ↔ EventuallyConst s (ae μ)
state_after: no goals
tactic: rw [← preimage_smul_inv, eventuallyConst_preimage, Filter.map_smul, smul_ae]
Theorem: CategoryTheory.op_inv
File: Mathlib/CategoryTheory/Opposites.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ (inv f).op = inv f.op
state_after: case hom_inv_id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ f.op ≫ (inv f).op = 𝟙 (op Y)
tactic: apply IsIso.eq_inv_of_hom_inv_id
state_before: case hom_inv_id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ f.op ≫ (inv f).op = 𝟙 (op Y)
state_after: no goals
tactic: rw [← op_comp, IsIso.inv_hom_id, op_id]
Theorem: Submodule.subtype_comp_inclusion
File: Mathlib/Algebra/Module/Submodule/LinearMap.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p✝ p' p q : Submodule R M
h : p ≤ q
⊢ q.subtype ∘ₗ inclusion h = p.subtype
state_after: case h.mk
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p✝ p' p q : Submodule R M
h : p ≤ q
b : M
hb : b ∈ p
⊢ (q.subtype ∘ₗ inclusion h) ⟨b, hb⟩ = p.subtype ⟨b, hb⟩
tactic: ext ⟨b, hb⟩
state_before: case h.mk
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p✝ p' p q : Submodule R M
h : p ≤ q
b : M
hb : b ∈ p
⊢ (q.subtype ∘ₗ inclusion h) ⟨b, hb⟩ = p.subtype ⟨b, hb⟩
state_after: no goals
tactic: rfl
Theorem: Metric.tendsto_dist_right_atTop_iff
File: Mathlib/Topology/MetricSpace/Bounded.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
c : α
f : β → α
l : Filter β
⊢ Tendsto (fun x => dist (f x) c) l atTop ↔ Tendsto f l (cobounded α)
state_after: no goals
tactic: rw [← comap_dist_right_atTop c, tendsto_comap_iff, Function.comp_def]
Theorem: Functor.mapEquiv_refl
File: Mathlib/Logic/Equiv/Functor.lean

Proof steps:
state_before: α β : Type u
f : Type u → Type v
inst✝¹ : Functor f
inst✝ : LawfulFunctor f
⊢ mapEquiv f (Equiv.refl α) = Equiv.refl (f α)
state_after: case H
α β : Type u
f : Type u → Type v
inst✝¹ : Functor f
inst✝ : LawfulFunctor f
x : f α
⊢ (mapEquiv f (Equiv.refl α)) x = (Equiv.refl (f α)) x
tactic: ext x
state_before: case H
α β : Type u
f : Type u → Type v
inst✝¹ : Functor f
inst✝ : LawfulFunctor f
x : f α
⊢ (mapEquiv f (Equiv.refl α)) x = (Equiv.refl (f α)) x
state_after: case H
α β : Type u
f : Type u → Type v
inst✝¹ : Functor f
inst✝ : LawfulFunctor f
x : f α
⊢ ⇑(Equiv.refl α) <$> x = x
tactic: simp only [mapEquiv_apply, refl_apply]
state_before: case H
α β : Type u
f : Type u → Type v
inst✝¹ : Functor f
inst✝ : LawfulFunctor f
x : f α
⊢ ⇑(Equiv.refl α) <$> x = x
state_after: no goals
tactic: exact LawfulFunctor.id_map x
Theorem: MeasureTheory.tendsto_measure_of_tendsto_indicator
File: Mathlib/MeasureTheory/Integral/Indicator.lean

Proof steps:
state_before: α : Type u_1
inst✝² : MeasurableSpace α
A : Set α
ι : Type u_2
L : Filter ι
inst✝¹ : L.IsCountablyGenerated
As : ι → Set α
inst✝ : L.NeBot
μ : Measure α
As_mble : ∀ (i : ι), MeasurableSet (As i)
B : Set α
B_mble : MeasurableSet B
B_finmeas : μ B ≠ ⊤
As_le_B : ∀ᶠ (i : ι) in L, As i ⊆ B
h_lim : ∀ (x : α), ∀ᶠ (i : ι) in L, x ∈ As i ↔ x ∈ A
⊢ Tendsto (fun i => μ (As i)) L (𝓝 (μ A))
state_after: α : Type u_1
inst✝² : MeasurableSpace α
A : Set α
ι : Type u_2
L : Filter ι
inst✝¹ : L.IsCountablyGenerated
As : ι → Set α
inst✝ : L.NeBot
μ : Measure α
As_mble : ∀ (i : ι), MeasurableSet (As i)
B : Set α
B_mble : MeasurableSet B
B_finmeas : μ B ≠ ⊤
As_le_B : ∀ᶠ (i : ι) in L, As i ⊆ B
h_lim : ∀ (x : α), ∀ᶠ (i : ι) in L, x ∈ As i ↔ x ∈ A
⊢ MeasurableSet A
tactic: apply tendsto_measure_of_ae_tendsto_indicator L ?_ As_mble B_mble B_finmeas As_le_B
        (ae_of_all μ h_lim)
state_before: α : Type u_1
inst✝² : MeasurableSpace α
A : Set α
ι : Type u_2
L : Filter ι
inst✝¹ : L.IsCountablyGenerated
As : ι → Set α
inst✝ : L.NeBot
μ : Measure α
As_mble : ∀ (i : ι), MeasurableSet (As i)
B : Set α
B_mble : MeasurableSet B
B_finmeas : μ B ≠ ⊤
As_le_B : ∀ᶠ (i : ι) in L, As i ⊆ B
h_lim : ∀ (x : α), ∀ᶠ (i : ι) in L, x ∈ As i ↔ x ∈ A
⊢ MeasurableSet A
state_after: no goals
tactic: exact measurableSet_of_tendsto_indicator L As_mble h_lim
Theorem: Traversable.traverse_id
File: Mathlib/Control/Traversable/Lemmas.lean

Proof steps:
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x : t β
⊢ traverse pure = pure
state_after: case h
t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x : t β
x✝ : t α
⊢ traverse pure x✝ = pure x✝
tactic: ext
state_before: case h
t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x : t β
x✝ : t α
⊢ traverse pure x✝ = pure x✝
state_after: no goals
tactic: exact id_traverse _
Theorem: AlgebraicGeometry.Scheme.Hom.app_eq_appLE
File: Mathlib/AlgebraicGeometry/Scheme.lean

Proof steps:
state_before: X Y : Scheme
f : X.Hom Y
U✝ U' : Y.Opens
V V' : X.Opens
U : Y.Opens
⊢ f.app U = f.appLE U (f ⁻¹ᵁ U) ⋯
state_after: no goals
tactic: simp [Hom.appLE]
Theorem: HomologicalComplex₂.total.mapIso_inv
File: Mathlib/Algebra/Homology/TotalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝⁶ : Category.{?u.130934, u_1} C
inst✝⁵ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝⁴ : DecidableEq I₁₂
inst✝³ : TotalComplexShape c₁ c₂ c₁₂
inst✝² : K.HasTotal c₁₂
inst✝¹ : L.HasTotal c₁₂
inst✝ : M.HasTotal c₁₂
⊢ map e.hom c₁₂ ≫ map e.inv c₁₂ = 𝟙 (K.total c₁₂)
state_after: no goals
tactic: rw [← map_comp, e.hom_inv_id, map_id]
state_before: C : Type u_1
inst✝⁶ : Category.{?u.130934, u_1} C
inst✝⁵ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝⁴ : DecidableEq I₁₂
inst✝³ : TotalComplexShape c₁ c₂ c₁₂
inst✝² : K.HasTotal c₁₂
inst✝¹ : L.HasTotal c₁₂
inst✝ : M.HasTotal c₁₂
⊢ map e.inv c₁₂ ≫ map e.hom c₁₂ = 𝟙 (L.total c₁₂)
state_after: no goals
tactic: rw [← map_comp, e.inv_hom_id, map_id]
Theorem: Int.log_one_right
File: Mathlib/Data/Int/Log.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
⊢ log b 1 = 0
state_after: no goals
tactic: rw [log_of_one_le_right _ le_rfl, Nat.floor_one, Nat.log_one_right, Int.ofNat_zero]
Theorem: CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
File: Mathlib/CategoryTheory/Monoidal/Category.lean

Proof steps:
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
⊢ (𝟙 Y ⊗ f) ≫ (g ⊗ 𝟙 X) = g ⊗ f
state_after: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
⊢ 𝟙 Y ≫ g ⊗ f ≫ 𝟙 X = g ⊗ f
tactic: rw [← tensor_comp]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
⊢ 𝟙 Y ≫ g ⊗ f ≫ 𝟙 X = g ⊗ f
state_after: no goals
tactic: simp
Theorem: SetLike.natCast_mem_graded
File: Mathlib/Algebra/DirectSum/Internal.lean

Proof steps:
state_before: ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
n : ℕ
⊢ ↑n ∈ A 0
state_after: case zero
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
⊢ ↑0 ∈ A 0

case succ
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
n✝ : ℕ
n_ih : ↑n✝ ∈ A 0
⊢ ↑(n✝ + 1) ∈ A 0
tactic: induction' n with _ n_ih
Theorem: MeasureTheory.OuterMeasure.comap_boundedBy
File: Mathlib/MeasureTheory/OuterMeasure/OfFunction.lean

Proof steps:
state_before: α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ (comap f) (boundedBy m) = boundedBy fun s => m (f '' s)
state_after: case refine_1
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ (Monotone fun s => ⨆ (_ : s.Nonempty), m s) ∨ Surjective f

case refine_2
α : Type u_1
m : Set α → ℝ≥0∞
β : Type u_2
f : β → α
h : (Monotone fun s => m ↑s) ∨ Surjective f
⊢ OuterMeasure.ofFunction (fun s => ⨆ (_ : (f '' s).Nonempty), m (f '' s)) ⋯ = boundedBy fun s => m (f '' s)
tactic: refine (comap_ofFunction _ ?_).trans ?_