ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Multiset.rel_refl_of_refl_on
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r✝ : α → β → Prop
p : γ → δ → Prop
m : Multiset α
r : α → α → Prop
⊢ (∀ x ∈ m, r x x) → Rel r m m
state_after: case refine_1
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r✝ : α → β → Prop
p : γ → δ → Prop
m : Multiset α
r : α → α → Prop
⊢ (∀ x ∈ 0, r x x) → Rel r 0 0

case refine_2
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r✝ : α → β → Prop
p : γ → δ → Prop
m : Multiset α
r : α → α → Prop
⊢ ∀ (a : α) (s : Multiset α), ((∀ x ∈ s, r x x) → Rel r s s) → (∀ x ∈ a ::ₘ s, r x x) → Rel r (a ::ₘ s) (a ::ₘ s)
tactic: refine m.induction_on ?_ ?_
Theorem: Basis.toBasis_toOrthonormalBasis
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
v : Basis ι 𝕜 E
hv : Orthonormal 𝕜 ⇑v
⊢ (v.toOrthonormalBasis hv).toBasis = v
state_after: no goals
tactic: simp [Basis.toOrthonormalBasis, OrthonormalBasis.toBasis]
Theorem: Submonoid.sup_eq_closure
File: Mathlib/Algebra/Group/Submonoid/Basic.lean

