ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Sylow.card_normalizer_modEq_card
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 ≡ Nat.card G [MOD p ^ (n + 1)]
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
this : ↥(H.subgroupOf H.normalizer) ≃ ↥H
⊢ Nat.card ↥H.normalizer ≡ Nat.card G [MOD p ^ (n + 1)]
tactic: have : H.subgroupOf (normalizer H) ≃ H := (subgroupOfEquivOfLe le_normalizer).toEquiv
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
this : ↥(H.subgroupOf H.normalizer) ≃ ↥H
⊢ Nat.card ↥H.normalizer ≡ Nat.card G [MOD p ^ (n + 1)]
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
this : ↥(H.subgroupOf H.normalizer) ≃ ↥H
⊢ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) * p ^ n ≡ Nat.card (G ⧸ H) * p ^ n [MOD p * p ^ n]
tactic: rw [card_eq_card_quotient_mul_card_subgroup H,
    card_eq_card_quotient_mul_card_subgroup (H.subgroupOf (normalizer H)), Nat.card_congr this,
    hH, pow_succ']
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
this : ↥(H.subgroupOf H.normalizer) ≃ ↥H
⊢ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) * p ^ n ≡ Nat.card (G ⧸ H) * p ^ n [MOD p * p ^ n]
state_after: no goals
tactic: exact (card_quotient_normalizer_modEq_card_quotient hH).mul_right' _
Theorem: CategoryTheory.Endofunctor.Adjunction.Algebra.homEquiv_naturality_str
File: Mathlib/CategoryTheory/Endofunctor/Algebra.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
F G : C ⥤ C
adj : F ⊣ G
A₁ A₂ : Algebra F
f : A₁ ⟶ A₂
⊢ (adj.homEquiv A₁.a A₁.a) A₁.str ≫ G.map f.f = f.f ≫ (adj.homEquiv A₂.a A₂.a) A₂.str
state_after: no goals
tactic: rw [← Adjunction.homEquiv_naturality_right, ← Adjunction.homEquiv_naturality_left, f.h]
Theorem: CategoryTheory.MorphismProperty.IsInvertedBy.iff_comp
File: Mathlib/CategoryTheory/MorphismProperty/IsInvertedBy.lean

Proof steps:
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u'
inst✝⁴ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝³ : Category.{u_4, u_1} C₁
inst✝² : Category.{u_5, u_2} C₂
inst✝¹ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
G : C₂ ⥤ C₃
inst✝ : G.ReflectsIsomorphisms
⊢ W.IsInvertedBy (F ⋙ G) ↔ W.IsInvertedBy F
state_after: case mp
C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u'
inst✝⁴ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝³ : Category.{u_4, u_1} C₁
inst✝² : Category.{u_5, u_2} C₂
inst✝¹ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
G : C₂ ⥤ C₃
inst✝ : G.ReflectsIsomorphisms
⊢ W.IsInvertedBy (F ⋙ G) → W.IsInvertedBy F

case mpr
C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u'
inst✝⁴ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝³ : Category.{u_4, u_1} C₁
inst✝² : Category.{u_5, u_2} C₂
inst✝¹ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
G : C₂ ⥤ C₃
inst✝ : G.ReflectsIsomorphisms
⊢ W.IsInvertedBy F → W.IsInvertedBy (F ⋙ G)
tactic: constructor
Theorem: AnalyticAt.meromorphicAt_order
File: Mathlib/Analysis/Analytic/Meromorphic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : AnalyticAt 𝕜 f x
⊢ ⋯.order = WithTop.map Nat.cast hf.order
state_after: case inl
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : AnalyticAt 𝕜 f x
ho : hf.order = ⊤
⊢ ⋯.order = WithTop.map Nat.cast hf.order

case inr
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
x : 𝕜
hf : AnalyticAt 𝕜 f x
ho : hf.order ≠ ⊤
⊢ ⋯.order = WithTop.map Nat.cast hf.order
tactic: rcases eq_or_ne hf.order ⊤ with ho | ho
Theorem: GenContFract.squashSeq_nth_of_lt
File: Mathlib/Algebra/ContinuedFractions/ConvergentsEquiv.lean

