1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Equiv.Perm.support_eq_empty_iff
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp_rw [Finset.ext_iff, mem_support, Finset.not_mem_empty, iff_false_iff, not_not,
  Equiv.Perm.ext_iff, one_apply]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g σ : Perm α
⊢ σ.support = ∅ ↔ σ = 1
state_after: no goals
Theorem: IsSubgroup.mul_mem_cancel_right
File: Mathlib/Deprecated/Subgroup.lean

tactic: simpa using hs.mul_mem hba (hs.inv_mem h)
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
s : Set G
hs : IsSubgroup s
h : a ∈ s
hba : b * a ∈ s
⊢ b ∈ s
state_after: no goals
Theorem: NNRat.mul_def
File: Mathlib/Data/NNRat/Defs.lean

tactic: ext
state_before: p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ q * r = divNat (q.num * r.num) (q.den * r.den)
state_after: case a
p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ ↑(q * r) = ↑(divNat (q.num * r.num) (q.den * r.den))

tactic: simp [Rat.mul_eq_mkRat, Rat.mkRat_eq_divInt, num_coe, den_coe]
state_before: case a
p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ ↑(q * r) = ↑(divNat (q.num * r.num) (q.den * r.den))
state_after: no goals
Theorem: fourier_one
File: Mathlib/Analysis/Fourier/AddCircle.lean

tactic: rw [fourier_apply, one_zsmul]
state_before: T : ℝ
x : AddCircle T
⊢ (fourier 1) x = ↑x.toCircle
state_after: no goals
Theorem: Subgroup.op_closure
File: Mathlib/Algebra/Group/Subgroup/MulOpposite.lean

