ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.Prod.braiding_counitIso_inv_app
File: Mathlib/CategoryTheory/Products/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X : C × D
⊢ (𝟭 (C × D)).obj X = (swap C D ⋙ swap D C).obj X
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X : D × C
⊢ (swap D C ⋙ swap C D).obj X = (𝟭 (D × C)).obj X
state_after: no goals
tactic: simp
Theorem: MeasureTheory.stoppedProcess_eq_of_le
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : LinearOrder ι
u : ι → Ω → β
τ : Ω → ι
i : ι
ω : Ω
h : i ≤ τ ω
⊢ stoppedProcess u τ i ω = u i ω
state_after: no goals
tactic: simp [stoppedProcess, min_eq_left h]
Theorem: TopCat.Presheaf.section_ext
File: Mathlib/Topology/Sheaves/Stalks.lean

Proof steps:
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
U : Opens ↑X
s t : (forget C).obj (F.val.obj (op U))
h : ∀ (x : ↥U), (F.presheaf.germ x) s = (F.presheaf.germ x) t
⊢ s = t
state_after: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
U : Opens ↑X
s t : (forget C).obj (F.val.obj (op U))
h : ∀ (x : ↥U), (F.presheaf.germ x) s = (F.presheaf.germ x) t
V : ↥U → Opens ↑X
m : ∀ (x : ↥U), ↑x ∈ V x
i₁ i₂ : (x : ↥U) → V x ⟶ U
heq : ∀ (x : ↥U), (F.presheaf.map (i₁ x).op) s = (F.presheaf.map (i₂ x).op) t
⊢ s = t
tactic: choose V m i₁ i₂ heq using fun x : U => F.presheaf.germ_eq x.1 x.2 x.2 s t (h x)
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
U : Opens ↑X
s t : (forget C).obj (F.val.obj (op U))
h : ∀ (x : ↥U), (F.presheaf.germ x) s = (F.presheaf.germ x) t
V : ↥U → Opens ↑X
m : ∀ (x : ↥U), ↑x ∈ V x
i₁ i₂ : (x : ↥U) → V x ⟶ U
heq : ∀ (x : ↥U), (F.presheaf.map (i₁ x).op) s = (F.presheaf.map (i₂ x).op) t
⊢ s = t
state_after: case hcover
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
U : Opens ↑X
s t : (forget C).obj (F.val.obj (op U))
h : ∀ (x : ↥U), (F.presheaf.germ x) s = (F.presheaf.germ x) t
V : ↥U → Opens ↑X
m : ∀ (x : ↥U), ↑x ∈ V x
i₁ i₂ : (x : ↥U) → V x ⟶ U
heq : ∀ (x : ↥U), (F.presheaf.map (i₁ x).op) s = (F.presheaf.map (i₂ x).op) t
⊢ U ≤ iSup V

case h
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
U : Opens ↑X
s t : (forget C).obj (F.val.obj (op U))
h : ∀ (x : ↥U), (F.presheaf.germ x) s = (F.presheaf.germ x) t
V : ↥U → Opens ↑X
m : ∀ (x : ↥U), ↑x ∈ V x
i₁ i₂ : (x : ↥U) → V x ⟶ U
heq : ∀ (x : ↥U), (F.presheaf.map (i₁ x).op) s = (F.presheaf.map (i₂ x).op) t
⊢ ∀ (i : ↥U), (F.val.map (i₁ i).op) s = (F.val.map (i₁ i).op) t
tactic: apply F.eq_of_locally_eq' V U i₁
Theorem: Finset.prod_congr_set
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α✝ : Type u_3
β✝ : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β✝
inst✝³ : CommMonoid β✝
α : Type u_6
inst✝² : CommMonoid α
β : Type u_7
inst✝¹ : Fintype β
s : Set β
inst✝ : DecidablePred fun x => x ∈ s
f : β → α
g : ↑s → α
w : ∀ (x : β) (h : x ∈ s), f x = g ⟨x, h⟩
w' : ∀ x ∉ s, f x = 1
⊢ univ.prod f = univ.prod g
state_after: ι : Type u_1
κ : Type u_2
α✝ : Type u_3
β✝ : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β✝
inst✝³ : CommMonoid β✝
α : Type u_6
inst✝² : CommMonoid α
β : Type u_7
inst✝¹ : Fintype β
s : Set β
inst✝ : DecidablePred fun x => x ∈ s
f : β → α
g : ↑s → α
w : ∀ (x : β) (h : x ∈ s), f x = g ⟨x, h⟩
w' : ∀ x ∉ s, f x = 1
⊢ ∏ x ∈ s.toFinset, f x = univ.prod g

