ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Fin.comp_init
File: Mathlib/Data/Fin/Tuple/Basic.lean

Proof steps:
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ (last n)
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.castSucc
i : Fin n
y : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
β : Type u_2
g : α → β
q : Fin n.succ → α
⊢ g ∘ init q = init (g ∘ q)
state_after: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ (last n)
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.castSucc
i : Fin n
y : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
β : Type u_2
g : α → β
q : Fin n.succ → α
j : Fin n
⊢ (g ∘ init q) j = init (g ∘ q) j
tactic: ext j
state_before: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ (last n)
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.castSucc
i : Fin n
y : α✝ i.castSucc
z : α✝ (last n)
α : Type u_1
β : Type u_2
g : α → β
q : Fin n.succ → α
j : Fin n
⊢ (g ∘ init q) j = init (g ∘ q) j
state_after: no goals
tactic: simp [init]
Theorem: supClosed_singleton
File: Mathlib/Order/SupClosed.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : SemilatticeSup α
inst✝ : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f : ι → Set α
s t : Set α
a : α
⊢ SupClosed {a}
state_after: no goals
tactic: simp [SupClosed]
Theorem: Algebra.Generators.Hom.comp_id
File: Mathlib/RingTheory/Generators.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝²⁵ : CommRing R
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝²² : CommRing R'
inst✝²¹ : CommRing S'
inst✝²⁰ : Algebra R' S'
P' : Generators R' S'
inst✝¹⁹ : Algebra R R'
inst✝¹⁸ : Algebra S S'
inst✝¹⁷ : Algebra R S'
inst✝¹⁶ : IsScalarTower R R' S'
inst✝¹⁵ : IsScalarTower R S S'
R'' : Type ?u.355159
S'' : Type ?u.355162
inst✝¹⁴ : CommRing R''
inst✝¹³ : CommRing S''
inst✝¹² : Algebra R'' S''
P'' : Generators R'' S''
inst✝¹¹ : Algebra R R''
inst✝¹⁰ : Algebra S S''
inst✝⁹ : Algebra R S''
inst✝⁸ : IsScalarTower R R'' S''
inst✝⁷ : IsScalarTower R S S''
inst✝⁶ : Algebra R' R''
inst✝⁵ : Algebra S' S''
inst✝⁴ : Algebra R' S''
inst✝³ : IsScalarTower R' R'' S''
inst✝² : IsScalarTower R' S' S''
inst✝¹ : IsScalarTower R R' R''
inst✝ : IsScalarTower S S' S''
f : P.Hom P'
⊢ f.comp (Hom.id P) = f
state_after: case val.h.a
R : Type u
S : Type v
inst✝²⁵ : CommRing R
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝²² : CommRing R'
inst✝²¹ : CommRing S'
inst✝²⁰ : Algebra R' S'
P' : Generators R' S'
inst✝¹⁹ : Algebra R R'
inst✝¹⁸ : Algebra S S'
inst✝¹⁷ : Algebra R S'
inst✝¹⁶ : IsScalarTower R R' S'
inst✝¹⁵ : IsScalarTower R S S'
R'' : Type ?u.355159
S'' : Type ?u.355162
inst✝¹⁴ : CommRing R''
inst✝¹³ : CommRing S''
inst✝¹² : Algebra R'' S''
P'' : Generators R'' S''
inst✝¹¹ : Algebra R R''
inst✝¹⁰ : Algebra S S''
inst✝⁹ : Algebra R S''
inst✝⁸ : IsScalarTower R R'' S''
inst✝⁷ : IsScalarTower R S S''
inst✝⁶ : Algebra R' R''
inst✝⁵ : Algebra S' S''
inst✝⁴ : Algebra R' S''
inst✝³ : IsScalarTower R' R'' S''
inst✝² : IsScalarTower R' S' S''
inst✝¹ : IsScalarTower R R' R''
inst✝ : IsScalarTower S S' S''
f : P.Hom P'
x✝ : P.vars
m✝ : P'.vars →₀ ℕ
⊢ coeff m✝ ((f.comp (Hom.id P)).val x✝) = coeff m✝ (f.val x✝)
tactic: ext
state_before: case val.h.a
R : Type u
S : Type v
inst✝²⁵ : CommRing R
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝²² : CommRing R'
inst✝²¹ : CommRing S'
inst✝²⁰ : Algebra R' S'
P' : Generators R' S'
inst✝¹⁹ : Algebra R R'
inst✝¹⁸ : Algebra S S'
inst✝¹⁷ : Algebra R S'
inst✝¹⁶ : IsScalarTower R R' S'
inst✝¹⁵ : IsScalarTower R S S'
R'' : Type ?u.355159
S'' : Type ?u.355162
inst✝¹⁴ : CommRing R''
inst✝¹³ : CommRing S''
inst✝¹² : Algebra R'' S''
P'' : Generators R'' S''
inst✝¹¹ : Algebra R R''
inst✝¹⁰ : Algebra S S''
inst✝⁹ : Algebra R S''
inst✝⁸ : IsScalarTower R R'' S''
inst✝⁷ : IsScalarTower R S S''
inst✝⁶ : Algebra R' R''
inst✝⁵ : Algebra S' S''
inst✝⁴ : Algebra R' S''
inst✝³ : IsScalarTower R' R'' S''
inst✝² : IsScalarTower R' S' S''
inst✝¹ : IsScalarTower R R' R''
inst✝ : IsScalarTower S S' S''
f : P.Hom P'
x✝ : P.vars
m✝ : P'.vars →₀ ℕ
⊢ coeff m✝ ((f.comp (Hom.id P)).val x✝) = coeff m✝ (f.val x✝)
state_after: no goals
tactic: simp
Theorem: Nat.Ico_filter_modEq_card
File: Mathlib/Data/Int/CardIntervalMod.lean

