ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.degree_pos_of_not_isUnit_of_dvd_monic
File: Mathlib/Algebra/Polynomial/RingDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
ha : ¬IsUnit a
hap : a ∣ p
⊢ 0 < a.degree
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : a ∣ p
h : a.degree ≤ 0
⊢ IsUnit a
tactic: contrapose! ha with h
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : a ∣ p
h : a.degree ≤ 0
⊢ IsUnit a
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : C (a.coeff 0) ∣ p
h : a.degree ≤ 0
⊢ IsUnit (C (a.coeff 0))
tactic: rw [Polynomial.eq_C_of_degree_le_zero h] at hap ⊢
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : C (a.coeff 0) ∣ p
h : a.degree ≤ 0
⊢ IsUnit (C (a.coeff 0))
state_after: no goals
tactic: simpa [hp.C_dvd_iff_isUnit, isUnit_C] using hap
Theorem: CategoryTheory.Over.w
File: Mathlib/CategoryTheory/Comma/Over.lean

Proof steps:
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
A B : Over X
f : A ⟶ B
⊢ f.left ≫ B.hom = A.hom
state_after: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
A B : Over X
f : A ⟶ B
this : (𝟭 T).map f.left ≫ B.hom = A.hom ≫ (Functor.fromPUnit X).map f.right
⊢ f.left ≫ B.hom = A.hom
tactic: have := f.w
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
A B : Over X
f : A ⟶ B
this : (𝟭 T).map f.left ≫ B.hom = A.hom ≫ (Functor.fromPUnit X).map f.right
⊢ f.left ≫ B.hom = A.hom
state_after: no goals
tactic: aesop_cat
Theorem: HasMFDerivWithinAt.hasMFDerivAt
File: Mathlib/Geometry/Manifold/MFDeriv/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
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'
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''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
h : HasMFDerivWithinAt I I' f s x f'
hs : s ∈ 𝓝 x
⊢ HasMFDerivAt I I' f x f'
state_after: no goals
tactic: rwa [← univ_inter s, hasMFDerivWithinAt_inter hs, hasMFDerivWithinAt_univ] at h
Theorem: FirstOrder.Language.Theory.simpleGraph_model_iff
File: Mathlib/ModelTheory/Graph.lean

Proof steps:
state_before: L : Language
α : Type w
V : Type w'
n : ℕ
inst✝ : Language.graph.Structure V
⊢ V ⊨ Theory.simpleGraph ↔ (Irreflexive fun x y => RelMap adj ![x, y]) ∧ Symmetric fun x y => RelMap adj ![x, y]
state_after: no goals
tactic: simp [Theory.simpleGraph]
Theorem: Cardinal.blsub_lt_ord_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{max u_2 u_3}
f : (a : Ordinal.{max u_2 u_3}) → a < o → Ordinal.{max u_2 u_3}
c : Cardinal.{max u_2 u_3}
hc : c.IsRegular
ho : o.card < c
⊢ o.card < c.ord.cof
state_after: no goals
tactic: rwa [hc.cof_eq]
Theorem: orthogonalProjection_orthogonal_val
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u : E
⊢ u = u - ↑((orthogonalProjection K) u) + ↑((orthogonalProjection K) u)
state_after: no goals
tactic: simp
Theorem: simply_connected_iff_unique_homotopic
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/SimplyConnected.lean

Proof steps:
state_before: X : Type u_1
inst✝ : TopologicalSpace X
⊢ SimplyConnectedSpace X ↔ Nonempty X ∧ ∀ (x y : X), Nonempty (Unique (Path.Homotopic.Quotient x y))
state_after: X : Type u_1
inst✝ : TopologicalSpace X
⊢ X →
    ((∀ (x y : FundamentalGroupoid X), Nonempty (Unique (x ⟶ y))) ↔
      ∀ (x y : X), Nonempty (Unique (Path.Homotopic.Quotient x y)))
tactic: simp only [simply_connected_def, equiv_punit_iff_unique,
    FundamentalGroupoid.nonempty_iff X, and_congr_right_iff, Nonempty.forall]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