ι : Type u_1
κ : Type u_2
α✝ : Type u_3
β✝ : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β✝
inst✝³ : CommMonoid β✝
α : Type u_6
inst✝² : CommMonoid α
β : Type u_7
inst✝¹ : Fintype β
s : Set β
inst✝ : DecidablePred fun x => x ∈ s
f : β → α
g : ↑s → α
w : ∀ (x : β) (h : x ∈ s), f x = g ⟨x, h⟩
w' : ∀ x ∉ s, f x = 1
⊢ ∀ x ∈ univ, x ∉ s.toFinset → f x = 1
tactic: rw [← @Finset.prod_subset _ _ s.toFinset Finset.univ f _ (by simp)]
Theorem: Ideal.squarefree_span_singleton
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Field K
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
a : R
⊢ Squarefree (span {a}) ↔ Squarefree a
state_after: case refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Field K
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
a : R
h : Squarefree (span {a})
x : R
hx : x * x ∣ a
⊢ IsUnit x

case refine_2
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Field K
inst✝¹ : IsDomain R
inst✝ : IsPrincipalIdealRing R
a : R
h : Squarefree a
I : Ideal R
hI : I * I ∣ span {a}
⊢ IsUnit I
tactic: refine ⟨fun h x hx ↦ ?_, fun h I hI ↦ ?_⟩
Theorem: Lists.to_ofList
File: Mathlib/SetTheory/Lists.lean

