1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submodule.iSup_dualAnnihilator_le_iInf
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [le_dualAnnihilator_iff_le_dualCoannihilator, dualCoannihilator_iSup_eq]
state_before: R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
ι : Sort u_1
U : ι → Submodule R M
⊢ ⨆ i, (U i).dualAnnihilator ≤ (⨅ i, U i).dualAnnihilator
state_after: R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
ι : Sort u_1
U : ι → Submodule R M
⊢ ⨅ i, U i ≤ ⨅ i, (U i).dualAnnihilator.dualCoannihilator

tactic: apply iInf_mono
state_before: R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
ι : Sort u_1
U : ι → Submodule R M
⊢ ⨅ i, U i ≤ ⨅ i, (U i).dualAnnihilator.dualCoannihilator
state_after: case h
R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
ι : Sort u_1
U : ι → Submodule R M
⊢ ∀ (i : ι), U i ≤ (U i).dualAnnihilator.dualCoannihilator

tactic: exact fun i : ι => le_dualAnnihilator_dualCoannihilator (U i)
state_before: case h
R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
ι : Sort u_1
U : ι → Submodule R M
⊢ ∀ (i : ι), U i ≤ (U i).dualAnnihilator.dualCoannihilator
state_after: no goals
Theorem: FirstOrder.Language.ElementaryEmbedding.theory_model_iff
File: Mathlib/ModelTheory/ElementaryMaps.lean

tactic: simp only [Theory.model_iff, f.map_sentence]
state_before: L : Language
M : Type u_1
N : Type u_2
P : Type u_3
Q : Type u_4
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
inst✝ : L.Structure Q
f : M ↪ₑ[L] N
T : L.Theory
⊢ M ⊨ T ↔ N ⊨ T
state_after: no goals
Theorem: ModuleCat.MonoidalCategory.tensor_comp
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean

tactic: apply TensorProduct.ext
state_before: R : Type u
inst✝ : CommRing R
X₁ Y₁ Z₁ : ModuleCat R
X₂ Y₂ Z₂ : ModuleCat R
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂
state_after: case H
R : Type u
inst✝ : CommRing R
X₁ Y₁ Z₁ : ModuleCat R
X₂ Y₂ Z₂ : ModuleCat R
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ (TensorProduct.mk R ↑X₁ ↑X₂).compr₂ (tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂)) =
    (TensorProduct.mk R ↑X₁ ↑X₂).compr₂ (tensorHom f₁ f₂ ≫ tensorHom g₁ g₂)

tactic: rfl
state_before: case H
R : Type u
inst✝ : CommRing R
X₁ Y₁ Z₁ : ModuleCat R
X₂ Y₂ Z₂ : ModuleCat R
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ (TensorProduct.mk R ↑X₁ ↑X₂).compr₂ (tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂)) =
    (TensorProduct.mk R ↑X₁ ↑X₂).compr₂ (tensorHom f₁ f₂ ≫ tensorHom g₁ g₂)
state_after: no goals
Theorem: Commute.div_mul_div_comm
File: Mathlib/Algebra/Group/Commute/Basic.lean

tactic: simp_rw [div_eq_mul_inv, mul_inv_rev, hbd.inv_inv.symm.eq, hbc.mul_mul_mul_comm]
state_before: G : Type u_1
inst✝ : DivisionMonoid G
a b c d : G
hbd : Commute b d
hbc : Commute b⁻¹ c
⊢ a / b * (c / d) = a * c / (b * d)
state_after: no goals
Theorem: WithTop.preimage_coe_Ioc
File: Mathlib/Order/Interval/Set/WithBotTop.lean

tactic: simp [← Ioi_inter_Iic]
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some ⁻¹' Ioc ↑a ↑b = Ioc a b
state_after: no goals
Theorem: Ordinal.nmul_nadd_lt₃'
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: simp only [nmul_comm _ (_ ⨳ _)]
state_before: a b c d a' b' c' : Ordinal.{u}
ha : a' < a
hb : b' < b
hc : c' < c
⊢ a' ⨳ (b ⨳ c) ♯ a ⨳ (b' ⨳ c) ♯ a ⨳ (b ⨳ c') ♯ a' ⨳ (b' ⨳ c') <
    a ⨳ (b ⨳ c) ♯ a' ⨳ (b' ⨳ c) ♯ a' ⨳ (b ⨳ c') ♯ a ⨳ (b' ⨳ c')
state_after: a b c d a' b' c' : Ordinal.{u}
ha : a' < a
hb : b' < b
hc : c' < c
⊢ b ⨳ c ⨳ a' ♯ b' ⨳ c ⨳ a ♯ b ⨳ c' ⨳ a ♯ b' ⨳ c' ⨳ a' < b ⨳ c ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a' ♯ b' ⨳ c' ⨳ a

