ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Fintype.prod_fiberwise
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ i : ι, f i
state_after: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ j : κ, ∏ i ∈ filter (fun i => g i = j) univ, f i
tactic: rw [← Finset.prod_fiberwise _ g f]
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ j : κ, ∏ i ∈ filter (fun i => g i = j) univ, f i
state_after: case e_f.h
ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
j : κ
⊢ ∏ i : { i // g i = j }, f ↑i = ∏ i ∈ filter (fun i => g i = j) univ, f i
tactic: congr with j
state_before: case e_f.h
ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
j : κ
⊢ ∏ i : { i // g i = j }, f ↑i = ∏ i ∈ filter (fun i => g i = j) univ, f i
state_after: no goals
tactic: exact (prod_subtype _ (by simp) _).symm
Theorem: Ideal.radical_minimalPrimes
File: Mathlib/RingTheory/Ideal/MinimalPrime.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J : Ideal R
⊢ I.radical.minimalPrimes = I.minimalPrimes
state_after: R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J : Ideal R
⊢ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I.radical ≤ p} =
    minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I ≤ p}
tactic: rw [Ideal.minimalPrimes, Ideal.minimalPrimes]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J : Ideal R
⊢ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I.radical ≤ p} =
    minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I ≤ p}
state_after: case h
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J p : Ideal R
⊢ p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I.radical ≤ p} ↔
    p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I ≤ p}
tactic: ext p
state_before: case h
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J p : Ideal R
⊢ p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I.radical ≤ p} ↔
    p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I ≤ p}
state_after: case h.refine_1.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J p : Ideal R
b : ∀ ⦃b : Ideal R⦄, b ∈ {p | p.IsPrime ∧ I.radical ≤ p} → (fun x x_1 => x ≤ x_1) b p → (fun x x_1 => x ≤ x_1) p b
a : p.IsPrime
ha : I.radical ≤ p
⊢ p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I ≤ p}

case h.refine_2.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
I J p : Ideal R
b : ∀ ⦃b : Ideal R⦄, b ∈ {p | p.IsPrime ∧ I ≤ p} → (fun x x_1 => x ≤ x_1) b p → (fun x x_1 => x ≤ x_1) p b
a : p.IsPrime
ha : I ≤ p
⊢ p ∈ minimals (fun x x_1 => x ≤ x_1) {p | p.IsPrime ∧ I.radical ≤ p}
tactic: refine ⟨?_, ?_⟩ <;> rintro ⟨⟨a, ha⟩, b⟩
Theorem: Asymptotics.IsBigO.sub
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E'
g₁ g₂ : α → F'
h₁ : f₁ =O[l] g
h₂ : f₂ =O[l] g
⊢ (fun x => f₁ x - f₂ x) =O[l] g
state_after: no goals
tactic: simpa only [sub_eq_add_neg] using h₁.add h₂.neg_left
Theorem: Sylow.card_quotient_normalizer_modEq_card_quotient
File: Mathlib/GroupTheory/Sylow.lean

Proof steps:
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
H : Subgroup G
hH : Nat.card ↥H = p ^ n
⊢ Nat.card (↥H.normalizer ⧸ comap H.normalizer.subtype H) ≡ Nat.card (G ⧸ H) [MOD p]
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
H : Subgroup G
hH : Nat.card ↥H = p ^ n
⊢ Nat.card ↑(MulAction.fixedPoints (↥H) (G ⧸ H)) ≡ Nat.card (G ⧸ H) [MOD p]
tactic: rw [← Nat.card_congr (fixedPointsMulLeftCosetsEquivQuotient H)]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
H : Subgroup G
hH : Nat.card ↥H = p ^ n
⊢ Nat.card ↑(MulAction.fixedPoints (↥H) (G ⧸ H)) ≡ Nat.card (G ⧸ H) [MOD p]
state_after: no goals
tactic: exact ((IsPGroup.of_card hH).card_modEq_card_fixedPoints _).symm
Theorem: SimpleGraph.map_comap_le
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

Proof steps:
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G✝ : SimpleGraph V
G' : SimpleGraph W
u v : V
f : V ↪ W
G : SimpleGraph W
⊢ SimpleGraph.map f (SimpleGraph.comap (⇑f) G) ≤ G
state_after: no goals
tactic: rw [map_le_iff_le_comap]
Theorem: round_two_inv
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
⊢ round 2⁻¹ = 1
state_after: no goals
tactic: simp only [round_eq, ← one_div, add_halves, floor_one]
Theorem: transGen_wcovBy_of_le
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x ≤ y
⊢ TransGen (fun x x_1 => x ⩿ x_1) x y
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x ≤ y
this : (Ico x y).card < (Icc x y).card
⊢ TransGen (fun x x_1 => x ⩿ x_1) x y
tactic: have : (Ico x y).card < (Icc x y).card := card_lt_card <|
    ⟨Ico_subset_Icc_self, not_subset.mpr ⟨y, ⟨right_mem_Icc.mpr hxy, right_not_mem_Ico⟩⟩⟩
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x ≤ y
this : (Ico x y).card < (Icc x y).card
⊢ TransGen (fun x x_1 => x ⩿ x_1) x y
state_after: case pos
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x ≤ y
this : (Ico x y).card < (Icc x y).card
hxy' : y ≤ x
⊢ TransGen (fun x x_1 => x ⩿ x_1) x y

