1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AlgebraicGeometry.Spec.sheafedSpaceMap_id
File: Mathlib/AlgebraicGeometry/Spec.lean

tactic: ext
state_before: R : CommRingCat
⊢ (sheafedSpaceMap (𝟙 R)).c ≫ whiskerRight (eqToHom ⋯) (sheafedSpaceObj R).presheaf = (𝟙 (sheafedSpaceObj R)).c
state_after: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ (((sheafedSpaceMap (𝟙 R)).c ≫ whiskerRight (eqToHom ⋯) (sheafedSpaceObj R).presheaf).app { unop := U✝ }) x✝ =
    ((𝟙 (sheafedSpaceObj R)).c.app { unop := U✝ }) x✝

tactic: dsimp
state_before: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ (((sheafedSpaceMap (𝟙 R)).c ≫ whiskerRight (eqToHom ⋯) (sheafedSpaceObj R).presheaf).app { unop := U✝ }) x✝ =
    ((𝟙 (sheafedSpaceObj R)).c.app { unop := U✝ }) x✝
state_after: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ ((structureSheaf ↑R).val.map (𝟙 { unop := (TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝ }))
      ((comap (𝟙 R) U✝ ((TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝) ⋯) x✝) =
    (𝟙 ((structureSheaf ↑R).val.obj { unop := U✝ })) x✝

tactic: erw [comap_id (by simp)]
state_before: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ ((structureSheaf ↑R).val.map (𝟙 { unop := (TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝ }))
      ((comap (𝟙 R) U✝ ((TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝) ⋯) x✝) =
    (𝟙 ((structureSheaf ↑R).val.obj { unop := U✝ })) x✝
state_after: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ ((structureSheaf ↑R).val.map (𝟙 { unop := (TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝ })) ((eqToHom ⋯) x✝) =
    (𝟙 ((structureSheaf ↑R).val.obj { unop := U✝ })) x✝

tactic: simp
state_before: case w.w
R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ ((structureSheaf ↑R).val.map (𝟙 { unop := (TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝ })) ((eqToHom ⋯) x✝) =
    (𝟙 ((structureSheaf ↑R).val.obj { unop := U✝ })) x✝
state_after: no goals

tactic: simp
state_before: R : CommRingCat
U✝ : TopologicalSpace.Opens ↑↑(sheafedSpaceObj R).toPresheafedSpace
x✝ : (forget CommRingCat).obj ((sheafedSpaceObj R).presheaf.obj { unop := U✝ })
⊢ U✝ = (TopologicalSpace.Opens.map (𝟙 (topObj R))).obj U✝
state_after: no goals
Theorem: SetTheory.Game.bddAbove_of_small
File: Mathlib/SetTheory/Game/Basic.lean

tactic: simpa using bddAbove_range_of_small (Subtype.val : s → Game.{u})
state_before: s : Set Game
inst✝ : Small.{u, u + 1} ↑s
⊢ BddAbove s
state_after: no goals
Theorem: Equiv.Perm.IsCycleOn.extendDomain
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
s t : Set α
a b x y : α
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
h : g.IsCycleOn s
⊢ ∀ ⦃x : β⦄, x ∈ Subtype.val ∘ ⇑f '' s → ∀ ⦃y : β⦄, y ∈ Subtype.val ∘ ⇑f '' s → (g.extendDomain f).SameCycle x y
state_after: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
s t : Set α
a✝ b✝ x y : α
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
h : g.IsCycleOn s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ (g.extendDomain f).SameCycle ((Subtype.val ∘ ⇑f) a) ((Subtype.val ∘ ⇑f) b)

tactic: exact (h.2 ha hb).extendDomain
state_before: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
s t : Set α
a✝ b✝ x y : α
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
h : g.IsCycleOn s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ (g.extendDomain f).SameCycle ((Subtype.val ∘ ⇑f) a) ((Subtype.val ∘ ⇑f) b)
state_after: no goals
Theorem: Field.closure.isSubmonoid
File: Mathlib/Deprecated/Subfield.lean

tactic: rintro _ _ ⟨p, hp, q, hq, hq0, rfl⟩ ⟨r, hr, s, hs, hs0, rfl⟩
state_before: F : Type u_1
inst✝ : Field F
S : Set F
⊢ ∀ {a b : F}, a ∈ closure S → b ∈ closure S → a * b ∈ closure S
state_after: case intro.intro.intro.intro.refl.intro.intro.intro.intro.refl
F : Type u_1
inst✝ : Field F
S : Set F
p : F
hp : p ∈ Ring.closure S
q : F
hq : q ∈ Ring.closure S
r : F
hr : r ∈ Ring.closure S
s : F
hs : s ∈ Ring.closure S
⊢ p / q * (r / s) ∈ closure S

tactic: exact ⟨p * r, IsSubmonoid.mul_mem Ring.closure.isSubring.toIsSubmonoid hp hr, q * s,
  IsSubmonoid.mul_mem Ring.closure.isSubring.toIsSubmonoid hq hs,
  (div_mul_div_comm _ _ _ _).symm⟩
state_before: case intro.intro.intro.intro.refl.intro.intro.intro.intro.refl
F : Type u_1
inst✝ : Field F
S : Set F
p : F
hp : p ∈ Ring.closure S
q : F
hq : q ∈ Ring.closure S
r : F
hr : r ∈ Ring.closure S
s : F
hs : s ∈ Ring.closure S
⊢ p / q * (r / s) ∈ closure S
state_after: no goals
Theorem: Subgroup.map_le_map_iff_of_injective
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rw [map_le_iff_le_comap, comap_map_eq_self_of_injective hf]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f✝ f : G →* N
hf : Injective ⇑f
H K : Subgroup G
⊢ map f H ≤ map f K ↔ H ≤ K
state_after: no goals
Theorem: FreeLieAlgebra.Rel.subLeft
File: Mathlib/Algebra/Lie/Free.lean

tactic: simpa only [sub_eq_add_neg] using h.neg.addLeft a
state_before: R : Type u
X : Type v
inst✝ : CommRing R
a b c : lib R X
h : Rel R X b c
⊢ Rel R X (a - b) (a - c)
state_after: no goals
Theorem: NumberField.adjoin_eq_top_of_infinitePlace_lt
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [← IntermediateField.adjoin_simple_toSubalgebra_of_integral (IsIntegral.of_finite ℚ _)]
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : 𝓞 K
w : InfinitePlace K
h₁ : x ≠ 0
h₂ : ∀ ⦃w' : InfinitePlace K⦄, w' ≠ w → w' ↑x < 1
h₃ : w.IsReal ∨ |(w.embedding ↑x).re| < 1
⊢ Algebra.adjoin ℚ {↑x} = ⊤
state_after: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : 𝓞 K
w : InfinitePlace K
h₁ : x ≠ 0
h₂ : ∀ ⦃w' : InfinitePlace K⦄, w' ≠ w → w' ↑x < 1
h₃ : w.IsReal ∨ |(w.embedding ↑x).re| < 1
⊢ ℚ⟮↑x⟯.toSubalgebra = ⊤

tactic: exact congr_arg IntermediateField.toSubalgebra <|
  NumberField.is_primitive_element_of_infinitePlace_lt h₁ h₂ h₃
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : 𝓞 K
w : InfinitePlace K
h₁ : x ≠ 0
h₂ : ∀ ⦃w' : InfinitePlace K⦄, w' ≠ w → w' ↑x < 1
h₃ : w.IsReal ∨ |(w.embedding ↑x).re| < 1
⊢ ℚ⟮↑x⟯.toSubalgebra = ⊤
state_after: no goals
Theorem: Real.tendsto_tan_neg_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: convert tendsto_cos_neg_pi_div_two.inv_tendsto_zero.atTop_mul_neg (by norm_num)
    tendsto_sin_neg_pi_div_two using 1
state_before: ⊢ Tendsto tan (𝓝[>] (-(π / 2))) atBot
state_after: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x

tactic: simp only [Pi.inv_apply, ← div_eq_inv_mul, ← tan_eq_sin_div_cos]
state_before: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x
state_after: no goals

tactic: norm_num
state_before: ⊢ -1 < 0
state_after: no goals
Theorem: Finset.mem_disjUnion
File: Mathlib/Data/Finset/Basic.lean

tactic: rcases s with ⟨⟨s⟩⟩
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
s t : Finset α
h : _root_.Disjoint s t
a : α
⊢ a ∈ s.disjUnion t h ↔ a ∈ s ∨ a ∈ t
state_after: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
t : Finset α
a : α
val✝ : Multiset α
s : List α
nodup✝ : Nodup (Quot.mk Setoid.r s)
h : _root_.Disjoint { val := Quot.mk Setoid.r s, nodup := nodup✝ } t
⊢ a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝ }.disjUnion t h ↔
    a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝ } ∨ a ∈ t

tactic: rcases t with ⟨⟨t⟩⟩
state_before: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
t : Finset α
a : α
val✝ : Multiset α
s : List α
nodup✝ : Nodup (Quot.mk Setoid.r s)
h : _root_.Disjoint { val := Quot.mk Setoid.r s, nodup := nodup✝ } t
⊢ a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝ }.disjUnion t h ↔
    a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝ } ∨ a ∈ t
state_after: case mk.mk.mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
a : α
val✝¹ : Multiset α
s : List α
nodup✝¹ : Nodup (Quot.mk Setoid.r s)
val✝ : Multiset α
t : List α
nodup✝ : Nodup (Quot.mk Setoid.r t)
h : _root_.Disjoint { val := Quot.mk Setoid.r s, nodup := nodup✝¹ } { val := Quot.mk Setoid.r t, nodup := nodup✝ }
⊢ a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝¹ }.disjUnion { val := Quot.mk Setoid.r t, nodup := nodup✝ } h ↔
    a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝¹ } ∨ a ∈ { val := Quot.mk Setoid.r t, nodup := nodup✝ }