Proof steps:
state_before: a b r : ℕ
hr : 0 < r
v : ℕ
⊢ ↑(filter (fun x => x ≡ v [MOD r]) (Ico a b)).card = max (⌈(↑b - ↑v) / ↑r⌉ - ⌈(↑a - ↑v) / ↑r⌉) 0
state_after: no goals
tactic: simp_rw [← Ico_filter_modEq_cast _ _ ▸ card_map _,
    Int.Ico_filter_modEq_card _ _ (cast_lt.mpr hr), Int.cast_natCast]
Theorem: IsSemiringHom.to_isAddMonoidHom
File: Mathlib/Deprecated/Ring.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
inst✝ : Semiring β
f : α → β
hf✝ : IsSemiringHom f
x y : α
hf : IsSemiringHom f
⊢ ∀ (x y : α), f (x + y) = f x + f y
state_after: no goals
tactic: apply @‹IsSemiringHom f›.map_add
Theorem: Nat.Prime.prod_divisors
File: Mathlib/NumberTheory/Divisors.lean

Proof steps:
state_before: n : ℕ
α : Type u_1
inst✝ : CommMonoid α
p : ℕ
f : ℕ → α
h : Prime p
⊢ ∏ x ∈ p.divisors, f x = f p * f 1
state_after: no goals
tactic: rw [← cons_self_properDivisors h.ne_zero, prod_cons, h.prod_properDivisors]
Theorem: AlgebraicTopology.DoldKan.Hσ_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ (Hσ q).f 0 = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ (nullHomotopicMap' (hσ' q)).f 0 = 0
tactic: unfold Hσ
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ (nullHomotopicMap' (hσ' q)).f 0 = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ hσ' q 0 1 ⋯ ≫ K[X].d 1 0 = 0
tactic: rw [nullHomotopicMap'_f_of_not_rel_left (c_mk 1 0 rfl) cs_down_0_not_rel_left]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ hσ' q 0 1 ⋯ ≫ K[X].d 1 0 = 0
state_after: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
⊢ hσ' 0 0 1 ⋯ ≫ K[X].d 1 0 = 0

case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ hσ' (q + 1) 0 1 ⋯ ≫ K[X].d 1 0 = 0
tactic: rcases q with (_|q)
Theorem: SpectrumRestricts.real_iff
File: Mathlib/Analysis/Normed/Algebra/Spectrum.lean

Proof steps:
state_before: 𝕜 : Type u_1
A✝ : Type u_2
A : Type u_3
inst✝¹ : Ring A
inst✝ : Algebra ℂ A
a : A
⊢ SpectrumRestricts a ⇑Complex.reCLM ↔ ∀ x ∈ spectrum ℂ a, x = ↑x.re
state_after: case refine_1
𝕜 : Type u_1
A✝ : Type u_2
A : Type u_3
inst✝¹ : Ring A
inst✝ : Algebra ℂ A
a : A
h : SpectrumRestricts a ⇑Complex.reCLM
x : ℂ
hx : x ∈ spectrum ℂ a
⊢ x = ↑x.re

case refine_2
𝕜 : Type u_1
A✝ : Type u_2
A : Type u_3
inst✝¹ : Ring A
inst✝ : Algebra ℂ A
a : A
h : ∀ x ∈ spectrum ℂ a, x = ↑x.re
⊢ SpectrumRestricts a ⇑Complex.reCLM
tactic: refine ⟨fun h x hx ↦ ?_, fun h ↦ ?_⟩
Theorem: mem_list_primes_of_dvd_prod
File: Mathlib/Data/List/Prime.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : Unique Mˣ
p : M
hp : Prime p
L : List M
hL : ∀ q ∈ L, Prime q
hpL : p ∣ L.prod
⊢ p ∈ L
state_after: case intro.intro
M : Type u_1
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : Unique Mˣ
p : M
hp : Prime p
L : List M
hL : ∀ q ∈ L, Prime q
hpL : p ∣ L.prod
x : M
hx1 : x ∈ L
hx2 : p ∣ x
⊢ p ∈ L
tactic: obtain ⟨x, hx1, hx2⟩ := hp.dvd_prod_iff.mp hpL
state_before: case intro.intro
M : Type u_1
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : Unique Mˣ
p : M
hp : Prime p
L : List M
hL : ∀ q ∈ L, Prime q
hpL : p ∣ L.prod
x : M
hx1 : x ∈ L
hx2 : p ∣ x
⊢ p ∈ L
state_after: no goals
tactic: rwa [(prime_dvd_prime_iff_eq hp (hL x hx1)).mp hx2]
Theorem: closure_eq_compl_interior_compl
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ closure s = (interior sᶜ)ᶜ
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ ⋂₀ {t | IsClosed t ∧ s ⊆ t} = ⋂₀ {s_1 | IsOpen s_1ᶜ ∧ s_1ᶜ ⊆ sᶜ}
tactic: rw [interior, closure, compl_sUnion, compl_image_set_of]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ ⋂₀ {t | IsClosed t ∧ s ⊆ t} = ⋂₀ {s_1 | IsOpen s_1ᶜ ∧ s_1ᶜ ⊆ sᶜ}
state_after: no goals
tactic: simp only [compl_subset_compl, isOpen_compl_iff]
Theorem: _private.Mathlib.NumberTheory.ModularForms.SlashActions.0.ModularForm.slash_one
File: Mathlib/NumberTheory/ModularForms/SlashActions.lean

Proof steps:
state_before: Γ : Subgroup SL(2, ℤ)
k✝ : ℤ
f✝ : ℍ → ℂ
k : ℤ
f : ℍ → ℂ
⊢ ∀ (x : ℍ), (f ∣[k]1) x = f x
state_after: no goals
tactic: simp [slash, denom]
Theorem: Finset.mulEnergy_eq_sum_sq
File: Mathlib/Combinatorics/Additive/Energy.lean

Proof steps:
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ Eₘ[s, t] =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
state_after: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ ∑ a ∈ s * t,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2 =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
tactic: rw [mulEnergy_eq_sum_sq']
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Mul α
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
inst✝ : Fintype α
s t : Finset α
⊢ ∑ a ∈ s * t,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2 =
    ∑ a : α,
      (filter
            (fun x =>
              match x with
              | (x, y) => x * y = a)
            (s ×ˢ t)).card ^
        2
state_after: no goals
tactic: exact Fintype.sum_subset $ by aesop (add simp [filter_eq_empty_iff, mul_mem_mul])
Theorem: Function.updateFinset_singleton
File: Mathlib/Data/Finset/Update.lean

Proof steps:
state_before: ι : Type u_1
π : ι → Sort u_2
x : (i : ι) → π i
inst✝ : DecidableEq ι
i : ι
y : (i_1 : { x // x ∈ {i} }) → π ↑i_1
⊢ updateFinset x {i} y = update x i (y ⟨i, ⋯⟩)
state_after: case h
ι : Type u_1
π : ι → Sort u_2
x : (i : ι) → π i
inst✝ : DecidableEq ι
i : ι
y : (i_1 : { x // x ∈ {i} }) → π ↑i_1
j : ι
⊢ updateFinset x {i} y j = update x i (y ⟨i, ⋯⟩) j
tactic: congr with j
state_before: case h
ι : Type u_1
π : ι → Sort u_2
x : (i : ι) → π i
inst✝ : DecidableEq ι
i : ι
y : (i_1 : { x // x ∈ {i} }) → π ↑i_1
j : ι
⊢ updateFinset x {i} y j = update x i (y ⟨i, ⋯⟩) j
state_after: case pos
ι : Type u_1
π : ι → Sort u_2
x : (i : ι) → π i
inst✝ : DecidableEq ι
i : ι
y : (i_1 : { x // x ∈ {i} }) → π ↑i_1
j : ι
hj : j = i
⊢ updateFinset x {i} y j = update x i (y ⟨i, ⋯⟩) j

case neg
ι : Type u_1
π : ι → Sort u_2
x : (i : ι) → π i
inst✝ : DecidableEq ι
i : ι
y : (i_1 : { x // x ∈ {i} }) → π ↑i_1
j : ι
hj : ¬j = i
⊢ updateFinset x {i} y j = update x i (y ⟨i, ⋯⟩) j
tactic: by_cases hj : j = i
Theorem: Set.injOn_iff_pairwise_ne
File: Mathlib/Data/Set/Pairwise/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
f g : ι → α
s✝ t u : Set α
a b : α
s : Set ι
⊢ InjOn f s ↔ s.Pairwise fun x x_1 => f x ≠ f x_1
state_after: no goals
tactic: simp only [InjOn, Set.Pairwise, not_imp_not]
Theorem: ForInStep.bindList_append
File: .lake/packages/batteries/Batteries/Control/ForInStep/Lemmas.lean

Proof steps:
state_before: m : Type u_1 → Type u_2
α : Type u_3
β : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → β → m (ForInStep β)
s : ForInStep β
l₁ l₂ : List α
⊢ bindList f (l₁ ++ l₂) s = do
    let x ← bindList f l₁ s
    bindList f l₂ x
state_after: no goals
tactic: induction l₁ generalizing s <;> simp [*]
Theorem: AnalyticOn.eqOn_of_preconnected_of_eventuallyEq
File: Mathlib/Analysis/Analytic/Uniqueness.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f g : E → F
U : Set E
hf : AnalyticOn 𝕜 f U
hg : AnalyticOn 𝕜 g U
hU : IsPreconnected U
z₀ : E
h₀ : z₀ ∈ U
hfg : f =ᶠ[𝓝 z₀] g
⊢ EqOn f g U
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f g : E → F
U : Set E
hf : AnalyticOn 𝕜 f U
hg : AnalyticOn 𝕜 g U
hU : IsPreconnected U
z₀ : E
h₀ : z₀ ∈ U
hfg : f =ᶠ[𝓝 z₀] g
hfg' : f - g =ᶠ[𝓝 z₀] 0
⊢ EqOn f g U
tactic: have hfg' : f - g =ᶠ[𝓝 z₀] 0 := hfg.mono fun z h => by simp [h]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f g : E → F
U : Set E
hf : AnalyticOn 𝕜 f U
hg : AnalyticOn 𝕜 g U
hU : IsPreconnected U
z₀ : E
h₀ : z₀ ∈ U
hfg : f =ᶠ[𝓝 z₀] g
hfg' : f - g =ᶠ[𝓝 z₀] 0
⊢ EqOn f g U
state_after: no goals
tactic: simpa [sub_eq_zero] using fun z hz =>
    (hf.sub hg).eqOn_zero_of_preconnected_of_eventuallyEq_zero hU h₀ hfg' hz
Theorem: CategoryTheory.PreGaloisCategory.isGalois_iff_pretransitive
File: Mathlib/CategoryTheory/Galois/GaloisObjects.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : GaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X : C
inst✝ : IsConnected X
⊢ IsGalois X ↔ MulAction.IsPretransitive (Aut X) ↑(F.obj X)
state_after: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : GaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X : C
inst✝ : IsConnected X
⊢ Nonempty (Unique (MulAction.orbitRel.Quotient (Aut X) ↑(F.obj X))) ↔ MulAction.IsPretransitive (Aut X) ↑(F.obj X)
tactic: rw [isGalois_iff_aux, Equiv.nonempty_congr <| quotientByAutTerminalEquivUniqueQuotient F X]
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : GaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X : C
inst✝ : IsConnected X
⊢ Nonempty (Unique (MulAction.orbitRel.Quotient (Aut X) ↑(F.obj X))) ↔ MulAction.IsPretransitive (Aut X) ↑(F.obj X)
state_after: no goals
tactic: exact (MulAction.pretransitive_iff_unique_quotient_of_nonempty (Aut X) (F.obj X)).symm
Theorem: Set.Infinite.meas_eq_top
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : MeasurableSingletonClass α
s : Set α
hs : s.Infinite
h' : ∃ ε, ε ≠ 0 ∧ ∀ x ∈ s, ε ≤ μ {x}
ε : ℝ≥0∞
hne✝ : ε ≠ 0
hε : ∀ x ∈ s, ε ≤ μ {x}
this : Infinite ↑s
x y : ↑s
hne : x ≠ y
⊢ (Disjoint on fun x => {↑x}) x y
state_after: no goals
tactic: simpa [Subtype.val_inj]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : MeasurableSingletonClass α
s : Set α
hs : s.Infinite
h' : ∃ ε, ε ≠ 0 ∧ ∀ x ∈ s, ε ≤ μ {x}
ε : ℝ≥0∞
hne : ε ≠ 0
hε : ∀ x ∈ s, ε ≤ μ {x}
this : Infinite ↑s
⊢ μ (⋃ x, {↑x}) = μ s
state_after: no goals
tactic: simp
Theorem: Filter.disjoint_iff
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g✝ : Filter α
s t : Set α
f g : Filter α
⊢ Disjoint f g ↔ ∃ s ∈ f, ∃ t ∈ g, Disjoint s t
state_after: no goals
tactic: simp only [disjoint_iff, ← empty_mem_iff_bot, mem_inf_iff, inf_eq_inter, bot_eq_empty,
    @eq_comm _ ∅]
Theorem: FirstOrder.Language.Equiv.realize_sentence
File: Mathlib/ModelTheory/Semantics.lean

Proof steps:
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
g : M ≃[L] N
φ : L.Sentence
⊢ M ⊨ φ ↔ N ⊨ φ
state_after: no goals
tactic: rw [Sentence.Realize, Sentence.Realize, ← g.realize_formula, Unique.eq_default (g ∘ default)]
Theorem: List.modifyNthTail_modifyNthTail_le
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
m n : ℕ
l : List α
h : n ≤ m
⊢ modifyNthTail g m (modifyNthTail f n l) = modifyNthTail (fun l => modifyNthTail g (m - n) (f l)) n l
state_after: case intro
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
n : ℕ
l : List α
m : ℕ
h : n ≤ n + m
⊢ modifyNthTail g (n + m) (modifyNthTail f n l) = modifyNthTail (fun l => modifyNthTail g (n + m - n) (f l)) n l
tactic: rcases Nat.exists_eq_add_of_le h with ⟨m, rfl⟩
state_before: case intro
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
n : ℕ
l : List α
m : ℕ
h : n ≤ n + m
⊢ modifyNthTail g (n + m) (modifyNthTail f n l) = modifyNthTail (fun l => modifyNthTail g (n + m - n) (f l)) n l
state_after: no goals
tactic: rw [Nat.add_comm, modifyNthTail_modifyNthTail, Nat.add_sub_cancel]
Theorem: Basis.toMatrix_unitsSMul
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i : ι
j : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
⊢ e.toMatrix ⇑(e.unitsSMul w) = Matrix.diagonal (Units.val ∘ w)
state_after: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
⊢ e.toMatrix (⇑(e.unitsSMul w)) i j = Matrix.diagonal (Units.val ∘ w) i j
tactic: ext i j
state_before: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
⊢ e.toMatrix (⇑(e.unitsSMul w)) i j = Matrix.diagonal (Units.val ∘ w) i j
state_after: case pos
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
h : i = j
⊢ e.toMatrix (⇑(e.unitsSMul w)) i j = Matrix.diagonal (Units.val ∘ w) i j

case neg
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
h : ¬i = j
⊢ e.toMatrix (⇑(e.unitsSMul w)) i j = Matrix.diagonal (Units.val ∘ w) i j
tactic: by_cases h : i = j
Theorem: CochainComplex.HomComplex.Cochain.shift_units_smul
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : Rˣ
⊢ (x • γ).shift a = x • γ.shift a
state_after: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : Rˣ
p q : ℤ
hpq : p + n = q
⊢ ((x • γ).shift a).v p q hpq = (x • γ.shift a).v p q hpq
tactic: ext p q hpq
state_before: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : Rˣ
p q : ℤ
hpq : p + n = q
⊢ ((x • γ).shift a).v p q hpq = (x • γ.shift a).v p q hpq
state_after: no goals
tactic: simp [shift_v']
Theorem: EuclideanDomain.div_self
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

Proof steps:
state_before: R : Type u
inst✝ : EuclideanDomain R
a : R
a0 : a ≠ 0
⊢ a / a = 1
state_after: no goals
tactic: simpa only [one_mul] using mul_div_cancel_right₀ 1 a0
Theorem: DualNumber.commute_eps_left
File: Mathlib/Algebra/DualNumber.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Semiring R
x : R[ε]
⊢ Commute ε x
state_after: no goals
tactic: ext <;> simp
Theorem: Profinite.NobelingProof.GoodProducts.union_succ
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

Proof steps:
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
⊢ GoodProducts C = GoodProducts (π C fun x => ord I x < o) ∪ MaxProducts C ho
state_after: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
⊢ l ∈ GoodProducts C ↔ l ∈ GoodProducts (π C fun x => ord I x < o) ∪ MaxProducts C ho
tactic: ext l
state_before: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
⊢ l ∈ GoodProducts C ↔ l ∈ GoodProducts (π C fun x => ord I x < o) ∪ MaxProducts C ho
state_after: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
⊢ Products.isGood C l ↔ Products.isGood (π C fun x => ord I x < o) l ∨ Products.isGood C l ∧ term I ho ∈ ↑l
tactic: simp only [GoodProducts, MaxProducts, Set.mem_union, Set.mem_setOf_eq]
state_before: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
⊢ Products.isGood C l ↔ Products.isGood (π C fun x => ord I x < o) l ∨ Products.isGood C l ∧ term I ho ∈ ↑l
state_after: case h.refine_1
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
h : Products.isGood C l
⊢ Products.isGood (π C fun x => ord I x < o) l ∨ Products.isGood C l ∧ term I ho ∈ ↑l

case h.refine_2
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
l : Products I
h : Products.isGood (π C fun x => ord I x < o) l ∨ Products.isGood C l ∧ term I ho ∈ ↑l
⊢ Products.isGood C l
tactic: refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