case neg
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
hxy : x ≤ y
this : (Ico x y).card < (Icc x y).card
hxy' : ¬y ≤ x
⊢ TransGen (fun x x_1 => x ⩿ x_1) x y
tactic: by_cases hxy' : y ≤ x
Theorem: IsCompact.exists_infDist_eq_dist
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 : IsCompact s
hne : s.Nonempty
x y : α
hys : y ∈ s
hy : infEdist x s = edist x y
⊢ infDist x s = dist x y
state_after: no goals
tactic: rw [infDist, dist_edist, hy]
Theorem: Matrix.SpecialLinearGroup.map_apply_coe
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

Proof steps:
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
f : R →+* S
g : SpecialLinearGroup n R
⊢ (f.mapMatrix ↑g).det = 1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
f : R →+* S
g : SpecialLinearGroup n R
⊢ f (↑g).det = 1
tactic: rw [← f.map_det]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
f : R →+* S
g : SpecialLinearGroup n R
⊢ f (↑g).det = 1
state_after: no goals
tactic: simp [g.prop]
Theorem: Finpartition.exists_mem
File: Mathlib/Order/Partition/Finpartition.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
⊢ ∃ t ∈ P.parts, a ∈ t
state_after: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ P.parts.sup id
⊢ ∃ t ∈ P.parts, a ∈ t
tactic: simp_rw [← P.sup_parts] at ha
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ P.parts.sup id
⊢ ∃ t ∈ P.parts, a ∈ t
state_after: no goals
tactic: exact mem_sup.1 ha
Theorem: closure_eq_inter_uniformity
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
t : Set (α × α)
⊢ ⋂ V ∈ 𝓤 α, V ○ t ○ V = ⋂ V ∈ 𝓤 α, V ○ (t ○ V)
state_after: no goals
tactic: simp only [compRel_assoc]
Theorem: FormalMultilinearSeries.comp_rightInv
File: Mathlib/Analysis/Analytic/Inverse.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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ p.comp (p.rightInv i) = id 𝕜 F
state_after: case h.H
𝕜 : 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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
n : ℕ
v : Fin n → F
⊢ (p.comp (p.rightInv i) n) v = (id 𝕜 F n) v
tactic: ext (n v)
state_before: case h.H
𝕜 : 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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
n : ℕ
v : Fin n → F
⊢ (p.comp (p.rightInv i) n) v = (id 𝕜 F n) v
state_after: no goals
tactic: match n with
  | 0 =>
    simp only [h0, ContinuousMultilinearMap.zero_apply, id_apply_ne_one, Ne, not_false_iff,
      zero_ne_one, comp_coeff_zero']
  | 1 =>
    simp only [comp_coeff_one, h, rightInv_coeff_one, ContinuousLinearEquiv.apply_symm_apply,
      id_apply_one, ContinuousLinearEquiv.coe_apply, continuousMultilinearCurryFin1_symm_apply]
  | n + 2 =>
    have N : 0 < n + 2 := by norm_num
    simp [comp_rightInv_aux1 N, h, rightInv, lt_irrefl n, show n + 2 ≠ 1 by omega,
      ← sub_eq_add_neg, sub_eq_zero, comp_rightInv_aux2, -Set.toFinset_setOf]
Theorem: HasDerivWithinAt.smul
File: Mathlib/Analysis/Calculus/Deriv/Mul.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
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivWithinAt c c' s x
hf : HasDerivWithinAt f f' s x
⊢ HasDerivWithinAt (fun y => c y • f y) (c x • f' + c' • f x) s x
state_after: no goals
tactic: simpa using (HasFDerivWithinAt.smul hc hf).hasDerivWithinAt
Theorem: Valuation.self_le_supp_comap
File: Mathlib/RingTheory/Valuation/Quotient.lean

Proof steps:
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v✝ : Valuation R Γ₀
J : Ideal R
v : Valuation (R ⧸ J) Γ₀
⊢ J ≤ (comap (Ideal.Quotient.mk J) v).supp
state_after: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v✝ : Valuation R Γ₀
J : Ideal R
v : Valuation (R ⧸ J) Γ₀
⊢ Ideal.map (Ideal.Quotient.mk J) J ≤ v.supp
tactic: rw [comap_supp, ← Ideal.map_le_iff_le_comap]
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v✝ : Valuation R Γ₀
J : Ideal R
v : Valuation (R ⧸ J) Γ₀
⊢ Ideal.map (Ideal.Quotient.mk J) J ≤ v.supp
state_after: no goals
tactic: simp
Theorem: ONote.split_add_lt
File: Mathlib/SetTheory/Ordinal/Notation.lean

Proof steps:
state_before: o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
⊢ a.repr + ↑m < ω ^ e.repr
state_after: case intro
o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
⊢ a.repr + ↑m < ω ^ e.repr
tactic: cases' nf_repr_split h with h₁ h₂
state_before: case intro
o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
⊢ a.repr + ↑m < ω ^ e.repr
state_after: case intro.intro
o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
e0 : e.repr ≠ 0
d : ω ∣ a.repr
⊢ a.repr + ↑m < ω ^ e.repr
tactic: cases' h₁.of_dvd_omega (split_dvd h) with e0 d
state_before: case intro.intro
o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
e0 : e.repr ≠ 0
d : ω ∣ a.repr
⊢ a.repr + ↑m < ω ^ e.repr
state_after: o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
e0 : e.repr ≠ 0
d : ω ∣ a.repr
⊢ ω ≤ ω ^ e.repr
tactic: apply principal_add_omega_opow _ h₁.snd'.repr_lt (lt_of_lt_of_le (nat_lt_omega _) _)
state_before: o e : ONote
n : ℕ+
a : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (e.oadd n a, m)
h₁ : (e.oadd n a).NF
h₂ : o.repr = (e.oadd n a).repr + ↑m
e0 : e.repr ≠ 0
d : ω ∣ a.repr
⊢ ω ≤ ω ^ e.repr
state_after: no goals
tactic: simpa using opow_le_opow_right omega_pos (one_le_iff_ne_zero.2 e0)
Theorem: Set.uIcc_injective_right
File: Mathlib/Order/Interval/Set/UnorderedInterval.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DistribLattice α
a✝ a₁ a₂ b✝ b₁ b₂ c✝ x a b c : α
h : (fun b => [[b, a]]) b = (fun b => [[b, a]]) c
⊢ b = c
state_after: α : Type u_1
β : Type u_2
inst✝ : DistribLattice α
a✝ a₁ a₂ b✝ b₁ b₂ c✝ x a b c : α
h : ∀ (x : α), x ∈ (fun b => [[b, a]]) b ↔ x ∈ (fun b => [[b, a]]) c
⊢ b = c
tactic: rw [Set.ext_iff] at h
state_before: α : Type u_1
β : Type u_2
inst✝ : DistribLattice α
a✝ a₁ a₂ b✝ b₁ b₂ c✝ x a b c : α
h : ∀ (x : α), x ∈ (fun b => [[b, a]]) b ↔ x ∈ (fun b => [[b, a]]) c
⊢ b = c
state_after: no goals
tactic: exact eq_of_mem_uIcc_of_mem_uIcc ((h _).1 left_mem_uIcc) ((h _).2 left_mem_uIcc)
Theorem: OreLocalization.oreDiv_mul_char
File: Mathlib/RingTheory/OreLocalization/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : Monoid R
S : Submonoid R
inst✝¹ : OreSet S
X : Type ?u.75332
inst✝ : MulAction R X
r₁ r₂ : R
s₁ s₂ : ↥S
r' : R
s' : ↥S
huv : ↑s' * r₁ = r' * ↑s₂
⊢ r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r' * r₂ /ₒ (s' * s₁)
state_after: no goals
tactic: with_unfolding_all exact smul'_char r₁ r₂ s₁ s₂ s' r' huv
Theorem: ZNum.add_zero
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
n : ZNum
⊢ n + 0 = n
state_after: no goals
tactic: cases n <;> rfl
Theorem: monotone_of_hasDerivAt_nonneg
File: Mathlib/Analysis/Calculus/MeanValue.lean