Proof steps:
state_before: K : Type u_1
n : ℕ
g : GenContFract K
s : Stream'.Seq (Pair K)
inst✝ : DivisionRing K
m : ℕ
m_lt_n : m < n
⊢ (squashSeq s n).get? m = s.get? m
state_after: no goals
tactic: cases s_succ_nth_eq : s.get? (n + 1) with
  | none => rw [squashSeq_eq_self_of_terminated s_succ_nth_eq]
  | some =>
    obtain ⟨gp_n, s_nth_eq⟩ : ∃ gp_n, s.get? n = some gp_n :=
      s.ge_stable n.le_succ s_succ_nth_eq
    obtain ⟨gp_m, s_mth_eq⟩ : ∃ gp_m, s.get? m = some gp_m :=
      s.ge_stable (le_of_lt m_lt_n) s_nth_eq
    simp [*, squashSeq, m_lt_n.ne]
Theorem: RelSeries.head_tail
File: Mathlib/Order/RelSeries.lean

Proof steps:
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ (p.tail len_pos).head = p.toFun 1
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ p.toFun (Fin.cast ⋯ 0).succ = p.toFun 1
tactic: show p (Fin.succ _) = p 1
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ p.toFun (Fin.cast ⋯ 0).succ = p.toFun 1
state_after: case e_a
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ (Fin.cast ⋯ 0).succ = 1
tactic: congr
state_before: case e_a
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ (Fin.cast ⋯ 0).succ = 1
state_after: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ ↑(Fin.cast ⋯ 0).succ = ↑1
tactic: ext
state_before: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ ↑(Fin.cast ⋯ 0).succ = ↑1
state_after: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ 1 = 1 % (p.length + 1)
tactic: show (1 : ℕ) = (1 : ℕ) % _
state_before: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ 1 = 1 % (p.length + 1)
state_after: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ 1 < p.length + 1
tactic: rw [Nat.mod_eq_of_lt]
state_before: case e_a.h
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p : RelSeries r
len_pos : p.length ≠ 0
⊢ 1 < p.length + 1
state_after: no goals
tactic: simpa only [lt_add_iff_pos_left, Nat.pos_iff_ne_zero]
Theorem: hasProd_subtype_iff_of_mulSupport_subset
File: Mathlib/Topology/Algebra/InfiniteSum/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f g : β → α
a b : α
s✝ : Finset β
s : Set β
hf : mulSupport f ⊆ s
⊢ ∀ x ∉ Set.range fun a => ↑a, f x = 1
state_after: no goals
tactic: simpa using mulSupport_subset_iff'.1 hf
Theorem: ascPochhammer_eval_one
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

Proof steps:
state_before: S✝ : Type u_1
inst✝¹ : Semiring S✝
r n✝ : ℕ
S : Type u_2
inst✝ : Semiring S
n : ℕ
⊢ eval 1 (ascPochhammer S n) = ↑n !
state_after: no goals
tactic: rw_mod_cast [ascPochhammer_nat_eq_ascFactorial, Nat.one_ascFactorial]
Theorem: monotone_iff_apply₂
File: Mathlib/Order/Monotone/Basic.lean

Proof steps:
state_before: ι✝ : Type u_1
α✝ : Type u
β✝ : Type v
γ : Type w
δ : Type u_2
π : ι✝ → Type u_3
r : α✝ → α✝ → Prop
ι : Type u_4
α : Type u_5
β : ι → Type u_6
inst✝¹ : (i : ι) → Preorder (β i)
inst✝ : Preorder α
f : α → (i : ι) → β i
⊢ Monotone f ↔ ∀ (i : ι), Monotone fun x => f x i
state_after: no goals
tactic: simp [Monotone, Pi.le_def, @forall_swap ι]
Theorem: isOpen_setOf_eventually_nhds
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
p : X → Prop
⊢ IsOpen {x | ∀ᶠ (y : X) in 𝓝 x, p y}
state_after: no goals
tactic: simp only [← interior_setOf_eq, isOpen_interior]
Theorem: not_intervalIntegrable_of_tendsto_norm_atTop_of_deriv_isBigO_within_diff_singleton
File: Mathlib/Analysis/SpecialFunctions/NonIntegrable.lean