tactic: apply List.mem_append
state_before: case mk.mk.mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
a : α
val✝¹ : Multiset α
s : List α
nodup✝¹ : Nodup (Quot.mk Setoid.r s)
val✝ : Multiset α
t : List α
nodup✝ : Nodup (Quot.mk Setoid.r t)
h : _root_.Disjoint { val := Quot.mk Setoid.r s, nodup := nodup✝¹ } { val := Quot.mk Setoid.r t, nodup := nodup✝ }
⊢ a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝¹ }.disjUnion { val := Quot.mk Setoid.r t, nodup := nodup✝ } h ↔
    a ∈ { val := Quot.mk Setoid.r s, nodup := nodup✝¹ } ∨ a ∈ { val := Quot.mk Setoid.r t, nodup := nodup✝ }
state_after: no goals
Theorem: mul_inv_lt_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [mul_comm, inv_mul_lt_iff h]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : 0 < b
⊢ a * b⁻¹ < c ↔ a < b * c
state_after: no goals
Theorem: Real.antitone_rpow_of_base_le_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rcases lt_or_eq_of_le hb₁ with hb₁ | rfl
state_before: x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁ : b ≤ 1
⊢ Antitone fun x => b ^ x
state_after: case inl
x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁✝ : b ≤ 1
hb₁ : b < 1
⊢ Antitone fun x => b ^ x

