1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: eq_bot_or_eq_succ_or_isWellOrderLimitElement
File: Mathlib/Order/IsWellOrderLimitElement.lean

tactic: refine or_iff_not_imp_left.2 <| fun h₁ ↦ or_iff_not_imp_left.2 <| fun h₂ ↦ ?_
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
⊢ a = ⊥ ∨ (∃ b, a = wellOrderSucc b ∧ b < a) ∨ IsWellOrderLimitElement a
state_after: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
⊢ IsWellOrderLimitElement a

tactic: refine (IsWellOrderLimitElement.mk ⟨⊥, Ne.bot_lt h₁⟩ fun b hb ↦ ?_)
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
⊢ IsWellOrderLimitElement a
state_after: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
b : α
hb : b < a
⊢ ∃ c, b < c ∧ c < a

tactic: obtain rfl | h₃ := eq_or_lt_of_le (wellOrderSucc_le hb)
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
b : α
hb : b < a
⊢ ∃ c, b < c ∧ c < a
state_after: case inl
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a : α
ha : IsWellOrderLimitElement a
inst✝ : OrderBot α
b : α
h₁ : ¬wellOrderSucc b = ⊥
h₂ : ¬∃ b_1, wellOrderSucc b = wellOrderSucc b_1 ∧ b_1 < wellOrderSucc b
hb : b < wellOrderSucc b
⊢ ∃ c, b < c ∧ c < wellOrderSucc b

case inr
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
b : α
hb : b < a
h₃ : wellOrderSucc b < a
⊢ ∃ c, b < c ∧ c < a

tactic: exact (h₂ ⟨b, rfl, hb⟩).elim
state_before: case inl
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a : α
ha : IsWellOrderLimitElement a
inst✝ : OrderBot α
b : α
h₁ : ¬wellOrderSucc b = ⊥
h₂ : ¬∃ b_1, wellOrderSucc b = wellOrderSucc b_1 ∧ b_1 < wellOrderSucc b
hb : b < wellOrderSucc b
⊢ ∃ c, b < c ∧ c < wellOrderSucc b
state_after: no goals

tactic: exact ⟨wellOrderSucc b, self_lt_wellOrderSucc hb, h₃⟩
state_before: case inr
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
inst✝ : OrderBot α
a : α
h₁ : ¬a = ⊥
h₂ : ¬∃ b, a = wellOrderSucc b ∧ b < a
b : α
hb : b < a
h₃ : wellOrderSucc b < a
⊢ ∃ c, b < c ∧ c < a
state_after: no goals
Theorem: Int.neg_log_inv_eq_clog
File: Mathlib/Data/Int/Log.lean

tactic: rw [log_inv, neg_neg]
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
⊢ -log b r⁻¹ = clog b r
state_after: no goals
Theorem: PrimeSpectrum.localization_away_openEmbedding
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [localization_away_comap_range S r]
state_before: R : Type u
S✝ : Type v
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S✝
S : Type v
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
r : R
inst✝ : IsLocalization.Away r S
⊢ IsOpen (Set.range ⇑(comap (algebraMap R S)))
state_after: R : Type u
S✝ : Type v
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S✝
S : Type v
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
r : R
inst✝ : IsLocalization.Away r S
⊢ IsOpen ↑(basicOpen r)

tactic: exact isOpen_basicOpen
state_before: R : Type u
S✝ : Type v
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S✝
S : Type v
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
r : R
inst✝ : IsLocalization.Away r S
⊢ IsOpen ↑(basicOpen r)
state_after: no goals
Theorem: ArithmeticFunction.LSeries_zeta_eq_riemannZeta
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

tactic: simp only [LSeries, natCoe_apply, zeta_apply, cast_ite, cast_zero, cast_one,
  zeta_eq_tsum_one_div_nat_cpow hs]
state_before: s : ℂ
hs : 1 < s.re
⊢ L (fun n => ↑(ζ n)) s = riemannZeta s
state_after: s : ℂ
hs : 1 < s.re
⊢ ∑' (n : ℕ), term (fun n => if n = 0 then 0 else 1) s n = ∑' (n : ℕ), 1 / ↑n ^ s

