ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: isAtomic_dual_iff_isCoatomic
File: Mathlib/Order/Atoms.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : PartialOrder α
inst✝ : OrderTop α
h : IsAtomic αᵒᵈ
b : α
⊢ b = ⊤ ∨ ∃ a, IsCoatom a ∧ b ≤ a
state_after: no goals
tactic: apply h.eq_bot_or_exists_atom_le
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : PartialOrder α
inst✝ : OrderTop α
h : IsCoatomic α
b : αᵒᵈ
⊢ b = ⊥ ∨ ∃ a, IsAtom a ∧ a ≤ b
state_after: no goals
tactic: apply h.eq_top_or_exists_le_coatom
Theorem: Nat.mem_factoredNumbers_of_dvd
File: Mathlib/NumberTheory/SmoothNumbers.lean

Proof steps:
state_before: s : Finset ℕ
m k : ℕ
h : m ∈ factoredNumbers s
h' : k ∣ m
⊢ k ∈ factoredNumbers s
state_after: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
⊢ k ∈ factoredNumbers s
tactic: obtain ⟨h₁, h₂⟩ := h
state_before: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
⊢ k ∈ factoredNumbers s
state_after: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
⊢ k ∈ factoredNumbers s
tactic: have hk := ne_zero_of_dvd_ne_zero h₁ h'
state_before: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
⊢ k ∈ factoredNumbers s
state_after: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
p : ℕ
hp : p ∈ k.primeFactorsList
⊢ p ∈ m.primeFactorsList
tactic: refine ⟨hk, fun p hp ↦ h₂ p ?_⟩
state_before: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
p : ℕ
hp : p ∈ k.primeFactorsList
⊢ p ∈ m.primeFactorsList
state_after: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
p : ℕ
hp : Prime p ∧ p ∣ k
⊢ Prime p ∧ p ∣ m
tactic: rw [mem_primeFactorsList <| by assumption] at hp ⊢
state_before: case intro
s : Finset ℕ
m k : ℕ
h' : k ∣ m
h₁ : m ≠ 0
h₂ : ∀ p ∈ m.primeFactorsList, p ∈ s
hk : k ≠ 0
p : ℕ
hp : Prime p ∧ p ∣ k
⊢ Prime p ∧ p ∣ m
state_after: no goals
tactic: exact ⟨hp.1, hp.2.trans h'⟩
Theorem: String.offsetOfPos_of_valid
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: l r : List Char
⊢ { data := l ++ r }.offsetOfPos { byteIdx := utf8Len l } = l.length
state_after: no goals
tactic: simpa using offsetOfPosAux_of_valid [] l r 0
Theorem: exists_lt_subset_ball
File: Mathlib/Topology/MetricSpace/ProperSpace/Lemmas.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
⊢ ∃ r' < r, s ⊆ ball x r'
state_after: case inl
α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : r ≤ 0
⊢ ∃ r' < r, s ⊆ ball x r'

case inr
α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : 0 < r
⊢ ∃ r' < r, s ⊆ ball x r'
tactic: rcases le_or_lt r 0 with hr | hr
Theorem: CPolynomialOn.iterated_deriv
File: Mathlib/Analysis/Calculus/FDeriv/Analytic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 𝕜 F
r : ℝ≥0∞
f : 𝕜 → F
x : 𝕜
s : Set 𝕜
h : CPolynomialOn 𝕜 f s
n : ℕ
⊢ CPolynomialOn 𝕜 (deriv^[n] f) s
state_after: case zero
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 𝕜 F
r : ℝ≥0∞
f : 𝕜 → F
x : 𝕜
s : Set 𝕜
h : CPolynomialOn 𝕜 f s
⊢ CPolynomialOn 𝕜 (deriv^[0] f) s

case succ
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type v
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 𝕜 F
r : ℝ≥0∞
f : 𝕜 → F
x : 𝕜
s : Set 𝕜
h : CPolynomialOn 𝕜 f s
n : ℕ
IH : CPolynomialOn 𝕜 (deriv^[n] f) s
⊢ CPolynomialOn 𝕜 (deriv^[n + 1] f) s
tactic: induction' n with n IH
Theorem: Relation.transGen_eq_self
File: Mathlib/Logic/Relation.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝ c d : α
trans : Transitive r
a b : α
h : TransGen r a b
⊢ r a b
state_after: no goals
tactic: induction h with
      | single hc => exact hc
      | tail _ hcd hac => exact trans hac hcd
