1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Adjunction.map_projective
File: Mathlib/CategoryTheory/Preadditive/Projective.lean

tactic: rcases hP.factors (adj.unit.app P ≫ G.map f) (G.map g) with ⟨f', hf'⟩
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
⊢ ∃ f', f' ≫ g = f
state_after: case intro
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ ∃ f', f' ≫ g = f

tactic: use F.map f' ≫ adj.counit.app _
state_before: case intro
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ ∃ f', f' ≫ g = f
state_after: case h
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ (F.map f' ≫ adj.counit.app E✝) ≫ g = f

tactic: rw [Category.assoc, ← Adjunction.counit_naturality, ← Category.assoc, ← F.map_comp, hf']
state_before: case h
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ (F.map f' ≫ adj.counit.app E✝) ≫ g = f
state_after: case h
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ F.map (adj.unit.app P ≫ G.map f) ≫ adj.counit.app X✝ = f

tactic: simp
state_before: case h
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
inst✝ : G.PreservesEpimorphisms
P : C
hP : Projective P
E✝ X✝ : D
f : F.obj P ⟶ X✝
g : E✝ ⟶ X✝
x✝ : Epi g
f' : P ⟶ G.obj E✝
hf' : f' ≫ G.map g = adj.unit.app P ≫ G.map f
⊢ F.map (adj.unit.app P ≫ G.map f) ≫ adj.counit.app X✝ = f
state_after: no goals
Theorem: Matrix.det_of_lowerTriangular
File: Mathlib/LinearAlgebra/Matrix/Block.lean

tactic: rw [← det_transpose]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
o : Type u_5
m' : α → Type u_6
n' : α → Type u_7
R : Type v
inst✝⁵ : CommRing R
M✝ N : Matrix m m R
b : m → α
inst✝⁴ : DecidableEq m
inst✝³ : Fintype m
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : LinearOrder m
M : Matrix m m R
h : M.BlockTriangular ⇑toDual
⊢ M.det = ∏ i : m, M i i
state_after: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
o : Type u_5
m' : α → Type u_6
n' : α → Type u_7
R : Type v
inst✝⁵ : CommRing R
M✝ N : Matrix m m R
b : m → α
inst✝⁴ : DecidableEq m
inst✝³ : Fintype m
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : LinearOrder m
M : Matrix m m R
h : M.BlockTriangular ⇑toDual
⊢ Mᵀ.det = ∏ i : m, M i i

tactic: exact det_of_upperTriangular h.transpose
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
o : Type u_5
m' : α → Type u_6
n' : α → Type u_7
R : Type v
inst✝⁵ : CommRing R
M✝ N : Matrix m m R
b : m → α
inst✝⁴ : DecidableEq m
inst✝³ : Fintype m
inst✝² : DecidableEq n
inst✝¹ : Fintype n
inst✝ : LinearOrder m
M : Matrix m m R
h : M.BlockTriangular ⇑toDual
⊢ Mᵀ.det = ∏ i : m, M i i
state_after: no goals
Theorem: Polynomial.degree_cubic
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [add_assoc, add_assoc, ← add_assoc (C b * X ^ 2),
  degree_add_eq_left_of_degree_lt <| degree_quadratic_lt_degree_C_mul_X_cb ha,
  degree_C_mul_X_pow 3 ha]
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
ha : a ≠ 0
⊢ (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d).degree = 3
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
ha : a ≠ 0
⊢ ↑3 = 3

tactic: rfl
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
ha : a ≠ 0
⊢ ↑3 = 3
state_after: no goals
Theorem: List.rotate'_rotate'
File: Mathlib/Data/List/Rotate.lean

tactic: simp
state_before: α : Type u
a : α
l : List α
m : ℕ
⊢ ((a :: l).rotate' 0).rotate' m = (a :: l).rotate' (0 + m)
state_after: no goals

tactic: simp
state_before: α : Type u
n m : ℕ
⊢ ([].rotate' n).rotate' m = [].rotate' (n + m)
state_after: no goals

tactic: rw [rotate'_cons_succ, rotate'_rotate' _ n, Nat.add_right_comm, ← rotate'_cons_succ,
  Nat.succ_eq_add_one]
state_before: α : Type u
a : α
l : List α
n m : ℕ
⊢ ((a :: l).rotate' (n + 1)).rotate' m = (a :: l).rotate' (n + 1 + m)
state_after: no goals
Theorem: Complex.rightAngleRotation
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: apply ext_inner_right ℝ
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z : ℂ
⊢ Complex.orientation.rightAngleRotation z = I * z
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z : ℂ
⊢ ∀ (v : ℂ), ⟪Complex.orientation.rightAngleRotation z, v⟫_ℝ = ⟪I * z, v⟫_ℝ

tactic: intro w
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z : ℂ
⊢ ∀ (v : ℂ), ⟪Complex.orientation.rightAngleRotation z, v⟫_ℝ = ⟪I * z, v⟫_ℝ
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ ⟪Complex.orientation.rightAngleRotation z, w⟫_ℝ = ⟪I * z, w⟫_ℝ

tactic: rw [Orientation.inner_rightAngleRotation_left]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ ⟪Complex.orientation.rightAngleRotation z, w⟫_ℝ = ⟪I * z, w⟫_ℝ
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ (Complex.orientation.areaForm z) w = ⟪I * z, w⟫_ℝ

tactic: simp only [Complex.areaForm, Complex.inner, mul_re, mul_im, conj_re, conj_im, map_mul, conj_I,
  neg_re, neg_im, I_re, I_im]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ (Complex.orientation.areaForm z) w = ⟪I * z, w⟫_ℝ
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ z.re * w.im + -z.im * w.re = (-0 * z.re - -1 * -z.im) * w.re - (-0 * -z.im + -1 * z.re) * w.im

tactic: ring
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
z w : ℂ
⊢ z.re * w.im + -z.im * w.re = (-0 * z.re - -1 * -z.im) * w.re - (-0 * -z.im + -1 * z.re) * w.im
state_after: no goals
Theorem: CategoryTheory.Localization.homEquiv_id
File: Mathlib/CategoryTheory/Localization/HomEquiv.lean

tactic: simp [homEquiv_apply]
state_before: C : Type u_1
C₁ : Type u_2
C₂ : Type u_3
C₃ : Type u_4
D₁ : Type u_5
D₂ : Type u_6
D₃ : Type u_7
inst✝⁹ : Category.{u_9, u_1} C
inst✝⁸ : Category.{?u.48721, u_2} C₁
inst✝⁷ : Category.{?u.48725, u_3} C₂
inst✝⁶ : Category.{?u.48729, u_4} C₃
inst✝⁵ : Category.{u_10, u_5} D₁
inst✝⁴ : Category.{u_8, u_6} D₂
inst✝³ : Category.{?u.48741, u_7} D₃
W : MorphismProperty C
L₁ : C ⥤ D₁
inst✝² : L₁.IsLocalization W
L₂ : C ⥤ D₂
inst✝¹ : L₂.IsLocalization W
L₃ : C ⥤ D₃
inst✝ : L₃.IsLocalization W
X Y Z : C
⊢ (homEquiv W L₁ L₂) (𝟙 (L₁.obj X)) = 𝟙 (L₂.obj X)
state_after: no goals
Theorem: Module.finite_of_finrank_eq_succ
File: Mathlib/LinearAlgebra/Dimension/Free.lean

tactic: rw [hn]
state_before: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < finrank R M
state_after: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < n.succ

tactic: exact n.succ_pos
state_before: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < n.succ
state_after: no goals
Theorem: PresheafOfModules.limitConeπApp_naturality
File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean

tactic: ext1 X
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
i j : J
f : i ⟶ j
⊢ limitConeπApp F i ≫ F.map f = limitConeπApp F j
state_after: case w
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
i j : J
f : i ⟶ j
X : Cᵒᵖ
⊢ Hom.app (limitConeπApp F i ≫ F.map f) X = Hom.app (limitConeπApp F j) X

tactic: exact limit.w (F ⋙ evaluation R X) f
state_before: case w
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
i j : J
f : i ⟶ j
X : Cᵒᵖ
⊢ Hom.app (limitConeπApp F i ≫ F.map f) X = Hom.app (limitConeπApp F j) X
state_after: no goals
Theorem: RatFunc.mk_eq_div'
File: Mathlib/FieldTheory/RatFunc/Defs.lean

tactic: rw [RatFunc.mk]
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
p q : K[X]
⊢ RatFunc.mk p q =
    { toFractionRing := (algebraMap K[X] (FractionRing K[X])) p / (algebraMap K[X] (FractionRing K[X])) q }
state_after: no goals
Theorem: CategoryTheory.Limits.limit.map_post
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: ext
state_before: J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F : J ⥤ C
inst✝² : HasLimitsOfShape J C
G : J ⥤ C
α : F ⟶ G
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasLimitsOfShape J D
H : C ⥤ D
⊢ H.map (limMap α) ≫ post G H = post F H ≫ limMap (whiskerRight α H)
state_after: case w
J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F : J ⥤ C
inst✝² : HasLimitsOfShape J C
G : J ⥤ C
α : F ⟶ G
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasLimitsOfShape J D
H : C ⥤ D
j✝ : J
⊢ (H.map (limMap α) ≫ post G H) ≫ π (G ⋙ H) j✝ = (post F H ≫ limMap (whiskerRight α H)) ≫ π (G ⋙ H) j✝

tactic: simp only [whiskerRight_app, limMap_π, assoc, limit.post_π_assoc, limit.post_π, ← H.map_comp]
state_before: case w
J : Type u₁
inst✝⁵ : Category.{v₁, u₁} J
K : Type u₂
inst✝⁴ : Category.{v₂, u₂} K
C : Type u
inst✝³ : Category.{v, u} C
F : J ⥤ C
inst✝² : HasLimitsOfShape J C
G : J ⥤ C
α : F ⟶ G
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasLimitsOfShape J D
H : C ⥤ D
j✝ : J
⊢ (H.map (limMap α) ≫ post G H) ≫ π (G ⋙ H) j✝ = (post F H ≫ limMap (whiskerRight α H)) ≫ π (G ⋙ H) j✝
state_after: no goals
Theorem: FreeAlgebra.lift_comp_ι
File: Mathlib/Algebra/FreeAlgebra.lean

tactic: rw [← lift_symm_apply]
state_before: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
g : FreeAlgebra R X →ₐ[R] A
⊢ (lift R) (⇑g ∘ ι R) = g
state_after: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
g : FreeAlgebra R X →ₐ[R] A
⊢ (lift R) ((lift R).symm g) = g

tactic: exact (lift R).apply_symm_apply g
state_before: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
g : FreeAlgebra R X →ₐ[R] A
⊢ (lift R) ((lift R).symm g) = g
state_after: no goals
Theorem: List.mem_eraseIdx_iff_getElem
File: .lake/packages/batteries/Batteries/Data/List/EraseIdx.lean

tactic: simp only [eraseIdx, Fin.exists_iff, not_mem_nil, false_iff]
state_before: α : Type u
β : Type v
x : α
x✝ : Nat
⊢ x ∈ [].eraseIdx x✝ ↔ ∃ i, ↑i ≠ x✝ ∧ [][↑i] = x
state_after: α : Type u
β : Type v
x : α
x✝ : Nat
⊢ ¬∃ i h, i ≠ x✝ ∧ [][i] = x

tactic: rintro ⟨i, h, -⟩
state_before: α : Type u
β : Type v
x : α
x✝ : Nat
⊢ ¬∃ i h, i ≠ x✝ ∧ [][i] = x
state_after: case intro.intro
α : Type u
β : Type v
x : α
x✝ i : Nat
h : i < [].length
⊢ False

tactic: exact Nat.not_lt_zero _ h
state_before: case intro.intro
α : Type u
β : Type v
x : α
x✝ i : Nat
h : i < [].length
⊢ False
state_after: no goals

tactic: simp [Fin.exists_fin_succ, mem_iff_get]
state_before: α : Type u
β : Type v
x a : α
l : List α
⊢ x ∈ (a :: l).eraseIdx 0 ↔ ∃ i, ↑i ≠ 0 ∧ (a :: l)[↑i] = x
state_after: no goals

tactic: simp [Fin.exists_fin_succ, mem_eraseIdx_iff_getElem, @eq_comm _ a, k.succ_ne_zero.symm]
state_before: α : Type u
β : Type v
x a : α
l : List α
k : Nat
⊢ x ∈ (a :: l).eraseIdx (k + 1) ↔ ∃ i, ↑i ≠ k + 1 ∧ (a :: l)[↑i] = x
state_after: no goals
Theorem: StarConvex.affine_preimage
File: Mathlib/Analysis/Convex/Star.lean

tactic: intro y hy a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set F
hs : StarConvex 𝕜 (f x) s
⊢ StarConvex 𝕜 x (⇑f ⁻¹' s)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ ⇑f ⁻¹' s

tactic: rw [mem_preimage, Convex.combo_affine_apply hab]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ ⇑f ⁻¹' s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • f y ∈ s

tactic: exact hs hy ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • f y ∈ s
state_after: no goals
Theorem: SimpleGraph.Subgraph.edgeSet_sup
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
H₁ H₂ : G.Subgraph
⊢ ∀ (x y : V), s(x, y) ∈ (H₁ ⊔ H₂).edgeSet ↔ s(x, y) ∈ H₁.edgeSet ∪ H₂.edgeSet
state_after: no goals
Theorem: WittVector.verschiebungFun_coeff
File: Mathlib/RingTheory/WittVector/Verschiebung.lean

tactic: simp only [verschiebungFun, ge_iff_le]
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
x : 𝕎 R
n : ℕ
⊢ x.verschiebungFun.coeff n = if n = 0 then 0 else x.coeff (n - 1)
state_after: no goals
Theorem: Set.pairwise_iff_exists_forall
File: Mathlib/Data/Set/Pairwise/Basic.lean

tactic: rcases s.eq_empty_or_nonempty with (rfl | hne)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r✝ p q : α → α → Prop
f✝ g : ι → α
s✝ t u : Set α
a b : α
inst✝¹ : Nonempty ι
s : Set α
f : α → ι
r : ι → ι → Prop
inst✝ : IsEquiv ι r
⊢ s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r✝ p q : α → α → Prop
f✝ g : ι → α
s t u : Set α
a b : α
inst✝¹ : Nonempty ι
f : α → ι
r : ι → ι → Prop
inst✝ : IsEquiv ι r
⊢ ∅.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ ∅, r (f x) z

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r✝ p q : α → α → Prop
f✝ g : ι → α
s✝ t u : Set α
a b : α
inst✝¹ : Nonempty ι
s : Set α
f : α → ι
r : ι → ι → Prop
inst✝ : IsEquiv ι r
hne : s.Nonempty
⊢ s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z

tactic: simp
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r✝ p q : α → α → Prop
f✝ g : ι → α
s t u : Set α
a b : α
inst✝¹ : Nonempty ι
f : α → ι
r : ι → ι → Prop
inst✝ : IsEquiv ι r
⊢ ∅.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ ∅, r (f x) z
state_after: no goals

tactic: exact hne.pairwise_iff_exists_forall
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r✝ p q : α → α → Prop
f✝ g : ι → α
s✝ t u : Set α
a b : α
inst✝¹ : Nonempty ι
s : Set α
f : α → ι
r : ι → ι → Prop
inst✝ : IsEquiv ι r
hne : s.Nonempty
⊢ s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z
state_after: no goals
Theorem: SetTheory.PGame.leftMoves_nim
File: Mathlib/SetTheory/Game/Nim.lean

tactic: rw [nim_def]
state_before: o : Ordinal.{u_1}
⊢ (nim o).LeftMoves = (Quotient.out o).α
state_after: o : Ordinal.{u_1}
⊢ (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).LeftMoves =
    (Quotient.out o).α

tactic: rfl
state_before: o : Ordinal.{u_1}
⊢ (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).LeftMoves =
    (Quotient.out o).α
state_after: no goals
Theorem: Set.fiber_ncard_ne_zero_iff_mem_image
File: Mathlib/Data/Set/Card.lean

tactic: refine ⟨nonempty_of_ncard_ne_zero, ?_⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
y : β
hs : autoParam s.Finite _auto✝
⊢ {x | x ∈ s ∧ f x = y}.ncard ≠ 0 ↔ y ∈ f '' s
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
y : β
hs : autoParam s.Finite _auto✝
⊢ y ∈ f '' s → {x | x ∈ s ∧ f x = y}.ncard ≠ 0

tactic: rintro ⟨z, hz, rfl⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
y : β
hs : autoParam s.Finite _auto✝
⊢ y ∈ f '' s → {x | x ∈ s ∧ f x = y}.ncard ≠ 0
state_after: case intro.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
z : α
hz : z ∈ s
⊢ {x | x ∈ s ∧ f x = f z}.ncard ≠ 0

tactic: exact @ncard_ne_zero_of_mem _ ({ x ∈ s | f x = f z }) z (mem_sep hz rfl)
  (hs.subset (sep_subset _ _))
state_before: case intro.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
z : α
hz : z ∈ s
⊢ {x | x ∈ s ∧ f x = f z}.ncard ≠ 0
state_after: no goals
Theorem: BoundedContinuousFunction.self_eq_nnrealPart_sub_nnrealPart_neg
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: funext x
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
⊢ ⇑f = toReal ∘ ⇑f.nnrealPart - toReal ∘ ⇑(-f).nnrealPart
state_after: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ f x = (toReal ∘ ⇑f.nnrealPart - toReal ∘ ⇑(-f).nnrealPart) x

tactic: dsimp
state_before: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ f x = (toReal ∘ ⇑f.nnrealPart - toReal ∘ ⇑(-f).nnrealPart) x
state_after: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ f x = max (f x) 0 - max (-f x) 0

tactic: simp only [max_zero_sub_max_neg_zero_eq_self]
state_before: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ
x : α
⊢ f x = max (f x) 0 - max (-f x) 0
state_after: no goals
Theorem: Matroid.comap_indep_iff_of_injOn
File: Mathlib/Data/Matroid/Map.lean

tactic: rw [comap_indep_iff, and_iff_left_iff_imp]
state_before: α : Type u_1
β : Type u_2
f : α → β
E I s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f (f ⁻¹' N.E)
⊢ (N.comap f).Indep I ↔ N.Indep (f '' I)
state_after: α : Type u_1
β : Type u_2
f : α → β
E I s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f (f ⁻¹' N.E)
⊢ N.Indep (f '' I) → InjOn f I

tactic: refine fun hi ↦ hf.mono <| subset_trans ?_ (preimage_mono hi.subset_ground)
state_before: α : Type u_1
β : Type u_2
f : α → β
E I s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f (f ⁻¹' N.E)
⊢ N.Indep (f '' I) → InjOn f I
state_after: α : Type u_1
β : Type u_2
f : α → β
E I s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f (f ⁻¹' N.E)
hi : N.Indep (f '' I)
⊢ I ⊆ f ⁻¹' (f '' I)

tactic: apply subset_preimage_image
state_before: α : Type u_1
β : Type u_2
f : α → β
E I s : Set α
M : Matroid α
N : Matroid β
hf : InjOn f (f ⁻¹' N.E)
hi : N.Indep (f '' I)
⊢ I ⊆ f ⁻¹' (f '' I)
state_after: no goals
Theorem: cmp_compares
File: Mathlib/Order/Compare.lean

tactic: obtain h | h | h := lt_trichotomy a b <;> simp [cmp, cmpUsing, h, h.not_lt]
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
⊢ (cmp a b).Compares a b
state_after: no goals
Theorem: List.diff_cons_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: apply Eq.symm
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
l₁ l₂ : List α
a : α
⊢ l₁.diff (a :: l₂) = (l₁.diff l₂).erase a
state_after: case h
α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
l₁ l₂ : List α
a : α
⊢ (l₁.diff l₂).erase a = l₁.diff (a :: l₂)

tactic: induction l₂ generalizing l₁ <;> simp [erase_comm, *]
state_before: case h
α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
l₁ l₂ : List α
a : α
⊢ (l₁.diff l₂).erase a = l₁.diff (a :: l₂)
state_after: no goals
Theorem: FractionalIdeal.map_mul
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

tactic: simp only [mul_def]
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type u_4
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I J : FractionalIdeal S P
g : P →ₐ[R] P'
⊢ map g (I * J) = map g I * map g J
state_after: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type u_4
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I J : FractionalIdeal S P
g : P →ₐ[R] P'
⊢ map g ⟨↑I * ↑J, ⋯⟩ = ⟨↑(map g I) * ↑(map g J), ⋯⟩

tactic: exact coeToSubmodule_injective (Submodule.map_mul _ _ _)
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type u_4
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I J : FractionalIdeal S P
g : P →ₐ[R] P'
⊢ map g ⟨↑I * ↑J, ⋯⟩ = ⟨↑(map g I) * ↑(map g J), ⋯⟩
state_after: no goals