case inr
x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
⊢ Antitone fun x => 1 ^ x

tactic: case inl => exact (strictAnti_rpow_of_base_lt_one hb₀ hb₁).antitone
state_before: case inl
x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁✝ : b ≤ 1
hb₁ : b < 1
⊢ Antitone fun x => b ^ x

case inr
x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
⊢ Antitone fun x => 1 ^ x
state_after: case inr
x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
⊢ Antitone fun x => 1 ^ x

tactic: case inr => intro _ _ _; simp
state_before: case inr
x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
⊢ Antitone fun x => 1 ^ x
state_after: no goals

tactic: exact (strictAnti_rpow_of_base_lt_one hb₀ hb₁).antitone
state_before: x y z : ℝ
n : ℕ
b : ℝ
hb₀ : 0 < b
hb₁✝ : b ≤ 1
hb₁ : b < 1
⊢ Antitone fun x => b ^ x
state_after: no goals

tactic: intro _ _ _
state_before: x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
⊢ Antitone fun x => 1 ^ x
state_after: x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
a✝¹ b✝ : ℝ
a✝ : a✝¹ ≤ b✝
⊢ (fun x => 1 ^ x) b✝ ≤ (fun x => 1 ^ x) a✝¹

tactic: simp
state_before: x y z : ℝ
n : ℕ
hb₀ : 0 < 1
hb₁ : 1 ≤ 1
a✝¹ b✝ : ℝ
a✝ : a✝¹ ≤ b✝
⊢ (fun x => 1 ^ x) b✝ ≤ (fun x => 1 ^ x) a✝¹
state_after: no goals
Theorem: CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.prod_fac₂
File: Mathlib/CategoryTheory/Localization/Prod.lean

