1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Topology.IsScott.isOpen_iff_isUpperSet_and_dirSupInacc
File: Mathlib/Topology/Order/ScottTopology.lean

tactic: rw [isOpen_iff_isUpperSet_and_scottHausdorff_open]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ IsOpen s ↔ IsUpperSet s ∧ DirSupInacc s
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ IsUpperSet s ∧ IsOpen s ↔ IsUpperSet s ∧ DirSupInacc s

tactic: refine and_congr_right fun h ↦
  ⟨@IsScottHausdorff.dirSupInacc_of_isOpen _ _ (scottHausdorff α) _ _,
    fun h' d d₁ d₂ _ d₃ ha ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ IsUpperSet s ∧ IsOpen s ↔ IsUpperSet s ∧ DirSupInacc s
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
h : IsUpperSet s
h' : DirSupInacc s
d : Set α
d₁ : d.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
x✝ : α
d₃ : IsLUB d x✝
ha : x✝ ∈ s
⊢ ∃ b ∈ d, Ici b ∩ d ⊆ s

tactic: obtain ⟨b, hbd, hbu⟩ := h' d₁ d₂ d₃ ha
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
h : IsUpperSet s
h' : DirSupInacc s
d : Set α
d₁ : d.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
x✝ : α
d₃ : IsLUB d x✝
ha : x✝ ∈ s
⊢ ∃ b ∈ d, Ici b ∩ d ⊆ s
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
h : IsUpperSet s
h' : DirSupInacc s
d : Set α
d₁ : d.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
x✝ : α
d₃ : IsLUB d x✝
ha : x✝ ∈ s
b : α
hbd : b ∈ d
hbu : b ∈ s
⊢ ∃ b ∈ d, Ici b ∩ d ⊆ s

tactic: exact ⟨b, hbd, Subset.trans inter_subset_left (h.Ici_subset hbu)⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
h : IsUpperSet s
h' : DirSupInacc s
d : Set α
d₁ : d.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
x✝ : α
d₃ : IsLUB d x✝
ha : x✝ ∈ s
b : α
hbd : b ∈ d
hbu : b ∈ s
⊢ ∃ b ∈ d, Ici b ∩ d ⊆ s
state_after: no goals
Theorem: CategoryTheory.NonPreadditiveAbelian.sub_sub_sub
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [sub_def, ← lift_sub_lift, sub_def, Category.assoc, σ_comp, prod.lift_map_assoc]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b c d : X ⟶ Y
⊢ a - c - (b - d) = a - b - (c - d)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b c d : X ⟶ Y
⊢ prod.lift (prod.lift a b ≫ σ) (prod.lift c d ≫ σ) ≫ σ = a - b - (c - d)

tactic: rfl
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b c d : X ⟶ Y
⊢ prod.lift (prod.lift a b ≫ σ) (prod.lift c d ≫ σ) ≫ σ = a - b - (c - d)
state_after: no goals
Theorem: AffineSubspace.perpBisector_eq_top
File: Mathlib/Geometry/Euclidean/PerpBisector.lean

tactic: refine ⟨fun h ↦ ?_, fun h ↦ h ▸ perpBisector_self _⟩
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
⊢ perpBisector p₁ p₂ = ⊤ ↔ p₁ = p₂
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
h : perpBisector p₁ p₂ = ⊤
⊢ p₁ = p₂

tactic: rw [← left_mem_perpBisector, h]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
h : perpBisector p₁ p₂ = ⊤
⊢ p₁ = p₂
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
h : perpBisector p₁ p₂ = ⊤
⊢ p₁ ∈ ⊤

tactic: trivial
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
h : perpBisector p₁ p₂ = ⊤
⊢ p₁ ∈ ⊤
state_after: no goals
Theorem: Finset.image_comm
File: Mathlib/Data/Finset/Image.lean

