ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: associatedPrimes.eq_empty_of_subsingleton
File: Mathlib/RingTheory/Ideal/AssociatedPrime.lean

Proof steps:
state_before: R : Type u_1
inst✝⁵ : CommRing R
I J : Ideal R
M : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
M' : Type u_3
inst✝² : AddCommGroup M'
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : Subsingleton M
⊢ associatedPrimes R M = ∅
state_after: case h
R : Type u_1
inst✝⁵ : CommRing R
I J : Ideal R
M : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
M' : Type u_3
inst✝² : AddCommGroup M'
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : Subsingleton M
x✝ : Ideal R
⊢ x✝ ∈ associatedPrimes R M ↔ x✝ ∈ ∅
tactic: ext
state_before: case h
R : Type u_1
inst✝⁵ : CommRing R
I J : Ideal R
M : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
M' : Type u_3
inst✝² : AddCommGroup M'
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : Subsingleton M
x✝ : Ideal R
⊢ x✝ ∈ associatedPrimes R M ↔ x✝ ∈ ∅
state_after: case h
R : Type u_1
inst✝⁵ : CommRing R
I J : Ideal R
M : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
M' : Type u_3
inst✝² : AddCommGroup M'
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : Subsingleton M
x✝ : Ideal R
⊢ x✝ ∉ associatedPrimes R M
tactic: simp only [Set.mem_empty_iff_false, iff_false_iff]
state_before: case h
R : Type u_1
inst✝⁵ : CommRing R
I J : Ideal R
M : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
M' : Type u_3
inst✝² : AddCommGroup M'
inst✝¹ : Module R M'
f : M →ₗ[R] M'
inst✝ : Subsingleton M
x✝ : Ideal R
⊢ x✝ ∉ associatedPrimes R M
state_after: no goals
tactic: apply not_isAssociatedPrime_of_subsingleton
Theorem: UniformContinuous.inv
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
⊢ UniformContinuous fun x => (f x)⁻¹
state_after: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
this : UniformContinuous fun x => 1 / f x
⊢ UniformContinuous fun x => (f x)⁻¹
tactic: have : UniformContinuous fun x => 1 / f x := uniformContinuous_const.div hf
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
this : UniformContinuous fun x => 1 / f x
⊢ UniformContinuous fun x => (f x)⁻¹
state_after: no goals
tactic: simp_all
Theorem: SimpleGraph.Walk.IsPath.nil
File: Mathlib/Combinatorics/SimpleGraph/Path.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v w u : V
⊢ Walk.nil.IsPath
state_after: no goals
tactic: constructor <;> simp
Theorem: sup_iSup_nat_succ
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
⊢ u 0 ⊔ ⨆ i, u (i + 1) = ⨆ x ∈ {0} ∪ range Nat.succ, u x
state_after: no goals
tactic: rw [iSup_union, iSup_singleton, iSup_range]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
⊢ ⨆ x ∈ {0} ∪ range Nat.succ, u x = ⨆ i, u i
state_after: no goals
tactic: rw [Nat.zero_union_range_succ, iSup_univ]
Theorem: AddGroup.mem_closure_union_iff
File: Mathlib/Deprecated/Subgroup.lean