tactic: refine tsum_congr fun n ↦ ?_
state_before: s : ℂ
hs : 1 < s.re
⊢ ∑' (n : ℕ), term (fun n => if n = 0 then 0 else 1) s n = ∑' (n : ℕ), 1 / ↑n ^ s
state_after: s : ℂ
hs : 1 < s.re
n : ℕ
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s

tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: s : ℂ
hs : 1 < s.re
n : ℕ
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s
state_after: case inl
s : ℂ
hs : 1 < s.re
⊢ term (fun n => if n = 0 then 0 else 1) s 0 = 1 / ↑0 ^ s

case inr
s : ℂ
hs : 1 < s.re
n : ℕ
hn : n ≠ 0
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s

tactic: simp only [term_zero, cast_zero, zero_cpow (ne_zero_of_one_lt_re hs), div_zero]
state_before: case inl
s : ℂ
hs : 1 < s.re
⊢ term (fun n => if n = 0 then 0 else 1) s 0 = 1 / ↑0 ^ s
state_after: no goals

tactic: simp only [term_of_ne_zero hn, hn, ↓reduceIte, one_div]
state_before: case inr
s : ℂ
hs : 1 < s.re
n : ℕ
hn : n ≠ 0
⊢ term (fun n => if n = 0 then 0 else 1) s n = 1 / ↑n ^ s
state_after: no goals
Theorem: IsClosedMap.restrictPreimage
File: Mathlib/Topology/LocalAtTarget.lean

tactic: intro t
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
⊢ IsClosedMap (s.restrictPreimage f)
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
⊢ IsClosed t → IsClosed (s.restrictPreimage f '' t)