tactic: simp only [nadd_eq_add, NatOrdinal.toOrdinal_toNatOrdinal]
state_before: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' < a
hb : b' < b
hc : c' < c
⊢ b ⨳ c ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a' ♯ b' ⨳ c' ⨳ a = b ⨳ c ⨳ a ♯ b' ⨳ c' ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a'
state_after: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' < a
hb : b' < b
hc : c' < c
⊢ toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a') +
        toNatOrdinal (b' ⨳ c' ⨳ a)) =
    toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c' ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a'))

tactic: abel_nf
state_before: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' < a
hb : b' < b
hc : c' < c
⊢ toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a') +
        toNatOrdinal (b' ⨳ c' ⨳ a)) =
    toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c' ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a'))
state_after: no goals
Theorem: PMF.pure_bindOnSupport
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: refine PMF.ext fun b => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
⊢ (pure a).bindOnSupport f = f a ⋯
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
⊢ ((pure a).bindOnSupport f) b = (f a ⋯) b

tactic: simp only [bindOnSupport_apply, pure_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
⊢ ((pure a).bindOnSupport f) b = (f a ⋯) b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
⊢ (∑' (a_1 : α), (if a_1 = a then 1 else 0) * if h : (if a_1 = a then 1 else 0) = 0 then 0 else (f a_1 h) b) = (f a ⋯) b

tactic: refine _root_.trans (tsum_congr fun a' => ?_) (tsum_ite_eq a _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
⊢ (∑' (a_1 : α), (if a_1 = a then 1 else 0) * if h : (if a_1 = a then 1 else 0) = 0 then 0 else (f a_1 h) b) = (f a ⋯) b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
a' : α
⊢ ((if a' = a then 1 else 0) * if h : (if a' = a then 1 else 0) = 0 then 0 else (f a' h) b) =
    if a' = a then (f a ⋯) b else 0

tactic: by_cases h : a' = a <;> simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f✝ : (a : α) → a ∈ p.support → PMF β
a : α
f : (a' : α) → a' ∈ (pure a).support → PMF β
b : β
a' : α
⊢ ((if a' = a then 1 else 0) * if h : (if a' = a then 1 else 0) = 0 then 0 else (f a' h) b) =
    if a' = a then (f a ⋯) b else 0
state_after: no goals
Theorem: Real.cosh_le_exp_half_sq
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Series.lean

tactic: rw [cosh_eq_tsum, exp_eq_exp_ℝ, exp_eq_tsum]
state_before: x : ℝ
⊢ cosh x ≤ rexp (x ^ 2 / 2)
state_after: x : ℝ
⊢ ∑' (n : ℕ), x ^ (2 * n) / ↑(2 * n)! ≤ (fun x => ∑' (n : ℕ), (↑n !)⁻¹ • x ^ n) (x ^ 2 / 2)

tactic: refine tsum_le_tsum (fun i ↦ ?_) x.hasSum_cosh.summable <| expSeries_summable' (x ^ 2 / 2)
state_before: x : ℝ
⊢ ∑' (n : ℕ), x ^ (2 * n) / ↑(2 * n)! ≤ (fun x => ∑' (n : ℕ), (↑n !)⁻¹ • x ^ n) (x ^ 2 / 2)
state_after: x : ℝ
i : ℕ
⊢ x ^ (2 * i) / ↑(2 * i)! ≤ (↑i !)⁻¹ • (x ^ 2 / 2) ^ i

tactic: simp only [div_pow, pow_mul, smul_eq_mul, inv_mul_eq_div, div_div]
state_before: x : ℝ
i : ℕ
⊢ x ^ (2 * i) / ↑(2 * i)! ≤ (↑i !)⁻¹ • (x ^ 2 / 2) ^ i
state_after: x : ℝ
i : ℕ
⊢ (x ^ 2) ^ i / ↑(2 * i)! ≤ (x ^ 2) ^ i / (2 ^ i * ↑i !)

tactic: gcongr
state_before: x : ℝ
i : ℕ
⊢ (x ^ 2) ^ i / ↑(2 * i)! ≤ (x ^ 2) ^ i / (2 ^ i * ↑i !)
state_after: case h
x : ℝ
i : ℕ
⊢ 2 ^ i * ↑i ! ≤ ↑(2 * i)!

tactic: norm_cast
state_before: case h
x : ℝ
i : ℕ
⊢ 2 ^ i * ↑i ! ≤ ↑(2 * i)!
state_after: case h
x : ℝ
i : ℕ
⊢ 2 ^ i * i ! ≤ (2 * i)!

tactic: exact Nat.two_pow_mul_factorial_le_factorial_two_mul _
state_before: case h
x : ℝ
i : ℕ
⊢ 2 ^ i * i ! ≤ (2 * i)!
state_after: no goals
Theorem: OnePoint.coe_preimage_infty
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: ext
state_before: X : Type u_1
⊢ some ⁻¹' {∞} = ∅
state_after: case h
X : Type u_1
x✝ : X
⊢ x✝ ∈ some ⁻¹' {∞} ↔ x✝ ∈ ∅

tactic: simp
state_before: case h
X : Type u_1
x✝ : X
⊢ x✝ ∈ some ⁻¹' {∞} ↔ x✝ ∈ ∅
state_after: no goals
Theorem: PolyEquivTensor.invFun_add
File: Mathlib/RingTheory/PolynomialAlgebra.lean

tactic: simp only [invFun, eval₂_add]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
p q : A[X]
⊢ invFun R A (p + q) = invFun R A p + invFun R A q
state_after: no goals
Theorem: LinearMap.ofIsCompl_left_apply
File: Mathlib/LinearAlgebra/Projection.lean

tactic: simp [ofIsCompl]
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
φ : ↥p →ₗ[R] F
ψ : ↥q →ₗ[R] F
u : ↥p
⊢ (ofIsCompl h φ ψ) ↑u = φ u
state_after: no goals
Theorem: Real.cos_antiperiodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [cos_add]
state_before: ⊢ Function.Antiperiodic cos π
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.StableUnderCobaseChange.mk
File: Mathlib/CategoryTheory/MorphismProperty/Limits.lean

tactic: let e := sq.flip.isoPushout
state_before: C : Type u
inst✝¹ : Category.{v, u} C
P : MorphismProperty C
inst✝ : HasPushouts C
hP₁ : P.RespectsIso
hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B), P f → P pushout.inr
A A' B B' : C
f : A ⟶ A'
g : A ⟶ B
f' : B ⟶ B'
g' : A' ⟶ B'
sq : IsPushout g f f' g'
hf : P f
⊢ P f'
state_after: C : Type u
inst✝¹ : Category.{v, u} C
P : MorphismProperty C
inst✝ : HasPushouts C
hP₁ : P.RespectsIso
hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B), P f → P pushout.inr
A A' B B' : C
f : A ⟶ A'
g : A ⟶ B
f' : B ⟶ B'
g' : A' ⟶ B'
sq : IsPushout g f f' g'
hf : P f
e : B' ≅ pushout f g := ⋯.isoPushout
⊢ P f'

tactic: rw [← hP₁.cancel_right_isIso _ e.hom, sq.flip.inr_isoPushout_hom]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
P : MorphismProperty C
inst✝ : HasPushouts C
hP₁ : P.RespectsIso
hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B), P f → P pushout.inr
A A' B B' : C
f : A ⟶ A'
g : A ⟶ B
f' : B ⟶ B'
g' : A' ⟶ B'
sq : IsPushout g f f' g'
hf : P f
e : B' ≅ pushout f g := ⋯.isoPushout
⊢ P f'
state_after: C : Type u
inst✝¹ : Category.{v, u} C
P : MorphismProperty C
inst✝ : HasPushouts C
hP₁ : P.RespectsIso
hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B), P f → P pushout.inr
A A' B B' : C
f : A ⟶ A'
g : A ⟶ B
f' : B ⟶ B'
g' : A' ⟶ B'
sq : IsPushout g f f' g'
hf : P f
e : B' ≅ pushout f g := ⋯.isoPushout
⊢ P pushout.inr

tactic: exact hP₂ _ _ _ f g hf
state_before: C : Type u
inst✝¹ : Category.{v, u} C
P : MorphismProperty C
inst✝ : HasPushouts C
hP₁ : P.RespectsIso
hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B), P f → P pushout.inr
A A' B B' : C
f : A ⟶ A'
g : A ⟶ B
f' : B ⟶ B'
g' : A' ⟶ B'
sq : IsPushout g f f' g'
hf : P f
e : B' ≅ pushout f g := ⋯.isoPushout
⊢ P pushout.inr
state_after: no goals
Theorem: NNRat.num_divNat_den
File: Mathlib/Data/NNRat/Defs.lean

tactic: rw [← (q : ℚ).mkRat_num_den']
state_before: p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q : ℚ≥0
⊢ ↑(divNat q.num q.den) = ↑q
state_after: p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q : ℚ≥0
⊢ ↑(divNat q.num q.den) = mkRat (↑q).num (↑q).den

tactic: simp [num_coe, den_coe]
state_before: p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q : ℚ≥0
⊢ ↑(divNat q.num q.den) = mkRat (↑q).num (↑q).den
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.basis_apply
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

tactic: classical
nontriviality R
rw [CoordinateRing.basis, Or.by_cases, dif_neg <| not_subsingleton R, Basis.reindex_apply,
  PowerBasis.basis_eq_pow]
rfl
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
⊢ (CoordinateRing.basis W) n = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n
state_after: no goals

tactic: nontriviality R
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
⊢ (CoordinateRing.basis W) n = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
a✝ : Nontrivial R
⊢ (CoordinateRing.basis W) n = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n

tactic: rw [CoordinateRing.basis, Or.by_cases, dif_neg <| not_subsingleton R, Basis.reindex_apply,
  PowerBasis.basis_eq_pow]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
a✝ : Nontrivial R
⊢ (CoordinateRing.basis W) n = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
a✝ : Nontrivial R
⊢ (AdjoinRoot.powerBasis' ⋯).gen ^ ↑((finCongr ⋯).symm n) = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n

tactic: rfl
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
n : Fin 2
a✝ : Nontrivial R
⊢ (AdjoinRoot.powerBasis' ⋯).gen ^ ↑((finCongr ⋯).symm n) = (AdjoinRoot.powerBasis' ⋯).gen ^ ↑n
state_after: no goals
Theorem: List.alternatingProd_append
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommGroup α
l₂ : List α
⊢ ([] ++ l₂).alternatingProd = [].alternatingProd * l₂.alternatingProd ^ (-1) ^ [].length
state_after: no goals

tactic: simp_rw [cons_append, alternatingProd_cons, alternatingProd_append, length_cons, pow_succ',
  Int.neg_mul, one_mul, zpow_neg, ← div_eq_mul_inv, div_div]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommGroup α
a : α
l₁ l₂ : List α
⊢ (a :: l₁ ++ l₂).alternatingProd = (a :: l₁).alternatingProd * l₂.alternatingProd ^ (-1) ^ (a :: l₁).length
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.IsFraction.eq_mk'
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rcases hf with ⟨r, s, h⟩
state_before: R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
f : (x : ↥U) → Localizations R ↑x
hf : IsFraction f
⊢ ∃ r s, ∀ (x : ↥U), ∃ (hs : s ∉ (↑x).asIdeal), f x = IsLocalization.mk' (Localization.AtPrime (↑x).asIdeal) r ⟨s, hs⟩
state_after: case intro.intro
R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
f : (x : ↥U) → Localizations R ↑x
r s : R
h : ∀ (x : ↥U), s ∉ (↑x).asIdeal ∧ f x * (algebraMap R (Localizations R ↑x)) s = (algebraMap R (Localizations R ↑x)) r
⊢ ∃ r s, ∀ (x : ↥U), ∃ (hs : s ∉ (↑x).asIdeal), f x = IsLocalization.mk' (Localization.AtPrime (↑x).asIdeal) r ⟨s, hs⟩

tactic: refine ⟨r, s, fun x => ⟨(h x).1, (IsLocalization.mk'_eq_iff_eq_mul.mpr ?_).symm⟩⟩
state_before: case intro.intro
R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
f : (x : ↥U) → Localizations R ↑x
r s : R
h : ∀ (x : ↥U), s ∉ (↑x).asIdeal ∧ f x * (algebraMap R (Localizations R ↑x)) s = (algebraMap R (Localizations R ↑x)) r
⊢ ∃ r s, ∀ (x : ↥U), ∃ (hs : s ∉ (↑x).asIdeal), f x = IsLocalization.mk' (Localization.AtPrime (↑x).asIdeal) r ⟨s, hs⟩
state_after: case intro.intro
R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
f : (x : ↥U) → Localizations R ↑x
r s : R
h : ∀ (x : ↥U), s ∉ (↑x).asIdeal ∧ f x * (algebraMap R (Localizations R ↑x)) s = (algebraMap R (Localizations R ↑x)) r
x : ↥U
⊢ (algebraMap R (Localizations R ↑x)) r = f x * (algebraMap R (Localizations R ↑x)) ↑⟨s, ⋯⟩

tactic: exact (h x).2.symm
state_before: case intro.intro
R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
f : (x : ↥U) → Localizations R ↑x
r s : R
h : ∀ (x : ↥U), s ∉ (↑x).asIdeal ∧ f x * (algebraMap R (Localizations R ↑x)) s = (algebraMap R (Localizations R ↑x)) r
x : ↥U
⊢ (algebraMap R (Localizations R ↑x)) r = f x * (algebraMap R (Localizations R ↑x)) ↑⟨s, ⋯⟩
state_after: no goals
Theorem: Commute.invOf_right
File: Mathlib/Algebra/Group/Invertible/Basic.lean

tactic: simp [mul_assoc]
state_before: α : Type u
inst✝¹ : Monoid α
a b : α
inst✝ : Invertible b
h : Commute a b
⊢ a * ⅟b = ⅟b * (b * a * ⅟b)
state_after: no goals

tactic: rw [h.eq]
state_before: α : Type u
inst✝¹ : Monoid α
a b : α
inst✝ : Invertible b
h : Commute a b
⊢ ⅟b * (b * a * ⅟b) = ⅟b * (a * b * ⅟b)
state_after: no goals

tactic: simp [mul_assoc]
state_before: α : Type u
inst✝¹ : Monoid α
a b : α
inst✝ : Invertible b
h : Commute a b
⊢ ⅟b * (a * b * ⅟b) = ⅟b * a
state_after: no goals
Theorem: Measurable.lintegral_kernel_prod_right''
File: Mathlib/Probability/Kernel/MeasurableIntegral.lean

tactic: change
  Measurable
    ((fun x => ∫⁻ y, (fun u : (α × β) × γ => f (u.1.2, u.2)) (x, y) ∂η x) ∘ Prod.mk a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
a : α
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ Measurable fun x => ∫⁻ (y : γ), f (x, y) ∂η (a, x)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
a : α
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ Measurable ((fun x => ∫⁻ (y : γ), (fun u => f (u.1.2, u.2)) (x, y) ∂η x) ∘ Prod.mk a)

tactic: refine (Measurable.lintegral_kernel_prod_right' (κ := η)
  (f := (fun u ↦ f (u.fst.snd, u.snd))) ?_).comp measurable_prod_mk_left
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
a : α
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ Measurable ((fun x => ∫⁻ (y : γ), (fun u => f (u.1.2, u.2)) (x, y) ∂η x) ∘ Prod.mk a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
a : α
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ Measurable fun u => f (u.1.2, u.2)

tactic: exact hf.comp (measurable_fst.snd.prod_mk measurable_snd)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
a : α
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ Measurable fun u => f (u.1.2, u.2)
state_after: no goals
Theorem: Module.involutive_preReflection
File: Mathlib/LinearAlgebra/Reflection.lean

tactic: simp [h, smul_sub, two_smul, preReflection_apply]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x : M
f : Dual R M
y✝ : M
h : f x = 2
y : M
⊢ (preReflection x f) ((preReflection x f) y) = y
state_after: no goals
Theorem: EuclideanGeometry.exists_circumradius_eq_of_cospherical
File: Mathlib/Geometry/Euclidean/Circumcenter.lean

tactic: haveI : Nonempty (⊤ : AffineSubspace ℝ P) := Set.univ.nonempty
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
⊢ ∃ r, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumradius = r
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ r, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumradius = r

tactic: rw [← finrank_top, ← direction_top ℝ V P] at hd
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ r, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumradius = r
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ r, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumradius = r

tactic: refine exists_circumradius_eq_of_cospherical_subset ?_ hd hc
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ r, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumradius = r
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ps ⊆ ↑⊤

tactic: exact Set.subset_univ _
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ps ⊆ ↑⊤
state_after: no goals
Theorem: edist_le_of_edist_le_geometric_of_tendsto₀
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: simpa only [_root_.pow_zero, mul_one] using edist_le_of_edist_le_geometric_of_tendsto r C hu ha 0
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
⊢ edist (f 0) a ≤ C / (1 - r)
state_after: no goals
Theorem: DFinsupp.mk_add
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: simp only [add_apply, mk_apply]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
s : Finset ι
x y : (i : ↑↑s) → β ↑i
i : ι
⊢ (mk s (x + y)) i = (mk s x + mk s y) i
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
s : Finset ι
x y : (i : ↑↑s) → β ↑i
i : ι
⊢ (if H : i ∈ s then (x + y) ⟨i, H⟩ else 0) = (if H : i ∈ s then x ⟨i, H⟩ else 0) + if H : i ∈ s then y ⟨i, H⟩ else 0

tactic: split_ifs <;> [rfl; rw [zero_add]]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
s : Finset ι
x y : (i : ↑↑s) → β ↑i
i : ι
⊢ (if H : i ∈ s then (x + y) ⟨i, H⟩ else 0) = (if H : i ∈ s then x ⟨i, H⟩ else 0) + if H : i ∈ s then y ⟨i, H⟩ else 0
state_after: no goals