⊢ X →
    ((∀ (x y : FundamentalGroupoid X), Nonempty (Unique (x ⟶ y))) ↔
      ∀ (x y : X), Nonempty (Unique (Path.Homotopic.Quotient x y)))
state_after: X : Type u_1
inst✝ : TopologicalSpace X
a✝ : X
⊢ (∀ (x y : FundamentalGroupoid X), Nonempty (Unique (x ⟶ y))) ↔
    ∀ (x y : X), Nonempty (Unique (Path.Homotopic.Quotient x y))
tactic: intros
state_before: X : Type u_1
inst✝ : TopologicalSpace X
a✝ : X
⊢ (∀ (x y : FundamentalGroupoid X), Nonempty (Unique (x ⟶ y))) ↔
    ∀ (x y : X), Nonempty (Unique (Path.Homotopic.Quotient x y))
state_after: no goals
tactic: exact ⟨fun h _ _ => h _ _, fun h _ _ => h _ _⟩
Theorem: List.ofFn_get
File: Mathlib/Data/List/OfFn.lean

Proof steps:
state_before: α : Type u
⊢ ofFn [].get = []
state_after: no goals
tactic: rw [ofFn_zero]
state_before: α : Type u
a : α
l : List α
⊢ ofFn (a :: l).get = a :: l
state_after: α : Type u
a : α
l : List α
⊢ ((a :: l).get 0 :: ofFn fun i => (a :: l).get i.succ) = a :: l
tactic: rw [ofFn_succ]
state_before: α : Type u
a : α
l : List α
⊢ ((a :: l).get 0 :: ofFn fun i => (a :: l).get i.succ) = a :: l
state_after: case e_tail
α : Type u
a : α
l : List α
⊢ (ofFn fun i => (a :: l).get i.succ) = l
tactic: congr
state_before: case e_tail
α : Type u
a : α
l : List α
⊢ (ofFn fun i => (a :: l).get i.succ) = l
state_after: no goals
tactic: exact ofFn_get l
Theorem: padicValNat_prime_prime_pow
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p q : ℕ
hp : Fact (Nat.Prime p)
hq : Fact (Nat.Prime q)
n : ℕ
neq : p ≠ q
⊢ padicValNat p (q ^ n) = 0
state_after: no goals
tactic: rw [padicValNat.pow _ <| Nat.Prime.ne_zero hq.elim, padicValNat_primes neq, mul_zero]
Theorem: mem_closure_of_mem_closure_union
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
h : x ∈ closure (s₁ ∪ s₂)
h₁ : s₁ᶜ ∈ 𝓝 x
⊢ x ∈ closure s₂
state_after: 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
h : 𝓝 x ⊓ 𝓟 (s₁ ∪ s₂) ≠ ⊥
h₁ : s₁ᶜ ∈ 𝓝 x
⊢ 𝓝 x ⊓ 𝓟 s₂ ≠ ⊥
tactic: rw [mem_closure_iff_nhds_ne_bot] at *
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
h : 𝓝 x ⊓ 𝓟 (s₁ ∪ s₂) ≠ ⊥
h₁ : s₁ᶜ ∈ 𝓝 x
⊢ 𝓝 x ⊓ 𝓟 s₂ ≠ ⊥
state_after: no goals
tactic: rwa [← sup_principal, inf_sup_left, inf_principal_eq_bot.mpr h₁, bot_sup_eq] at h
Theorem: Filter.comap_sSup
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s✝ : Set α
t : Set β
s : Set (Filter β)
m : α → β
⊢ comap m (sSup s) = ⨆ f ∈ s, comap m f
state_after: no goals
tactic: simp only [sSup_eq_iSup, comap_iSup, eq_self_iff_true]
Theorem: Multiset.singleton_inj
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
a b : α
⊢ {a} = {b} ↔ a = b
state_after: α : Type u_1
β : Type v
γ : Type u_2
a b : α
⊢ a ::ₘ 0 = b ::ₘ 0 ↔ a = b
tactic: simp_rw [← cons_zero]
state_before: α : Type u_1
β : Type v
γ : Type u_2
a b : α
⊢ a ::ₘ 0 = b ::ₘ 0 ↔ a = b
state_after: no goals
tactic: exact cons_inj_left _
Theorem: List.ranges_length
File: Mathlib/Data/List/Range.lean