tactic: simp only [prodLift, Functor.curry_obj_uncurry_obj, Functor.flip_flip]
state_before: C₁ : Type u₁
C₂ : Type u₂
D₁ : Type u₃
D₂ : Type u₄
inst✝⁶ : Category.{v₁, u₁} C₁
inst✝⁵ : Category.{v₂, u₂} C₂
inst✝⁴ : Category.{v₃, u₃} D₁
inst✝³ : Category.{v₄, u₄} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝² : W₁.ContainsIdentities
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝¹ : W₂.ContainsIdentities
E : Type u₅
inst✝ : Category.{v₅, u₅} E
F : C₁ × C₂ ⥤ E
hF : (W₁.prod W₂).IsInvertedBy F
⊢ W₂.Q ⋙ (curry.obj (prodLift F hF)).flip = (prodLift₁ F hF).flip
state_after: C₁ : Type u₁
C₂ : Type u₂
D₁ : Type u₃
D₂ : Type u₄
inst✝⁶ : Category.{v₁, u₁} C₁
inst✝⁵ : Category.{v₂, u₂} C₂
inst✝⁴ : Category.{v₃, u₃} D₁
inst✝³ : Category.{v₄, u₄} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝² : W₁.ContainsIdentities
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝¹ : W₂.ContainsIdentities
E : Type u₅
inst✝ : Category.{v₅, u₅} E
F : C₁ × C₂ ⥤ E
hF : (W₁.prod W₂).IsInvertedBy F
⊢ W₂.Q ⋙ Construction.lift (prodLift₁ F hF).flip ⋯ = (prodLift₁ F hF).flip

tactic: apply Construction.fac
state_before: C₁ : Type u₁
C₂ : Type u₂
D₁ : Type u₃
D₂ : Type u₄
inst✝⁶ : Category.{v₁, u₁} C₁
inst✝⁵ : Category.{v₂, u₂} C₂
inst✝⁴ : Category.{v₃, u₃} D₁
inst✝³ : Category.{v₄, u₄} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝² : W₁.ContainsIdentities
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝¹ : W₂.ContainsIdentities
E : Type u₅
inst✝ : Category.{v₅, u₅} E
F : C₁ × C₂ ⥤ E
hF : (W₁.prod W₂).IsInvertedBy F
⊢ W₂.Q ⋙ Construction.lift (prodLift₁ F hF).flip ⋯ = (prodLift₁ F hF).flip
state_after: no goals
Theorem: LieAlgebra.IsKilling.chainLength_neg
File: Mathlib/Algebra/Lie/Weights/RootSystem.lean

tactic: rw [← chainBotCoeff_add_chainTopCoeff, ← chainBotCoeff_add_chainTopCoeff, add_comm,
  Weight.coe_neg, chainTopCoeff_neg, chainBotCoeff_neg]