tactic: suffices ∀ u, IsClosed u → Subtype.val ⁻¹' u = t →
  ∃ v, IsClosed v ∧ Subtype.val ⁻¹' v = s.restrictPreimage f '' t by
    simpa [isClosed_induced_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
⊢ IsClosed t → IsClosed (s.restrictPreimage f '' t)
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
⊢ ∀ (u : Set α), IsClosed u → Subtype.val ⁻¹' u = t → ∃ v, IsClosed v ∧ Subtype.val ⁻¹' v = s.restrictPreimage f '' t

tactic: exact fun u hu e => ⟨f '' u, H u hu, by simp [← e, image_restrictPreimage]⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
⊢ ∀ (u : Set α), IsClosed u → Subtype.val ⁻¹' u = t → ∃ v, IsClosed v ∧ Subtype.val ⁻¹' v = s.restrictPreimage f '' t
state_after: no goals

tactic: simpa [isClosed_induced_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
this :
  ∀ (u : Set α), IsClosed u → Subtype.val ⁻¹' u = t → ∃ v, IsClosed v ∧ Subtype.val ⁻¹' v = s.restrictPreimage f '' t
⊢ IsClosed t → IsClosed (s.restrictPreimage f '' t)
state_after: no goals

tactic: simp [← e, image_restrictPreimage]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
H : IsClosedMap f
s : Set β
t : Set ↑(f ⁻¹' s)
u : Set α
hu : IsClosed u
e : Subtype.val ⁻¹' u = t
⊢ Subtype.val ⁻¹' (f '' u) = s.restrictPreimage f '' t
state_after: no goals
Theorem: Nat.factorization_prod
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: ext p
state_before: a b m n p : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
⊢ (S.prod g).factorization = ∑ x ∈ S, (g x).factorization
state_after: case h
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ (S.prod g).factorization p = (∑ x ∈ S, (g x).factorization) p

tactic: refine Finset.induction_on' S ?_ ?_
state_before: case h
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ (S.prod g).factorization p = (∑ x ∈ S, (g x).factorization) p
state_after: case h.refine_1
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ (∅.prod g).factorization p = (∑ x ∈ ∅, (g x).factorization) p

case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ ∀ {a : α} {s : Finset α},
    a ∈ S →
      s ⊆ S →
        a ∉ s →
          (s.prod g).factorization p = (∑ x ∈ s, (g x).factorization) p →
            ((insert a s).prod g).factorization p = (∑ x ∈ insert a s, (g x).factorization) p

tactic: simp
state_before: case h.refine_1
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ (∅.prod g).factorization p = (∑ x ∈ ∅, (g x).factorization) p
state_after: no goals

tactic: intro x T hxS hTS hxT IH
state_before: case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
⊢ ∀ {a : α} {s : Finset α},
    a ∈ S →
      s ⊆ S →
        a ∉ s →
          (s.prod g).factorization p = (∑ x ∈ s, (g x).factorization) p →
            ((insert a s).prod g).factorization p = (∑ x ∈ insert a s, (g x).factorization) p
state_after: case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
x : α
T : Finset α
hxS : x ∈ S
hTS : T ⊆ S
hxT : x ∉ T
IH : (T.prod g).factorization p = (∑ x ∈ T, (g x).factorization) p
⊢ ((insert x T).prod g).factorization p = (∑ x ∈ insert x T, (g x).factorization) p

tactic: have hT : T.prod g ≠ 0 := prod_ne_zero_iff.mpr fun x hx => hS x (hTS hx)
state_before: case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
x : α
T : Finset α
hxS : x ∈ S
hTS : T ⊆ S
hxT : x ∉ T
IH : (T.prod g).factorization p = (∑ x ∈ T, (g x).factorization) p
⊢ ((insert x T).prod g).factorization p = (∑ x ∈ insert x T, (g x).factorization) p
state_after: case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
x : α
T : Finset α
hxS : x ∈ S
hTS : T ⊆ S
hxT : x ∉ T
IH : (T.prod g).factorization p = (∑ x ∈ T, (g x).factorization) p
hT : T.prod g ≠ 0
⊢ ((insert x T).prod g).factorization p = (∑ x ∈ insert x T, (g x).factorization) p

tactic: simp [prod_insert hxT, sum_insert hxT, ← IH, factorization_mul (hS x hxS) hT]
state_before: case h.refine_2
a b m n p✝ : ℕ
α : Type u_1
S : Finset α
g : α → ℕ
hS : ∀ x ∈ S, g x ≠ 0
p : ℕ
x : α
T : Finset α
hxS : x ∈ S
hTS : T ⊆ S
hxT : x ∉ T
IH : (T.prod g).factorization p = (∑ x ∈ T, (g x).factorization) p
hT : T.prod g ≠ 0
⊢ ((insert x T).prod g).factorization p = (∑ x ∈ insert x T, (g x).factorization) p
state_after: no goals
Theorem: CategoryTheory.μ_naturalityᵣ
File: Mathlib/CategoryTheory/Monoidal/End.lean

tactic: rw [← id_tensorHom, ← μ_naturality₂ F (𝟙 m) g X]
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n n' : M
g : n ⟶ n'
X : C
⊢ (F.map g).app ((F.obj m).obj X) ≫ (F.μ m n').app X = (F.μ m n).app X ≫ (F.map (m ◁ g)).app X
state_after: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n n' : M
g : n ⟶ n'
X : C
⊢ (F.map g).app ((F.obj m).obj X) ≫ (F.μ m n').app X =
    (F.map g).app ((F.obj m).obj X) ≫ (F.obj n').map ((F.map (𝟙 m)).app X) ≫ (F.μ m n').app X

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
m n n' : M
g : n ⟶ n'
X : C
⊢ (F.map g).app ((F.obj m).obj X) ≫ (F.μ m n').app X =
    (F.map g).app ((F.obj m).obj X) ≫ (F.obj n').map ((F.map (𝟙 m)).app X) ≫ (F.μ m n').app X
state_after: no goals
Theorem: Complex.cos_sub_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [sub_eq_add_neg, cos_add]
state_before: x : ℂ
⊢ cos (x - ↑π / 2) = sin x
state_after: no goals
Theorem: comap_norm_nhds_one
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simpa only [dist_one_right] using nhds_comap_dist (1 : E)
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
⊢ comap norm (𝓝 0) = 𝓝 1
state_after: no goals
Theorem: Fin.le_castSucc_pred_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [castSucc_pred_eq_pred_castSucc, le_pred_castSucc_iff]
state_before: n m : ℕ
a b : Fin (n + 1)
ha : a ≠ 0
⊢ b ≤ (a.pred ha).castSucc ↔ b < a
state_after: no goals
Theorem: convexHull_empty_iff
File: Mathlib/Analysis/Convex/Hull.lean

tactic: constructor
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ (convexHull 𝕜) s = ∅ ↔ s = ∅
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ (convexHull 𝕜) s = ∅ → s = ∅

case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ s = ∅ → (convexHull 𝕜) s = ∅

tactic: intro h
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ (convexHull 𝕜) s = ∅ → s = ∅
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : (convexHull 𝕜) s = ∅
⊢ s = ∅

tactic: rw [← Set.subset_empty_iff, ← h]
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : (convexHull 𝕜) s = ∅
⊢ s = ∅
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : (convexHull 𝕜) s = ∅
⊢ s ⊆ (convexHull 𝕜) s

tactic: exact subset_convexHull 𝕜 _
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : (convexHull 𝕜) s = ∅
⊢ s ⊆ (convexHull 𝕜) s
state_after: no goals

tactic: rintro rfl
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ s = ∅ → (convexHull 𝕜) s = ∅
state_after: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
t : Set E
x y : E
⊢ (convexHull 𝕜) ∅ = ∅

tactic: exact convexHull_empty
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
t : Set E
x y : E
⊢ (convexHull 𝕜) ∅ = ∅
state_after: no goals
Theorem: Nat.image_snd_divisorsAntidiagonal
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [← map_swap_divisorsAntidiagonal, map_eq_image, image_image]
state_before: n : ℕ
⊢ image Prod.snd n.divisorsAntidiagonal = n.divisors
state_after: n : ℕ
⊢ image (Prod.snd ∘ ⇑(Equiv.prodComm ℕ ℕ).toEmbedding) n.divisorsAntidiagonal = n.divisors

tactic: exact image_fst_divisorsAntidiagonal
state_before: n : ℕ
⊢ image (Prod.snd ∘ ⇑(Equiv.prodComm ℕ ℕ).toEmbedding) n.divisorsAntidiagonal = n.divisors
state_after: no goals
Theorem: ContractingWith.aposteriori_dist_iterate_fixedPoint_le
File: Mathlib/Topology/MetricSpace/Contracting.lean

tactic: rw [iterate_succ']
state_before: α : Type u_1
inst✝² : MetricSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
inst✝¹ : Nonempty α
inst✝ : CompleteSpace α
x : α
n : ℕ
⊢ dist (f^[n] x) (fixedPoint f hf) ≤ dist (f^[n] x) (f^[n + 1] x) / (1 - ↑K)
state_after: α : Type u_1
inst✝² : MetricSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
inst✝¹ : Nonempty α
inst✝ : CompleteSpace α
x : α
n : ℕ
⊢ dist (f^[n] x) (fixedPoint f hf) ≤ dist (f^[n] x) ((f ∘ f^[n]) x) / (1 - ↑K)

tactic: apply hf.dist_fixedPoint_le
state_before: α : Type u_1
inst✝² : MetricSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
inst✝¹ : Nonempty α
inst✝ : CompleteSpace α
x : α
n : ℕ
⊢ dist (f^[n] x) (fixedPoint f hf) ≤ dist (f^[n] x) ((f ∘ f^[n]) x) / (1 - ↑K)
state_after: no goals
Theorem: DirectSum.degree_eq_of_mem_mem
File: Mathlib/Algebra/DirectSum/Decomposition.lean

tactic: contrapose! hx
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
σ : Type u_4
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid M
inst✝² : SetLike σ M
inst✝¹ : AddSubmonoidClass σ M
ℳ : ι → σ
inst✝ : Decomposition ℳ
x : M
i j : ι
hxi : x ∈ ℳ i
hxj : x ∈ ℳ j
hx : x ≠ 0
⊢ i = j
state_after: ι : Type u_1
R : Type u_2
M : Type u_3
σ : Type u_4
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid M
inst✝² : SetLike σ M
inst✝¹ : AddSubmonoidClass σ M
ℳ : ι → σ
inst✝ : Decomposition ℳ
x : M
i j : ι
hxi : x ∈ ℳ i
hxj : x ∈ ℳ j
hx : i ≠ j
⊢ x = 0

tactic: rw [← decompose_of_mem_same ℳ hxj, decompose_of_mem_ne ℳ hxi hx]
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
σ : Type u_4
inst✝⁴ : DecidableEq ι
inst✝³ : AddCommMonoid M
inst✝² : SetLike σ M
inst✝¹ : AddSubmonoidClass σ M
ℳ : ι → σ
inst✝ : Decomposition ℳ
x : M
i j : ι
hxi : x ∈ ℳ i
hxj : x ∈ ℳ j
hx : i ≠ j
⊢ x = 0
state_after: no goals
Theorem: FirstOrder.Language.ElementaryEmbedding.map_sentence
File: Mathlib/ModelTheory/ElementaryMaps.lean

tactic: rw [Sentence.Realize, Sentence.Realize, ← f.map_formula, Unique.eq_default (f ∘ default)]
state_before: L : Language
M : Type u_1
N : Type u_2
P : Type u_3
Q : Type u_4
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
inst✝ : L.Structure Q
f : M ↪ₑ[L] N
φ : L.Sentence
⊢ M ⊨ φ ↔ N ⊨ φ
state_after: no goals
Theorem: IsSelfAdjoint.star_add_self
File: Mathlib/Algebra/Star/SelfAdjoint.lean

tactic: simp only [isSelfAdjoint_iff, add_comm, star_add, star_star]
state_before: R : Type u_1
A : Type u_2
inst✝¹ : AddCommMonoid R
inst✝ : StarAddMonoid R
x : R
⊢ IsSelfAdjoint (star x + x)
state_after: no goals
Theorem: Trivialization.symm_coordChangeL
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: apply ContinuousLinearEquiv.toLinearEquiv_injective
state_before: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e'.baseSet ∩ e.baseSet
⊢ (coordChangeL R e e' b).symm = coordChangeL R e' e b
state_after: case a
R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e'.baseSet ∩ e.baseSet
⊢ (coordChangeL R e e' b).symm.toLinearEquiv = (coordChangeL R e' e b).toLinearEquiv

tactic: rw [coe_coordChangeL' e' e hb, (coordChangeL R e e' b).symm_toLinearEquiv,
  coe_coordChangeL' e e' hb.symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
state_before: case a
R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e'.baseSet ∩ e.baseSet
⊢ (coordChangeL R e e' b).symm.toLinearEquiv = (coordChangeL R e' e b).toLinearEquiv
state_after: no goals
Theorem: Matrix.rank_submatrix
File: Mathlib/Data/Matrix/Rank.lean

tactic: simpa only [reindex_apply] using rank_reindex e₁.symm e₂.symm A
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommRing R
inst✝ : Fintype m
A : Matrix m m R
e₁ e₂ : n ≃ m
⊢ (A.submatrix ⇑e₁ ⇑e₂).rank = A.rank
state_after: no goals
Theorem: CategoryTheory.Free.single_comp_single
File: Mathlib/Algebra/Category/ModuleCat/Adjunctions.lean

tactic: dsimp [CategoryTheory.categoryFree]
state_before: R : Type u_1
inst✝¹ : CommRing R
C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
r s : R
⊢ single f r ≫ single g s = single (f ≫ g) (r * s)
state_after: R : Type u_1
inst✝¹ : CommRing R
C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
r s : R
⊢ ((single f r).sum fun f' s_1 => (single g s).sum fun g' t => single (f' ≫ g') (s_1 * t)) = single (f ≫ g) (r * s)

tactic: simp
state_before: R : Type u_1
inst✝¹ : CommRing R
C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
r s : R
⊢ ((single f r).sum fun f' s_1 => (single g s).sum fun g' t => single (f' ≫ g') (s_1 * t)) = single (f ≫ g) (r * s)
state_after: no goals