ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ENNReal.eventuallyEq_of_toReal_eventuallyEq
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
⊢ f =ᶠ[l] g
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
a✝¹ : α
hfx : f a✝¹ ≠ ⊤
hgx : g a✝¹ ≠ ⊤
a✝ : (f a✝¹).toReal = (g a✝¹).toReal
⊢ f a✝¹ = g a✝¹
tactic: filter_upwards [hfi, hgi, hfg] with _ hfx hgx _
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
a✝¹ : α
hfx : f a✝¹ ≠ ⊤
hgx : g a✝¹ ≠ ⊤
a✝ : (f a✝¹).toReal = (g a✝¹).toReal
⊢ f a✝¹ = g a✝¹
state_after: no goals
tactic: rwa [← ENNReal.toReal_eq_toReal hfx hgx]
Theorem: RingHom.map_fieldRange
File: Mathlib/Algebra/Field/Subfield.lean

Proof steps:
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
g : L →+* M
f : K →+* L
⊢ Subfield.map g f.fieldRange = (g.comp f).fieldRange
state_after: no goals
tactic: simpa only [fieldRange_eq_map] using (⊤ : Subfield K).map_map g f
Theorem: Set.nonempty_iInter
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : ι → Set α
⊢ (⋂ i, f i).Nonempty ↔ ∃ x, ∀ (i : ι), x ∈ f i
state_after: no goals
tactic: simp [nonempty_iff_ne_empty, iInter_eq_empty_iff]
Theorem: Bitraversable.tsnd_comp_tfst
File: Mathlib/Control/Bitraversable/Lemmas.lean

Proof steps:
state_before: t : Type u → Type u → Type u
inst✝⁵ : Bitraversable t
β : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : LawfulBitraversable t
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α₀ α₁ β₀ β₁ : Type u
f : α₀ → F α₁
f' : β₀ → G β₁
x : t α₀ β₀
⊢ Comp.mk (tsnd f' <$> tfst f x) = bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x
state_after: t : Type u → Type u → Type u
inst✝⁵ : Bitraversable t
β : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : LawfulBitraversable t
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α₀ α₁ β₀ β₁ : Type u
f : α₀ → F α₁
f' : β₀ → G β₁
x : t α₀ β₀
⊢ bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ map f' ∘ pure) x =
    bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x
tactic: rw [← comp_bitraverse]
state_before: t : Type u → Type u → Type u
inst✝⁵ : Bitraversable t
β : Type u
F G : Type u → Type u
inst✝⁴ : Applicative F
inst✝³ : Applicative G
inst✝² : LawfulBitraversable t
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α₀ α₁ β₀ β₁ : Type u
f : α₀ → F α₁
f' : β₀ → G β₁
x : t α₀ β₀
⊢ bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ map f' ∘ pure) x =
    bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x
state_after: no goals
tactic: simp only [Function.comp, map_pure]
Theorem: List.Nodup.length_le_card
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
l : List α
h : l.Nodup
⊢ l.length ≤ Fintype.card α
state_after: no goals
tactic: classical exact List.toFinset_card_of_nodup h ▸ l.toFinset.card_le_univ
Theorem: CategoryTheory.Idempotents.KaroubiHomologicalComplexEquivalence.Inverse.obj_X_d
File: Mathlib/CategoryTheory/Idempotents/HomologicalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.10116, u_1} C
inst✝ : Preadditive C
ι : Type u_2
c : ComplexShape ι
K : HomologicalComplex (Karoubi C) c
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
⊢ (fun i j => (K.d i j).f) i j ≫ (fun i j => (K.d i j).f) j k = 0
state_after: no goals
tactic: simpa only [comp_f] using hom_eq_zero_iff.mp (K.d_comp_d i j k)
Theorem: generatePiSystem_mono
File: Mathlib/MeasureTheory/PiSystem.lean

Proof steps:
state_before: α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t : Set α
ht : t ∈ generatePiSystem S
⊢ t ∈ generatePiSystem T
state_after: case base
α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t s : Set α
h_s : s ∈ S
⊢ s ∈ generatePiSystem T