tactic: simp_rw [closure, op_sInf, Set.preimage_setOf_eq, Subgroup.unop_coe]
state_before: ι : Sort u_1
G : Type u_2
inst✝ : Group G
s : Set G
⊢ (closure s).op = closure (MulOpposite.unop ⁻¹' s)
state_after: ι : Sort u_1
G : Type u_2
inst✝ : Group G
s : Set G
⊢ sInf {a | s ⊆ MulOpposite.op ⁻¹' ↑a} = sInf {K | MulOpposite.unop ⁻¹' s ⊆ ↑K}

tactic: congr with a
state_before: ι : Sort u_1
G : Type u_2
inst✝ : Group G
s : Set G
⊢ sInf {a | s ⊆ MulOpposite.op ⁻¹' ↑a} = sInf {K | MulOpposite.unop ⁻¹' s ⊆ ↑K}
state_after: case e_a.h
ι : Sort u_1
G : Type u_2
inst✝ : Group G
s : Set G
a : Subgroup Gᵐᵒᵖ
⊢ a ∈ {a | s ⊆ MulOpposite.op ⁻¹' ↑a} ↔ a ∈ {K | MulOpposite.unop ⁻¹' s ⊆ ↑K}

tactic: exact MulOpposite.unop_surjective.forall
state_before: case e_a.h
ι : Sort u_1
G : Type u_2
inst✝ : Group G
s : Set G
a : Subgroup Gᵐᵒᵖ
⊢ a ∈ {a | s ⊆ MulOpposite.op ⁻¹' ↑a} ↔ a ∈ {K | MulOpposite.unop ⁻¹' s ⊆ ↑K}
state_after: no goals
Theorem: Fin.rev_predAbove
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [predAbove_rev_left, rev_rev]
state_before: n✝ m n : ℕ
p : Fin n
i : Fin (n + 1)
⊢ (p.predAbove i).rev = p.rev.predAbove i.rev
state_after: no goals
Theorem: mabs_inf_div_inf_le_mabs
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: apply le_of_mul_le_of_one_le_right _ (one_le_mabs _)
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b c : α
⊢ mabs ((a ⊓ c) / (b ⊓ c)) ≤ mabs (a / b)
state_after: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b c : α
⊢ mabs ?m.33176 * mabs ((a ⊓ c) / (b ⊓ c)) ≤ mabs (a / b)

tactic: rw [mabs_div_sup_mul_mabs_div_inf]
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b c : α
⊢ mabs ?m.33176 * mabs ((a ⊓ c) / (b ⊓ c)) ≤ mabs (a / b)
state_after: no goals
Theorem: Set.Ici_inter_Ici
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
inst✝ : SemilatticeSup α
a b : α
⊢ Ici a ∩ Ici b = Ici (a ⊔ b)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : SemilatticeSup α
a b x : α
⊢ x ∈ Ici a ∩ Ici b ↔ x ∈ Ici (a ⊔ b)

tactic: simp [Ici]
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : SemilatticeSup α
a b x : α
⊢ x ∈ Ici a ∩ Ici b ↔ x ∈ Ici (a ⊔ b)
state_after: no goals
Theorem: norm_jacobiTheta₂_term_fderiv_ge
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/TwoVariable.lean

tactic: have : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖ := by
  refine (ContinuousLinearMap.le_opNorm _ _).trans ?_
  simp_rw [Prod.norm_def, norm_one, norm_zero, max_eq_right zero_le_one, mul_one, le_refl]
state_before: n : ℤ
z τ : ℂ
⊢ π * ↑|n| ^ 2 * ‖jacobiTheta₂_term n z τ‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
state_after: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 * ‖jacobiTheta₂_term n z τ‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖

tactic: refine le_trans ?_ this
state_before: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 * ‖jacobiTheta₂_term n z τ‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
state_after: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 * ‖jacobiTheta₂_term n z τ‖ ≤ ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖

tactic: simp_rw [jacobiTheta₂_term_fderiv, jacobiTheta₂_term, ContinuousLinearMap.coe_smul',
  Pi.smul_apply, ContinuousLinearMap.add_apply, ContinuousLinearMap.coe_smul',
  ContinuousLinearMap.coe_fst', ContinuousLinearMap.coe_snd', Pi.smul_apply, smul_zero, zero_add,
  smul_eq_mul, mul_one, mul_comm _ ‖cexp _‖, norm_mul]
state_before: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 * ‖jacobiTheta₂_term n z τ‖ ≤ ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖
state_after: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ ‖cexp (2 * ↑π * I * ↑n * z + ↑π * I * ↑n ^ 2 * τ)‖ * (π * ↑|n| ^ 2) ≤
    ‖cexp (2 * ↑π * I * ↑n * z + ↑π * I * ↑n ^ 2 * τ)‖ * (‖↑π‖ * ‖I‖ * ‖↑n ^ 2‖)

tactic: refine mul_le_mul_of_nonneg_left (le_of_eq ?_) (norm_nonneg _)
state_before: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ ‖cexp (2 * ↑π * I * ↑n * z + ↑π * I * ↑n ^ 2 * τ)‖ * (π * ↑|n| ^ 2) ≤
    ‖cexp (2 * ↑π * I * ↑n * z + ↑π * I * ↑n ^ 2 * τ)‖ * (‖↑π‖ * ‖I‖ * ‖↑n ^ 2‖)
state_after: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 = ‖↑π‖ * ‖I‖ * ‖↑n ^ 2‖

tactic: simp_rw [norm_real, norm_of_nonneg pi_pos.le, norm_I, mul_one,
  Int.cast_abs, ← abs_intCast, Complex.norm_eq_abs, Complex.abs_pow]
state_before: n : ℤ
z τ : ℂ
this : ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
⊢ π * ↑|n| ^ 2 = ‖↑π‖ * ‖I‖ * ‖↑n ^ 2‖
state_after: no goals

tactic: refine (ContinuousLinearMap.le_opNorm _ _).trans ?_
state_before: n : ℤ
z τ : ℂ
⊢ ‖(jacobiTheta₂_term_fderiv n z τ) (0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
state_after: n : ℤ
z τ : ℂ
⊢ ‖jacobiTheta₂_term_fderiv n z τ‖ * ‖(0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖

tactic: simp_rw [Prod.norm_def, norm_one, norm_zero, max_eq_right zero_le_one, mul_one, le_refl]
state_before: n : ℤ
z τ : ℂ
⊢ ‖jacobiTheta₂_term_fderiv n z τ‖ * ‖(0, 1)‖ ≤ ‖jacobiTheta₂_term_fderiv n z τ‖
state_after: no goals
Theorem: List.ext_get_iff
File: Mathlib/Data/List/Basic.lean

tactic: constructor
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
⊢ l₁ = l₂ ↔ l₁.length = l₂.length ∧ ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩
state_after: case mp
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
⊢ l₁ = l₂ → l₁.length = l₂.length ∧ ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩

case mpr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
⊢ (l₁.length = l₂.length ∧ ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩) →
    l₁ = l₂

tactic: rintro rfl
state_before: case mp
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
⊢ l₁ = l₂ → l₁.length = l₂.length ∧ ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩
state_after: case mp
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂ l₁ : List α
⊢ l₁.length = l₁.length ∧ ∀ (n : ℕ) (h₁ h₂ : n < l₁.length), l₁.get ⟨n, h₁⟩ = l₁.get ⟨n, h₂⟩

tactic: exact ⟨rfl, fun _ _ _ ↦ rfl⟩
state_before: case mp
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂ l₁ : List α
⊢ l₁.length = l₁.length ∧ ∀ (n : ℕ) (h₁ h₂ : n < l₁.length), l₁.get ⟨n, h₁⟩ = l₁.get ⟨n, h₂⟩
state_after: no goals

tactic: intro ⟨h₁, h₂⟩
state_before: case mpr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
⊢ (l₁.length = l₂.length ∧ ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩) →
    l₁ = l₂
state_after: case mpr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h₁ : l₁.length = l₂.length
h₂ : ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩
⊢ l₁ = l₂

tactic: exact ext_get h₁ h₂
state_before: case mpr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h₁ : l₁.length = l₂.length
h₂ : ∀ (n : ℕ) (h₁ : n < l₁.length) (h₂ : n < l₂.length), l₁.get ⟨n, h₁⟩ = l₂.get ⟨n, h₂⟩
⊢ l₁ = l₂
state_after: no goals
Theorem: NormedSpace.norm_expSeries_div_summable_of_mem_ball
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: change Summable (norm ∘ _)
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable fun n => ‖x ^ n / ↑n !‖
state_after: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => x ^ n / ↑n !)

tactic: rw [← expSeries_apply_eq_div' (𝕂 := 𝕂) x]
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => x ^ n / ↑n !)
state_after: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => (expSeries 𝕂 𝔸 n) fun x_1 => x)

tactic: exact norm_expSeries_summable_of_mem_ball x hx
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => (expSeries 𝕂 𝔸 n) fun x_1 => x)
state_after: no goals
Theorem: CategoryTheory.Limits.biproduct.π_comp_eqToHom
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: simp [w]
state_before: J : Type w
K : Type u_1
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
f : J → C
inst✝ : HasBiproduct f
j j' : J
w : j = j'
⊢ f j = f j'
state_after: no goals