tactic: simp_rw [image_image, comp, h_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : DecidableEq β
f✝ g✝ : α → β
s : Finset α
t : Finset β
a : α
b c : β
β' : Type u_4
inst✝¹ : DecidableEq β'
inst✝ : DecidableEq γ
f : β → γ
g : α → β
f' : α → β'
g' : β' → γ
h_comm : ∀ (a : α), f (g a) = g' (f' a)
⊢ image f (image g s) = image g' (image f' s)
state_after: no goals
Theorem: rotation_ne_conjLIE
File: Mathlib/Analysis/Complex/Isometry.lean

tactic: intro h
state_before: a : ↥circle
⊢ rotation a ≠ conjLIE
state_after: a : ↥circle
h : rotation a = conjLIE
⊢ False

tactic: have h1 : rotation a 1 = conj 1 := LinearIsometryEquiv.congr_fun h 1
state_before: a : ↥circle
h : rotation a = conjLIE
⊢ False
state_after: a : ↥circle
h : rotation a = conjLIE
h1 : (rotation a) 1 = (starRingEnd ℂ) 1
⊢ False

tactic: have hI : rotation a I = conj I := LinearIsometryEquiv.congr_fun h I
state_before: a : ↥circle
h : rotation a = conjLIE
h1 : (rotation a) 1 = (starRingEnd ℂ) 1
⊢ False
state_after: a : ↥circle
h : rotation a = conjLIE
h1 : (rotation a) 1 = (starRingEnd ℂ) 1
hI : (rotation a) I = (starRingEnd ℂ) I
⊢ False

tactic: rw [rotation_apply, RingHom.map_one, mul_one] at h1
state_before: a : ↥circle
h : rotation a = conjLIE
h1 : (rotation a) 1 = (starRingEnd ℂ) 1
hI : (rotation a) I = (starRingEnd ℂ) I
⊢ False
state_after: a : ↥circle
h : rotation a = conjLIE
h1 : ↑a = 1
hI : (rotation a) I = (starRingEnd ℂ) I
⊢ False

tactic: rw [rotation_apply, conj_I, ← neg_one_mul, mul_left_inj' I_ne_zero, h1, eq_neg_self_iff] at hI
state_before: a : ↥circle
h : rotation a = conjLIE
h1 : ↑a = 1
hI : (rotation a) I = (starRingEnd ℂ) I
⊢ False
state_after: a : ↥circle
h : rotation a = conjLIE
h1 : ↑a = 1
hI : 1 = 0
⊢ False

tactic: exact one_ne_zero hI
state_before: a : ↥circle
h : rotation a = conjLIE
h1 : ↑a = 1
hI : 1 = 0
⊢ False
state_after: no goals
Theorem: Real.one_half_lt_eulerMascheroniSeq_six
File: Mathlib/NumberTheory/Harmonic/EulerMascheroni.lean

tactic: have : eulerMascheroniSeq 6 = 49 / 20 - log 7 := by
  rw [eulerMascheroniSeq]
  norm_num
state_before: ⊢ 1 / 2 < eulerMascheroniSeq 6
state_after: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 1 / 2 < eulerMascheroniSeq 6

tactic: rw [this, lt_sub_iff_add_lt, ← lt_sub_iff_add_lt', log_lt_iff_lt_exp (by positivity)]
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 1 / 2 < eulerMascheroniSeq 6
state_after: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 < rexp (49 / 20 - 1 / 2)

tactic: refine lt_of_lt_of_le ?_ (Real.sum_le_exp_of_nonneg (by norm_num) 7)
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 < rexp (49 / 20 - 1 / 2)
state_after: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 < ∑ i ∈ Finset.range 7, (49 / 20 - 1 / 2) ^ i / ↑i.factorial

tactic: simp_rw [Finset.sum_range_succ, Nat.factorial_succ]
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 < ∑ i ∈ Finset.range 7, (49 / 20 - 1 / 2) ^ i / ↑i.factorial
state_after: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 <
    ∑ i ∈ Finset.range 0, (49 / 20 - 1 / 2) ^ i / ↑i.factorial + (49 / 20 - 1 / 2) ^ 0 / ↑(Nat.factorial 0) +
                (49 / 20 - 1 / 2) ^ 1 / ↑((0 + 1) * Nat.factorial 0) +
              (49 / 20 - 1 / 2) ^ 2 / ↑((1 + 1) * ((0 + 1) * Nat.factorial 0)) +
            (49 / 20 - 1 / 2) ^ 3 / ↑((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))) +
          (49 / 20 - 1 / 2) ^ 4 / ↑((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0)))) +
        (49 / 20 - 1 / 2) ^ 5 / ↑((4 + 1) * ((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))))) +
      (49 / 20 - 1 / 2) ^ 6 / ↑((5 + 1) * ((4 + 1) * ((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))))))