Proof steps:
state_before: α : Type u
l : List ℕ
⊢ map length l.ranges = l
state_after: no goals
tactic: induction l with
  | nil => simp only [ranges, map_nil]
  | cons a l hl => -- (a :: l)
    simp only [map, length_range, map_map, cons.injEq, true_and]
    conv_rhs => rw [← hl]
    apply map_congr_left
    intro s _
    simp only [Function.comp_apply, length_map]
Theorem: wbtw_self_iff
File: Mathlib/Analysis/Convex/Between.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
⊢ Wbtw R x y x ↔ y = x
state_after: case refine_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : Wbtw R x y x
⊢ y = x

case refine_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : y = x
⊢ Wbtw R x y x
tactic: refine ⟨fun h => ?_, fun h => ?_⟩
Theorem: NatOrdinal.toOrdinal_cast_nat
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

Proof steps:
state_before: n : ℕ
⊢ toOrdinal ↑n = ↑n
state_after: case zero

⊢ toOrdinal ↑0 = ↑0

case succ
n : ℕ
hn : toOrdinal ↑n = ↑n
⊢ toOrdinal ↑(n + 1) = ↑(n + 1)
tactic: induction' n with n hn
Theorem: contDiff_iff_continuous_differentiable
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
⊢ ContDiff 𝕜 n f ↔
    (∀ (m : ℕ), ↑m ≤ n → Continuous fun x => iteratedFDeriv 𝕜 m f x) ∧
      ∀ (m : ℕ), ↑m < n → Differentiable 𝕜 fun x => iteratedFDeriv 𝕜 m f x
state_after: no goals
tactic: simp [contDiffOn_univ.symm, continuous_iff_continuousOn_univ, differentiableOn_univ.symm,
    iteratedFDerivWithin_univ, contDiffOn_iff_continuousOn_differentiableOn uniqueDiffOn_univ]