state_before: K : Type u_1
L : Type u_2
inst✝⁷ : Field K
inst✝⁶ : CharZero K
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra K L
inst✝³ : IsKilling K L
inst✝² : FiniteDimensional K L
H : LieSubalgebra K L
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsTriangularizable K (↥H) L
α β : Weight K (↥H) L
hα : α.IsNonZero
⊢ chainLength (-α) β = chainLength α β
state_after: no goals
Theorem: Ordinal.le_one_iff
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simpa using @le_succ_bot_iff _ _ _ a _
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal.{u_3}
⊢ a ≤ 1 ↔ a = 0 ∨ a = 1
state_after: no goals
Theorem: Set.mem_minimals_iff_forall_diff_singleton
File: Mathlib/Order/Minimal.lean

tactic: simp only [mem_minimals_iff, mem_setOf_eq, and_congr_right_iff]
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
⊢ s ∈ minimals (fun x x_1 => x ⊆ x_1) {t | P t} ↔ P s ∧ ∀ x ∈ s, ¬P (s \ {x})
state_after: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
⊢ P s → ((∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y) ↔ ∀ x ∈ s, ¬P (s \ {x}))

tactic: refine fun _ ↦ ⟨fun h x hx hxs ↦ ?_, fun h t ht hst ↦ Eq.symm <| hst.antisymm (fun x hxs ↦ ?_)⟩
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
⊢ P s → ((∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y) ↔ ∀ x ∈ s, ¬P (s \ {x}))
state_after: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s
hxs : P (s \ {x})
⊢ False

case refine_2
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t✝ : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ x ∈ s, ¬P (s \ {x})
t : Set α
ht : P t
hst : t ⊆ s
x : α
hxs : x ∈ s
⊢ x ∈ t

tactic: exact by_contra fun hxt ↦ h x hxs (hP ht (subset_diff_singleton hst hxt))
state_before: case refine_2
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t✝ : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ x ∈ s, ¬P (s \ {x})
t : Set α
ht : P t
hst : t ⊆ s
x : α
hxs : x ∈ s
⊢ x ∈ t
state_after: no goals

tactic: rw [(h hxs diff_subset)] at hx
state_before: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s
hxs : P (s \ {x})
⊢ False
state_after: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s \ {x}
hxs : P (s \ {x})
⊢ False