tactic: cases w
state_before: J : Type w
K : Type u_1
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
f : J → C
inst✝ : HasBiproduct f
j j' : J
w : j = j'
⊢ π f j ≫ eqToHom ⋯ = π f j'
state_after: case refl
J : Type w
K : Type u_1
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
f : J → C
inst✝ : HasBiproduct f
j : J
⊢ π f j ≫ eqToHom ⋯ = π f j

tactic: simp
state_before: case refl
J : Type w
K : Type u_1
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
f : J → C
inst✝ : HasBiproduct f
j : J
⊢ π f j ≫ eqToHom ⋯ = π f j
state_after: no goals
Theorem: Finset.card_mul_mul_le_card_mul_mul_card_div
File: Mathlib/Combinatorics/Additive/PluenneckeRuzsa.lean

tactic: rw [← div_inv_eq_mul, div_eq_mul_inv B]
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A * C).card * B.card ≤ (A * B).card * (B / C).card
state_after: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A / C⁻¹).card * B.card ≤ (A * B).card * (B * C⁻¹).card

tactic: exact card_div_mul_le_card_mul_mul_card_mul _ _ _
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A / C⁻¹).card * B.card ≤ (A * B).card * (B * C⁻¹).card
state_after: no goals
Theorem: Filter.cocardinal_aleph0_eq_cofinite
File: Mathlib/Order/Filter/Cocardinal.lean

tactic: aesop
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
⊢ cocardinal α isRegular_aleph0 = cofinite
state_after: no goals
Theorem: Monotone.continuous_of_denseRange
File: Mathlib/Topology/Order/MonotoneContinuity.lean

tactic: simp only [image_univ, h_dense.closure_eq, univ_mem]
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : LinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderTopology β
inst✝ : DenselyOrdered β
f : α → β
h_mono : Monotone f
h_dense : DenseRange f
a : α
⊢ closure (f '' univ) ∈ 𝓝 (f a)
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable.integral_condexpKernel
File: Mathlib/Probability/Kernel/Condexp.lean

tactic: simp_rw [condexpKernel_apply_eq_condDistrib]
state_before: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condexpKernel μ m) ω) μ
state_after: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)) μ

tactic: exact AEStronglyMeasurable.integral_condDistrib
  (aemeasurable_id'' μ (inf_le_right : m ⊓ mΩ ≤ mΩ)) aemeasurable_id
  (hf.comp_snd_map_prod_id inf_le_right)
state_before: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)) μ
state_after: no goals
Theorem: Continuous.exists_forall_le_of_hasCompactMulSupport
File: Mathlib/Topology/Algebra/Order/Compact.lean