case inter
α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t s u : Set α
h_s✝ : generatePiSystem S s
h_t✝ : generatePiSystem S u
h_nonempty : (s ∩ u).Nonempty
h_s : s ∈ generatePiSystem T
h_u : u ∈ generatePiSystem T
⊢ s ∩ u ∈ generatePiSystem T
tactic: induction' ht with s h_s s u _ _ h_nonempty h_s h_u
Theorem: Ordinal.lift_inj
File: Mathlib/SetTheory/Ordinal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{v}
⊢ lift.{u, v} a = lift.{u, v} b ↔ a = b
state_after: no goals
tactic: simp only [le_antisymm_iff, lift_le]
Theorem: map_comap_subtype_coe
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 α
s : Set α
hs : MeasurableSet s
μ : Measure α
⊢ Measure.map Subtype.val (Measure.comap Subtype.val μ) = μ.restrict s
state_after: no goals
tactic: rw [(MeasurableEmbedding.subtype_coe hs).map_comap, Subtype.range_coe]
Theorem: String.extract.go₁_cons_addChar
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: c : Char
cs : List Char
b e : Pos
⊢ go₁ (c :: cs) 0 (b + c) (e + c) = go₁ cs 0 b e
state_after: c : Char
cs : List Char
b e : Pos
⊢ go₁ cs (0 + c) (b + c) (e + c) = go₁ cs 0 b e
tactic: simp only [go₁, Pos.ext_iff, Pos.byteIdx_zero, pos_add_char, Nat.ne_of_lt add_csize_pos,
    ↓reduceIte]
state_before: c : Char
cs : List Char
b e : Pos
⊢ go₁ cs (0 + c) (b + c) (e + c) = go₁ cs 0 b e
state_after: no goals
tactic: apply go₁_add_right_cancel
Theorem: CategoryTheory.Limits.MonoFactorisation.ofArrowIso_e
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y : C
f✝ : X ⟶ Y
f g : Arrow C
F : MonoFactorisation f.hom
sq : f ⟶ g
inst✝ : IsIso sq
⊢ (inv sq.left ≫ F.e) ≫ F.m ≫ sq.right = g.hom
state_after: no goals
tactic: simp only [fac_assoc, Arrow.w, IsIso.inv_comp_eq, Category.assoc]
Theorem: Module.End.ker_pow_le_ker_pow_finrank
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

Proof steps:
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
m : ℕ
⊢ LinearMap.ker (f ^ m) ≤ LinearMap.ker (f ^ finrank K V)
state_after: case pos
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
m : ℕ
h_cases : m < finrank K V
⊢ LinearMap.ker (f ^ m) ≤ LinearMap.ker (f ^ finrank K V)

case neg
K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
m : ℕ
h_cases : ¬m < finrank K V
⊢ LinearMap.ker (f ^ m) ≤ LinearMap.ker (f ^ finrank K V)
tactic: by_cases h_cases : m < finrank K V
Theorem: Real.infinite_rat_abs_sub_lt_one_div_den_sq_of_irrational
File: Mathlib/NumberTheory/DiophantineApproximation.lean

Proof steps:
state_before: ξ : ℝ
hξ : Irrational ξ
⊢ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Infinite
state_after: ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
⊢ False
tactic: refine Or.resolve_left (Set.finite_or_infinite _) fun h => ?_
state_before: ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
⊢ False
state_after: case intro.intro
ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
q : ℚ
left✝ : q ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}
hq : ∀ b ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}, |ξ - ↑q| ≤ |ξ - ↑b|
⊢ False
tactic: obtain ⟨q, _, hq⟩ :=
    exists_min_image {q : ℚ | |ξ - q| < 1 / (q.den : ℝ) ^ 2} (fun q => |ξ - q|) h
      ⟨⌊ξ⌋, by simp [abs_of_nonneg, Int.fract_lt_one]⟩