Proof steps:
state_before: α : Type u_1
l : List (Lists α)
⊢ (ofList l).toList = l
state_after: no goals
tactic: simp [ofList, of']
Theorem: singleton_add_closedBall_zero
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ {x} * closedBall 1 δ = closedBall x δ
state_after: no goals
tactic: simp
Theorem: PiLp.edist_equiv_symm_single_same
File: Mathlib/Analysis/Normed/Lp/PiLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁷ : Fact (1 ≤ p)
inst✝⁶ : Fintype ι
inst✝⁵ : Semiring 𝕜
inst✝⁴ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝³ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝² : (i : ι) → Module 𝕜 (α i)
inst✝¹ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
inst✝ : DecidableEq ι
i : ι
b₁ b₂ : β i
⊢ edist ((WithLp.equiv p ((i : ι) → β i)).symm (Pi.single i b₁))
      ((WithLp.equiv p ((i : ι) → β i)).symm (Pi.single i b₂)) =
    edist b₁ b₂
state_after: no goals
tactic: simp only [edist_nndist, nndist_equiv_symm_single_same p β i b₁ b₂]
Theorem: TopologicalSpace.IsTopologicalBasis.eq_of_forall_subset_iff
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s t : Set α
hB : IsTopologicalBasis B
hs : IsOpen s
ht : IsOpen t
h : ∀ U ∈ B, U ⊆ s ↔ U ⊆ t
⊢ s = t
state_after: α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s t : Set α
hB : IsTopologicalBasis B
hs : IsOpen s
ht : IsOpen t
h : ∀ U ∈ B, U ⊆ s ↔ U ⊆ t
⊢ ⋃₀ {s_1 | s_1 ∈ B ∧ s_1 ⊆ s} = ⋃₀ {s | s ∈ B ∧ s ⊆ t}
tactic: rw [hB.open_eq_sUnion' hs, hB.open_eq_sUnion' ht]
state_before: α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s t : Set α
hB : IsTopologicalBasis B
hs : IsOpen s
ht : IsOpen t
h : ∀ U ∈ B, U ⊆ s ↔ U ⊆ t
⊢ ⋃₀ {s_1 | s_1 ∈ B ∧ s_1 ⊆ s} = ⋃₀ {s | s ∈ B ∧ s ⊆ t}
state_after: no goals
tactic: exact congr_arg _ (Set.ext fun U ↦ and_congr_right <| h _)
Theorem: MeasureTheory.ae_restrict_biUnion_finset_iff
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 α
s : ι → Set α
t : Finset ι
p : α → Prop
⊢ (∀ᵐ (x : α) ∂μ.restrict (⋃ i ∈ t, s i), p x) ↔ ∀ i ∈ t, ∀ᵐ (x : α) ∂μ.restrict (s i), p x
state_after: no goals
tactic: simp_rw [Filter.Eventually, ae_restrict_biUnion_finset_eq s, mem_iSup]
Theorem: MulActionHom.inverse'_apply
File: Mathlib/GroupTheory/GroupAction/Hom.lean

Proof steps:
state_before: M' : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
φ : M → N
ψ : N → P
χ : M → P
X : Type u_5
inst✝⁵ : SMul M X
inst✝⁴ : SMul M' X
Y : Type u_6
inst✝³ : SMul N Y
inst✝² : SMul M' Y
Z : Type u_7
inst✝¹ : SMul P Z
φ' : N → M
Y₁ : Type u_8
inst✝ : SMul M Y₁
f : X →ₑ[φ] Y
g : Y → X
k : Function.RightInverse φ' φ
h₁ : Function.LeftInverse g ⇑f
h₂ : Function.RightInverse g ⇑f
m : N
x : Y
⊢ g (m • x) = g (m • f (g x))
state_after: no goals
tactic: rw [h₂]
state_before: M' : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
φ : M → N
ψ : N → P
χ : M → P
X : Type u_5
inst✝⁵ : SMul M X
inst✝⁴ : SMul M' X
Y : Type u_6
inst✝³ : SMul N Y
inst✝² : SMul M' Y
Z : Type u_7
inst✝¹ : SMul P Z
φ' : N → M
Y₁ : Type u_8
inst✝ : SMul M Y₁
f : X →ₑ[φ] Y
g : Y → X
k : Function.RightInverse φ' φ
h₁ : Function.LeftInverse g ⇑f
h₂ : Function.RightInverse g ⇑f
m : N
x : Y
⊢ g (m • f (g x)) = g (φ (φ' m) • f (g x))
state_after: no goals
tactic: rw [k]
state_before: M' : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
φ : M → N
ψ : N → P
χ : M → P
X : Type u_5
inst✝⁵ : SMul M X
inst✝⁴ : SMul M' X
Y : Type u_6
inst✝³ : SMul N Y
inst✝² : SMul M' Y
Z : Type u_7
inst✝¹ : SMul P Z
φ' : N → M
Y₁ : Type u_8
inst✝ : SMul M Y₁
f : X →ₑ[φ] Y
g : Y → X
k : Function.RightInverse φ' φ
h₁ : Function.LeftInverse g ⇑f
h₂ : Function.RightInverse g ⇑f
m : N
x : Y
⊢ g (φ (φ' m) • f (g x)) = g (f (φ' m • g x))
state_after: no goals
tactic: rw [map_smulₛₗ]
state_before: M' : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
φ : M → N
ψ : N → P
χ : M → P
X : Type u_5
inst✝⁵ : SMul M X
inst✝⁴ : SMul M' X
Y : Type u_6
inst✝³ : SMul N Y
inst✝² : SMul M' Y
Z : Type u_7
inst✝¹ : SMul P Z
φ' : N → M
Y₁ : Type u_8
inst✝ : SMul M Y₁
f : X →ₑ[φ] Y
g : Y → X
k : Function.RightInverse φ' φ
h₁ : Function.LeftInverse g ⇑f
h₂ : Function.RightInverse g ⇑f
m : N
x : Y
⊢ g (f (φ' m • g x)) = φ' m • g x
state_after: no goals
tactic: rw [h₁]
Theorem: EuclideanGeometry.right_ne_of_oangle_sign_eq_neg_one
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : (∡ p₁ p₂ p₃).sign = -1
⊢ -1 ≠ 0
state_after: no goals
tactic: decide
Theorem: EllipticCurve.map_toWeierstrassCurve
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑((Units.map ↑φ) E.Δ') = (E.map φ).Δ
state_after: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑φ E.Δ = φ E.Δ
tactic: simp only [Units.coe_map, coe_Δ', E.map_Δ]
state_before: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑φ E.Δ = φ E.Δ
state_after: no goals
tactic: rfl
Theorem: Finsupp.equivFunOnFinite_single
File: Mathlib/Data/Finsupp/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
a a' : α
b : M
inst✝¹ : DecidableEq α
inst✝ : Finite α
x : α
m : M
⊢ equivFunOnFinite (single x m) = Pi.single x m
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
a a' : α
b : M
inst✝¹ : DecidableEq α
inst✝ : Finite α
x : α
m : M
x✝ : α
⊢ equivFunOnFinite (single x m) x✝ = Pi.single x m x✝
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
a a' : α
b : M
inst✝¹ : DecidableEq α
inst✝ : Finite α
x : α
m : M
x✝ : α
⊢ equivFunOnFinite (single x m) x✝ = Pi.single x m x✝
state_after: no goals
tactic: simp [Finsupp.single_eq_pi_single, equivFunOnFinite]
Theorem: CharacterModule.dual_surjective_iff_injective
File: Mathlib/Algebra/Module/CharacterModule.lean

Proof steps:
state_before: R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
f : A →ₗ[R] A'
h : Function.Surjective ⇑(dual f)
a : A
h0 : f a = 0
c : CharacterModule A
⊢ c a = 0
state_after: case intro
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
f : A →ₗ[R] A'
h : Function.Surjective ⇑(dual f)
a : A
h0 : f a = 0
c : CharacterModule A'
⊢ ((dual f) c) a = 0
tactic: obtain ⟨c, rfl⟩ := h c
state_before: case intro
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
f : A →ₗ[R] A'
h : Function.Surjective ⇑(dual f)
a : A
h0 : f a = 0
c : CharacterModule A'
⊢ ((dual f) c) a = 0
state_after: no goals
tactic: exact congr(c $h0).trans c.map_zero
Theorem: Primrec.fin_succ
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
⊢ Primrec fun a => ↑a.succ
state_after: no goals
tactic: simp [succ.comp fin_val]
Theorem: MeasureTheory.IsStoppingTime.add_const
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : AddGroup ι
inst✝² : Preorder ι
inst✝¹ : CovariantClass ι ι (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
f : Filtration ι m
τ : Ω → ι
hτ : IsStoppingTime f τ
i : ι
hi : 0 ≤ i
⊢ IsStoppingTime f fun ω => τ ω + i
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : AddGroup ι
inst✝² : Preorder ι
inst✝¹ : CovariantClass ι ι (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
f : Filtration ι m
τ : Ω → ι
hτ : IsStoppingTime f τ
i : ι
hi : 0 ≤ i
j : ι
⊢ MeasurableSet {ω | (fun ω => τ ω + i) ω ≤ j}
tactic: intro j
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : AddGroup ι
inst✝² : Preorder ι
inst✝¹ : CovariantClass ι ι (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
f : Filtration ι m
τ : Ω → ι
hτ : IsStoppingTime f τ
i : ι
hi : 0 ≤ i
j : ι
⊢ MeasurableSet {ω | (fun ω => τ ω + i) ω ≤ j}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : AddGroup ι
inst✝² : Preorder ι
inst✝¹ : CovariantClass ι ι (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
f : Filtration ι m
τ : Ω → ι
hτ : IsStoppingTime f τ
i : ι
hi : 0 ≤ i
j : ι
⊢ MeasurableSet {ω | τ ω ≤ j - i}
tactic: simp_rw [← le_sub_iff_add_le]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : AddGroup ι
inst✝² : Preorder ι
inst✝¹ : CovariantClass ι ι (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
f : Filtration ι m
τ : Ω → ι
hτ : IsStoppingTime f τ
i : ι
hi : 0 ≤ i
j : ι
⊢ MeasurableSet {ω | τ ω ≤ j - i}
state_after: no goals
tactic: exact f.mono (sub_le_self j hi) _ (hτ (j - i))
Theorem: Num.bit_to_nat
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
b : Bool
n : Num
⊢ ↑(bit b n) = Nat.bit b ↑n
state_after: no goals
tactic: cases b <;> cases n <;> simp [bit, two_mul] <;> rfl
Theorem: IsAntichain.max_minimals
File: Mathlib/Order/Minimal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b x : α
ht : IsAntichain r t
h : minimals r s ⊆ t
hs : ∀ ⦃a : α⦄, a ∈ t → ∃ b ∈ minimals r s, r a b
⊢ minimals r s = t
state_after: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b x : α
ht : IsAntichain r t
h : minimals r s ⊆ t
hs : ∀ ⦃a : α⦄, a ∈ t → ∃ b ∈ minimals r s, r a b
a : α
ha : a ∈ t
⊢ a ∈ minimals r s
tactic: refine h.antisymm fun a ha => ?_
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b x : α
ht : IsAntichain r t
h : minimals r s ⊆ t
hs : ∀ ⦃a : α⦄, a ∈ t → ∃ b ∈ minimals r s, r a b
a : α
ha : a ∈ t
⊢ a ∈ minimals r s
state_after: case intro.intro
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b✝ x : α
ht : IsAntichain r t
h : minimals r s ⊆ t
hs : ∀ ⦃a : α⦄, a ∈ t → ∃ b ∈ minimals r s, r a b
a : α
ha : a ∈ t
b : α
hb : b ∈ minimals r s
hr : r a b
⊢ a ∈ minimals r s
tactic: obtain ⟨b, hb, hr⟩ := hs ha
state_before: case intro.intro
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b✝ x : α
ht : IsAntichain r t
h : minimals r s ⊆ t
hs : ∀ ⦃a : α⦄, a ∈ t → ∃ b ∈ minimals r s, r a b
a : α
ha : a ∈ t
b : α
hb : b ∈ minimals r s
hr : r a b
⊢ a ∈ minimals r s
state_after: no goals
tactic: rwa [of_not_not fun hab => ht ha (h hb) hab hr]
Theorem: PolyEquivTensor.toFunLinear_one_tmul_one
File: Mathlib/RingTheory/PolynomialAlgebra.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
⊢ (toFunLinear R A) (1 ⊗ₜ[R] 1) = 1
state_after: no goals
tactic: rw [toFunLinear_tmul_apply, toFunBilinear_apply_apply, Polynomial.aeval_one, one_smul]
Theorem: Polynomial.Chebyshev.U_eq
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℤ
⊢ U R n = 2 * X * U R (n - 1) - U R (n - 2)
state_after: no goals
tactic: linear_combination (norm := ring_nf) U_add_two R (n - 2)
Theorem: ENNReal.continuous_truncateToReal
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
⊢ Continuous t.truncateToReal
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
⊢ ∀ (x : ℝ≥0∞), ((fun p => min p.1 p.2) ∘ fun y => (t, y)) x ∈ {a | a ≠ ⊤}
tactic: apply continuousOn_toReal.comp_continuous (continuous_min.comp (Continuous.Prod.mk t))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
⊢ ∀ (x : ℝ≥0∞), ((fun p => min p.1 p.2) ∘ fun y => (t, y)) x ∈ {a | a ≠ ⊤}
state_after: no goals
tactic: simp [t_ne_top]
Theorem: CategoryTheory.Quotient.functor_map_eq_iff
File: Mathlib/CategoryTheory/Quotient.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ (functor r).map f = (functor r).map f' ↔ r f f'
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ Quot.mk (CompClosure r) f = Quot.mk (CompClosure r) f' ↔ r f f'
tactic: dsimp [functor]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ Quot.mk (CompClosure r) f = Quot.mk (CompClosure r) f' ↔ r f f'
state_after: case h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ _root_.Equivalence (CompClosure r)
tactic: rw [Equivalence.quot_mk_eq_iff, compClosure_eq_self r]
state_before: case h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ _root_.Equivalence (CompClosure r)
state_after: no goals
tactic: simpa only [compClosure_eq_self r] using h.equivalence
Theorem: AddSubmonoid.LocalizationMap.lift_eq
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
⊢ (f.lift hg) (f.toMap x) = g x
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
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
⊢ g (f.sec (f.toMap x)).1 = g (↑(f.sec (f.toMap x)).2 * x)
tactic: rw [lift_spec, ← g.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
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
⊢ g (f.sec (f.toMap x)).1 = g (↑(f.sec (f.toMap x)).2 * x)
state_after: no goals
tactic: exact f.eq_of_eq hg (by rw [sec_spec', f.toMap.map_mul])
Theorem: inf_sup_symmDiff
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ⊓ b ⊔ a ∆ b = a ⊔ b
state_after: no goals
tactic: rw [sup_comm, symmDiff_sup_inf]
Theorem: Multiset.prod_map_add
File: Mathlib/Algebra/BigOperators/Ring/Multiset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommSemiring α
s : Multiset ι
f g : ι → α
⊢ (map (fun i => f i + g i) s).prod = (map (fun p => (map f p.1).prod * (map g p.2).prod) s.antidiagonal).sum
state_after: case refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommSemiring α
s : Multiset ι
f g : ι → α
⊢ (map (fun i => f i + g i) 0).prod = (map (fun p => (map f p.1).prod * (map g p.2).prod) (antidiagonal 0)).sum

case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommSemiring α
s✝ : Multiset ι
f g : ι → α
a : ι
s : Multiset ι
ih : (map (fun i => f i + g i) s).prod = (map (fun p => (map f p.1).prod * (map g p.2).prod) s.antidiagonal).sum
⊢ (map (fun i => f i + g i) (a ::ₘ s)).prod =
    (map (fun p => (map f p.1).prod * (map g p.2).prod) (a ::ₘ s).antidiagonal).sum
tactic: refine s.induction_on ?_ fun a s ih ↦ ?_
Theorem: multiplicity.pow'
File: Mathlib/RingTheory/Multiplicity.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
ha : Finite p a
⊢ ∀ {k : ℕ}, (multiplicity p (a ^ k)).get ⋯ = k * (multiplicity p a).get ha
state_after: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
ha : Finite p a
k : ℕ
⊢ (multiplicity p (a ^ k)).get ⋯ = k * (multiplicity p a).get ha
tactic: intro k
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
ha : Finite p a
k : ℕ
⊢ (multiplicity p (a ^ k)).get ⋯ = k * (multiplicity p a).get ha
state_after: case zero
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
ha : Finite p a
⊢ (multiplicity p (a ^ 0)).get ⋯ = 0 * (multiplicity p a).get ha

case succ
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
ha : Finite p a
k : ℕ
hk : (multiplicity p (a ^ k)).get ⋯ = k * (multiplicity p a).get ha
⊢ (multiplicity p (a ^ (k + 1))).get ⋯ = (k + 1) * (multiplicity p a).get ha
tactic: induction' k with k hk