Theorem: Pell.Solution₁.exists_pos_of_not_isSquare
File: Mathlib/NumberTheory/Pell.lean

Proof steps:
state_before: d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
⊢ ∃ a, 1 < a.x ∧ 0 < a.y
state_after: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ ∃ a, 1 < a.x ∧ 0 < a.y
tactic: obtain ⟨x, y, h, hy⟩ := exists_of_not_isSquare h₀ hd
state_before: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ ∃ a, 1 < a.x ∧ 0 < a.y
state_after: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ 1 < (mk |x| |y| ⋯).x
tactic: refine ⟨mk |x| |y| (by rwa [sq_abs, sq_abs]), ?_, abs_pos.mpr hy⟩
state_before: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ 1 < (mk |x| |y| ⋯).x
state_after: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ 0 < d * y ^ 2
tactic: rw [x_mk, ← one_lt_sq_iff_one_lt_abs, eq_add_of_sub_eq h, lt_add_iff_pos_right]
state_before: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
h : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ 0 < d * y ^ 2
state_after: no goals
tactic: exact mul_pos h₀ (sq_pos_of_ne_zero hy)
Theorem: SimplicialObject.Splitting.PInfty_comp_πSummand_id
File: Mathlib/AlgebraicTopology/DoldKan/SplitSimplicialObject.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
⊢ PInfty.f n ≫ s.πSummand (IndexSet.id (op [n])) = s.πSummand (IndexSet.id (op [n]))
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
⊢ PInfty.f n ≫ s.πSummand (IndexSet.id (op [n])) = 𝟙 (X _[n]) ≫ s.πSummand (IndexSet.id (op [n]))
tactic: conv_rhs => rw [← id_comp (s.πSummand _)]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
⊢ PInfty.f n ≫ s.πSummand (IndexSet.id (op [n])) = 𝟙 (X _[n]) ≫ s.πSummand (IndexSet.id (op [n]))
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
⊢ 𝟙 (X _[n]) ≫ s.πSummand (IndexSet.id (op [n])) = PInfty.f n ≫ s.πSummand (IndexSet.id (op [n]))
tactic: symm
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
⊢ 𝟙 (X _[n]) ≫ s.πSummand (IndexSet.id (op [n])) = PInfty.f n ≫ s.πSummand (IndexSet.id (op [n]))
state_after: no goals
tactic: rw [← sub_eq_zero, ← sub_comp, ← comp_PInfty_eq_zero_iff, sub_comp, id_comp, PInfty_f_idem,
    sub_self]
Theorem: CharP.char_ne_zero_of_finite
File: Mathlib/Algebra/CharP/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : NonAssocRing R
p : ℕ
inst✝¹ : CharP R p
inst✝ : Finite R
⊢ p ≠ 0
state_after: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
⊢ False
tactic: rintro rfl
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
⊢ False
state_after: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
this : CharZero R
⊢ False
tactic: haveI : CharZero R := charP_to_charZero R
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
this : CharZero R
⊢ False
state_after: case intro
R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
this : CharZero R
val✝ : Fintype R
⊢ False
tactic: cases nonempty_fintype R
state_before: case intro
R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Finite R
inst✝ : CharP R 0
this : CharZero R
val✝ : Fintype R
⊢ False
state_after: no goals
tactic: exact absurd Nat.cast_injective (not_injective_infinite_finite ((↑) : ℕ → R))
Theorem: contMDiff_one
File: Mathlib/Geometry/Manifold/ContMDiff/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹⁵ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹⁴ : TopologicalSpace M
inst✝¹³ : ChartedSpace H M
inst✝¹² : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁹ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁸ : TopologicalSpace M'
inst✝⁷ : ChartedSpace H' M'
inst✝⁶ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝⁵ : NormedAddCommGroup E''
inst✝⁴ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝³ : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝² : TopologicalSpace M''
inst✝¹ : ChartedSpace H'' M''
e : PartialHomeomorph M H
e' : PartialHomeomorph M' H'
f f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
c : M'
inst✝ : One M'
⊢ ContMDiff I I' n 1
state_after: no goals
tactic: simp only [Pi.one_def, contMDiff_const]
Theorem: CharTwo.neg_eq
File: Mathlib/Algebra/CharP/Two.lean