Theorem: Finset.eq_sum_range_sub'
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 : α → β
inst✝¹ : CommMonoid β
M : Type u_6
inst✝ : CommGroup M
f : ℕ → M
n : ℕ
⊢ f n = ∏ i ∈ range (n + 1), if i = 0 then f 0 else f i / f (i - 1)
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
M : Type u_6
inst✝ : CommGroup M
f : ℕ → M
n : ℕ
⊢ f 0 * ∏ i ∈ range n, f (i + 1) / f i = ∏ i ∈ range (n + 1), if i = 0 then f 0 else f i / f (i - 1)
tactic: conv_lhs => rw [Finset.eq_prod_range_div 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 : α → β
inst✝¹ : CommMonoid β
M : Type u_6
inst✝ : CommGroup M
f : ℕ → M
n : ℕ
⊢ f 0 * ∏ i ∈ range n, f (i + 1) / f i = ∏ i ∈ range (n + 1), if i = 0 then f 0 else f i / f (i - 1)
state_after: no goals
tactic: simp [Finset.prod_range_succ', mul_comm]
Theorem: det_rotation
File: Mathlib/Analysis/Complex/Isometry.lean

Proof steps:
state_before: a : ↥circle
⊢ LinearMap.det ↑(rotation a).toLinearEquiv = 1
state_after: a : ↥circle
⊢ ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 0 0 * ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 1 1 -
      ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 0 1 * ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 1 0 =
    1
tactic: rw [← LinearMap.det_toMatrix basisOneI, toMatrix_rotation, Matrix.det_fin_two]
state_before: a : ↥circle
⊢ ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 0 0 * ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 1 1 -
      ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 0 1 * ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) 1 0 =
    1
state_after: no goals
tactic: simp [← normSq_apply]
Theorem: CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv_apply
File: Mathlib/CategoryTheory/Preadditive/HomOrthogonal.lean

Proof steps:
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
ι : Type u_1
s : ι → C
inst✝⁵ : Preadditive C
inst✝⁴ : HasFiniteBiproducts C
R : Type u_2
inst✝³ : Semiring R
inst✝² : Linear R C
o : HomOrthogonal s
α β : Type
inst✝¹ : Finite α
inst✝ : Finite β
f : α → ι
g : β → ι
w : R
z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (w • z) =
    (RingHom.id R) w • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun z
state_after: case h.a
C : Type u
inst✝⁶ : Category.{v, u} C
ι : Type u_1
s : ι → C
inst✝⁵ : Preadditive C
inst✝⁴ : HasFiniteBiproducts C
R : Type u_2
inst✝³ : Semiring R
inst✝² : Linear R C
o : HomOrthogonal s
α β : Type
inst✝¹ : Finite α
inst✝ : Finite β
f : α → ι
g : β → ι
w : R
z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)
x✝ : ι
i✝ : ↑(g ⁻¹' {x✝})
j✝ : ↑(f ⁻¹' {x✝})
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (w • z) x✝ i✝ j✝ =
    ((RingHom.id R) w • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun z) x✝ i✝ j✝
tactic: ext
state_before: case h.a
C : Type u
inst✝⁶ : Category.{v, u} C
ι : Type u_1
s : ι → C
inst✝⁵ : Preadditive C
inst✝⁴ : HasFiniteBiproducts C
R : Type u_2
inst✝³ : Semiring R
inst✝² : Linear R C
o : HomOrthogonal s
α β : Type
inst✝¹ : Finite α
inst✝ : Finite β
f : α → ι
g : β → ι
w : R
z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)
x✝ : ι
i✝ : ↑(g ⁻¹' {x✝})
j✝ : ↑(f ⁻¹' {x✝})
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (w • z) x✝ i✝ j✝ =
    ((RingHom.id R) w • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun z) x✝ i✝ j✝
state_after: case h.a
C : Type u
inst✝⁶ : Category.{v, u} C
ι : Type u_1
s : ι → C
inst✝⁵ : Preadditive C
inst✝⁴ : HasFiniteBiproducts C
R : Type u_2
inst✝³ : Semiring R
inst✝² : Linear R C
o : HomOrthogonal s
α β : Type
inst✝¹ : Finite α
inst✝ : Finite β
f : α → ι
g : β → ι
w : R
z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)
x✝ : ι
i✝ : ↑(g ⁻¹' {x✝})
j✝ : ↑(f ⁻¹' {x✝})
⊢ eqToHom ⋯ ≫ (biproduct.ι (fun a => s (f a)) ↑j✝ ≫ (w • z) ≫ biproduct.π (fun b => s (g b)) ↑i✝) ≫ eqToHom ⋯ =
    w • eqToHom ⋯ ≫ (biproduct.ι (fun a => s (f a)) ↑j✝ ≫ z ≫ biproduct.π (fun b => s (g b)) ↑i✝) ≫ eqToHom ⋯
tactic: dsimp [biproduct.components]
state_before: case h.a
C : Type u
inst✝⁶ : Category.{v, u} C
ι : Type u_1
s : ι → C
inst✝⁵ : Preadditive C
inst✝⁴ : HasFiniteBiproducts C
R : Type u_2
inst✝³ : Semiring R
inst✝² : Linear R C
o : HomOrthogonal s
α β : Type
inst✝¹ : Finite α
inst✝ : Finite β
f : α → ι
g : β → ι
w : R
z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)
x✝ : ι
i✝ : ↑(g ⁻¹' {x✝})
j✝ : ↑(f ⁻¹' {x✝})
⊢ eqToHom ⋯ ≫ (biproduct.ι (fun a => s (f a)) ↑j✝ ≫ (w • z) ≫ biproduct.π (fun b => s (g b)) ↑i✝) ≫ eqToHom ⋯ =
    w • eqToHom ⋯ ≫ (biproduct.ι (fun a => s (f a)) ↑j✝ ≫ z ≫ biproduct.π (fun b => s (g b)) ↑i✝) ≫ eqToHom ⋯
state_after: no goals
tactic: simp
Theorem: ProbabilityTheory.Kernel.withDensity_rnDeriv_mutuallySingularSetSlice
File: Mathlib/Probability/Kernel/RadonNikodym.lean

Proof steps:
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : Kernel α γ
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : Kernel α γ
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ ((η.withDensity (κ.rnDeriv η)) a) (κ.mutuallySingularSetSlice η a) = 0
state_after: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : Kernel α γ
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : Kernel α γ
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ ∫⁻ (b : γ) in κ.mutuallySingularSetSlice η a, κ.rnDeriv η a b ∂η a = 0

case hf
α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : Kernel α γ
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : Kernel α γ
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ Measurable (Function.uncurry (κ.rnDeriv η))
tactic: rw [Kernel.withDensity_apply']
Theorem: NormedSpace.eq_iff_forall_dual_eq
File: Mathlib/Analysis/Normed/Module/Dual.lean

Proof steps:
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ x = y ↔ ∀ (g : Dual 𝕜 E), g x = g y
state_after: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ (∀ (g : Dual 𝕜 E), g (x - y) = 0) ↔ ∀ (g : Dual 𝕜 E), g x = g y
tactic: rw [← sub_eq_zero, eq_zero_iff_forall_dual_eq_zero 𝕜 (x - y)]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ (∀ (g : Dual 𝕜 E), g (x - y) = 0) ↔ ∀ (g : Dual 𝕜 E), g x = g y
state_after: no goals
tactic: simp [sub_eq_zero]
Theorem: NNReal.not_summable_iff_tendsto_nat_atTop
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
⊢ ¬Summable f ↔ Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
⊢ ¬Summable f → Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
⊢ Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop → ¬Summable f
tactic: constructor
Theorem: MeasureTheory.measure_map_restrict_apply
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MeasurableSpace α
μ : Measure α
s : Set α
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ (Measure.map (Quotient.mk α_mod_G) (μ.restrict s)) U = μ (Quotient.mk α_mod_G ⁻¹' U ∩ s)
state_after: no goals
tactic: rw [map_apply (f := π) (fun V hV ↦ measurableSet_quotient.mp hV) meas_U,
    Measure.restrict_apply (t := (Quotient.mk α_mod_G ⁻¹' U)) (measurableSet_quotient.mp meas_U)]
Theorem: List.getLast_append_singleton
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
⊢ (l ++ [a]).getLast ⋯ = a
state_after: no goals
tactic: simp only [getLast_append]
Theorem: Ideal.exists_coeff_ne_zero_mem_comap_of_non_zero_divisor_root_mem
File: Mathlib/RingTheory/Ideal/Over.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
r_non_zero_divisor : ∀ {x : S}, x * r = 0 → x = 0
hr : r ∈ I
p : R[X]
⊢ p ≠ 0 → eval₂ f r p = 0 → ∃ i, p.coeff i ≠ 0 ∧ p.coeff i ∈ comap f I
state_after: case refine_1
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
r_non_zero_divisor : ∀ {x : S}, x * r = 0 → x = 0
hr : r ∈ I
p : R[X]
⊢ 0 ≠ 0 → eval₂ f r 0 = 0 → ∃ i, coeff 0 i ≠ 0 ∧ coeff 0 i ∈ comap f I

case refine_2
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
r_non_zero_divisor : ∀ {x : S}, x * r = 0 → x = 0
hr : r ∈ I
p : R[X]
⊢ ∀ (p : R[X]) (a : R),
    p.coeff 0 = 0 →
      a ≠ 0 →
        (p ≠ 0 → eval₂ f r p = 0 → ∃ i, p.coeff i ≠ 0 ∧ p.coeff i ∈ comap f I) →
          p + C a ≠ 0 → eval₂ f r (p + C a) = 0 → ∃ i, (p + C a).coeff i ≠ 0 ∧ (p + C a).coeff i ∈ comap f I

case refine_3
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
r_non_zero_divisor : ∀ {x : S}, x * r = 0 → x = 0
hr : r ∈ I
p : R[X]
⊢ ∀ (p : R[X]),
    p ≠ 0 →
      (p ≠ 0 → eval₂ f r p = 0 → ∃ i, p.coeff i ≠ 0 ∧ p.coeff i ∈ comap f I) →
        p * X ≠ 0 → eval₂ f r (p * X) = 0 → ∃ i, (p * X).coeff i ≠ 0 ∧ (p * X).coeff i ∈ comap f I
tactic: refine p.recOnHorner ?_ ?_ ?_
Theorem: Commute.add_pow'
File: Mathlib/Data/Nat/Choose/Sum.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
x y : R
h : Commute x y
n : ℕ
⊢ (x + y) ^ n = ∑ m ∈ antidiagonal n, n.choose m.1 • (x ^ m.1 * y ^ m.2)
state_after: no goals
tactic: simp_rw [Finset.Nat.sum_antidiagonal_eq_sum_range_succ fun m p ↦ choose n m • (x ^ m * y ^ p),
    _root_.nsmul_eq_mul, cast_comm, h.add_pow]
Theorem: CategoryTheory.Limits.colimitObjIsoColimitCompEvaluation_inv_colimit_map
File: Mathlib/CategoryTheory/Limits/FunctorCategory.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasColimitsOfShape J C
F : J ⥤ K ⥤ C
i j : K
f : i ⟶ j
⊢ (colimitObjIsoColimitCompEvaluation F i).inv ≫ (colimit F).map f =
    colimMap (whiskerLeft F ((evaluation K C).map f)) ≫ (colimitObjIsoColimitCompEvaluation F j).inv
state_after: case w
C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasColimitsOfShape J C
F : J ⥤ K ⥤ C
i j : K
f : i ⟶ j
j✝ : J
⊢ colimit.ι (F ⋙ (evaluation K C).obj i) j✝ ≫ (colimitObjIsoColimitCompEvaluation F i).inv ≫ (colimit F).map f =
    colimit.ι (F ⋙ (evaluation K C).obj i) j✝ ≫
      colimMap (whiskerLeft F ((evaluation K C).map f)) ≫ (colimitObjIsoColimitCompEvaluation F j).inv
tactic: ext
state_before: case w
C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasColimitsOfShape J C
F : J ⥤ K ⥤ C
i j : K
f : i ⟶ j
j✝ : J
⊢ colimit.ι (F ⋙ (evaluation K C).obj i) j✝ ≫ (colimitObjIsoColimitCompEvaluation F i).inv ≫ (colimit F).map f =
    colimit.ι (F ⋙ (evaluation K C).obj i) j✝ ≫
      colimMap (whiskerLeft F ((evaluation K C).map f)) ≫ (colimitObjIsoColimitCompEvaluation F j).inv
state_after: no goals
tactic: simp
Theorem: Polynomial.trinomial_leadingCoeff
File: Mathlib/Algebra/Polynomial/UnitTrinomial.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
⊢ (trinomial k m n u v w).leadingCoeff = w
state_after: no goals
tactic: rw [leadingCoeff, trinomial_natDegree hkm hmn hw, trinomial_leading_coeff' hkm hmn]
Theorem: MeasureTheory.setLIntegral_withDensity_eq_setLIntegral_mul_non_measurable
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ.restrict s, f x < ⊤
⊢ ∫⁻ (a : α) in s, g a ∂μ.withDensity f = ∫⁻ (a : α) in s, (f * g) a ∂μ
state_after: no goals
tactic: rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul_non_measurable _ f_meas hf]
Theorem: rTensor.inverse_comp_rTensor
File: Mathlib/LinearAlgebra/TensorProduct/RightExactness.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup N
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
Q : Type u_5
inst✝¹ : AddCommGroup Q
inst✝ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
⊢ inverse Q hfg hg ∘ₗ rTensor Q g = (range (rTensor Q f)).mkQ
state_after: no goals
tactic: rw [rTensor.inverse, rTensor.inverse_of_rightInverse_comp_rTensor]
Theorem: Metric.hausdorffDist_comm
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 : α
Φ : α → β
⊢ hausdorffDist s t = hausdorffDist t s
state_after: no goals
tactic: simp [hausdorffDist, hausdorffEdist_comm]