Proof steps:
state_before: case intro.intro.intro.intro
E : Type u_1
F : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : NormedAddCommGroup F
f : ℝ → E
g : ℝ → F
a b c : ℝ
hne : a ≠ b
hc : c ∈ [[a, b]]
h_deriv : ∀ᶠ (x : ℝ) in 𝓝[[[a, b]] \ {c}] c, DifferentiableAt ℝ f x
h_infty : Tendsto (fun x => ‖f x‖) (𝓝[[[a, b]] \ {c}] c) atTop
hg : deriv f =O[𝓝[[[a, b]] \ {c}] c] g
l : Filter ℝ
hl : TendstoIxxClass Icc l l
hl' : l.NeBot
hle : l ≤ 𝓝 c
hmem : [[a, b]] \ {c} ∈ l
⊢ ¬IntervalIntegrable g volume a b
state_after: case intro.intro.intro.intro
E : Type u_1
F : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : NormedAddCommGroup F
f : ℝ → E
g : ℝ → F
a b c : ℝ
hne : a ≠ b
hc : c ∈ [[a, b]]
h_deriv : ∀ᶠ (x : ℝ) in 𝓝[[[a, b]] \ {c}] c, DifferentiableAt ℝ f x
h_infty : Tendsto (fun x => ‖f x‖) (𝓝[[[a, b]] \ {c}] c) atTop
hg : deriv f =O[𝓝[[[a, b]] \ {c}] c] g
l : Filter ℝ
hl : TendstoIxxClass Icc l l
hl' : l.NeBot
hle : l ≤ 𝓝 c
hmem : [[a, b]] \ {c} ∈ l
this : l ≤ 𝓝[[[a, b]] \ {c}] c
⊢ ¬IntervalIntegrable g volume a b
tactic: have : l ≤ 𝓝[[[a, b]] \ {c}] c := le_inf hle (le_principal_iff.2 hmem)
state_before: case intro.intro.intro.intro
E : Type u_1
F : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : NormedAddCommGroup F
f : ℝ → E
g : ℝ → F
a b c : ℝ
hne : a ≠ b
hc : c ∈ [[a, b]]
h_deriv : ∀ᶠ (x : ℝ) in 𝓝[[[a, b]] \ {c}] c, DifferentiableAt ℝ f x
h_infty : Tendsto (fun x => ‖f x‖) (𝓝[[[a, b]] \ {c}] c) atTop
hg : deriv f =O[𝓝[[[a, b]] \ {c}] c] g
l : Filter ℝ
hl : TendstoIxxClass Icc l l
hl' : l.NeBot
hle : l ≤ 𝓝 c
hmem : [[a, b]] \ {c} ∈ l
this : l ≤ 𝓝[[[a, b]] \ {c}] c
⊢ ¬IntervalIntegrable g volume a b
state_after: no goals
tactic: exact not_intervalIntegrable_of_tendsto_norm_atTop_of_deriv_isBigO_filter l
    (mem_of_superset hmem diff_subset) (h_deriv.filter_mono this) (h_infty.mono_left this)
    (hg.mono this)
Theorem: MvPowerSeries.inv_mul_cancel
File: Mathlib/RingTheory/MvPowerSeries/Inverse.lean

Proof steps:
state_before: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
h : (constantCoeff σ k) φ ≠ 0
⊢ φ⁻¹ * φ = 1
state_after: no goals
tactic: rw [mul_comm, φ.mul_inv_cancel h]
Theorem: Real.Angle.expMapCircle_zero
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

Proof steps:
state_before: ⊢ expMapCircle 0 = 1
state_after: no goals
tactic: rw [← Real.Angle.coe_zero, Real.Angle.expMapCircle_coe, _root_.expMapCircle_zero]
Theorem: Nat.Partrec'.cons
File: Mathlib/Computability/Halting.lean

Proof steps:
state_before: n m : ℕ
f : Vector ℕ n → ℕ
g : Vector ℕ n → Vector ℕ m
hf : Partrec' ↑f
hg : Vec g
i : Fin m.succ
⊢ Partrec' fun v => ↑(some (((fun v => f v ::ᵥ g v) v).get 0))
state_after: no goals
tactic: simpa using hf
state_before: n m : ℕ
f : Vector ℕ n → ℕ
g : Vector ℕ n → Vector ℕ m
hf : Partrec' ↑f
hg : Vec g
i✝ : Fin m.succ
i : Fin m
⊢ Partrec' fun v => ↑(some (((fun v => f v ::ᵥ g v) v).get i.succ))
state_after: no goals
tactic: simp only [hg i, get_cons_succ]
Theorem: IsPrimitiveRoot.nthRoots_one_eq_biUnion_primitiveRoots'
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ nthRootsFinset (↑n) R = (↑n).divisors.biUnion fun i => primitiveRoots i R
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ ((↑n).divisors.biUnion fun i => primitiveRoots i R) = nthRootsFinset (↑n) R
tactic: symm
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ ((↑n).divisors.biUnion fun i => primitiveRoots i R) = nthRootsFinset (↑n) R
state_after: case h
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ ((↑n).divisors.biUnion fun i => primitiveRoots i R) ⊆ nthRootsFinset (↑n) R