Proof steps:
state_before: R : Type u_1
ι : Type u_2
inst✝¹ : Ring R
inst✝ : CharP R 2
x : R
⊢ -x = x
state_after: no goals
tactic: rw [neg_eq_iff_add_eq_zero, ← two_smul R x, two_eq_zero, zero_smul]
Theorem: Ordinal.succ_nadd
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

Proof steps:
state_before: a b c : Ordinal.{u}
⊢ succ a ♯ b = succ (a ♯ b)
state_after: no goals
tactic: rw [← one_nadd (a ♯ b), ← nadd_assoc, one_nadd]
Theorem: QuaternionAlgebra.star_mul_eq_coe
File: Mathlib/Algebra/Quaternion.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ star a * a = ↑(star a * a).re
state_after: no goals
tactic: ext <;> simp <;> ring
Theorem: List.forall_zipWith
File: Mathlib/Data/List/Zip.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
x✝ : [].length = [].length
⊢ Forall p (zipWith f [] []) ↔ Forall₂ (fun x y => p (f x y)) [] []
state_after: no goals
tactic: simp
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : (a :: l₁).length = (b :: l₂).length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)
state_after: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : l₁.length = l₂.length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)
tactic: simp only [length_cons, succ_inj'] at h
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : l₁.length = l₂.length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)
state_after: no goals
tactic: simp [forall_zipWith h]
Theorem: LocallyLipschitz.iterate
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f✝ : α → β
f : α → α
hf : LocallyLipschitz f
⊢ LocallyLipschitz f^[0]
state_after: no goals
tactic: simpa only [pow_zero] using LocallyLipschitz.id
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f✝ : α → β
f : α → α
hf : LocallyLipschitz f
n : ℕ
⊢ LocallyLipschitz f^[n + 1]
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f✝ : α → β
f : α → α
hf : LocallyLipschitz f
n : ℕ
⊢ LocallyLipschitz (f^[n] ∘ f)
tactic: rw [iterate_add, iterate_one]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f✝ : α → β
f : α → α
hf : LocallyLipschitz f
n : ℕ
⊢ LocallyLipschitz (f^[n] ∘ f)
state_after: no goals
tactic: exact (hf.iterate n).comp hf
Theorem: CategoryTheory.ShortComplex.HomologyMapData.comm
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : HomologyMapData φ h₁ h₂
⊢ h.left.φH ≫ h₂.iso.hom = h₁.iso.hom ≫ h.right.φH
state_after: no goals
tactic: simp only [← cancel_epi h₁.left.π, ← cancel_mono h₂.right.ι, assoc,
    LeftHomologyMapData.commπ_assoc, HomologyData.comm, LeftHomologyMapData.commi_assoc,
    RightHomologyMapData.commι, HomologyData.comm_assoc, RightHomologyMapData.commp]
Theorem: CategoryTheory.Limits.limit.post_π
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

