1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AlternatingMap.compLinearMap_injective
File: Mathlib/LinearAlgebra/Alternating/Basic.lean

tactic: simpa [Function.surjInv_eq hf] using ext_iff.mp h (Function.surjInv hf ∘ x)
state_before: R : Type u_1
inst✝¹⁴ : Semiring R
M : Type u_2
inst✝¹³ : AddCommMonoid M
inst✝¹² : Module R M
N : Type u_3
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : Module R N
P : Type u_4
inst✝⁹ : AddCommMonoid P
inst✝⁸ : Module R P
M' : Type u_5
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
N' : Type u_6
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
M₃ : Type u_11
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
f : M₂ →ₗ[R] M
hf : Function.Surjective ⇑f
g₁ g₂ : M [⋀^ι]→ₗ[R] N
h : (fun g => g.compLinearMap f) g₁ = (fun g => g.compLinearMap f) g₂
x : ι → M
⊢ g₁ x = g₂ x
state_after: no goals
Theorem: Metric.mem_cthickening_of_dist_le
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: apply mem_cthickening_of_edist_le x y δ E h
state_before: ι : Sort u_1
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : α
δ : ℝ
E : Set α
h : y ∈ E
h' : dist x y ≤ δ
⊢ x ∈ cthickening δ E
state_after: ι : Sort u_1
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : α
δ : ℝ
E : Set α
h : y ∈ E
h' : dist x y ≤ δ
⊢ edist x y ≤ ENNReal.ofReal δ

tactic: rw [edist_dist]
state_before: ι : Sort u_1
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : α
δ : ℝ
E : Set α
h : y ∈ E
h' : dist x y ≤ δ
⊢ edist x y ≤ ENNReal.ofReal δ
state_after: ι : Sort u_1
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : α
δ : ℝ
E : Set α
h : y ∈ E
h' : dist x y ≤ δ
⊢ ENNReal.ofReal (dist x y) ≤ ENNReal.ofReal δ

tactic: exact ENNReal.ofReal_le_ofReal h'
state_before: ι : Sort u_1
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : α
δ : ℝ
E : Set α
h : y ∈ E
h' : dist x y ≤ δ
⊢ ENNReal.ofReal (dist x y) ≤ ENNReal.ofReal δ
state_after: no goals
Theorem: Nat.Primrec.casesOn1
File: Mathlib/Computability/Primrec.lean

tactic: simp
state_before: f : ℕ → ℕ
m : ℕ
hf : Nat.Primrec f
⊢ ∀ (n : ℕ), Nat.rec m (fun y IH => f (unpair (Nat.pair y IH)).1) n = Nat.casesOn n m f
state_after: no goals
Theorem: Int.cast_mul_eq_zsmul_cast
File: Mathlib/Algebra/Order/Ring/Int.lean

tactic: simp
state_before: α : Type u_1
inst✝ : AddCommGroupWithOne α
m : ℤ
⊢ ∀ (n : ℤ), ↑(0 * n) = 0 • ↑n
state_after: no goals

tactic: simp [add_mul, add_zsmul, ih]
state_before: α : Type u_1
inst✝ : AddCommGroupWithOne α
m : ℤ
x✝ : ℕ
ih : ∀ (n : ℤ), ↑(↑x✝ * n) = ↑x✝ • ↑n
⊢ ∀ (n : ℤ), ↑((↑x✝ + 1) * n) = (↑x✝ + 1) • ↑n
state_after: no goals

tactic: simp only [sub_mul, one_mul, cast_sub, ih, sub_zsmul, one_zsmul, ← sub_eq_add_neg, forall_const]
state_before: α : Type u_1
inst✝ : AddCommGroupWithOne α
m : ℤ
x✝ : ℕ
ih : ∀ (n : ℤ), ↑(-↑x✝ * n) = -↑x✝ • ↑n
⊢ ∀ (n : ℤ), ↑((-↑x✝ - 1) * n) = (-↑x✝ - 1) • ↑n
state_after: no goals
Theorem: Nat.range_mul_add
File: Mathlib/Data/ZMod/Basic.lean