Proof steps:
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
hf : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : 0 ≤ f'
x : ℝ
⊢ 0 ≤ deriv f x
state_after: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
hf : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : 0 ≤ f'
x : ℝ
⊢ 0 ≤ f' x
tactic: rw [(hf _).deriv]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
hf : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : 0 ≤ f'
x : ℝ
⊢ 0 ≤ f' x
state_after: no goals
tactic: exact hf' _
Theorem: Submodule.bot_eq_top_of_rank_eq_zero
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

Proof steps:
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ inst✝ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
⊢ ⊥ = ⊤
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹⁰ : Ring R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M₁
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M₁
inst✝³ : Nontrivial R
inst✝² inst✝¹ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
inst✝ : Nontrivial R
⊢ ⊥ = ⊤
tactic: nontriviality R
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹⁰ : Ring R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M₁
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M₁
inst✝³ : Nontrivial R
inst✝² inst✝¹ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
inst✝ : Nontrivial R
⊢ ⊥ = ⊤
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹⁰ : Ring R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M₁
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M₁
inst✝³ : Nontrivial R
inst✝² inst✝¹ : NoZeroSMulDivisors R M
h : Subsingleton M
inst✝ : Nontrivial R
⊢ ⊥ = ⊤
tactic: rw [rank_zero_iff] at h
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹⁰ : Ring R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M₁
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M₁
inst✝³ : Nontrivial R
inst✝² inst✝¹ : NoZeroSMulDivisors R M
h : Subsingleton M
inst✝ : Nontrivial R
⊢ ⊥ = ⊤
state_after: no goals
tactic: subsingleton
Theorem: MeasurableSpace.DynkinSystem.generateHas_compl
File: Mathlib/MeasureTheory/PiSystem.lean