state_before: case intro.intro
ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
q : ℚ
left✝ : q ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}
hq : ∀ b ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}, |ξ - ↑q| ≤ |ξ - ↑b|
⊢ False
state_after: case intro.intro.intro.intro
ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
q : ℚ
left✝ : q ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}
hq : ∀ b ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}, |ξ - ↑q| ≤ |ξ - ↑b|
q' : ℚ
hmem : |ξ - ↑q'| < 1 / ↑q'.den ^ 2
hbetter : |ξ - ↑q'| < |ξ - ↑q|
⊢ False
tactic: obtain ⟨q', hmem, hbetter⟩ := exists_rat_abs_sub_lt_and_lt_of_irrational hξ q
state_before: case intro.intro.intro.intro
ξ : ℝ
hξ : Irrational ξ
h : {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}.Finite
q : ℚ
left✝ : q ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}
hq : ∀ b ∈ {q | |ξ - ↑q| < 1 / ↑q.den ^ 2}, |ξ - ↑q| ≤ |ξ - ↑b|
q' : ℚ
hmem : |ξ - ↑q'| < 1 / ↑q'.den ^ 2
hbetter : |ξ - ↑q'| < |ξ - ↑q|
⊢ False
state_after: no goals
tactic: exact lt_irrefl _ (lt_of_le_of_lt (hq q' hmem) hbetter)
Theorem: Function.Periodic.sub_eq'
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : AddCommGroup α
h : Periodic f c
⊢ f (c - x) = f (-x)
state_after: no goals
tactic: simpa only [sub_eq_neg_add] using h (-x)
Theorem: pow_eq_one_iff_of_ne_zero
File: Mathlib/Algebra/Order/Ring/Abs.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
inst✝ : LinearOrderedRing R
a b : R
n : ℕ
hn : n ≠ 0
⊢ a ^ n = 1 ↔ a = 1 ∨ a = -1 ∧ Even n
state_after: no goals
tactic: simp [← pow_eq_pow_iff_of_ne_zero hn]
Theorem: Cardinal.IsLimit.aleph0_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β : Type u
c : Cardinal.{u_1}
h : c.IsLimit
⊢ ℵ₀ ≤ c
state_after: α β : Type u
c : Cardinal.{u_1}
h : c.IsLimit
h' : c < ℵ₀
⊢ False
tactic: by_contra! h'
state_before: α β : Type u
c : Cardinal.{u_1}
h : c.IsLimit
h' : c < ℵ₀
⊢ False
state_after: case intro
α β : Type u
n : ℕ
h : (↑n).IsLimit
h' : ↑n < ℵ₀
⊢ False
tactic: rcases lt_aleph0.1 h' with ⟨n, rfl⟩
state_before: case intro
α β : Type u
n : ℕ
h : (↑n).IsLimit
h' : ↑n < ℵ₀
⊢ False
state_after: no goals
tactic: exact not_isLimit_natCast n h
Theorem: NNReal.sum_sqrt_mul_sqrt_le
File: Mathlib/Data/Real/Sqrt.lean

Proof steps:
state_before: α : Type u_1
inst✝ : TopologicalSpace α
f✝ : α → ℝ
s✝ : Set α
x : α
ι : Type u_2
s : Finset ι
f g : ι → ℝ≥0
⊢ ∑ i ∈ s, sqrt (f i) * sqrt (g i) ≤ sqrt (∑ i ∈ s, f i) * sqrt (∑ i ∈ s, g i)
state_after: no goals
tactic: simpa [*] using sum_mul_le_sqrt_mul_sqrt _ (fun x ↦ sqrt (f x)) (fun x ↦ sqrt (g x))
Theorem: zpow_one_add
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a✝ b c d : G
n✝ : ℤ
a : G
n : ℤ
⊢ a ^ (1 + n) = a * a ^ n
state_after: no goals
tactic: rw [zpow_add, zpow_one]
Theorem: CategoryTheory.ShortComplex.RightHomologyData.pOpcycles_comp_opcyclesIso_hom
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.RightHomologyData
inst✝ : S.HasRightHomology
⊢ S.pOpcycles ≫ h.opcyclesIso.hom = h.p
state_after: no goals
tactic: simp only [← h.p_comp_opcyclesIso_inv, assoc, Iso.inv_hom_id, comp_id]
Theorem: Module.End.mapsTo_iSup_genEigenspace_of_comm
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

Proof steps:
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ MapsTo ⇑g ↑(⨆ k, (f.genEigenspace μ) k) ↑(⨆ k, (f.genEigenspace μ) k)
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ ∀ ⦃x : M⦄, (∃ i, x ∈ (f.genEigenspace μ) i) → ∃ i, g x ∈ (f.genEigenspace μ) i
tactic: simp only [MapsTo, Submodule.coe_iSup_of_chain, mem_iUnion, SetLike.mem_coe]
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ ∀ ⦃x : M⦄, (∃ i, x ∈ (f.genEigenspace μ) i) → ∃ i, g x ∈ (f.genEigenspace μ) i
state_after: case intro
K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
x : M
k : ℕ
hk : x ∈ (f.genEigenspace μ) k
⊢ ∃ i, g x ∈ (f.genEigenspace μ) i
tactic: rintro x ⟨k, hk⟩
state_before: case intro
K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
x : M
k : ℕ
hk : x ∈ (f.genEigenspace μ) k
⊢ ∃ i, g x ∈ (f.genEigenspace μ) i
state_after: no goals
tactic: exact ⟨k, f.mapsTo_genEigenspace_of_comm h μ k hk⟩
Theorem: LeftOrdContinuous.comp
File: Mathlib/Order/OrdContinuous.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
g : β → γ
f : α → β
hg : LeftOrdContinuous g
hf : LeftOrdContinuous f
s : Set α
x : α
h : IsLUB s x
⊢ IsLUB (g ∘ f '' s) ((g ∘ f) x)
state_after: no goals
tactic: simpa only [image_image] using hg (hf h)
Theorem: OrthogonalFamily.inner_sum
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : _root_.RCLike 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
ι : Type u_4
G : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
l₁ l₂ : (i : ι) → G i
s : Finset ι
⊢ ⟪∑ i ∈ s, (V i) (l₁ i), ∑ j ∈ s, (V j) (l₂ j)⟫_𝕜 = ∑ i ∈ s, ⟪l₁ i, l₂ i⟫_𝕜
state_after: no goals
tactic: classical
  calc
    ⟪∑ i ∈ s, V i (l₁ i), ∑ j ∈ s, V j (l₂ j)⟫ = ∑ j ∈ s, ∑ i ∈ s, ⟪V i (l₁ i), V j (l₂ j)⟫ := by
      simp only [_root_.sum_inner, _root_.inner_sum]
    _ = ∑ j ∈ s, ∑ i ∈ s, ite (i = j) ⟪V i (l₁ i), V j (l₂ j)⟫ 0 := by
      congr with i
      congr with j
      apply hV.eq_ite
    _ = ∑ i ∈ s, ⟪l₁ i, l₂ i⟫ := by
      simp only [Finset.sum_ite_of_true, Finset.sum_ite_eq', LinearIsometry.inner_map_map,
        imp_self, imp_true_iff]
Theorem: Measurable.iff
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝ : MeasurableSpace α
p q : α → Prop
hp : Measurable p
hq : Measurable q
⊢ MeasurableSet {a | p a ↔ q a}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝ : MeasurableSpace α
p q : α → Prop
hp : Measurable p
hq : Measurable q
⊢ MeasurableSet {a | (p a → q a) ∧ (q a → p a)}
tactic: simp_rw [iff_iff_implies_and_implies]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝ : MeasurableSpace α
p q : α → Prop
hp : Measurable p
hq : Measurable q
⊢ MeasurableSet {a | (p a → q a) ∧ (q a → p a)}
state_after: no goals
tactic: exact hq.setOf.bihimp hp.setOf
Theorem: StarConvex.contractibleSpace
File: Mathlib/Analysis/Convex/Contractible.lean

Proof steps:
state_before: E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousAdd E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
h : StarConvex ℝ x s
hne : s.Nonempty
⊢ ContractibleSpace ↑s
state_after: case refine_1
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousAdd E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
h : StarConvex ℝ x s
hne : s.Nonempty
p : ↑unitInterval × ↑s
⊢ ↑p.1 • x + (1 - ↑p.1) • ↑p.2 ∈ s

case refine_2
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousAdd E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
h : StarConvex ℝ x s
hne : s.Nonempty
⊢ Continuous fun p => ⟨↑p.1 • x + (1 - ↑p.1) • ↑p.2, ⋯⟩

case refine_3
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousAdd E
inst✝ : ContinuousSMul ℝ E
s : Set E
x✝ : E
h : StarConvex ℝ x✝ s
hne : s.Nonempty
x : ↑s
⊢ { toFun := fun p => ⟨↑p.1 • x✝ + (1 - ↑p.1) • ↑p.2, ⋯⟩, continuous_toFun := ?refine_2 }.toFun (0, x) =
    (ContinuousMap.id ↑s) x

case refine_4
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousAdd E
inst✝ : ContinuousSMul ℝ E
s : Set E
x✝ : E
h : StarConvex ℝ x✝ s
hne : s.Nonempty
x : ↑s
⊢ { toFun := fun p => ⟨↑p.1 • x✝ + (1 - ↑p.1) • ↑p.2, ⋯⟩, continuous_toFun := ?refine_2 }.toFun (1, x) =
    (ContinuousMap.const ↑s ⟨x✝, ⋯⟩) x
tactic: refine
    (contractible_iff_id_nullhomotopic s).2
      ⟨⟨x, h.mem hne⟩,
        ⟨⟨⟨fun p => ⟨p.1.1 • x + (1 - p.1.1) • (p.2 : E), ?_⟩, ?_⟩, fun x => ?_, fun x => ?_⟩⟩⟩
Theorem: Equiv.Perm.toList_formPerm_nil
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x✝ x : α
⊢ [].formPerm.toList x = []
state_after: no goals
tactic: simp
Theorem: Module.Dual.isCompl_ker_of_disjoint_of_ne_bot
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: K : Type uK
inst✝⁵ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K V₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V₁
f : Dual K V₁
hf : f ≠ 0
p : Submodule K V₁
hpf : Disjoint (LinearMap.ker f) p
hp : p ≠ ⊥
⊢ IsCompl (LinearMap.ker f) p
state_after: K : Type uK
inst✝⁵ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K V₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V₁
f : Dual K V₁
hf : f ≠ 0
p : Submodule K V₁
hpf : Disjoint (LinearMap.ker f) p
hp : p ≠ ⊥
⊢ finrank K ↥⊤ ≤ finrank K ↥(LinearMap.ker f ⊔ p)
tactic: refine ⟨hpf, codisjoint_iff.mpr <| eq_of_le_of_finrank_le le_top ?_⟩
state_before: K : Type uK
inst✝⁵ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K V₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V₁
f : Dual K V₁
hf : f ≠ 0
p : Submodule K V₁
hpf : Disjoint (LinearMap.ker f) p
hp : p ≠ ⊥
⊢ finrank K ↥⊤ ≤ finrank K ↥(LinearMap.ker f ⊔ p)
state_after: K : Type uK
inst✝⁵ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K V₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V₁
f : Dual K V₁
hf : f ≠ 0
p : Submodule K V₁
hpf : Disjoint (LinearMap.ker f) p
hp : p ≠ ⊥
this : finrank K ↥(LinearMap.ker f ⊔ p) = finrank K ↥(LinearMap.ker f) + finrank K ↥p
⊢ finrank K ↥⊤ ≤ finrank K ↥(LinearMap.ker f ⊔ p)
tactic: have : finrank K ↑(LinearMap.ker f ⊔ p) = finrank K (LinearMap.ker f) + finrank K p := by
    simp [← Submodule.finrank_sup_add_finrank_inf_eq (LinearMap.ker f) p, hpf.eq_bot]
state_before: K : Type uK
inst✝⁵ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁴ : AddCommGroup V₁
inst✝³ : Module K V₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V₁
f : Dual K V₁
hf : f ≠ 0
p : Submodule K V₁
hpf : Disjoint (LinearMap.ker f) p
hp : p ≠ ⊥
this : finrank K ↥(LinearMap.ker f ⊔ p) = finrank K ↥(LinearMap.ker f) + finrank K ↥p
⊢ finrank K ↥⊤ ≤ finrank K ↥(LinearMap.ker f ⊔ p)
state_after: no goals
tactic: rwa [finrank_top, this, ← finrank_ker_add_one_of_ne_zero hf, add_le_add_iff_left,
    Submodule.one_le_finrank_iff]
Theorem: PartialHomeomorph.trans_transHomeomorph
File: Mathlib/Topology/PartialHomeomorph.lean

Proof steps:
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
e' : PartialHomeomorph Y Z
f'' : Z ≃ₜ Z'
⊢ (e.trans e').transHomeomorph f'' = e.trans (e'.transHomeomorph f'')
state_after: no goals
tactic: simp only [transHomeomorph_eq_trans, trans_assoc, Homeomorph.trans_toPartialHomeomorph]
Theorem: SimpleGraph.neighborSet_compl
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

Proof steps:
state_before: ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w : V
e : Sym2 V
G : SimpleGraph V
v : V
⊢ Gᶜ.neighborSet v = (G.neighborSet v)ᶜ \ {v}
state_after: case h
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
G : SimpleGraph V
v w : V
⊢ w ∈ Gᶜ.neighborSet v ↔ w ∈ (G.neighborSet v)ᶜ \ {v}
tactic: ext w
state_before: case h
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
G : SimpleGraph V
v w : V
⊢ w ∈ Gᶜ.neighborSet v ↔ w ∈ (G.neighborSet v)ᶜ \ {v}
state_after: no goals
tactic: simp [and_comm, eq_comm]
Theorem: List.get?_set_of_lt
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
a : α
m n : Nat
l : List α
h : n < l.length
⊢ (l.set m a).get? n = if m = n then some a else l.get? n
state_after: no goals
tactic: simp [getElem?_set', getElem?_eq_getElem h]
Theorem: Multiset.prod_X_add_C_coeff
File: Mathlib/RingTheory/Polynomial/Vieta.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ (map (fun r => X + C r) s).prod.coeff k = s.esymm (card s - k)
state_after: case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ s.esymm (card s - k) = (∑ j ∈ Finset.range (card s + 1), C (s.esymm j) * X ^ (card s - j)).coeff k
tactic: convert Polynomial.ext_iff.mp (prod_X_add_C_eq_sum_esymm s) k using 1
state_before: case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ s.esymm (card s - k) = (∑ j ∈ Finset.range (card s + 1), C (s.esymm j) * X ^ (card s - j)).coeff k
state_after: case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ s.esymm (card s - k) = ∑ x ∈ Finset.range (card s + 1), if k = card s - x then s.esymm x else 0
tactic: simp_rw [finset_sum_coeff, coeff_C_mul_X_pow]
state_before: case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ s.esymm (card s - k) = ∑ x ∈ Finset.range (card s + 1), if k = card s - x then s.esymm x else 0
state_after: case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ s.esymm (card s - k) = if k = card s - (card s - k) then s.esymm (card s - k) else 0

case h.e'_3
R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ ∀ b ∈ Finset.range (card s + 1), b ≠ card s - k → (if k = card s - b then s.esymm b else 0) = 0

R : Type u_1
inst✝ : CommSemiring R
s : Multiset R
k : ℕ
h : k ≤ card s
⊢ card s - k ∈ Finset.range (card s + 1)
tactic: rw [Finset.sum_eq_single_of_mem (Multiset.card s - k) _]
Theorem: List.count_attach
File: Mathlib/Data/List/Count.lean

Proof steps:
state_before: α : Type u_1
l : List α
inst✝ : DecidableEq α
a x✝¹ : { x // x ∈ l }
x✝ : x✝¹ ∈ l.attach
⊢ (x✝¹ == a) = true ↔ (↑x✝¹ == ↑a) = true
state_after: no goals
tactic: simp [Subtype.ext_iff]
Theorem: update_le_self_iff
File: Mathlib/Order/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
i : ι
a b : π i
⊢ update x i a ≤ x ↔ a ≤ x i
state_after: no goals
tactic: simp [update_le_iff]
Theorem: EReal.add_top_iff_ne_bot
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: x : EReal
⊢ x + ⊤ = ⊤ ↔ x ≠ ⊥
state_after: no goals
tactic: rw [add_comm, top_add_iff_ne_bot]