tactic: ext n
state_before: m k : ℕ
⊢ (Set.range fun n => m * n + k) = {n | ↑n = ↑k ∧ k ≤ n}
state_after: case h
m k n : ℕ
⊢ (n ∈ Set.range fun n => m * n + k) ↔ n ∈ {n | ↑n = ↑k ∧ k ≤ n}

tactic: simp only [Set.mem_range, Set.mem_setOf_eq]
state_before: case h
m k n : ℕ
⊢ (n ∈ Set.range fun n => m * n + k) ↔ n ∈ {n | ↑n = ↑k ∧ k ≤ n}
state_after: case h
m k n : ℕ
⊢ (∃ y, m * y + k = n) ↔ ↑n = ↑k ∧ k ≤ n

tactic: conv => enter [1, 1, y]; rw [add_comm, eq_comm]
state_before: case h
m k n : ℕ
⊢ (∃ y, m * y + k = n) ↔ ↑n = ↑k ∧ k ≤ n
state_after: case h
m k n : ℕ
⊢ (∃ y, n = k + m * y) ↔ ↑n = ↑k ∧ k ≤ n

tactic: refine ⟨fun ⟨a, ha⟩ ↦ ⟨?_, le_iff_exists_add.mpr ⟨_, ha⟩⟩, fun ⟨H₁, H₂⟩ ↦ ?_⟩
state_before: case h
m k n : ℕ
⊢ (∃ y, n = k + m * y) ↔ ↑n = ↑k ∧ k ≤ n
state_after: case h.refine_1
m k n : ℕ
x✝ : ∃ y, n = k + m * y
a : ℕ
ha : n = k + m * a
⊢ ↑n = ↑k

case h.refine_2
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₁ : ↑n = ↑k
H₂ : k ≤ n
⊢ ∃ y, n = k + m * y

tactic: simpa using congr_arg ((↑) : ℕ → ZMod m) ha
state_before: case h.refine_1
m k n : ℕ
x✝ : ∃ y, n = k + m * y
a : ℕ
ha : n = k + m * a
⊢ ↑n = ↑k
state_after: no goals

tactic: obtain ⟨a, ha⟩ := le_iff_exists_add.mp H₂
state_before: case h.refine_2
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₁ : ↑n = ↑k
H₂ : k ≤ n
⊢ ∃ y, n = k + m * y
state_after: case h.refine_2.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₁ : ↑n = ↑k
H₂ : k ≤ n
a : ℕ
ha : n = k + a
⊢ ∃ y, n = k + m * y

tactic: simp only [ha, Nat.cast_add, add_right_eq_self, ZMod.natCast_zmod_eq_zero_iff_dvd] at H₁
state_before: case h.refine_2.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₁ : ↑n = ↑k
H₂ : k ≤ n
a : ℕ
ha : n = k + a
⊢ ∃ y, n = k + m * y
state_after: case h.refine_2.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₂ : k ≤ n
a : ℕ
ha : n = k + a
H₁ : m ∣ a
⊢ ∃ y, n = k + m * y

tactic: obtain ⟨b, rfl⟩ := H₁
state_before: case h.refine_2.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₂ : k ≤ n
a : ℕ
ha : n = k + a
H₁ : m ∣ a
⊢ ∃ y, n = k + m * y
state_after: case h.refine_2.intro.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₂ : k ≤ n
b : ℕ
ha : n = k + m * b
⊢ ∃ y, n = k + m * y

tactic: exact ⟨b, ha⟩
state_before: case h.refine_2.intro.intro
m k n : ℕ
x✝ : ↑n = ↑k ∧ k ≤ n
H₂ : k ≤ n
b : ℕ
ha : n = k + m * b
⊢ ∃ y, n = k + m * y
state_after: no goals
Theorem: CategoryTheory.Limits.limitObjIsoLimitCompEvaluation_inv_π_app
File: Mathlib/CategoryTheory/Limits/FunctorCategory.lean