Proof steps:
state_before: G✝ : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G✝
inst✝¹ : Group G✝
s✝ : Set G✝
G : Type u_4
inst✝ : CommGroup G
s t : Set G
x : G
⊢ x ∈ closure (s ∪ t) ↔ ∃ y ∈ closure s, ∃ z ∈ closure t, y * z = x
state_after: G✝ : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G✝
inst✝¹ : Group G✝
s✝ : Set G✝
G : Type u_4
inst✝ : CommGroup G
s t : Set G
x : G
⊢ (∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure t, y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure (Inv.inv ⁻¹' s), ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x) ↔
    ∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure (Inv.inv ⁻¹' s), y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure t, ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x
tactic: simp only [closure_eq_mclosure, Monoid.mem_closure_union_iff, exists_prop, preimage_union]
state_before: G✝ : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G✝
inst✝¹ : Group G✝
s✝ : Set G✝
G : Type u_4
inst✝ : CommGroup G
s t : Set G
x : G
⊢ (∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure t, y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure (Inv.inv ⁻¹' s), ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x) ↔
    ∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure (Inv.inv ⁻¹' s), y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure t, ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x
state_after: case mp
G✝ : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G✝
inst✝¹ : Group G✝
s✝ : Set G✝
G : Type u_4
inst✝ : CommGroup G
s t : Set G
x : G
⊢ (∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure t, y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure (Inv.inv ⁻¹' s), ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x) →
    ∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure (Inv.inv ⁻¹' s), y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure t, ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x

case mpr
G✝ : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G✝
inst✝¹ : Group G✝
s✝ : Set G✝
G : Type u_4
inst✝ : CommGroup G
s t : Set G
x : G
⊢ (∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure (Inv.inv ⁻¹' s), y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure t, ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x) →
    ∃ y,
      (∃ y_1 ∈ Monoid.Closure s, ∃ z ∈ Monoid.Closure t, y_1 * z = y) ∧
        ∃ z, (∃ y ∈ Monoid.Closure (Inv.inv ⁻¹' s), ∃ z_1 ∈ Monoid.Closure (Inv.inv ⁻¹' t), y * z_1 = z) ∧ y * z = x
tactic: constructor
Theorem: WeierstrassCurve.Jacobian.dblX_of_Z_ne_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
hy : P y * Q z ^ 3 ≠ W.negY Q * P z ^ 3
⊢ W.dblX P / W.dblZ P ^ 2 =
    W.toAffine.addX (P x / P z ^ 2) (Q x / Q z ^ 2)
      (W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3))
state_after: no goals
tactic: rw [dblX, toAffine_slope_of_eq hP hQ hPz hQz hx hy, dblZ, ← (X_eq_iff hPz hQz).mp hx,
    toAffine_addX_of_eq hPz <| sub_ne_zero_of_ne <| Y_ne_negY_of_Y_ne' hP hQ hx hy]
Theorem: Field.FiniteDimensional.of_exists_primitive_element
File: Mathlib/FieldTheory/PrimitiveElement.lean

Proof steps:
state_before: F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
h : ∃ α, F⟮α⟯ = ⊤
⊢ FiniteDimensional F E
state_after: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
⊢ FiniteDimensional F E
tactic: obtain ⟨α, hprim⟩ := h
state_before: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
⊢ FiniteDimensional F E
state_after: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
hfin : FiniteDimensional F ↥F⟮α⟯
⊢ FiniteDimensional F E
tactic: have hfin := adjoin.finiteDimensional (Algebra.IsIntegral.isIntegral (R := F) α)
state_before: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
hfin : FiniteDimensional F ↥F⟮α⟯
⊢ FiniteDimensional F E
state_after: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
hfin : FiniteDimensional F ↥⊤
⊢ FiniteDimensional F E
tactic: rw [hprim] at hfin
state_before: case intro
F : Type u_1
E : Type u_2
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Algebra.IsAlgebraic F E
α : E
hprim : F⟮α⟯ = ⊤
hfin : FiniteDimensional F ↥⊤
⊢ FiniteDimensional F E
state_after: no goals
tactic: exact topEquiv.toLinearEquiv.finiteDimensional
Theorem: Quiver.Path.cast_cast
File: Mathlib/Combinatorics/Quiver/Cast.lean

Proof steps:
state_before: U : Type u_1
inst✝ : Quiver U
u v u' v' u'' v'' : U
p : Path u v
hu : u = u'
hv : v = v'
hu' : u' = u''
hv' : v' = v''
⊢ cast hu' hv' (cast hu hv p) = cast ⋯ ⋯ p
state_after: U : Type u_1
inst✝ : Quiver U
u'' v'' : U
p : Path u'' v''
⊢ cast ⋯ ⋯ (cast ⋯ ⋯ p) = cast ⋯ ⋯ p
tactic: subst_vars
state_before: U : Type u_1
inst✝ : Quiver U
u'' v'' : U
p : Path u'' v''
⊢ cast ⋯ ⋯ (cast ⋯ ⋯ p) = cast ⋯ ⋯ p
state_after: no goals
tactic: rfl
Theorem: AddCon.lift_unique
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
f : M →* P
H : c ≤ ker f
g : c.Quotient →* P
Hg : g.comp c.mk' = f
x : M
⊢ g ↑x = (c.lift f H) ↑x
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
g : c.Quotient →* P
x : M
H : c ≤ ker (g.comp c.mk')
⊢ g ↑x = (c.lift (g.comp c.mk') H) ↑x
tactic: subst f
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x✝ y : M
g : c.Quotient →* P
x : M
H : c ≤ ker (g.comp c.mk')
⊢ g ↑x = (c.lift (g.comp c.mk') H) ↑x
state_after: no goals
tactic: rfl
Theorem: uniformity_lift_le_comp
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
f : Set (α × α) → Filter β
h : Monotone f
⊢ ((𝓤 α).lift fun s => f (s ○ s)) = ((𝓤 α).lift' fun s => s ○ s).lift f
state_after: case hg
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
f : Set (α × α) → Filter β
h : Monotone f
⊢ Monotone fun s => s ○ s

case hh
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
f : Set (α × α) → Filter β
h : Monotone f
⊢ Monotone f
tactic: rw [lift_lift'_assoc]
Theorem: LinearMap.IsRefl.nondegenerate_of_separatingRight
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
I I' : R →+* R
B : M →ₗ[R] M →ₗ[R] M₁
hB : B.IsRefl
hB' : B.SeparatingRight
⊢ B.Nondegenerate
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
I I' : R →+* R
B : M →ₗ[R] M →ₗ[R] M₁
hB : B.IsRefl
hB' : B.SeparatingRight
⊢ B.SeparatingLeft
tactic: refine ⟨?_, hB'⟩
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
I I' : R →+* R
B : M →ₗ[R] M →ₗ[R] M₁
hB : B.IsRefl
hB' : B.SeparatingRight
⊢ B.SeparatingLeft
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
I I' : R →+* R
B : M →ₗ[R] M →ₗ[R] M₁
hB : B.IsRefl
hB' : B.SeparatingRight
⊢ ker B.flip = ⊥
tactic: rw [separatingLeft_iff_ker_eq_bot, hB.ker_eq_bot_iff_ker_flip_eq_bot.mpr]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
I I' : R →+* R
B : M →ₗ[R] M →ₗ[R] M₁
hB : B.IsRefl
hB' : B.SeparatingRight
⊢ ker B.flip = ⊥
state_after: no goals
tactic: rwa [← separatingRight_iff_flip_ker_eq_bot]
Theorem: toIntermediateField'_toSubalgebra
File: Mathlib/FieldTheory/IntermediateField.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
⊢ S.toIntermediateField' ⋯ = S
state_after: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField' ⋯ ↔ x✝ ∈ S
tactic: ext
state_before: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField' ⋯ ↔ x✝ ∈ S
state_after: no goals
tactic: rfl
Theorem: div_lt_self_iff
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝³ : Group α
inst✝² : LT α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a✝ b✝ c d a b : α
⊢ a / b < a ↔ 1 < b
state_after: no goals
tactic: simp [div_eq_mul_inv]
Theorem: Set.one_le_chainHeight_iff
File: Mathlib/Order/Height.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
⊢ 1 ≤ s.chainHeight ↔ s.Nonempty
state_after: α : Type u_1
β : Type u_2
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
⊢ (∃ l ∈ s.subchain, l.length = 1) ↔ s.Nonempty
tactic: rw [← Nat.cast_one, Set.le_chainHeight_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
⊢ (∃ l ∈ s.subchain, l.length = 1) ↔ s.Nonempty
state_after: no goals
tactic: simp only [length_eq_one, @and_comm (_ ∈ _), @eq_comm _ _ [_], exists_exists_eq_and,
    singleton_mem_subchain_iff, Set.Nonempty]
Theorem: Algebra.TensorProduct.productMap_range
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Semiring B
inst✝³ : CommSemiring S
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : Algebra R S
f : A →ₐ[R] S
g : B →ₐ[R] S
⊢ (productMap f g).range = f.range ⊔ g.range
state_after: no goals
tactic: rw [productMap_eq_comp_map, AlgHom.range_comp, map_range, map_sup, ← AlgHom.range_comp,
    ← AlgHom.range_comp,
    ← AlgHom.comp_assoc, ← AlgHom.comp_assoc, lmul'_comp_includeLeft, lmul'_comp_includeRight,
    AlgHom.id_comp, AlgHom.id_comp]
Theorem: KaehlerDifferential.derivationQuotKerTotal_lift_comp_total
File: Mathlib/RingTheory/Kaehler/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
⊢ (derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S) = (kerTotal R S).mkQ
state_after: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
⊢ ∀ (a b : S),
    ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b𝖣a
tactic: apply Finsupp.lhom_ext
state_before: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
⊢ ∀ (a b : S),
    ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b𝖣a
state_after: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
a b : S
⊢ ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b𝖣a
tactic: intro a b
state_before: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
a b : S
⊢ ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b𝖣a
state_after: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
a b : S
⊢ ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b • 1𝖣a
tactic: conv_rhs => rw [← Finsupp.smul_single_one a b, LinearMap.map_smul]
state_before: case h
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
a b : S
⊢ ((derivationQuotKerTotal R S).liftKaehlerDifferential ∘ₗ Finsupp.total S (Ω[S⁄R]) S ⇑(D R S)) (single a b) = b • 1𝖣a
state_after: no goals
tactic: simp [KaehlerDifferential.derivationQuotKerTotal_apply]
Theorem: Monotone.disjointed_succ
File: Mathlib/Order/Disjointed.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
hf : Monotone f
n : ℕ
⊢ disjointed f (n + 1) = f (n + 1) \ f n
state_after: no goals
tactic: rw [disjointed_succ, hf.partialSups_eq]
Theorem: Polynomial.Chebyshev.mul_T
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
m k : ℤ
⊢ 2 * T R m * T R k = T R (m + k) + T R (m - k)
state_after: no goals
tactic: induction k using Polynomial.Chebyshev.induct with
  | zero => simp [two_mul]
  | one => rw [T_add_one, T_one]; ring
  | add_two k ih1 ih2 =>
    have h₁ := T_add_two R (m + k)
    have h₂ := T_sub_two R (m - k)
    have h₃ := T_add_two R k
    linear_combination (norm := ring_nf) 2 * T R m * h₃ - h₂ - h₁ - ih2 + 2 * (X : R[X]) * ih1
  | neg_add_one k ih1 ih2 =>
    have h₁ := T_add_two R (m + (-k - 1))
    have h₂ := T_sub_two R (m - (-k - 1))
    have h₃ := T_add_two R (-k - 1)
    linear_combination (norm := ring_nf) 2 * T R m * h₃ - h₂ - h₁ - ih2 + 2 * (X : R[X]) * ih1
Theorem: iInf₂_eq_top
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : (i : ι) → κ i → α
⊢ ⨅ i, ⨅ j, f i j = ⊤ ↔ ∀ (i : ι) (j : κ i), f i j = ⊤
state_after: no goals
tactic: simp
Theorem: SimpleGraph.dart_fst_fiber_card_eq_degree
File: Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v : V
⊢ (filter (fun d => d.toProd.1 = v) univ).card = G.degree v
state_after: no goals
tactic: simpa only [dart_fst_fiber, Finset.card_univ, card_neighborSet_eq_degree] using
    card_image_of_injective univ (G.dartOfNeighborSet_injective v)
Theorem: HasFDerivAtFilter.add
File: Mathlib/Analysis/Calculus/FDeriv/Add.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
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hf : HasFDerivAtFilter f f' x L
hg : HasFDerivAtFilter g g' x L
x✝ : E
⊢ f x✝ - f x - f' (x✝ - x) + (g x✝ - g x - g' (x✝ - x)) = f x✝ + g x✝ - (f x + g x) - (f' + g') (x✝ - x)
state_after: 𝕜 : 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
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hf : HasFDerivAtFilter f f' x L
hg : HasFDerivAtFilter g g' x L
x✝ : E
⊢ f x✝ - f x - (f' x✝ - f' x) + (g x✝ - g x - (g' x✝ - g' x)) =
    f x✝ + g x✝ - (f x + g x) - (f' x✝ + g' x✝ - (f' x + g' x))
tactic: simp only [LinearMap.sub_apply, LinearMap.add_apply, map_sub, map_add, add_apply]
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
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hf : HasFDerivAtFilter f f' x L
hg : HasFDerivAtFilter g g' x L
x✝ : E
⊢ f x✝ - f x - (f' x✝ - f' x) + (g x✝ - g x - (g' x✝ - g' x)) =
    f x✝ + g x✝ - (f x + g x) - (f' x✝ + g' x✝ - (f' x + g' x))
state_after: no goals
tactic: abel
Theorem: multiplicity.multiplicity_map_eq
File: Mathlib/RingTheory/Multiplicity.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : Monoid α
inst✝⁴ : Monoid β
inst✝³ : DecidableRel fun x x_1 => x ∣ x_1
inst✝² : DecidableRel fun x x_1 => x ∣ x_1
F : Type u_3
inst✝¹ : EquivLike F α β
inst✝ : MulEquivClass F α β
f : F
a b : α
n : ℕ
⊢ f a ^ n ∣ f b ↔ a ^ n ∣ b
state_after: α : Type u_1
β : Type u_2
inst✝⁵ : Monoid α
inst✝⁴ : Monoid β
inst✝³ : DecidableRel fun x x_1 => x ∣ x_1
inst✝² : DecidableRel fun x x_1 => x ∣ x_1
F : Type u_3
inst✝¹ : EquivLike F α β
inst✝ : MulEquivClass F α β
f : F
a b : α
n : ℕ
⊢ f (a ^ n) ∣ f b ↔ a ^ n ∣ b
tactic: rw [← map_pow]
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : Monoid α
inst✝⁴ : Monoid β
inst✝³ : DecidableRel fun x x_1 => x ∣ x_1
inst✝² : DecidableRel fun x x_1 => x ∣ x_1
F : Type u_3
inst✝¹ : EquivLike F α β
inst✝ : MulEquivClass F α β
f : F
a b : α
n : ℕ
⊢ f (a ^ n) ∣ f b ↔ a ^ n ∣ b
state_after: no goals
tactic: exact map_dvd_iff f