ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: IsCompact.everywherePosSubset
File: Mathlib/MeasureTheory/Measure/EverywherePos.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
⊢ IsCompact (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (μ.everywherePosSubset s)
tactic: rcases exists_isOpen_everywherePosSubset_eq_diff μ s with ⟨u, u_open, hu⟩
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (s \ u)
tactic: rw [hu]
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (s \ u)
state_after: no goals
tactic: exact hs.diff u_open
Theorem: round_le_add_half
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ ↑(round x) ≤ x + 1 / 2
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
tactic: rw [round_eq x]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
state_after: no goals
tactic: exact Int.floor_le (x + 1 / 2)
Theorem: CategoryTheory.Limits.Types.isConnected_iff_colimit_constPUnitFunctor_iso_pUnit
File: Mathlib/CategoryTheory/Limits/IsConnected.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
⊢ IsConnected C ↔ Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
⊢ IsConnected C
tactic: refine ⟨fun _ => ⟨colimitConstPUnitIsoPUnit.{w} C⟩, fun ⟨h⟩ => ?_⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
⊢ IsConnected C
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
⊢ IsConnected C
tactic: have : Nonempty C := nonempty_of_nonempty_colimit <| Nonempty.map h.inv inferInstance
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
⊢ IsConnected C
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
c d : C
⊢ Zigzag c d
tactic: refine zigzag_isConnected <| fun c d => ?_
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
c d : C
⊢ Zigzag c d
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
c d : C
⊢ EqvGen (Quot.Rel (constPUnitFunctor C)) ⟨c, PUnit.unit⟩ ⟨d, PUnit.unit⟩
tactic: refine zigzag_of_eqvGen_quot_rel _ (constPUnitFunctor C) ⟨c, PUnit.unit⟩ ⟨d, PUnit.unit⟩ ?_
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimit (constPUnitFunctor C)
x✝ : Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
h : colimit (constPUnitFunctor C) ≅ PUnit.{w + 1}
this : Nonempty C
c d : C
⊢ EqvGen (Quot.Rel (constPUnitFunctor C)) ⟨c, PUnit.unit⟩ ⟨d, PUnit.unit⟩
state_after: no goals
tactic: exact colimit_eq <| h.toEquiv.injective rfl
Theorem: LieSubalgebra.ucs_eq_self_of_isCartanSubalgebra
File: Mathlib/Algebra/Lie/CartanSubalgebra.lean

Proof steps:
state_before: R : Type u
L : Type v
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
H✝ H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
k : ℕ
⊢ LieSubmodule.ucs k H.toLieSubmodule = H.toLieSubmodule
state_after: case zero
R : Type u
L : Type v
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
H✝ H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
⊢ LieSubmodule.ucs 0 H.toLieSubmodule = H.toLieSubmodule

case succ
R : Type u
L : Type v
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
H✝ H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
k : ℕ
ih : LieSubmodule.ucs k H.toLieSubmodule = H.toLieSubmodule
⊢ LieSubmodule.ucs (k + 1) H.toLieSubmodule = H.toLieSubmodule
tactic: induction' k with k ih
Theorem: isPreconnected_iff_subset_of_disjoint
File: Mathlib/Topology/Connected/Clopen.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v s : Set α
⊢ IsPreconnected s ↔ ∀ (u v : Set α), IsOpen u → IsOpen v → s ⊆ u ∪ v → s ∩ (u ∩ v) = ∅ → s ⊆ u ∨ s ⊆ v
state_after: case mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v s : Set α
h : IsPreconnected s
⊢ ∀ (u v : Set α), IsOpen u → IsOpen v → s ⊆ u ∪ v → s ∩ (u ∩ v) = ∅ → s ⊆ u ∨ s ⊆ v

case mpr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v s : Set α
h : ∀ (u v : Set α), IsOpen u → IsOpen v → s ⊆ u ∪ v → s ∩ (u ∩ v) = ∅ → s ⊆ u ∨ s ⊆ v
⊢ IsPreconnected s
tactic: constructor <;> intro h
Theorem: CategoryTheory.Limits.prod.diag_map_fst_snd_comp
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ : C
inst✝ : HasLimitsOfShape (Discrete WalkingPair) C
X X' Y Y' : C
g : X ⟶ Y
g' : X' ⟶ Y'
⊢ diag (X ⨯ X') ≫ map (fst ≫ g) (snd ≫ g') = map g g'
state_after: no goals
tactic: simp
Theorem: ZMod.valMinAbs_natAbs_eq_min
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n✝¹ n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ a.valMinAbs.natAbs = min a.val (n - a.val)
state_after: m n✝¹ n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ (if a.val ≤ n / 2 then ↑a.val else ↑a.val - ↑n).natAbs = min a.val (n - a.val)
tactic: rw [valMinAbs_def_pos]
state_before: m n✝¹ n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ (if a.val ≤ n / 2 then ↑a.val else ↑a.val - ↑n).natAbs = min a.val (n - a.val)
state_after: case pos
m n✝¹ n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ (↑a.val).natAbs = min a.val (n - a.val)

case neg
m n✝¹ n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ (↑a.val - ↑n).natAbs = min a.val (n - a.val)
tactic: split_ifs with h
Theorem: WCovBy.le_and_le_iff
File: Mathlib/Order/Cover.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
⊢ a ≤ c ∧ c ≤ b ↔ c = a ∨ c = b
state_after: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
⊢ c = a ∨ c = b → a ≤ c ∧ c ≤ b
tactic: refine ⟨fun h2 => h.eq_or_eq h2.1 h2.2, ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
⊢ c = a ∨ c = b → a ≤ c ∧ c ≤ b
state_after: case inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
b c : α
h : c ⩿ b
⊢ c ≤ c ∧ c ≤ b

case inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a c : α
h : a ⩿ c
⊢ a ≤ c ∧ c ≤ c
tactic: rintro (rfl | rfl)
state_before: case inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
b c : α
h : c ⩿ b
⊢ c ≤ c ∧ c ≤ b

case inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a c : α
h : a ⩿ c
⊢ a ≤ c ∧ c ≤ c
state_after: no goals
tactic: exacts [⟨le_rfl, h.le⟩, ⟨h.le, le_rfl⟩]
Theorem: Cardinal.card_iUnion_lt_iff_forall_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
⊢ #↑(⋃ i, t i) < c ↔ ∀ (i : ι), #↑(t i) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ #↑(⋃ i, t i) < c
tactic: refine ⟨card_lt_of_card_iUnion_lt, fun h ↦ ?_⟩
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ #↑(⋃ i, t i) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ #↑(range fun i => t i) * ⨆ s, #↑↑s < c
tactic: apply lt_of_le_of_lt (Cardinal.mk_sUnion_le _)
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ #↑(range fun i => t i) * ⨆ s, #↑↑s < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ ⨆ s, #↑↑s < c
tactic: apply Cardinal.mul_lt_of_lt hc.aleph0_le
    (lt_of_le_of_lt Cardinal.mk_range_le hι)
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ ⨆ s, #↑↑s < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ ∀ (i : ↑(range fun i => t i)), #↑↑i < c
tactic: apply Cardinal.iSup_lt_of_isRegular hc (lt_of_le_of_lt Cardinal.mk_range_le hι)
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
ι α : Type u
t : ι → Set α
c : Cardinal.{u}
hc : c.IsRegular
hι : #ι < c
h : ∀ (i : ι), #↑(t i) < c
⊢ ∀ (i : ↑(range fun i => t i)), #↑↑i < c
state_after: no goals
tactic: simpa
Theorem: ContDiffAt.continuousAt
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : ContDiffAt 𝕜 n f x
⊢ ContinuousAt f x
state_after: no goals
tactic: simpa [continuousWithinAt_univ] using h.continuousWithinAt
Theorem: deriv_fderiv
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
⊢ smulRight 1 (deriv f x) = fderiv 𝕜 f x
state_after: no goals
tactic: simp only [deriv, ContinuousLinearMap.smulRight_one_one]
Theorem: ArithmeticFunction.moebius_sq_eq_one_of_squarefree
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
l : ℕ
hl : Squarefree l
⊢ μ l ^ 2 = 1
state_after: no goals
tactic: rw [moebius_apply_of_squarefree hl, ← pow_mul, mul_comm, pow_mul, neg_one_sq, one_pow]
Theorem: UpperHalfPlane.bounded_mem
File: Mathlib/Analysis/Complex/UpperHalfPlane/FunctionsBoundedAtInfty.lean

Proof steps:
state_before: f : ℍ → ℂ
⊢ IsBoundedAtImInfty f ↔ ∃ M A, ∀ (z : ℍ), A ≤ z.im → Complex.abs (f z) ≤ M
state_after: no goals
tactic: simp [IsBoundedAtImInfty, BoundedAtFilter, Asymptotics.isBigO_iff, Filter.Eventually,
    atImInfty_mem]
Theorem: CategoryTheory.SimplicialCategory.sHomWhiskerLeft_comp
File: Mathlib/AlgebraicTopology/SimplicialCategory/Basic.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L L' L'' : C
g : L ⟶ L'
g' : L' ⟶ L''
⊢ sHomWhiskerLeft K (g ≫ g') = sHomWhiskerLeft K g ≫ sHomWhiskerLeft K g'
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L L' L'' : C
g : L ⟶ L'
g' : L' ⟶ L''
⊢ (ρ_ (sHom K L)).inv ≫ sHom K L ◁ (homEquiv L L'') (g ≫ g') ≫ sHomComp K L L'' =
    ((ρ_ (sHom K L)).inv ≫ sHom K L ◁ (homEquiv L L') g ≫ sHomComp K L L') ≫
      (ρ_ (sHom K L')).inv ≫ sHom K L' ◁ (homEquiv L' L'') g' ≫ sHomComp K L' L''
tactic: dsimp [sHomWhiskerLeft]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L L' L'' : C
g : L ⟶ L'
g' : L' ⟶ L''
⊢ (ρ_ (sHom K L)).inv ≫ sHom K L ◁ (homEquiv L L'') (g ≫ g') ≫ sHomComp K L L'' =
    ((ρ_ (sHom K L)).inv ≫ sHom K L ◁ (homEquiv L L') g ≫ sHomComp K L L') ≫
      (ρ_ (sHom K L')).inv ≫ sHom K L' ◁ (homEquiv L' L'') g' ≫ sHomComp K L' L''
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L L' L'' : C
g : L ⟶ L'
g' : L' ⟶ L''
⊢ (ρ_ (sHom K L)).inv ≫
      sHom K L ◁ (λ_ (𝟙_ SSet)).inv ≫
        sHom K L ◁ ((homEquiv L L') g ⊗ (homEquiv L' L'') g') ≫
          (α_ (EnrichedCategory.Hom K L) (EnrichedCategory.Hom L L') (EnrichedCategory.Hom L' L'')).inv ≫
            eComp SSet K L L' ▷ EnrichedCategory.Hom L' L'' ≫ eComp SSet K L' L'' =
    (ρ_ (sHom K L)).inv ≫
      sHom K L ◁ (homEquiv L L') g ≫
        sHomComp K L L' ≫ (ρ_ (sHom K L')).inv ≫ sHom K L' ◁ (homEquiv L' L'') g' ≫ sHomComp K L' L''
tactic: simp only [homEquiv_comp, MonoidalCategory.whiskerLeft_comp, assoc, ← e_assoc]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L L' L'' : C
g : L ⟶ L'
g' : L' ⟶ L''
⊢ (ρ_ (sHom K L)).inv ≫
      sHom K L ◁ (λ_ (𝟙_ SSet)).inv ≫
        sHom K L ◁ ((homEquiv L L') g ⊗ (homEquiv L' L'') g') ≫
          (α_ (EnrichedCategory.Hom K L) (EnrichedCategory.Hom L L') (EnrichedCategory.Hom L' L'')).inv ≫
            eComp SSet K L L' ▷ EnrichedCategory.Hom L' L'' ≫ eComp SSet K L' L'' =
    (ρ_ (sHom K L)).inv ≫
      sHom K L ◁ (homEquiv L L') g ≫
        sHomComp K L L' ≫ (ρ_ (sHom K L')).inv ≫ sHom K L' ◁ (homEquiv L' L'') g' ≫ sHomComp K L' L''
state_after: no goals
tactic: rfl
Theorem: Ordinal.nfpBFamily_fp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

Proof steps:
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ f i hi (o.nfpBFamily f a) = o.nfpBFamily f a
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯) (o.nfpBFamily f a) = o.nfpBFamily f a
tactic: rw [← familyOfBFamily_enum o f]
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯) (o.nfpBFamily f a) = o.nfpBFamily f a
state_after: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ IsNormal (o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯))
tactic: apply nfpFamily_fp
state_before: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ IsNormal (o.familyOfBFamily f (enum (fun x x_1 => x < x_1) i ⋯))
state_after: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ IsNormal (f i ?H.hi)

case H.hi
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ i < o
tactic: rw [familyOfBFamily_enum]
state_before: case H
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ IsNormal (f i ?H.hi)

case H.hi
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
H : IsNormal (f i hi)
a : Ordinal.{max v u}
⊢ i < o
state_after: no goals
tactic: exact H
Theorem: WeierstrassCurve.twoTorsionPolynomial_disc_isUnit
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
inst✝ : Invertible 2
⊢ IsUnit W.twoTorsionPolynomial.disc ↔ IsUnit W.Δ
state_after: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
inst✝ : Invertible 2
⊢ IsUnit (2 ^ 4) ∧ IsUnit W.Δ ↔ IsUnit W.Δ
tactic: rw [twoTorsionPolynomial_disc, IsUnit.mul_iff, show (16 : R) = 2 ^ 4 by norm_num1]
state_before: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
inst✝ : Invertible 2
⊢ IsUnit (2 ^ 4) ∧ IsUnit W.Δ ↔ IsUnit W.Δ
state_after: no goals
tactic: exact and_iff_right <| isUnit_of_invertible <| 2 ^ 4
Theorem: le_mul_of_le_one_right
File: Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
inst✝⁵ : Semiring α
inst✝⁴ : Preorder α
a b c d : α
inst✝³ : ExistsAddOfLE α
inst✝² : PosMulMono α
inst✝¹ : CovariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 0
h : b ≤ 1
⊢ a ≤ a * b
state_after: no goals
tactic: simpa only [mul_one] using mul_le_mul_of_nonpos_left h ha
Theorem: Polynomial.isNilpotent_monomial_iff
File: Mathlib/RingTheory/Polynomial/Nilpotent.lean

Proof steps:
state_before: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
n k : ℕ
⊢ (monomial n) r ^ k = 0 ↔ r ^ k = 0
state_after: no goals
tactic: simp
Theorem: AddMonoidHom.vaddZeroHom_apply
File: Mathlib/Algebra/Group/Action/Defs.lean

Proof steps:
state_before: M✝ : Type u_1
N✝ : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
M : Type ?u.36861
N : Type ?u.36864
inst✝³ : Monoid M
inst✝² : MulOneClass N
inst✝¹ : MulAction M N
inst✝ : IsScalarTower M N N
x y : M
⊢ { toFun := fun x => x • 1, map_one' := ⋯ }.toFun (x * y) =
    { toFun := fun x => x • 1, map_one' := ⋯ }.toFun x * { toFun := fun x => x • 1, map_one' := ⋯ }.toFun y
state_after: no goals
tactic: rw [smul_one_mul, smul_smul]
Theorem: PiLp.edist_self
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✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f : PiLp p β
⊢ edist f f = 0
state_after: case inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f : PiLp 0 β
⊢ edist f f = 0

case inr.inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f : PiLp ⊤ β
⊢ edist f f = 0

case inr.inr
p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f : PiLp p β
h : 0 < p.toReal
⊢ edist f f = 0
tactic: rcases p.trichotomy with (rfl | rfl | h)
Theorem: Submodule.FG.sup
File: Mathlib/RingTheory/Finiteness.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N₁ N₂ : Submodule R M
hN₁ : N₁.FG
hN₂ : N₂.FG
t₁ : Set M
ht₁ : t₁.Finite ∧ span R t₁ = N₁
t₂ : Set M
ht₂ : t₂.Finite ∧ span R t₂ = N₂
⊢ span R (t₁ ∪ t₂) = N₁ ⊔ N₂
state_after: no goals
tactic: rw [span_union, ht₁.2, ht₂.2]
Theorem: Set.exists_eq_graphOn
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
inst✝ : Nonempty β
s : Set (α × β)
x✝ : ∃ f t, s = graphOn f t
f : α → β
t : Set α
hs : s = graphOn f t
⊢ s = graphOn f (Prod.fst '' s)
state_after: no goals
tactic: rw [hs, image_fst_graphOn]
Theorem: Pell.pellZd_add
File: Mathlib/NumberTheory/PellMatiyasevic.lean

Proof steps:
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
⊢ pellZd a1 (m + (n + 1)) = pellZd a1 m * pellZd a1 (n + 1)
state_after: no goals
tactic: rw [← add_assoc, pellZd_succ, pellZd_succ, pellZd_add _ n, ← mul_assoc]
Theorem: IsPreconnected.prod
File: Mathlib/Topology/Connected/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
⊢ IsPreconnected (s ×ˢ t)
state_after: case H
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
⊢ ∀ x ∈ s ×ˢ t, ∀ y ∈ s ×ˢ t, ∃ t_1 ⊆ s ×ˢ t, x ∈ t_1 ∧ y ∈ t_1 ∧ IsPreconnected t_1
tactic: apply isPreconnected_of_forall_pair
state_before: case H
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
⊢ ∀ x ∈ s ×ˢ t, ∀ y ∈ s ×ˢ t, ∃ t_1 ⊆ s ×ˢ t, x ∈ t_1 ∧ y ∈ t_1 ∧ IsPreconnected t_1
state_after: case H.mk.intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
a₁ : α
b₁ : β
ha₁ : (a₁, b₁).1 ∈ s
hb₁ : (a₁, b₁).2 ∈ t
a₂ : α
b₂ : β
ha₂ : (a₂, b₂).1 ∈ s
hb₂ : (a₂, b₂).2 ∈ t
⊢ ∃ t_1 ⊆ s ×ˢ t, (a₁, b₁) ∈ t_1 ∧ (a₂, b₂) ∈ t_1 ∧ IsPreconnected t_1
tactic: rintro ⟨a₁, b₁⟩ ⟨ha₁, hb₁⟩ ⟨a₂, b₂⟩ ⟨ha₂, hb₂⟩
state_before: case H.mk.intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
a₁ : α
b₁ : β
ha₁ : (a₁, b₁).1 ∈ s
hb₁ : (a₁, b₁).2 ∈ t
a₂ : α
b₂ : β
ha₂ : (a₂, b₂).1 ∈ s
hb₂ : (a₂, b₂).2 ∈ t
⊢ ∃ t_1 ⊆ s ×ˢ t, (a₁, b₁) ∈ t_1 ∧ (a₂, b₂) ∈ t_1 ∧ IsPreconnected t_1
state_after: case H.mk.intro.mk.intro.refine_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
a₁ : α
b₁ : β
ha₁ : (a₁, b₁).1 ∈ s
hb₁ : (a₁, b₁).2 ∈ t
a₂ : α
b₂ : β
ha₂ : (a₂, b₂).1 ∈ s
hb₂ : (a₂, b₂).2 ∈ t
⊢ Prod.mk a₁ '' t ∪ flip Prod.mk b₂ '' s ⊆ s ×ˢ t

case H.mk.intro.mk.intro.refine_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t✝ u v : Set α
inst✝ : TopologicalSpace β
s : Set α
t : Set β
hs : IsPreconnected s
ht : IsPreconnected t
a₁ : α
b₁ : β
ha₁ : (a₁, b₁).1 ∈ s
hb₁ : (a₁, b₁).2 ∈ t
a₂ : α
b₂ : β
ha₂ : (a₂, b₂).1 ∈ s
hb₂ : (a₂, b₂).2 ∈ t
⊢ IsPreconnected (Prod.mk a₁ '' t ∪ flip Prod.mk b₂ '' s)
tactic: refine ⟨Prod.mk a₁ '' t ∪ flip Prod.mk b₂ '' s, ?_, .inl ⟨b₁, hb₁, rfl⟩, .inr ⟨a₂, ha₂, rfl⟩, ?_⟩