tactic: dsimp [limitObjIsoLimitCompEvaluation]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasLimitsOfShape J C
F : J ⥤ K ⥤ C
j : J
k : K
⊢ (limitObjIsoLimitCompEvaluation F k).inv ≫ (limit.π F j).app k = limit.π (F ⋙ (evaluation K C).obj k) j
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasLimitsOfShape J C
F : J ⥤ K ⥤ C
j : J
k : K
⊢ (preservesLimitIso ((evaluation K C).obj k) F).inv ≫ (limit.π F j).app k = limit.π (F ⋙ (evaluation K C).obj k) j

tactic: rw [Iso.inv_comp_eq]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasLimitsOfShape J C
F : J ⥤ K ⥤ C
j : J
k : K
⊢ (preservesLimitIso ((evaluation K C).obj k) F).inv ≫ (limit.π F j).app k = limit.π (F ⋙ (evaluation K C).obj k) j
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasLimitsOfShape J C
F : J ⥤ K ⥤ C
j : J
k : K
⊢ (limit.π F j).app k = (preservesLimitIso ((evaluation K C).obj k) F).hom ≫ limit.π (F ⋙ (evaluation K C).obj k) j

tactic: simp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasLimitsOfShape J C
F : J ⥤ K ⥤ C
j : J
k : K
⊢ (limit.π F j).app k = (preservesLimitIso ((evaluation K C).obj k) F).hom ≫ limit.π (F ⋙ (evaluation K C).obj k) j
state_after: no goals
Theorem: RCLike.re_eq_add_conj
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [add_conj, mul_div_cancel_left₀ (re z : K) two_ne_zero]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z : K
⊢ ↑(re z) = (z + (starRingEnd K) z) / 2
state_after: no goals
Theorem: InnerProductSpace.continuousLinearMapOfBilin_apply
File: Mathlib/Analysis/InnerProductSpace/Dual.lean

tactic: rw [continuousLinearMapOfBilin, coe_comp', ContinuousLinearEquiv.coe_coe,
  LinearIsometryEquiv.coe_toContinuousLinearEquiv, Function.comp_apply, toDual_symm_apply]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