tactic: obtain ⟨_, ⟨x, rfl⟩, hx⟩ := (h.isCompact_range hf).exists_isLeast (range_nonempty _)
state_before: α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : ClosedIicTopology α
inst✝¹ : Nonempty β
inst✝ : One α
f : β → α
hf : Continuous f
h : HasCompactMulSupport f
⊢ ∃ x, ∀ (y : β), f x ≤ f y
state_after: case intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : ClosedIicTopology α
inst✝¹ : Nonempty β
inst✝ : One α
f : β → α
hf : Continuous f
h : HasCompactMulSupport f
x : β
hx : f x ∈ lowerBounds (range f)
⊢ ∃ x, ∀ (y : β), f x ≤ f y

tactic: rw [mem_lowerBounds, forall_mem_range] at hx
state_before: case intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : ClosedIicTopology α
inst✝¹ : Nonempty β
inst✝ : One α
f : β → α
hf : Continuous f
h : HasCompactMulSupport f
x : β
hx : f x ∈ lowerBounds (range f)
⊢ ∃ x, ∀ (y : β), f x ≤ f y
state_after: case intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : ClosedIicTopology α
inst✝¹ : Nonempty β
inst✝ : One α
f : β → α
hf : Continuous f
h : HasCompactMulSupport f
x : β
hx : ∀ (i : β), f x ≤ f i
⊢ ∃ x, ∀ (y : β), f x ≤ f y

tactic: exact ⟨x, hx⟩
state_before: case intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : LinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : ClosedIicTopology α
inst✝¹ : Nonempty β
inst✝ : One α
f : β → α
hf : Continuous f
h : HasCompactMulSupport f
x : β
hx : ∀ (i : β), f x ≤ f i
⊢ ∃ x, ∀ (y : β), f x ≤ f y
state_after: no goals
Theorem: unitInterval.continuous_symm
File: Mathlib/Topology/UnitInterval.lean

tactic: apply Continuous.subtype_mk (by fun_prop)
state_before: ⊢ Continuous σ
state_after: no goals

tactic: fun_prop
state_before: ⊢ Continuous fun x => 1 - ↑x
state_after: no goals
Theorem: NumberField.InfinitePlace.isUnramified_iff_stabilizer_eq_bot
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [← mk_embedding w, isUnramified_mk_iff_forall_isConj]
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
inst✝⁴ : Algebra k K
inst✝³ : Algebra k F
inst✝² : Algebra K F
inst✝¹ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
inst✝ : IsGalois k K
⊢ IsUnramified k w ↔ Stab w = ⊥
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
inst✝⁴ : Algebra k K
inst✝³ : Algebra k F
inst✝² : Algebra K F
inst✝¹ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
inst✝ : IsGalois k K
⊢ (∀ (σ : K ≃ₐ[k] K), ComplexEmbedding.IsConj w.embedding σ → σ = 1) ↔ Stab (mk w.embedding) = ⊥

tactic: simp only [eq_bot_iff, SetLike.le_def, mem_stabilizer_mk_iff,
  Subgroup.mem_bot, forall_eq_or_imp, true_and]
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
inst✝⁴ : Algebra k K
inst✝³ : Algebra k F
inst✝² : Algebra K F
inst✝¹ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
inst✝ : IsGalois k K
⊢ (∀ (σ : K ≃ₐ[k] K), ComplexEmbedding.IsConj w.embedding σ → σ = 1) ↔ Stab (mk w.embedding) = ⊥
state_after: no goals
Theorem: Set.Icc.coe_eq_zero
File: Mathlib/Algebra/Order/Interval/Set/Instances.lean

tactic: symm
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ ↑x = 0 ↔ x = 0
state_after: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ x = 0 ↔ ↑x = 0

tactic: exact Subtype.ext_iff
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ x = 0 ↔ ↑x = 0
state_after: no goals
Theorem: Finset.centroid_eq_of_inj_on_of_image_eq
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: classical rw [s.centroid_eq_centroid_image_of_inj_on k hi rfl,
    s₂.centroid_eq_centroid_image_of_inj_on k hi₂ he]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p : ι → P
hi : ∀ i ∈ s, ∀ j ∈ s, p i = p j → i = j
p₂ : ι₂ → P
hi₂ : ∀ i ∈ s₂, ∀ j ∈ s₂, p₂ i = p₂ j → i = j
he : p '' ↑s = p₂ '' ↑s₂
⊢ centroid k s p = centroid k s₂ p₂
state_after: no goals