tactic: norm_num
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 7 <
    ∑ i ∈ Finset.range 0, (49 / 20 - 1 / 2) ^ i / ↑i.factorial + (49 / 20 - 1 / 2) ^ 0 / ↑(Nat.factorial 0) +
                (49 / 20 - 1 / 2) ^ 1 / ↑((0 + 1) * Nat.factorial 0) +
              (49 / 20 - 1 / 2) ^ 2 / ↑((1 + 1) * ((0 + 1) * Nat.factorial 0)) +
            (49 / 20 - 1 / 2) ^ 3 / ↑((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))) +
          (49 / 20 - 1 / 2) ^ 4 / ↑((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0)))) +
        (49 / 20 - 1 / 2) ^ 5 / ↑((4 + 1) * ((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))))) +
      (49 / 20 - 1 / 2) ^ 6 / ↑((5 + 1) * ((4 + 1) * ((3 + 1) * ((2 + 1) * ((1 + 1) * ((0 + 1) * Nat.factorial 0))))))
state_after: no goals

tactic: rw [eulerMascheroniSeq]
state_before: ⊢ eulerMascheroniSeq 6 = 49 / 20 - log 7
state_after: ⊢ ↑(harmonic 6) - log (↑6 + 1) = 49 / 20 - log 7

tactic: norm_num
state_before: ⊢ ↑(harmonic 6) - log (↑6 + 1) = 49 / 20 - log 7
state_after: no goals

tactic: positivity
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 0 < 7
state_after: no goals

tactic: norm_num
state_before: this : eulerMascheroniSeq 6 = 49 / 20 - log 7
⊢ 0 ≤ 49 / 20 - 1 / 2
state_after: no goals
Theorem: NormedAddGroupHom.lipschitz
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: rw [dist_eq_norm, dist_eq_norm, ← map_sub]
state_before: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
x y : V₁
⊢ dist (f x) (f y) ≤ ↑⟨‖f‖, ⋯⟩ * dist x y
state_after: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
x y : V₁
⊢ ‖f (x - y)‖ ≤ ↑⟨‖f‖, ⋯⟩ * ‖x - y‖

tactic: apply le_opNorm
state_before: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
x y : V₁
⊢ ‖f (x - y)‖ ≤ ↑⟨‖f‖, ⋯⟩ * ‖x - y‖
state_after: no goals
Theorem: Rat.cast_ofScientific
File: Mathlib/Data/Rat/Cast/Lemmas.lean

tactic: rw [← NNRat.cast_ofScientific (K := K), ← NNRat.cast_ofScientific, cast_nnratCast]
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
m : ℕ
s : Bool
e : ℕ
⊢ ↑(OfScientific.ofScientific m s e) = OfScientific.ofScientific m s e
state_after: no goals
Theorem: Multiset.inf_ndinsert
File: Mathlib/Data/Multiset/Lattice.lean

tactic: rw [← inf_dedup, dedup_ext.2, inf_dedup, inf_cons]
state_before: α : Type u_1
inst✝² : SemilatticeInf α
inst✝¹ : OrderTop α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ (ndinsert a s).inf = a ⊓ s.inf
state_after: α : Type u_1
inst✝² : SemilatticeInf α
inst✝¹ : OrderTop α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s

tactic: simp
state_before: α : Type u_1
inst✝² : SemilatticeInf α
inst✝¹ : OrderTop α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s
state_after: no goals
Theorem: HasDerivWithinAt.inv
File: Mathlib/Analysis/Calculus/Deriv/Inv.lean