case h₂
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ (nthRootsFinset (↑n) R).card ≤ ((↑n).divisors.biUnion fun i => primitiveRoots i R).card
tactic: apply Finset.eq_of_subset_of_card_le
Theorem: MultilinearMap.prod_apply
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹¹ : Semiring R
inst✝¹⁰ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁸ : AddCommMonoid M₂
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : AddCommMonoid M'
inst✝⁵ : (i : Fin n.succ) → Module R (M i)
inst✝⁴ : (i : ι) → Module R (M₁ i)
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M'
f✝ f' f : MultilinearMap R M₁ M₂
g : MultilinearMap R M₁ M₃
inst✝ : DecidableEq ι
m : (i : ι) → M₁ i
i : ι
x y : M₁ i
⊢ (fun m => (f m, g m)) (update m i (x + y)) =
    (fun m => (f m, g m)) (update m i x) + (fun m => (f m, g m)) (update m i y)
state_after: no goals
tactic: simp
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹¹ : Semiring R
inst✝¹⁰ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁸ : AddCommMonoid M₂
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : AddCommMonoid M'
inst✝⁵ : (i : Fin n.succ) → Module R (M i)
inst✝⁴ : (i : ι) → Module R (M₁ i)
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M'
f✝ f' f : MultilinearMap R M₁ M₂
g : MultilinearMap R M₁ M₃
inst✝ : DecidableEq ι
m : (i : ι) → M₁ i
i : ι
c : R
x : M₁ i
⊢ (fun m => (f m, g m)) (update m i (c • x)) = c • (fun m => (f m, g m)) (update m i x)
state_after: no goals
tactic: simp
Theorem: MeasureTheory.Measure.MutuallySingular.add_left_iff
File: Mathlib/MeasureTheory/Measure/MutuallySingular.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ μ₁ μ₂ ν ν₁ ν₂ : Measure α
⊢ μ₁ + μ₂ ⟂ₘ ν ↔ μ₁ ⟂ₘ ν ∧ μ₂ ⟂ₘ ν
state_after: no goals
tactic: rw [← sum_cond, sum_left, Bool.forall_bool, cond, cond, and_comm]
Theorem: Polynomial.leadingCoeff_sub_of_degree_eq
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree = q.degree
hlc : p.leadingCoeff ≠ q.leadingCoeff
⊢ (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
hlc : p.leadingCoeff ≠ q.leadingCoeff
h : p.degree = (-q).degree
⊢ (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
tactic: replace h : degree p = degree (-q) := by rwa [q.degree_neg]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
hlc : p.leadingCoeff ≠ q.leadingCoeff
h : p.degree = (-q).degree
⊢ (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree = (-q).degree
hlc : p.leadingCoeff + (-q).leadingCoeff ≠ 0
⊢ (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
tactic: replace hlc : leadingCoeff p + leadingCoeff (-q) ≠ 0 := by
    rwa [← sub_ne_zero, sub_eq_add_neg, ← q.leadingCoeff_neg] at hlc
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree = (-q).degree
hlc : p.leadingCoeff + (-q).leadingCoeff ≠ 0
⊢ (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
state_after: no goals
tactic: rw [sub_eq_add_neg, leadingCoeff_add_of_degree_eq h hlc, leadingCoeff_neg, sub_eq_add_neg]
Theorem: ProperCone.comap_comap
File: Mathlib/Analysis/Convex/Cone/Proper.lean

Proof steps:
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
G : Type u_3
inst✝¹ : NormedAddCommGroup G
inst✝ : InnerProductSpace ℝ G
g : F →L[ℝ] G
f : E →L[ℝ] F
S : ProperCone ℝ G
⊢ ↑(comap f (comap g S)) = ↑(comap (g.comp f) S)
state_after: no goals
tactic: congr
Theorem: Matrix.IsHermitian.eigenvalues_eq
File: Mathlib/LinearAlgebra/Matrix/Spectrum.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ hA.eigenvalues i =
    RCLike.re
      (star ((WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis i)) ⬝ᵥ
        A *ᵥ (WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis i))
state_after: no goals
tactic: simp only [mulVec_eigenvectorBasis, dotProduct_smul,← EuclideanSpace.inner_eq_star_dotProduct,
    inner_self_eq_norm_sq_to_K, RCLike.smul_re, hA.eigenvectorBasis.orthonormal.1 i,
    mul_one, algebraMap.coe_one, one_pow, RCLike.one_re]
Theorem: Set.sub_subset_range
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
⊢ s / t ⊆ range ⇑m
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
a : β
ha : a ∈ s
b : β
hb : b ∈ t
⊢ (fun x x_1 => x / x_1) a b ∈ range ⇑m
tactic: rintro _ ⟨a, ha, b, hb, rfl⟩
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
a : β
ha : a ∈ s
b : β
hb : b ∈ t
⊢ (fun x x_1 => x / x_1) a b ∈ range ⇑m
state_after: case intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
b : β
hb : b ∈ t
a : α
ha : m a ∈ s
⊢ (fun x x_1 => x / x_1) (m a) b ∈ range ⇑m
tactic: obtain ⟨a, rfl⟩ := hs ha
state_before: case intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
b : β
hb : b ∈ t
a : α
ha : m a ∈ s
⊢ (fun x x_1 => x / x_1) (m a) b ∈ range ⇑m
state_after: case intro.intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
a : α
ha : m a ∈ s
b : α
hb : m b ∈ t
⊢ (fun x x_1 => x / x_1) (m a) (m b) ∈ range ⇑m
tactic: obtain ⟨b, rfl⟩ := ht hb
state_before: case intro.intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
hs : s ⊆ range ⇑m
ht : t ⊆ range ⇑m
a : α
ha : m a ∈ s
b : α
hb : m b ∈ t
⊢ (fun x x_1 => x / x_1) (m a) (m b) ∈ range ⇑m
state_after: no goals
tactic: exact ⟨a / b, map_div _ _ _⟩
Theorem: egauge_empty
File: Mathlib/Analysis/Convex/EGauge.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹ : NNNorm 𝕜
E : Type u_2
inst✝ : SMul 𝕜 E
c : 𝕜
s t : Set E
x✝ : E
r : ℝ≥0∞
x : E
⊢ egauge 𝕜 ∅ x = ⊤
state_after: no goals
tactic: simp [egauge]
Theorem: Subsemigroup.subsingleton_of_subsingleton
File: Mathlib/Algebra/Group/Subsemigroup/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ Subsingleton M
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ ∀ (a b : M), a = b
tactic: constructor
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ ∀ (a b : M), a = b
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
⊢ x = y
tactic: intro x y
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
⊢ x = y
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
this : ∀ (a : M), a ∈ ⊥
⊢ x = y
tactic: have : ∀ a : M, a ∈ (⊥ : Subsemigroup M) := by simp [Subsingleton.elim (⊥ : Subsemigroup M) ⊤]
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
this : ∀ (a : M), a ∈ ⊥
⊢ x = y
state_after: no goals
tactic: exact absurd (this x) not_mem_bot
Theorem: Matroid.disjointSum_ground_eq
File: Mathlib/Data/Matroid/Sum.lean

Proof steps:
state_before: α : Type u_1
M N : Matroid α
h : Disjoint M.E N.E
⊢ (M.disjointSum N h).E = M.E ∪ N.E
state_after: no goals
tactic: simp [disjointSum, restrictSubtype, mapEmbedding]
Theorem: WellFounded.eq_strictMono_iff_eq_range
File: Mathlib/Order/WellFounded.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
inst✝ : PartialOrder γ
h : WellFounded fun x x_1 => x < x_1
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
⊢ f = g
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
inst✝ : PartialOrder γ
h : WellFounded fun x x_1 => x < x_1
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
a : β
⊢ f a = g a
tactic: funext a
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
inst✝ : PartialOrder γ
h : WellFounded fun x x_1 => x < x_1
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
a : β
⊢ f a = g a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
inst✝ : PartialOrder γ
h : WellFounded fun x x_1 => x < x_1
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
a : β
⊢ ∀ (x : β), (∀ y < x, f y = g y) → f x = g x
tactic: apply h.induction a
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
inst✝ : PartialOrder γ
h : WellFounded fun x x_1 => x < x_1
f g : β → γ
hf : StrictMono f
hg : StrictMono g
hfg : range f = range g
a : β
⊢ ∀ (x : β), (∀ y < x, f y = g y) → f x = g x
state_after: no goals
tactic: exact fun b H =>
      le_antisymm (eq_strictMono_iff_eq_range_aux hf hg hfg H)
        (eq_strictMono_iff_eq_range_aux hg hf hfg.symm fun a hab => (H a hab).symm)