Proof steps:
state_before: J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F✝ : J ⥤ C
D : Type u'
inst✝² : Category.{v', u'} D
F : J ⥤ C
inst✝¹ : HasLimit F
G : C ⥤ D
inst✝ : HasLimit (F ⋙ G)
j : J
⊢ post F G ≫ π (F ⋙ G) j = G.map (π F j)
state_after: J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F✝ : J ⥤ C
D : Type u'
inst✝² : Category.{v', u'} D
F : J ⥤ C
inst✝¹ : HasLimit F
G : C ⥤ D
inst✝ : HasLimit (F ⋙ G)
j : J
⊢ (G.mapCone (cone F)).π.app j = G.map (π F j)
tactic: erw [IsLimit.fac]
state_before: J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F✝ : J ⥤ C
D : Type u'
inst✝² : Category.{v', u'} D
F : J ⥤ C
inst✝¹ : HasLimit F
G : C ⥤ D
inst✝ : HasLimit (F ⋙ G)
j : J
⊢ (G.mapCone (cone F)).π.app j = G.map (π F j)
state_after: no goals
tactic: rfl
Theorem: List.formPerm_apply_nthLe_zero
File: Mathlib/GroupTheory/Perm/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x : α
l : List α
h : l.Nodup
hl : 1 < l.length
⊢ 0 < l.length
state_after: no goals
tactic: omega
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x : α
l : List α
h : l.Nodup
hl : 1 < l.length
⊢ l.formPerm (l.nthLe 0 ⋯) = l.nthLe 1 hl
state_after: no goals
tactic: apply formPerm_apply_get_zero _ h
Theorem: MeasureTheory.OuterMeasure.le_sum_caratheodory
File: Mathlib/MeasureTheory/OuterMeasure/Caratheodory.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
m : ι → OuterMeasure α
s : Set α
h : MeasurableSet s
t : Set α
⊢ (sum m) t = (sum m) (t ∩ s) + (sum m) (t \ s)
state_after: no goals
tactic: simp [fun i => MeasurableSpace.measurableSet_iInf.1 h i t, ENNReal.tsum_add]
Theorem: OrderIso.addLeft_symm
File: Mathlib/Algebra/Order/Group/OrderIso.lean

Proof steps:
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ (mulLeft a).symm = mulLeft a⁻¹
state_after: case h.h
α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a x : α
⊢ (mulLeft a).symm x = (mulLeft a⁻¹) x
tactic: ext x
state_before: case h.h
α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a x : α
⊢ (mulLeft a).symm x = (mulLeft a⁻¹) x
state_after: no goals
tactic: rfl
Theorem: zero_lt_one_add_norm_sq
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
x : E
⊢ 0 < 1 + ‖x‖ ^ 2
state_after: no goals
tactic: positivity
Theorem: Rat.toNNRat_eq_zero
File: Mathlib/Data/NNRat/Defs.lean

Proof steps:
state_before: p q : ℚ
⊢ q.toNNRat = 0 ↔ q ≤ 0
state_after: no goals
tactic: simpa [-toNNRat_pos] using (@toNNRat_pos q).not
Theorem: Polynomial.leval_coe_eq_smeval
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
⊢ ⇑(leval r) = fun p => p.smeval r
state_after: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
⊢ ∀ (a : R[X]), (leval r) a = a.smeval r
tactic: rw [Function.funext_iff]
state_before: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
⊢ ∀ (a : R[X]), (leval r) a = a.smeval r
state_after: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
a✝ : R[X]
⊢ (leval r) a✝ = a✝.smeval r
tactic: intro
state_before: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
a✝ : R[X]
⊢ (leval r) a✝ = a✝.smeval r
state_after: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
a✝ : R[X]
⊢ (a✝.sum fun e a => a * r ^ e) = a✝.sum (smul_pow r)
tactic: rw [leval_apply, smeval_def, eval_eq_sum]
state_before: R✝ : Type u_1
inst✝⁴ : Semiring R✝
p q : R✝[X]
S : Type u_2
inst✝³ : AddCommMonoid S
inst✝² : Pow S ℕ
inst✝¹ : Module R✝ S
x : S
R : Type u_3
inst✝ : Semiring R
r : R
a✝ : R[X]
⊢ (a✝.sum fun e a => a * r ^ e) = a✝.sum (smul_pow r)
state_after: no goals
tactic: rfl
Theorem: MulAction.zpow_mod_period_smul
File: Mathlib/Dynamics/PeriodicPts.lean

Proof steps:
state_before: α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
j : ℤ
g : G
a : α
⊢ g ^ (j % ↑(period g a)) • a = g ^ j • a
state_after: no goals
tactic: conv_rhs => rw [← Int.emod_add_ediv j (period g a), zpow_add, mul_smul,
    zpow_smul_eq_iff_period_dvd.mpr (dvd_mul_right _ _)]