tactic: simp at hx
state_before: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s \ {x}
hxs : P (s \ {x})
⊢ False
state_after: no goals
Theorem: GaloisConnection.l_ciSup_set
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: haveI := hne.to_subtype
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set γ
f : γ → α
hf : BddAbove (f '' s)
hne : s.Nonempty
⊢ l (⨆ i, f ↑i) = ⨆ i, l (f ↑i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set γ
f : γ → α
hf : BddAbove (f '' s)
hne : s.Nonempty
this : Nonempty ↑s
⊢ l (⨆ i, f ↑i) = ⨆ i, l (f ↑i)

tactic: rw [image_eq_range] at hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set γ
f : γ → α
hf : BddAbove (f '' s)
hne : s.Nonempty
this : Nonempty ↑s
⊢ l (⨆ i, f ↑i) = ⨆ i, l (f ↑i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set γ
f : γ → α
hf : BddAbove (range fun x => f ↑x)
hne : s.Nonempty
this : Nonempty ↑s
⊢ l (⨆ i, f ↑i) = ⨆ i, l (f ↑i)

tactic: exact gc.l_ciSup hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set γ
f : γ → α
hf : BddAbove (range fun x => f ↑x)
hne : s.Nonempty
this : Nonempty ↑s
⊢ l (⨆ i, f ↑i) = ⨆ i, l (f ↑i)
state_after: no goals
Theorem: WeierstrassCurve.baseChange_ψ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: rw [← map_ψ, map_baseChange]
state_before: R : Type r
S : Type s
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
W : WeierstrassCurve R
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
n : ℤ
⊢ (W.baseChange B).ψ n = Polynomial.map (mapRingHom ↑f) ((W.baseChange A).ψ n)
state_after: no goals
Theorem: ConvexOn.le_right_of_left_le
File: Mathlib/Analysis/Convex/Function.lean

tactic: obtain ⟨a, b, ha, hb, hab, rfl⟩ := hz
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedCancelAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
x y z : E
hx : x ∈ s
hy : y ∈ s
hz : z ∈ openSegment 𝕜 x y
hxz : f x ≤ f z
⊢ f z ≤ f y
state_after: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedCancelAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
x y : E
hx : x ∈ s
hy : y ∈ s
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
hxz : f x ≤ f (a • x + b • y)
⊢ f (a • x + b • y) ≤ f y

tactic: exact hf.le_right_of_left_le' hx hy ha.le hb hab hxz
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedCancelAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
x y : E
hx : x ∈ s
hy : y ∈ s
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
hxz : f x ≤ f (a • x + b • y)
⊢ f (a • x + b • y) ≤ f y
state_after: no goals
Theorem: IsExposed.convex
File: Mathlib/Analysis/Convex/Exposed.lean

tactic: obtain rfl | hB := B.eq_empty_or_nonempty
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A B C : Set E
hAB : IsExposed 𝕜 A B
hA : Convex 𝕜 A
⊢ Convex 𝕜 B
state_after: case inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A C : Set E
hA : Convex 𝕜 A
hAB : IsExposed 𝕜 A ∅
⊢ Convex 𝕜 ∅

case inr
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A B C : Set E
hAB : IsExposed 𝕜 A B
hA : Convex 𝕜 A
hB : B.Nonempty
⊢ Convex 𝕜 B

tactic: obtain ⟨l, rfl⟩ := hAB hB
state_before: case inr
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A B C : Set E
hAB : IsExposed 𝕜 A B
hA : Convex 𝕜 A
hB : B.Nonempty
⊢ Convex 𝕜 B
state_after: case inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A C : Set E
hA : Convex 𝕜 A
l : E →L[𝕜] 𝕜
hAB : IsExposed 𝕜 A {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}
hB : {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}.Nonempty
⊢ Convex 𝕜 {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}

tactic: exact fun x₁ hx₁ x₂ hx₂ a b ha hb hab =>
  ⟨hA hx₁.1 hx₂.1 ha hb hab, fun y hy =>
    ((l.toLinearMap.concaveOn convex_univ).convex_ge _ ⟨mem_univ _, hx₁.2 y hy⟩
        ⟨mem_univ _, hx₂.2 y hy⟩ ha hb hab).2⟩
state_before: case inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A C : Set E
hA : Convex 𝕜 A
l : E →L[𝕜] 𝕜
hAB : IsExposed 𝕜 A {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}
hB : {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}.Nonempty
⊢ Convex 𝕜 {x | x ∈ A ∧ ∀ y ∈ A, l y ≤ l x}
state_after: no goals

tactic: exact convex_empty
state_before: case inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
A C : Set E
hA : Convex 𝕜 A
hAB : IsExposed 𝕜 A ∅
⊢ Convex 𝕜 ∅
state_after: no goals
Theorem: Ring.two_ne_zero
File: Mathlib/Algebra/CharP/Defs.lean

tactic: rw [Ne, (by norm_cast : (2 : R) = (2 : ℕ)), ringChar.spec, Nat.dvd_prime Nat.prime_two]
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : Nontrivial R
hR : ringChar R ≠ 2
⊢ 2 ≠ 0
state_after: R✝ : Type u_1
R : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : Nontrivial R
hR : ringChar R ≠ 2
⊢ ¬(ringChar R = 1 ∨ ringChar R = 2)

tactic: exact mt (or_iff_left hR).mp CharP.ringChar_ne_one
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : Nontrivial R
hR : ringChar R ≠ 2
⊢ ¬(ringChar R = 1 ∨ ringChar R = 2)
state_after: no goals

tactic: norm_cast
state_before: R✝ : Type u_1
R : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : Nontrivial R
hR : ringChar R ≠ 2
⊢ 2 = ↑2
state_after: no goals