B : E →L⋆[𝕜] E →L[𝕜] 𝕜
v w : E
⊢ ⟪B♯ v, w⟫_𝕜 = (B v) w
state_after: no goals
Theorem: Finsupp.single_swap
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical simp only [single_apply, eq_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a a' : α
b✝ : M
a₁ a₂ : α
b : M
⊢ (single a₁ b) a₂ = (single a₂ b) a₁
state_after: no goals

tactic: simp only [single_apply, eq_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a a' : α
b✝ : M
a₁ a₂ : α
b : M
⊢ (single a₁ b) a₂ = (single a₂ b) a₁
state_after: no goals
Theorem: irrational_mul_rat_iff
File: Mathlib/Data/Real/Irrational.lean

tactic: rw [mul_comm, irrational_rat_mul_iff]
state_before: q : ℚ
m : ℤ
n : ℕ
x : ℝ
⊢ Irrational (x * ↑q) ↔ q ≠ 0 ∧ Irrational x
state_after: no goals
Theorem: IsBoundedLinearMap.neg
File: Mathlib/Analysis/NormedSpace/BoundedLinearMaps.lean

tactic: rw [show (fun e => -f e) = fun e => (-1 : 𝕜) • f e by funext; simp]
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
⊢ IsBoundedLinearMap 𝕜 fun e => -f e
state_after: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
⊢ IsBoundedLinearMap 𝕜 fun e => -1 • f e

tactic: exact smul (-1) hf
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
⊢ IsBoundedLinearMap 𝕜 fun e => -1 • f e
state_after: no goals

tactic: funext
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
⊢ (fun e => -f e) = fun e => -1 • f e
state_after: case h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
x✝ : E
⊢ -f x✝ = -1 • f x✝

tactic: simp
state_before: case h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
hf : IsBoundedLinearMap 𝕜 f
x✝ : E
⊢ -f x✝ = -1 • f x✝
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Hom.map_appLE
File: Mathlib/AlgebraicGeometry/Scheme.lean

tactic: rw [Hom.appLE, f.naturality_assoc, ← Functor.map_comp]
state_before: X Y : Scheme
f : X.Hom Y
U U' : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
i : { unop := U' } ⟶ { unop := U }
⊢ Y.presheaf.map i ≫ f.appLE U V e = f.appLE U' V ⋯
state_after: X Y : Scheme
f : X.Hom Y
U U' : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
i : { unop := U' } ⟶ { unop := U }
⊢ f.app U' ≫ X.presheaf.map (((Opens.map f.val.base).map i.unop).op ≫ (homOfLE e).op) = f.appLE U' V ⋯

tactic: rfl
state_before: X Y : Scheme
f : X.Hom Y
U U' : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
i : { unop := U' } ⟶ { unop := U }
⊢ f.app U' ≫ X.presheaf.map (((Opens.map f.val.base).map i.unop).op ≫ (homOfLE e).op) = f.appLE U' V ⋯
state_after: no goals
Theorem: List.foldr_permutationsAux2
File: Mathlib/Data/List/Permutation.lean

tactic: induction' L with l L ih
state_before: α : Type u_1
β : Type u_2
t : α
ts : List α
r L : List (List α)
⊢ foldr (fun y r => (permutationsAux2 t ts r y id).2) r L = (L.bind fun y => (permutationsAux2 t ts [] y id).2) ++ r
state_after: case nil
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List (List α)
⊢ foldr (fun y r => (permutationsAux2 t ts r y id).2) r [] = ([].bind fun y => (permutationsAux2 t ts [] y id).2) ++ r

case cons
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List (List α)
l : List α
L : List (List α)
ih : foldr (fun y r => (permutationsAux2 t ts r y id).2) r L = (L.bind fun y => (permutationsAux2 t ts [] y id).2) ++ r
⊢ foldr (fun y r => (permutationsAux2 t ts r y id).2) r (l :: L) =
    ((l :: L).bind fun y => (permutationsAux2 t ts [] y id).2) ++ r

tactic: rfl
state_before: case nil
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List (List α)
⊢ foldr (fun y r => (permutationsAux2 t ts r y id).2) r [] = ([].bind fun y => (permutationsAux2 t ts [] y id).2) ++ r
state_after: no goals

tactic: simp_rw [foldr_cons, ih, bind_cons, append_assoc, permutationsAux2_append]
state_before: case cons
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List (List α)
l : List α
L : List (List α)
ih : foldr (fun y r => (permutationsAux2 t ts r y id).2) r L = (L.bind fun y => (permutationsAux2 t ts [] y id).2) ++ r
⊢ foldr (fun y r => (permutationsAux2 t ts r y id).2) r (l :: L) =
    ((l :: L).bind fun y => (permutationsAux2 t ts [] y id).2) ++ r
state_after: no goals
Theorem: Subgroup.index_map
File: Mathlib/GroupTheory/Index.lean

tactic: rw [← comap_map_eq, index_comap, relindex_mul_index (H.map_le_range f)]
state_before: G : Type u_1
inst✝¹ : Group G
H K L : Subgroup G
G' : Type u_2
inst✝ : Group G'
f : G →* G'
⊢ (map f H).index = (H ⊔ f.ker).index * f.range.index
state_after: no goals
Theorem: WithBot.le_unbot_iff
File: Mathlib/Order/WithBot.lean

tactic: match b, h with
| some _, _ => simp only [unbot_coe, coe_le_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b✝ : α
inst✝ : LE α
a : α
b : WithBot α
h : b ≠ ⊥
⊢ a ≤ b.unbot h ↔ ↑a ≤ b
state_after: no goals

tactic: simp only [unbot_coe, coe_le_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b✝ : α
inst✝ : LE α
a : α
b : WithBot α
h : b ≠ ⊥
val✝ : α
x✝ : ↑val✝ ≠ ⊥
⊢ a ≤ (↑val✝).unbot x✝ ↔ ↑a ≤ ↑val✝
state_after: no goals
Theorem: quasilinearOn_iff_mem_uIcc
File: Mathlib/Analysis/Convex/Quasiconvex.lean

tactic: rw [QuasilinearOn, quasiconvexOn_iff_le_max, quasiconcaveOn_iff_min_le, and_and_and_comm,
  and_self_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : LinearOrder β
inst✝ : SMul 𝕜 E
s : Set E
f g : E → β
⊢ QuasilinearOn 𝕜 s f ↔
    Convex 𝕜 s ∧
      ∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ∈ uIcc (f x) (f y)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : LinearOrder β
inst✝ : SMul 𝕜 E
s : Set E
f g : E → β
⊢ (Convex 𝕜 s ∧
      (∀ ⦃x : E⦄,
          x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ≤ max (f x) (f y)) ∧
        ∀ ⦃x : E⦄,
          x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → min (f x) (f y) ≤ f (a • x + b • y)) ↔
    Convex 𝕜 s ∧
      ∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ∈ uIcc (f x) (f y)

tactic: apply and_congr_right'
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : LinearOrder β
inst✝ : SMul 𝕜 E
s : Set E
f g : E → β
⊢ (Convex 𝕜 s ∧
      (∀ ⦃x : E⦄,
          x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ≤ max (f x) (f y)) ∧
        ∀ ⦃x : E⦄,
          x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → min (f x) (f y) ≤ f (a • x + b • y)) ↔
    Convex 𝕜 s ∧
      ∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ∈ uIcc (f x) (f y)
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : LinearOrder β
inst✝ : SMul 𝕜 E
s : Set E
f g : E → β
⊢ ((∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ≤ max (f x) (f y)) ∧
      ∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → min (f x) (f y) ≤ f (a • x + b • y)) ↔
    ∀ ⦃x : E⦄, x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ∈ uIcc (f x) (f y)

tactic: simp_rw [← forall_and, ← Icc_min_max, mem_Icc, and_comm]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : LinearOrder β
inst✝ : SMul 𝕜 E
s : Set E
f g : E → β
⊢ ((∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ≤ max (f x) (f y)) ∧
      ∀ ⦃x : E⦄,
        x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → min (f x) (f y) ≤ f (a • x + b • y)) ↔
    ∀ ⦃x : E⦄, x ∈ s → ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → f (a • x + b • y) ∈ uIcc (f x) (f y)
state_after: no goals
Theorem: QuotientGroup.preimage_image_mk
File: Mathlib/GroupTheory/Coset.lean

tactic: ext x
state_before: α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
⊢ mk ⁻¹' (mk '' s) = ⋃ x, (fun x_1 => x_1 * ↑x) ⁻¹' s
state_after: case h
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
⊢ x ∈ mk ⁻¹' (mk '' s) ↔ x ∈ ⋃ x, (fun x_1 => x_1 * ↑x) ⁻¹' s

tactic: simp only [QuotientGroup.eq, SetLike.exists, exists_prop, Set.mem_preimage, Set.mem_iUnion,
  Set.mem_image, ← eq_inv_mul_iff_mul_eq]
state_before: case h
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
⊢ x ∈ mk ⁻¹' (mk '' s) ↔ x ∈ ⋃ x, (fun x_1 => x_1 * ↑x) ⁻¹' s
state_after: case h
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
⊢ (∃ x_1 ∈ s, x_1⁻¹ * x ∈ N) ↔ ∃ x_1 ∈ N, x * x_1 ∈ s

tactic: exact
  ⟨fun ⟨y, hs, hN⟩ => ⟨_, N.inv_mem hN, by simpa using hs⟩, fun ⟨z, hz, hxz⟩ =>
    ⟨x * z, hxz, by simpa using hz⟩⟩
state_before: case h
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
⊢ (∃ x_1 ∈ s, x_1⁻¹ * x ∈ N) ↔ ∃ x_1 ∈ N, x * x_1 ∈ s
state_after: no goals

tactic: simpa using hs
state_before: α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
x✝ : ∃ x_1 ∈ s, x_1⁻¹ * x ∈ N
y : α
hs : y ∈ s
hN : y⁻¹ * x ∈ N
⊢ x * (y⁻¹ * x)⁻¹ ∈ s
state_after: no goals

tactic: simpa using hz
state_before: α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
a b : α
N : Subgroup α
s : Set α
x : α
x✝ : ∃ x_1 ∈ N, x * x_1 ∈ s
z : α
hz : z ∈ N
hxz : x * z ∈ s
⊢ (x * z)⁻¹ * x ∈ N
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.mk_ψ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: simp only [ψ, normEDS, Ψ, preΨ, map_mul, map_pow, map_preNormEDS, ← mk_ψ₂_sq, ← pow_mul]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
n : ℤ
⊢ (mk W) (W.ψ n) = (mk W) (W.Ψ n)
state_after: no goals
Theorem: ne_compl_self
File: Mathlib/Order/Heyting/Basic.lean

tactic: intro h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : HeytingAlgebra α
a b c : α
inst✝ : Nontrivial α
⊢ a ≠ aᶜ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : HeytingAlgebra α
a b c : α
inst✝ : Nontrivial α
h : a = aᶜ
⊢ False

tactic: cases le_compl_self.1 (le_of_eq h)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : HeytingAlgebra α
a b c : α
inst✝ : Nontrivial α
h : a = aᶜ
⊢ False
state_after: case refl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : HeytingAlgebra α
b c : α
inst✝ : Nontrivial α
h : ⊥ = ⊥ᶜ
⊢ False

tactic: simp at h
state_before: case refl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : HeytingAlgebra α
b c : α
inst✝ : Nontrivial α
h : ⊥ = ⊥ᶜ
⊢ False
state_after: no goals
Theorem: Zsqrtd.sqLe_add_mixed
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simpa [mul_comm, mul_left_comm] using mul_le_mul xy zw (Nat.zero_le _) (Nat.zero_le _)
state_before: d✝ : ℤ
c d x y z w : ℕ
xy : SqLe x c y d
zw : SqLe z c w d
⊢ c * (x * z) * (c * (x * z)) ≤ d * (y * w) * (d * (y * w))
state_after: no goals
Theorem: Real.log_two_lt_d9
File: Mathlib/Data/Complex/ExponentialBounds.lean

tactic: norm_num
state_before: ⊢ 1 / 10 ^ 10 + 287209 / 414355 < 0.6931471808
state_after: no goals
Theorem: Matroid.uniqueBaseOn_inter_basis
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rw [uniqueBaseOn_basis_iff hI hX]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
hI : I ⊆ E
hX : X ⊆ E
⊢ (uniqueBaseOn I E).Basis (X ∩ I) X
state_after: no goals
Theorem: MeasureTheory.ExistsSeqTendstoAe.seqTendstoAeSeq_spec
File: Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

tactic: cases n
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
n k : ℕ
hn : seqTendstoAeSeq hfg n ≤ k
⊢ μ {x | 2⁻¹ ^ n ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ n
state_after: case zero
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k : ℕ
hn : seqTendstoAeSeq hfg 0 ≤ k
⊢ μ {x | 2⁻¹ ^ 0 ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ 0

case succ
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k n✝ : ℕ
hn : seqTendstoAeSeq hfg (n✝ + 1) ≤ k
⊢ μ {x | 2⁻¹ ^ (n✝ + 1) ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ (n✝ + 1)

tactic: exact Classical.choose_spec (exists_nat_measure_lt_two_inv hfg 0) k hn
state_before: case zero
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k : ℕ
hn : seqTendstoAeSeq hfg 0 ≤ k
⊢ μ {x | 2⁻¹ ^ 0 ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ 0
state_after: no goals

tactic: exact Classical.choose_spec
  (exists_nat_measure_lt_two_inv hfg _) _ (le_trans (le_max_left _ _) hn)
state_before: case succ
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k n✝ : ℕ
hn : seqTendstoAeSeq hfg (n✝ + 1) ≤ k
⊢ μ {x | 2⁻¹ ^ (n✝ + 1) ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ (n✝ + 1)
state_after: no goals
Theorem: SymplecticGroup.mem_iff
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: simp [symplecticGroup]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
⊢ A ∈ symplecticGroup l R ↔ A * J l R * Aᵀ = J l R
state_after: no goals
Theorem: Polynomial.aroots_X
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [aroots_def, map_X, roots_X]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
p q : R[X]
inst✝³ : CommRing T
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
⊢ X.aroots S = {0}
state_after: no goals