Proof steps:
state_before: M : Type u_1
N✝ : Type u_2
A : Type u_3
inst✝¹ : MulOneClass M
s : Set M
inst✝ : AddZeroClass A
t : Set A
S N N' : Submonoid M
⊢ N ⊔ N' = closure (↑N ∪ ↑N')
state_after: no goals
tactic: simp_rw [closure_union, closure_eq]
Theorem: Subgroup.finiteIndex_iInf'
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
ι : Type u_3
s : Finset ι
f : ι → Subgroup G
hs : ∀ i ∈ s, (f i).FiniteIndex
⊢ (⨅ i ∈ s, f i).FiniteIndex
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
ι : Type u_3
s : Finset ι
f : ι → Subgroup G
hs : ∀ i ∈ s, (f i).FiniteIndex
⊢ (⨅ x, f ↑x).FiniteIndex
tactic: rw [iInf_subtype']
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
ι : Type u_3
s : Finset ι
f : ι → Subgroup G
hs : ∀ i ∈ s, (f i).FiniteIndex
⊢ (⨅ x, f ↑x).FiniteIndex
state_after: no goals
tactic: exact finiteIndex_iInf fun ⟨i, hi⟩ => hs i hi
Theorem: CategoryTheory.SimplicialObject.equivalenceRightToLeft_right
File: Mathlib/AlgebraicTopology/CechNerve.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
G : X ⟶ F.augmentedCechNerve
⊢ (𝟭 C).map (G.left.app (Opposite.op (SimplexCategory.mk 0)) ≫ WidePullback.π (fun x => F.hom) 0) ≫ F.hom =
    (Augmented.toArrow.obj X).hom ≫ (𝟭 C).map G.right
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
G : X ⟶ F.augmentedCechNerve
this : (𝟭 (SimplicialObject C)).map G.left ≫ F.augmentedCechNerve.hom = X.hom ≫ (const C).map G.right
⊢ (𝟭 C).map (G.left.app (Opposite.op (SimplexCategory.mk 0)) ≫ WidePullback.π (fun x => F.hom) 0) ≫ F.hom =
    (Augmented.toArrow.obj X).hom ≫ (𝟭 C).map G.right
tactic: have := G.w
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
G : X ⟶ F.augmentedCechNerve
this : (𝟭 (SimplicialObject C)).map G.left ≫ F.augmentedCechNerve.hom = X.hom ≫ (const C).map G.right
⊢ (𝟭 C).map (G.left.app (Opposite.op (SimplexCategory.mk 0)) ≫ WidePullback.π (fun x => F.hom) 0) ≫ F.hom =
    (Augmented.toArrow.obj X).hom ≫ (𝟭 C).map G.right
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
G : X ⟶ F.augmentedCechNerve
this :
  ((𝟭 (SimplicialObject C)).map G.left ≫ F.augmentedCechNerve.hom).app (Opposite.op (SimplexCategory.mk 0)) =
    (X.hom ≫ (const C).map G.right).app (Opposite.op (SimplexCategory.mk 0))
⊢ (𝟭 C).map (G.left.app (Opposite.op (SimplexCategory.mk 0)) ≫ WidePullback.π (fun x => F.hom) 0) ≫ F.hom =
    (Augmented.toArrow.obj X).hom ≫ (𝟭 C).map G.right
tactic: apply_fun fun e => e.app (Opposite.op <| SimplexCategory.mk 0) at this
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
G : X ⟶ F.augmentedCechNerve
this :
  ((𝟭 (SimplicialObject C)).map G.left ≫ F.augmentedCechNerve.hom).app (Opposite.op (SimplexCategory.mk 0)) =
    (X.hom ≫ (const C).map G.right).app (Opposite.op (SimplexCategory.mk 0))
⊢ (𝟭 C).map (G.left.app (Opposite.op (SimplexCategory.mk 0)) ≫ WidePullback.π (fun x => F.hom) 0) ≫ F.hom =
    (Augmented.toArrow.obj X).hom ≫ (𝟭 C).map G.right
state_after: no goals
tactic: simpa using this
Theorem: Filter.neg_mem_neg
File: Mathlib/Order/Filter/Pointwise.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ε : Type u_6
inst✝ : InvolutiveInv α
f g : Filter α
s : Set α
hs : s ∈ f
⊢ s⁻¹ ∈ f⁻¹
state_after: no goals
tactic: rwa [mem_inv, inv_preimage, inv_inv]
Theorem: CategoryTheory.ShortComplex.Splitting.map_r
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ (S.map F).f ≫ F.map s.r = 𝟙 (S.map F).X₁
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map S.f ≫ F.map s.r = 𝟙 (F.obj S.X₁)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map S.f ≫ F.map s.r = 𝟙 (F.obj S.X₁)
state_after: no goals
tactic: rw [← F.map_comp, f_r, F.map_id]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ (S.map F).g = 𝟙 (S.map F).X₃
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ F.map S.g = 𝟙 (F.obj S.X₃)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.s ≫ F.map S.g = 𝟙 (F.obj S.X₃)
state_after: no goals
tactic: simp only [← F.map_comp, s_g, F.map_id]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ (S.map F).f + (S.map F).g ≫ F.map s.s = 𝟙 (S.map F).X₂
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ F.map S.f + F.map S.g ≫ F.map s.s = 𝟙 (F.obj S.X₂)
tactic: dsimp [ShortComplex.map]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.95146, u_1} C
inst✝³ : Category.{?u.95150, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
s : S.Splitting
F : C ⥤ D
inst✝ : F.Additive
⊢ F.map s.r ≫ F.map S.f + F.map S.g ≫ F.map s.s = 𝟙 (F.obj S.X₂)
state_after: no goals
tactic: simp only [← F.map_id, ← s.id, Functor.map_comp, Functor.map_add]
Theorem: Finset.piecewise_same
File: Mathlib/Data/Finset/Piecewise.lean

Proof steps:
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝ : (j : ι) → Decidable (j ∈ s)
⊢ s.piecewise f f = f
state_after: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝ : (j : ι) → Decidable (j ∈ s)
i : ι
⊢ s.piecewise f f i = f i
tactic: ext i
state_before: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝ : (j : ι) → Decidable (j ∈ s)
i : ι
⊢ s.piecewise f f i = f i
state_after: no goals
tactic: by_cases h : i ∈ s <;> simp [h]
Theorem: List.nodup_sublistsLen
File: Mathlib/Data/List/Sublists.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
n : ℕ
l : List α
h : l.Nodup
this : Pairwise (fun x x_1 => x ≠ x_1) l.sublists'
⊢ (sublistsLen n l).Nodup
state_after: no goals
tactic: exact this.sublist (sublistsLen_sublist_sublists' _ _)
Theorem: CategoryTheory.Limits.imageMonoIsoSource_hom_self
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
inst✝ : Mono f
⊢ (imageMonoIsoSource f).hom ≫ f = image.ι f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X Y : C
f : X ⟶ Y
inst✝ : Mono f
⊢ (imageMonoIsoSource f).hom ≫ (imageMonoIsoSource f).inv ≫ image.ι f = image.ι f
tactic: simp only [← imageMonoIsoSource_inv_ι f]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y : C
f : X ⟶ Y
inst✝ : Mono f
⊢ (imageMonoIsoSource f).hom ≫ (imageMonoIsoSource f).inv ≫ image.ι f = image.ι f
state_after: no goals
tactic: rw [← Category.assoc, Iso.hom_inv_id, Category.id_comp]
Theorem: List.perm_ext_iff_of_nodup
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
l₁ l₂ : List α
d₁ : l₁.Nodup
d₂ : l₂.Nodup
⊢ l₁ ~ l₂ ↔ ∀ (a : α), a ∈ l₁ ↔ a ∈ l₂
state_after: α : Type u_1
l₁ l₂ : List α
d₁ : l₁.Nodup
d₂ : l₂.Nodup
H : ∀ (a : α), a ∈ l₁ ↔ a ∈ l₂
⊢ l₁ ~ l₂
tactic: refine ⟨fun p _ => p.mem_iff, fun H => ?_⟩
state_before: α : Type u_1
l₁ l₂ : List α
d₁ : l₁.Nodup
d₂ : l₂.Nodup
H : ∀ (a : α), a ∈ l₁ ↔ a ∈ l₂
⊢ l₁ ~ l₂
state_after: no goals
tactic: exact (subperm_of_subset d₁ fun a => (H a).1).antisymm <| subperm_of_subset d₂ fun a => (H a).2
Theorem: AhlswedeZhang.supSum_union_add_supSum_infs
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ supSum (𝒜 ∪ ℬ) + supSum (𝒜 ⊼ ℬ) = supSum 𝒜 + supSum ℬ
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∑ s : Finset α, ↑((𝒜 ∪ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑((𝒜 ⊼ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) =
    ∑ s : Finset α, ↑(𝒜.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑(ℬ.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card))
tactic: unfold supSum
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∑ s : Finset α, ↑((𝒜 ∪ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑((𝒜 ⊼ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) =
    ∑ s : Finset α, ↑(𝒜.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
      ∑ s : Finset α, ↑(ℬ.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card))
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ,
    ↑((𝒜 ∪ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
        ↑((𝒜 ⊼ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) =
      ↑(𝒜.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
        ↑(ℬ.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card))
tactic: rw [← sum_add_distrib, ← sum_add_distrib, sum_congr rfl fun s _ ↦ _]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ,
    ↑((𝒜 ∪ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
        ↑((𝒜 ⊼ ℬ).truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) =
      ↑(𝒜.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card)) +
        ↑(ℬ.truncatedSup s).card / ((↑(card α) - ↑s.card) * ↑((card α).choose s.card))
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ, True
tactic: simp_rw [div_add_div_same, ← Nat.cast_add, card_truncatedSup_union_add_card_truncatedSup_infs]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜✝ ℬ✝ : Finset (Finset α)
s : Finset α
𝒜 ℬ : Finset (Finset α)
⊢ ∀ s ∈ univ, True
state_after: no goals
tactic: simp
Theorem: IsLeast.union
File: Mathlib/Order/Bounds/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t✝ : Set α
a✝ b✝ : α
inst✝ : LinearOrder γ
a b : γ
s t : Set γ
ha : IsLeast s a
hb : IsLeast t b
⊢ min a b ∈ s ∪ t
state_after: no goals
tactic: rcases le_total a b with h | h <;> simp [h, ha.1, hb.1]
Theorem: CategoryTheory.ShortComplex.RightHomologyData.isIso_ι
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
A : C
hg : S.g = 0
⊢ IsIso h.ι
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.RightHomologyData
A : C
hg : S.g = 0
φ : h.Q ⟶ (KernelFork.ofι h.ι ⋯).pt
hφ : φ ≫ Fork.ι (KernelFork.ofι h.ι ⋯) = 𝟙 h.Q
⊢ IsIso h.ι
tactic: have ⟨φ, hφ⟩ := KernelFork.IsLimit.lift' h.hι' (𝟙 _)
    (by rw [← cancel_epi h.p, id_comp, p_g', comp_zero, hg])
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
A : C
hg : S.g = 0
φ : h.Q ⟶ (KernelFork.ofι h.ι ⋯).pt
hφ : φ ≫ Fork.ι (KernelFork.ofι h.ι ⋯) = 𝟙 h.Q
⊢ IsIso h.ι
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.RightHomologyData
A : C
hg : S.g = 0
φ : h.Q ⟶ (KernelFork.ofι h.ι ⋯).pt
hφ : φ ≫ h.ι = 𝟙 h.Q
⊢ IsIso h.ι
tactic: dsimp at hφ
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
A : C
hg : S.g = 0
φ : h.Q ⟶ (KernelFork.ofι h.ι ⋯).pt
hφ : φ ≫ h.ι = 𝟙 h.Q
⊢ IsIso h.ι
state_after: no goals
tactic: exact ⟨φ, by rw [← cancel_mono h.ι, assoc, hφ, comp_id, id_comp], hφ⟩
Theorem: Squarefree.natFactorization_le_one
File: Mathlib/Data/Nat/Squarefree.lean

Proof steps:
state_before: s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : Squarefree n
⊢ n.factorization p ≤ 1
state_after: case inl
s : Finset ℕ
m n p✝ p : ℕ
hn : Squarefree 0
⊢ (factorization 0) p ≤ 1

case inr
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : Squarefree n
hn' : n ≠ 0
⊢ n.factorization p ≤ 1
tactic: rcases eq_or_ne n 0 with (rfl | hn')
state_before: case inr
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : Squarefree n
hn' : n ≠ 0
⊢ n.factorization p ≤ 1
state_after: case inr
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : ∀ (x : ℕ), multiplicity x n ≤ 1 ∨ IsUnit x
hn' : n ≠ 0
⊢ n.factorization p ≤ 1
tactic: rw [multiplicity.squarefree_iff_multiplicity_le_one] at hn
state_before: case inr
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : ∀ (x : ℕ), multiplicity x n ≤ 1 ∨ IsUnit x
hn' : n ≠ 0
⊢ n.factorization p ≤ 1
state_after: case pos
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : ∀ (x : ℕ), multiplicity x n ≤ 1 ∨ IsUnit x
hn' : n ≠ 0
hp : Prime p
⊢ n.factorization p ≤ 1

case neg
s : Finset ℕ
m n✝ p✝ n p : ℕ
hn : ∀ (x : ℕ), multiplicity x n ≤ 1 ∨ IsUnit x
hn' : n ≠ 0
hp : ¬Prime p
⊢ n.factorization p ≤ 1
tactic: by_cases hp : p.Prime
Theorem: iSup_image
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ✝ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g✝ s t✝ : ι → α
a b : α
γ : Type u_9
f : β → γ
g : γ → α
t : Set β
⊢ ⨆ c ∈ f '' t, g c = ⨆ b ∈ t, g (f b)
state_after: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ✝ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g✝ s t✝ : ι → α
a b : α
γ : Type u_9
f : β → γ
g : γ → α
t : Set β
⊢ sSup (g ∘ f '' t) = sSup ((fun b => g (f b)) '' t)
tactic: rw [← sSup_image, ← sSup_image, ← image_comp]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ✝ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g✝ s t✝ : ι → α
a b : α
γ : Type u_9
f : β → γ
g : γ → α
t : Set β
⊢ sSup (g ∘ f '' t) = sSup ((fun b => g (f b)) '' t)
state_after: no goals
tactic: rfl
Theorem: measurableSet_of_mem_nhdsWithin_Ioi
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
s : Set α
h : ∀ x ∈ s, s ∈ 𝓝[>] x
⊢ MeasurableSet s
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
s : Set α
h : ∀ x ∈ s, s ∈ 𝓝[>] x
H : ∃ x ∈ s, IsTop x
⊢ MeasurableSet s

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
s : Set α
h : ∀ x ∈ s, s ∈ 𝓝[>] x
H : ¬∃ x ∈ s, IsTop x
⊢ MeasurableSet s
tactic: by_cases H : ∃ x ∈ s, IsTop x
Theorem: MeasureTheory.SimpleFunc.range_zero
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
inst✝¹ : Nonempty α
inst✝ : One β
x : β
⊢ x ∈ SimpleFunc.range 1 ↔ x ∈ {1}
state_after: no goals
tactic: simp [eq_comm]
Theorem: finsum_mem_insert_of_eq_zero_if_not_mem
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : a ∉ s → f a = 1
⊢ ∏ᶠ (i : α) (_ : i ∈ insert a s), f i = ∏ᶠ (i : α) (_ : i ∈ s), f i
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : a ∉ s → f a = 1
x : α
hx : x ∈ mulSupport f
⊢ x ∈ insert a s → x ∈ s
tactic: refine finprod_mem_inter_mulSupport_eq' _ _ _ fun x hx => ⟨?_, Or.inr⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : a ∉ s → f a = 1
x : α
hx : x ∈ mulSupport f
⊢ x ∈ insert a s → x ∈ s
state_after: case inl
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
b : α
s t : Set α
x : α
hx : x ∈ mulSupport f
h : x ∉ s → f x = 1
⊢ x ∈ s

case inr
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : a ∉ s → f a = 1
x : α
hx : x ∈ mulSupport f
hxs : x ∈ s
⊢ x ∈ s
tactic: rintro (rfl | hxs)
state_before: case inl
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
b : α
s t : Set α
x : α
hx : x ∈ mulSupport f
h : x ∉ s → f x = 1
⊢ x ∈ s

case inr
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : a ∉ s → f a = 1
x : α
hx : x ∈ mulSupport f
hxs : x ∈ s
⊢ x ∈ s
state_after: no goals
tactic: exacts [not_imp_comm.1 h hx, hxs]
Theorem: le_or_le_of_add_le_add
File: Mathlib/Algebra/Order/Monoid/Unbundled/MinMax.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ ≤ a₂ * b₂ → a₁ ≤ a₂ ∨ b₁ ≤ b₂
state_after: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ < a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁
tactic: contrapose!
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ < a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁
state_after: no goals
tactic: exact fun h => mul_lt_mul_of_lt_of_lt h.1 h.2