tactic: convert (hasDerivAt_inv hx).comp_hasDerivWithinAt x hc using 1
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivWithinAt c c' s x
hx : c x ≠ 0
⊢ HasDerivWithinAt (fun y => (c y)⁻¹) (-c' / c x ^ 2) s x
state_after: case h.e'_7
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivWithinAt c c' s x
hx : c x ≠ 0
⊢ -c' / c x ^ 2 = -(c x ^ 2)⁻¹ * c'

tactic: field_simp
state_before: case h.e'_7
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivWithinAt c c' s x
hx : c x ≠ 0
⊢ -c' / c x ^ 2 = -(c x ^ 2)⁻¹ * c'
state_after: no goals
Theorem: CategoryTheory.Iso.inv_hom_id_triangle_hom₁
File: Mathlib/CategoryTheory/Triangulated/Basic.lean

tactic: rw [← comp_hom₁, e.inv_hom_id, id_hom₁]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasShift C ℤ
T₁ T₂ T₃ A B : Triangle C
e : A ≅ B
⊢ e.inv.hom₁ ≫ e.hom.hom₁ = 𝟙 B.obj₁
state_after: no goals
Theorem: IsAdjoinRootMonic.basis_repr
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: change (h.modByMonicHom x).toFinsupp.comapDomain _ Fin.val_injective.injOn i = _
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
x : S
i : Fin f.natDegree
⊢ (h.basis.repr x) i = (h.modByMonicHom x).coeff ↑i
state_after: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
x : S
i : Fin f.natDegree
⊢ (Finsupp.comapDomain Fin.val (h.modByMonicHom x).toFinsupp ⋯) i = (h.modByMonicHom x).coeff ↑i

tactic: rw [Finsupp.comapDomain_apply, Polynomial.toFinsupp_apply]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
x : S
i : Fin f.natDegree
⊢ (Finsupp.comapDomain Fin.val (h.modByMonicHom x).toFinsupp ⋯) i = (h.modByMonicHom x).coeff ↑i
state_after: no goals
Theorem: Filter.inf_map_atTop_neBot_iff
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp_rw [inf_neBot_iff_frequently_left, frequently_map, frequently_atTop]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
F : Filter β
u : α → β
⊢ (F ⊓ map u atTop).NeBot ↔ ∀ U ∈ F, ∀ (N : α), ∃ n ≥ N, u n ∈ U
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
F : Filter β
u : α → β
⊢ (∀ {p : β → Prop}, (∀ᶠ (x : β) in F, p x) → ∀ (a : α), ∃ b ≥ a, p (u b)) ↔ ∀ U ∈ F, ∀ (N : α), ∃ n ≥ N, u n ∈ U

tactic: rfl
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
F : Filter β
u : α → β
⊢ (∀ {p : β → Prop}, (∀ᶠ (x : β) in F, p x) → ∀ (a : α), ∃ b ≥ a, p (u b)) ↔ ∀ U ∈ F, ∀ (N : α), ∃ n ≥ N, u n ∈ U
state_after: no goals
Theorem: Pell.ysq_dvd_yy
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp [_root_.pow_succ]
state_before: a : ℕ
a1 : 1 < a
n : ℕ
⊢ yn a1 n * yn a1 n ∣ yn a1 n ^ 3
state_after: no goals

tactic: simp [mul_dvd_mul_left, mul_assoc]
state_before: a : ℕ
a1 : 1 < a
n : ℕ
⊢ yn a1 n * yn a1 n ∣ yn a1 n * xn a1 n ^ (yn a1 n - 1) * yn a1 n
state_after: no goals
Theorem: Batteries.RBNode.reverse_insert
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: simp [insert] <;> split <;> simp
state_before: α : Type u_1
cmp : α → α → Ordering
x : α
inst : OrientedCmp cmp
t : RBNode α
⊢ (insert cmp t x).reverse = insert (flip cmp) t.reverse x
state_after: no goals
Theorem: Function.exists_update_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: rw [← not_forall_not, forall_update_iff f fun a b ↦ ¬p a b]
state_before: α : Sort u
β : α → Sort v
α' : Sort w
inst✝¹ : DecidableEq α
inst✝ : DecidableEq α'
f✝ g : (a : α) → β a
a✝ : α
b✝ : β a✝
f : (a : α) → β a
a : α
b : β a
p : (a : α) → β a → Prop
⊢ (∃ x, p x (update f a b x)) ↔ p a b ∨ ∃ x, x ≠ a ∧ p x (f x)
state_after: α : Sort u
β : α → Sort v
α' : Sort w
inst✝¹ : DecidableEq α
inst✝ : DecidableEq α'
f✝ g : (a : α) → β a
a✝ : α
b✝ : β a✝
f : (a : α) → β a
a : α
b : β a
p : (a : α) → β a → Prop
⊢ ¬(¬p a b ∧ ∀ (x : α), x ≠ a → ¬p x (f x)) ↔ p a b ∨ ∃ x, x ≠ a ∧ p x (f x)

tactic: simp [-not_and, not_and_or]
state_before: α : Sort u
β : α → Sort v
α' : Sort w
inst✝¹ : DecidableEq α
inst✝ : DecidableEq α'
f✝ g : (a : α) → β a
a✝ : α
b✝ : β a✝
f : (a : α) → β a
a : α
b : β a
p : (a : α) → β a → Prop
⊢ ¬(¬p a b ∧ ∀ (x : α), x ≠ a → ¬p x (f x)) ↔ p a b ∨ ∃ x, x ≠ a ∧ p x (f x)
state_after: no goals
Theorem: Polynomial.leadingCoeff_add_of_degree_lt
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: have : coeff p (natDegree q) = 0 := coeff_natDegree_eq_zero_of_degree_lt h
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree < q.degree
⊢ (p + q).leadingCoeff = q.leadingCoeff
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree < q.degree
this : p.coeff q.natDegree = 0
⊢ (p + q).leadingCoeff = q.leadingCoeff

tactic: simp only [leadingCoeff, natDegree_eq_of_degree_eq (degree_add_eq_right_of_degree_lt h), this,
  coeff_add, zero_add]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree < q.degree
this : p.coeff q.natDegree = 0
⊢ (p + q).leadingCoeff = q.leadingCoeff
state_after: no goals
Theorem: compl_sup_distrib
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [← himp_bot, sup_himp_distrib]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ (a ⊔ b)ᶜ = aᶜ ⊓ bᶜ
state_after: no goals
Theorem: IsPrimitiveRoot.pow_sub_one_eq
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: rw [eq_neg_iff_add_eq_zero, add_comm, ← sum_range_succ, ← Nat.succ_eq_add_one,
  Nat.succ_pred_eq_of_pos (pos_of_gt hk), hζ.geom_sum_eq_zero hk]
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
hζ : IsPrimitiveRoot ζ k
hk : 1 < k
⊢ ζ ^ k.pred = -∑ i ∈ range k.pred, ζ ^ i
state_after: no goals
Theorem: List.Chain.sublist
File: Mathlib/Data/List/Chain.lean

tactic: rw [chain_iff_pairwise] at hl ⊢
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
inst✝ : IsTrans α R
hl : Chain R a l₂
h : l₁ <+ l₂
⊢ Chain R a l₁
state_after: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
inst✝ : IsTrans α R
hl : Pairwise R (a :: l₂)
h : l₁ <+ l₂
⊢ Pairwise R (a :: l₁)

tactic: exact hl.sublist (h.cons_cons a)
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
inst✝ : IsTrans α R
hl : Pairwise R (a :: l₂)
h : l₁ <+ l₂
⊢ Pairwise R (a :: l₁)
state_after: no goals
Theorem: Nat.pow_succ_factorization_not_dvd
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: intro h
state_before: a b m n✝ p✝ n p : ℕ
hn : n ≠ 0
hp : Prime p
⊢ ¬p ^ (n.factorization p + 1) ∣ n
state_after: a b m n✝ p✝ n p : ℕ
hn : n ≠ 0
hp : Prime p
h : p ^ (n.factorization p + 1) ∣ n
⊢ False

tactic: rw [← factorization_le_iff_dvd (pow_pos hp.pos _).ne' hn] at h
state_before: a b m n✝ p✝ n p : ℕ
hn : n ≠ 0
hp : Prime p
h : p ^ (n.factorization p + 1) ∣ n
⊢ False
state_after: a b m n✝ p✝ n p : ℕ
hn : n ≠ 0
hp : Prime p
h : (p ^ (n.factorization p + 1)).factorization ≤ n.factorization
⊢ False

tactic: simpa [hp.factorization] using h p
state_before: a b m n✝ p✝ n p : ℕ
hn : n ≠ 0
hp : Prime p
h : (p ^ (n.factorization p + 1)).factorization ≤ n.factorization
⊢ False
state_after: no goals
Theorem: CategoryTheory.Presheaf.IsSheaf.isSheafFor
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

tactic: rw [isSheaf_iff_isSheaf_of_type] at hP
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : Presieve.IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows

tactic: exact hP S hS
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : Presieve.IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows
state_after: no goals
Theorem: Polynomial.pow_rootMultiplicity_dvd
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: simp [h]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
a : R
this : DecidableEq R := Classical.decEq R
h : p = 0
⊢ (X - C a) ^ rootMultiplicity a p ∣ p
state_after: no goals

tactic: classical
rw [rootMultiplicity_eq_multiplicity, dif_neg h]; exact multiplicity.pow_multiplicity_dvd _
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
a : R
this : DecidableEq R := Classical.decEq R
h : ¬p = 0
⊢ (X - C a) ^ rootMultiplicity a p ∣ p
state_after: no goals

tactic: rw [rootMultiplicity_eq_multiplicity, dif_neg h]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
a : R
this : DecidableEq R := Classical.decEq R
h : ¬p = 0
⊢ (X - C a) ^ rootMultiplicity a p ∣ p
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
a : R
this : DecidableEq R := Classical.decEq R
h : ¬p = 0
⊢ (X - C a) ^ (multiplicity (X - C a) p).get ⋯ ∣ p

tactic: exact multiplicity.pow_multiplicity_dvd _
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
a : R
this : DecidableEq R := Classical.decEq R
h : ¬p = 0
⊢ (X - C a) ^ (multiplicity (X - C a) p).get ⋯ ∣ p
state_after: no goals
Theorem: LinearMap.dualMap_id
File: Mathlib/LinearAlgebra/Dual.lean

tactic: ext
state_before: R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
⊢ id.dualMap = id
state_after: case h.h
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
x✝¹ : Dual R M₁
x✝ : M₁
⊢ (id.dualMap x✝¹) x✝ = (id x✝¹) x✝

tactic: rfl
state_before: case h.h
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
x✝¹ : Dual R M₁
x✝ : M₁
⊢ (id.dualMap x✝¹) x✝ = (id x✝¹) x✝
state_after: no goals
Theorem: Complex.abs_exp
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [exp_eq_exp_re_mul_sin_add_cos, map_mul, abs_exp_ofReal, abs_cos_add_sin_mul_I, mul_one]
state_before: z : ℂ
⊢ abs (cexp z) = Real.exp z.re
state_after: no goals
Theorem: ConcaveOn.slope_le_of_hasDerivWithinAt
File: Mathlib/Analysis/Convex/Deriv.lean

tactic: refine hfc.slope_le_of_hasDerivWithinAt_Ioi hx hy hxy (hfd.mono_of_mem ?_)
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ slope f x y ≤ f'
state_after: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ S ∈ 𝓝[>] x

tactic: rw [mem_nhdsWithin_Ioi_iff_exists_Ioc_subset]
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ S ∈ 𝓝[>] x
state_after: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ ∃ u ∈ Ioi x, Ioc x u ⊆ S

tactic: exact ⟨y, hxy, Ioc_subset_Icc_self.trans (hfc.1.ordConnected.out hx hy)⟩
state_before: S : Set ℝ
f : ℝ → ℝ
x y f' : ℝ
hfc : ConcaveOn ℝ S f
hx : x ∈ S
hy : y ∈ S
hxy : x < y
hfd : HasDerivWithinAt f f' S x
⊢ ∃ u ∈ Ioi x, Ioc x u ⊆ S
state_after: no goals