Theorem: VitaliFamily.eventually_filterAt_integrableOn
File: Mathlib/MeasureTheory/Covering/Differentiation.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
x : α
f : α → E
hf : LocallyIntegrable f μ
⊢ ∀ᶠ (a : Set α) in v.filterAt x, IntegrableOn f a μ
state_after: case intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
x : α
f : α → E
hf : LocallyIntegrable f μ
w : Set α
w_nhds : w ∈ 𝓝 x
hw : IntegrableOn f w μ
⊢ ∀ᶠ (a : Set α) in v.filterAt x, IntegrableOn f a μ
tactic: rcases hf x with ⟨w, w_nhds, hw⟩
state_before: case intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
x : α
f : α → E
hf : LocallyIntegrable f μ
w : Set α
w_nhds : w ∈ 𝓝 x
hw : IntegrableOn f w μ
⊢ ∀ᶠ (a : Set α) in v.filterAt x, IntegrableOn f a μ
state_after: case h
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
x : α
f : α → E
hf : LocallyIntegrable f μ
w : Set α
w_nhds : w ∈ 𝓝 x
hw : IntegrableOn f w μ
a : Set α
ha : a ⊆ w
⊢ IntegrableOn f a μ
tactic: filter_upwards [v.eventually_filterAt_subset_of_nhds w_nhds] with a ha
state_before: case h
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
x : α
f : α → E
hf : LocallyIntegrable f μ
w : Set α
w_nhds : w ∈ 𝓝 x
hw : IntegrableOn f w μ
a : Set α
ha : a ⊆ w
⊢ IntegrableOn f a μ
state_after: no goals
tactic: exact hw.mono_set ha
Theorem: Mathlib.Meta.NormNum.isInt_emod
File: Mathlib/Tactic/NormNum/DivMod.lean

Proof steps:
state_before: a b q m a' : ℤ
b' r : ℕ
ha : IsInt a a'
hb : IsNat b b'
hm : q * ↑b' = m
h : ↑r + m = a'
h₂ : r.blt b' = true
⊢ a % b = ↑r
state_after: case mk.mk
a q m : ℤ
b' r : ℕ
hm : q * ↑b' = m
h₂ : r.blt b' = true
h : ↑r + m = a
⊢ a % ↑b' = ↑r
tactic: obtain ⟨⟨rfl⟩, ⟨rfl⟩⟩ := ha, hb
state_before: case mk.mk
a q m : ℤ
b' r : ℕ
hm : q * ↑b' = m
h₂ : r.blt b' = true
h : ↑r + m = a
⊢ a % ↑b' = ↑r
state_after: case mk.mk
a q m : ℤ
b' r : ℕ
hm : q * ↑b' = m
h₂ : r.blt b' = true
h : ↑r + m = a
⊢ ↑r % ↑b' = ↑r
tactic: simp only [← h, ← hm, Int.add_mul_emod_self]
state_before: case mk.mk
a q m : ℤ
b' r : ℕ
hm : q * ↑b' = m
h₂ : r.blt b' = true
h : ↑r + m = a
⊢ ↑r % ↑b' = ↑r
state_after: no goals
tactic: rw [Int.emod_eq_of_lt] <;> [simp; simpa using h₂]
Theorem: IsClosed.mem_iff_infDist_zero
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
h : IsClosed s
hs : s.Nonempty
⊢ x ∈ s ↔ infDist x s = 0
state_after: no goals
tactic: rw [← mem_closure_iff_infDist_zero hs, h.closure_eq]
Theorem: isRadical_iff_squarefree_or_zero
File: Mathlib/Algebra/Squarefree/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CancelCommMonoidWithZero R
x y p d : R
inst✝ : DecompositionMonoid R
⊢ x = 0 → IsRadical x
state_after: R : Type u_1
inst✝¹ : CancelCommMonoidWithZero R
y p d : R
inst✝ : DecompositionMonoid R
⊢ IsRadical 0
tactic: rintro rfl
state_before: R : Type u_1
inst✝¹ : CancelCommMonoidWithZero R
y p d : R
inst✝ : DecompositionMonoid R
⊢ IsRadical 0
state_after: R : Type u_1
inst✝¹ : CancelCommMonoidWithZero R
y p d : R
inst✝ : DecompositionMonoid R
⊢ IsReduced R
tactic: rw [zero_isRadical_iff]
state_before: R : Type u_1
inst✝¹ : CancelCommMonoidWithZero R
y p d : R
inst✝ : DecompositionMonoid R
⊢ IsReduced R
state_after: no goals
tactic: infer_instance