tactic: rw [s.centroid_eq_centroid_image_of_inj_on k hi rfl,
s₂.centroid_eq_centroid_image_of_inj_on k hi₂ he]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p : ι → P
hi : ∀ i ∈ s, ∀ j ∈ s, p i = p j → i = j
p₂ : ι₂ → P
hi₂ : ∀ i ∈ s₂, ∀ j ∈ s₂, p₂ i = p₂ j → i = j
he : p '' ↑s = p₂ '' ↑s₂
⊢ centroid k s p = centroid k s₂ p₂
state_after: no goals
Theorem: Real.Angle.sign_two_zsmul_eq_sign_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [two_zsmul, ← two_nsmul, sign_two_nsmul_eq_sign_iff]
state_before: θ : Angle
⊢ (2 • θ).sign = θ.sign ↔ θ = ↑π ∨ |θ.toReal| < π / 2
state_after: no goals
Theorem: Matrix.IsHermitian.transpose
File: Mathlib/LinearAlgebra/Matrix/Hermitian.lean

tactic: rw [IsHermitian, conjTranspose, transpose_map]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝¹ : Star α
inst✝ : Star β
A : Matrix n n α
h : A.IsHermitian
⊢ Aᵀ.IsHermitian
state_after: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝¹ : Star α
inst✝ : Star β
A : Matrix n n α
h : A.IsHermitian
⊢ (Aᵀ.map star)ᵀ = Aᵀ

tactic: exact congr_arg Matrix.transpose h
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝¹ : Star α
inst✝ : Star β
A : Matrix n n α
h : A.IsHermitian
⊢ (Aᵀ.map star)ᵀ = Aᵀ
state_after: no goals
Theorem: Set.Countable.image
File: Mathlib/Data/Set/Countable.lean

tactic: rw [image_eq_range]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
f : α → β
⊢ (f '' s).Countable
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
f : α → β
⊢ (range fun x => f ↑x).Countable

tactic: have := hs.to_subtype
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
f : α → β
⊢ (range fun x => f ↑x).Countable
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
f : α → β
this : Countable ↑s
⊢ (range fun x => f ↑x).Countable

tactic: apply countable_range
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
f : α → β
this : Countable ↑s
⊢ (range fun x => f ↑x).Countable
state_after: no goals
Theorem: Units.mk0_inj
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: injection h
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a✝ b✝ a b : G₀
ha : a ≠ 0
hb : b ≠ 0
h : mk0 a ha = mk0 b hb
⊢ a = b
state_after: no goals
Theorem: Function.Periodic.nat_mul
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [nsmul_eq_mul] using h.nsmul n
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : Semiring α
h : Periodic f c
n : ℕ
⊢ Periodic f (↑n * c)
state_after: no goals
Theorem: LaurentPolynomial.mul_T_assoc
File: Mathlib/Algebra/Polynomial/Laurent.lean

tactic: simp [← T_add, mul_assoc]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[T;T⁻¹]
m n : ℤ
⊢ f * T m * T n = f * T (m + n)
state_after: no goals
Theorem: algebraMap_mono
File: Mathlib/Algebra/Order/Module/Algebra.lean

tactic: simpa only [Algebra.algebraMap_eq_smul_one] using smul_le_smul_of_nonneg_right ha zero_le_one
state_before: α : Type u_1
β : Type u_2
inst✝³ : OrderedCommSemiring α
inst✝² : OrderedSemiring β
inst✝¹ : Algebra α β
inst✝ : SMulPosMono α β
a a₁ a₂ : α
ha : a₁ ≤ a₂
⊢ (algebraMap α β) a₁ ≤ (algebraMap α β) a₂
state_after: no goals
Theorem: Filter.comap_cocompact_le
File: Mathlib/Topology/Compactness/Compact.lean

tactic: rw [(Filter.hasBasis_cocompact.comap f).le_basis_iff Filter.hasBasis_cocompact]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Continuous f
⊢ comap f (cocompact Y) ≤ cocompact X
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Continuous f
⊢ ∀ (i' : Set X), IsCompact i' → ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ i'ᶜ

tactic: intro t ht
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Continuous f
⊢ ∀ (i' : Set X), IsCompact i' → ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ i'ᶜ
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
f : X → Y
hf : Continuous f
t : Set X
ht : IsCompact t
⊢ ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ tᶜ

tactic: refine ⟨f '' t, ht.image hf, ?_⟩
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
f : X → Y
hf : Continuous f
t : Set X
ht : IsCompact t
⊢ ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ tᶜ
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
f : X → Y
hf : Continuous f
t : Set X
ht : IsCompact t
⊢ f ⁻¹' (f '' t)ᶜ ⊆ tᶜ

tactic: simpa using t.subset_preimage_image f
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
f : X → Y
hf : Continuous f
t : Set X
ht : IsCompact t
⊢ f ⁻¹' (f '' t)ᶜ ⊆ tᶜ
state_after: no goals