Proof steps:
state_before: α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
⊢ GenerateHas C sᶜ ↔ GenerateHas C s
state_after: α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
⊢ GenerateHas C sᶜ → GenerateHas C s
tactic: refine ⟨?_, GenerateHas.compl⟩
state_before: α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
⊢ GenerateHas C sᶜ → GenerateHas C s
state_after: α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
h : GenerateHas C sᶜ
⊢ GenerateHas C s
tactic: intro h
state_before: α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
h : GenerateHas C sᶜ
⊢ GenerateHas C s
state_after: case h.e'_3
α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
h : GenerateHas C sᶜ
⊢ s = sᶜᶜ
tactic: convert GenerateHas.compl h
state_before: case h.e'_3
α : Type u_1
d : DynkinSystem α
C : Set (Set α)
s : Set α
h : GenerateHas C sᶜ
⊢ s = sᶜᶜ
state_after: no goals
tactic: simp
Theorem: MeasureTheory.lintegral_rw₁
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f f' : α → β
h✝ : f =ᶠ[ae μ] f'
g : β → ℝ≥0∞
a : α
h : f a = f' a
⊢ (fun a => g (f a)) a = (fun a => g (f' a)) a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f f' : α → β
h✝ : f =ᶠ[ae μ] f'
g : β → ℝ≥0∞
a : α
h : f a = f' a
⊢ g (f a) = g (f' a)
tactic: dsimp only
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f f' : α → β
h✝ : f =ᶠ[ae μ] f'
g : β → ℝ≥0∞
a : α
h : f a = f' a
⊢ g (f a) = g (f' a)
state_after: no goals
tactic: rw [h]
Theorem: Set.exists_ne_map_eq_of_ncard_lt_of_maps_to
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
f✝ : α → β
t : Set β
hc : t.ncard < s.ncard
f : α → β
hf : ∀ a ∈ s, f a ∈ t
ht : autoParam t.Finite _auto✝
⊢ ∃ x ∈ s, ∃ y ∈ s, x ≠ y ∧ f x = f y
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
f✝ : α → β
t : Set β
hc : t.ncard < s.ncard
f : α → β
hf : ∀ a ∈ s, f a ∈ t
ht : autoParam t.Finite _auto✝
h' : ¬∃ x ∈ s, ∃ y ∈ s, x ≠ y ∧ f x = f y
⊢ False
tactic: by_contra h'
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
f✝ : α → β
t : Set β
hc : t.ncard < s.ncard
f : α → β
hf : ∀ a ∈ s, f a ∈ t
ht : autoParam t.Finite _auto✝
h' : ¬∃ x ∈ s, ∃ y ∈ s, x ≠ y ∧ f x = f y
⊢ False
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
f✝ : α → β
t : Set β
hc : t.ncard < s.ncard
f : α → β
hf : ∀ a ∈ s, f a ∈ t
ht : autoParam t.Finite _auto✝
h' : ∀ x ∈ s, ∀ x_1 ∈ s, f x = f x_1 → x = x_1
⊢ False
tactic: simp only [Ne, exists_prop, not_exists, not_and, not_imp_not] at h'
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
f✝ : α → β
t : Set β
hc : t.ncard < s.ncard
f : α → β
hf : ∀ a ∈ s, f a ∈ t
ht : autoParam t.Finite _auto✝
h' : ∀ x ∈ s, ∀ x_1 ∈ s, f x = f x_1 → x = x_1
⊢ False
state_after: no goals
tactic: exact (ncard_le_ncard_of_injOn f hf h' ht).not_lt hc
Theorem: minpoly.one
File: Mathlib/FieldTheory/Minpoly/Field.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
inst✝³ : Field A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
⊢ minpoly A 1 = X - 1
state_after: no goals
tactic: simpa only [RingHom.map_one, C_1, sub_eq_add_neg] using eq_X_sub_C B (1 : A)