1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FractionalIdeal.mul_left_mono
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

tactic: intro J J' h
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
I : FractionalIdeal S P
⊢ Monotone fun x => I * x
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
I J J' : FractionalIdeal S P
h : J ≤ J'
⊢ (fun x => I * x) J ≤ (fun x => I * x) J'

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
I J J' : FractionalIdeal S P
h : J ≤ J'
⊢ (fun x => I * x) J ≤ (fun x => I * x) 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
I J J' : FractionalIdeal S P
h : J ≤ J'
⊢ ⟨↑I * ↑J, ⋯⟩ ≤ ⟨↑I * ↑J', ⋯⟩

tactic: exact mul_le.mpr fun x hx y hy => mul_mem_mul hx (h hy)
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
I J J' : FractionalIdeal S P
h : J ≤ J'
⊢ ⟨↑I * ↑J, ⋯⟩ ≤ ⟨↑I * ↑J', ⋯⟩
state_after: no goals
Theorem: NumberField.mixedEmbedding.norm_eq_zero_iff
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: simp_rw [mixedEmbedding.norm, MonoidWithZeroHom.coe_mk, ZeroHom.coe_mk, prod_eq_zero_iff,
  mem_univ, true_and, pow_eq_zero_iff mult_ne_zero]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ mixedEmbedding.norm x = 0 ↔ ∃ w, (normAtPlace w) x = 0
state_after: no goals
Theorem: AddCircle.coe_image_Ico_eq
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rw [image_eq_range]
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
⊢ QuotientAddGroup.mk '' Ico a (a + p) = univ
state_after: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
⊢ (range fun x => ↑↑x) = univ

tactic: exact (equivIco p a).symm.range_eq_univ
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
⊢ (range fun x => ↑↑x) = univ
state_after: no goals
Theorem: Nat.prod_pow_factorization_eq_self
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: have h : ∀ x : ℕ, x ∈ f.support → x ^ f x ≠ 0 := fun p hp =>
  pow_ne_zero _ (Prime.ne_zero (hf p hp))
state_before: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
⊢ (f.prod fun x x_1 => x ^ x_1).factorization = f
state_after: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ (f.prod fun x x_1 => x ^ x_1).factorization = f

tactic: simp only [Finsupp.prod, factorization_prod h]
state_before: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ (f.prod fun x x_1 => x ^ x_1).factorization = f
state_after: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ ∑ x ∈ f.support, (x ^ f x).factorization = f

tactic: conv =>
  rhs
  rw [(sum_single f).symm]
state_before: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ ∑ x ∈ f.support, (x ^ f x).factorization = f
state_after: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ ∑ x ∈ f.support, (x ^ f x).factorization = f.sum single

tactic: exact sum_congr rfl fun p hp => Prime.factorization_pow (hf p hp)
state_before: a b m n p : ℕ
f : ℕ →₀ ℕ
hf : ∀ p ∈ f.support, Prime p
h : ∀ x ∈ f.support, x ^ f x ≠ 0
⊢ ∑ x ∈ f.support, (x ^ f x).factorization = f.sum single
state_after: no goals
Theorem: HasDerivAt.comp_add_const
File: Mathlib/Analysis/Calculus/Deriv/Shift.lean

tactic: simpa [Function.comp_def] using HasDerivAt.scomp (𝕜 := 𝕜) x hh <| hasDerivAt_id' x |>.add_const a
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
x a : 𝕜
𝕜' : Type u_2
inst✝¹ : NormedAddCommGroup 𝕜'
inst✝ : NormedSpace 𝕜 𝕜'
h : 𝕜 → 𝕜'
h' : 𝕜'
hh : HasDerivAt h h' (x + a)
⊢ HasDerivAt (fun x => h (x + a)) h' x
state_after: no goals
Theorem: ADEInequality.admissible_of_one_lt_sumInv
File: Mathlib/NumberTheory/ADEInequality.lean

tactic: simp only [Admissible]
state_before: p q r : ℕ+
H : 1 < sumInv {p, q, r}
⊢ Admissible {p, q, r}
state_after: p q r : ℕ+
H : 1 < sumInv {p, q, r}
⊢ (∃ q_1 r_1, A' q_1 r_1 = {p, q, r}) ∨
    (∃ r_1, D' r_1 = {p, q, r}) ∨ E' 3 = {p, q, r} ∨ E' 4 = {p, q, r} ∨ E' 5 = {p, q, r}

tactic: have hpqr : ({p, q, r} : Multiset ℕ+) = S := (sort_eq LE.le {p, q, r}).symm
state_before: p q r : ℕ+
H : 1 < sumInv {p, q, r}
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
⊢ (∃ q_1 r_1, A' q_1 r_1 = {p, q, r}) ∨
    (∃ r_1, D' r_1 = {p, q, r}) ∨ E' 3 = {p, q, r} ∨ E' 4 = {p, q, r} ∨ E' 5 = {p, q, r}
state_after: p q r : ℕ+
H : 1 < sumInv {p, q, r}
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q_1 r_1, A' q_1 r_1 = {p, q, r}) ∨
    (∃ r_1, D' r_1 = {p, q, r}) ∨ E' 3 = {p, q, r} ∨ E' 4 = {p, q, r} ∨ E' 5 = {p, q, r}

tactic: rw [hpqr]
state_before: p q r : ℕ+
H : 1 < sumInv {p, q, r}
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q_1 r_1, A' q_1 r_1 = {p, q, r}) ∨
    (∃ r_1, D' r_1 = {p, q, r}) ∨ E' 3 = {p, q, r} ∨ E' 4 = {p, q, r} ∨ E' 5 = {p, q, r}
state_after: p q r : ℕ+
H : 1 < sumInv {p, q, r}
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q r, A' q r = ↑S) ∨ (∃ r, D' r = ↑S) ∨ E' 3 = ↑S ∨ E' 4 = ↑S ∨ E' 5 = ↑S

tactic: rw [hpqr] at H
state_before: p q r : ℕ+
H : 1 < sumInv {p, q, r}
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q r, A' q r = ↑S) ∨ (∃ r, D' r = ↑S) ∨ E' 3 = ↑S ∨ E' 4 = ↑S ∨ E' 5 = ↑S
state_after: p q r : ℕ+
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
H : 1 < sumInv ↑S
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q r, A' q r = ↑S) ∨ (∃ r, D' r = ↑S) ∨ E' 3 = ↑S ∨ E' 4 = ↑S ∨ E' 5 = ↑S

tactic: apply admissible_of_one_lt_sumInv_aux hS _ H
state_before: p q r : ℕ+
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
H : 1 < sumInv ↑S
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ (∃ q r, A' q r = ↑S) ∨ (∃ r, D' r = ↑S) ∨ E' 3 = ↑S ∨ E' 4 = ↑S ∨ E' 5 = ↑S
state_after: p q r : ℕ+
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
H : 1 < sumInv ↑S
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ S.length = 3

tactic: simp only [S, ge_iff_le, insert_eq_cons, length_sort, card_cons, card_singleton]
state_before: p q r : ℕ+
S : List ℕ+ := sort (fun x x_1 => x ≤ x_1) {p, q, r}
H : 1 < sumInv ↑S
hS : List.Sorted (fun x x_1 => x ≤ x_1) S
hpqr : {p, q, r} = ↑S
⊢ S.length = 3
state_after: no goals
Theorem: Finset.covBy_iff_exists_insert
File: Mathlib/Data/Finset/Grade.lean

tactic: simp only [← coe_covBy_coe, Set.covBy_iff_exists_insert, ← coe_inj, coe_insert, mem_coe]
state_before: α : Type u_1
s t : Finset α
a : α
inst✝ : DecidableEq α
⊢ s ⋖ t ↔ ∃ a ∉ s, insert a s = t
state_after: no goals
Theorem: AlgebraicGeometry.ProjIsoSpecTopComponent.ToSpec.isPrime_carrier
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean

tactic: refine Ideal.IsPrime.comap _ (hK := ?_)
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (carrier x).IsPrime
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (Ideal.map (algebraMap A (Away f)) (↑x).asHomogeneousIdeal.toIdeal).IsPrime

tactic: exact IsLocalization.isPrime_of_isPrime_disjoint
  (Submonoid.powers f) _ _ inferInstance
  ((disjoint_powers_iff_not_mem _ (Ideal.IsPrime.isRadical inferInstance)).mpr x.2)
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (Ideal.map (algebraMap A (Away f)) (↑x).asHomogeneousIdeal.toIdeal).IsPrime
state_after: no goals
Theorem: PFun.mem_res
File: Mathlib/Data/PFun.lean

tactic: simp [res, @eq_comm _ b]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α → β
s : Set α
a : α
b : β
⊢ b ∈ res f s a ↔ a ∈ s ∧ f a = b
state_after: no goals
Theorem: Finset.image_compl
File: Mathlib/Data/Finset/Sups.lean

tactic: simp [compls, map_eq_image]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : BooleanAlgebra α
s s₁ s₂ t t₁ t₂ u v : Finset α
a b c : α
⊢ image compl s = sᶜˢ
state_after: no goals
Theorem: CharP.cast_eq_mod
File: Mathlib/Algebra/CharP/Defs.lean

tactic: rw [Nat.mod_add_div]
state_before: R : Type u_1
inst✝¹ : NonAssocRing R
p : ℕ
inst✝ : CharP R p
k : ℕ
⊢ ↑k = ↑(k % p + p * (k / p))
state_after: no goals

tactic: simp [cast_eq_zero]
state_before: R : Type u_1
inst✝¹ : NonAssocRing R
p : ℕ
inst✝ : CharP R p
k : ℕ
⊢ ↑(k % p + p * (k / p)) = ↑(k % p)
state_after: no goals
Theorem: ChainComplex.mk_d_2_1
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: change ite (2 = 1 + 1) (𝟙 X₂ ≫ d₁) 0 = d₁
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
⊢ (mk X₀ X₁ X₂ d₀ d₁ s succ).d 2 1 = d₁
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
⊢ (if 2 = 1 + 1 then 𝟙 X₂ ≫ d₁ else 0) = d₁

tactic: rw [if_pos rfl, Category.id_comp]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
⊢ (if 2 = 1 + 1 then 𝟙 X₂ ≫ d₁ else 0) = d₁
state_after: no goals
Theorem: MvPolynomial.join₂_map
File: Mathlib/Algebra/MvPolynomial/Monad.lean

tactic: simp only [join₂, bind₂, eval₂Hom_map_hom, RingHom.id_comp]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
f : R →+* MvPolynomial σ S
φ : MvPolynomial σ R
⊢ join₂ ((map f) φ) = (bind₂ f) φ
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable.prod_mk_left
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: filter_upwards [ae_ae_of_ae_prod hf.ae_eq_mk] with x hx
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝² : NormedAddCommGroup E
γ : Type u_7
inst✝¹ : SigmaFinite ν
inst✝ : TopologicalSpace γ
f : α × β → γ
hf : AEStronglyMeasurable f (μ.prod ν)
⊢ ∀ᵐ (x : α) ∂μ, AEStronglyMeasurable (fun y => f (x, y)) ν
state_after: case h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝² : NormedAddCommGroup E
γ : Type u_7
inst✝¹ : SigmaFinite ν
inst✝ : TopologicalSpace γ
f : α × β → γ
hf : AEStronglyMeasurable f (μ.prod ν)
x : α
hx : ∀ᵐ (y : β) ∂ν, f (x, y) = AEStronglyMeasurable.mk f hf (x, y)
⊢ AEStronglyMeasurable (fun y => f (x, y)) ν

tactic: exact
  ⟨fun y => hf.mk f (x, y), hf.stronglyMeasurable_mk.comp_measurable measurable_prod_mk_left, hx⟩
state_before: case h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝² : NormedAddCommGroup E
γ : Type u_7
inst✝¹ : SigmaFinite ν
inst✝ : TopologicalSpace γ
f : α × β → γ
hf : AEStronglyMeasurable f (μ.prod ν)
x : α
hx : ∀ᵐ (y : β) ∂ν, f (x, y) = AEStronglyMeasurable.mk f hf (x, y)
⊢ AEStronglyMeasurable (fun y => f (x, y)) ν
state_after: no goals
Theorem: MulAction.zpow_mod_period_smul
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: conv_rhs => rw [← Int.emod_add_ediv j (period g a), zpow_add, mul_smul,
  zpow_smul_eq_iff_period_dvd.mpr (dvd_mul_right _ _)]
state_before: α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
j : ℤ
g : G
a : α
⊢ g ^ (j % ↑(period g a)) • a = g ^ j • a
state_after: no goals
Theorem: Ideal.mul_eq_bot
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: cases' h with h h <;> rw [← Ideal.mul_bot, h, Ideal.mul_comm]
state_before: R✝ : Type u
ι : Type u_1
inst✝² : CommSemiring R✝
I✝ J✝ K L : Ideal R✝
R : Type u_2
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
I J : Ideal R
h : I = ⊥ ∨ J = ⊥
⊢ I * J = ⊥
state_after: no goals
Theorem: LinearMap.isOrtho_zero_left
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: dsimp only [IsOrtho]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring R₁
inst✝⁶ : AddCommMonoid M₁
inst✝⁵ : Module R₁ M₁
inst✝⁴ : CommSemiring R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₂ →ₛₗ[I₂] M
x : M₂
⊢ B.IsOrtho 0 x
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring R₁
inst✝⁶ : AddCommMonoid M₁
inst✝⁵ : Module R₁ M₁
inst✝⁴ : CommSemiring R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₂ →ₛₗ[I₂] M
x : M₂
⊢ (B 0) x = 0

tactic: rw [map_zero B, zero_apply]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring R₁
inst✝⁶ : AddCommMonoid M₁
inst✝⁵ : Module R₁ M₁
inst✝⁴ : CommSemiring R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₂ →ₛₗ[I₂] M
x : M₂
⊢ (B 0) x = 0
state_after: no goals
Theorem: CategoryTheory.Limits.map_π_preserves_coequalizer_inv
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Equalizers.lean

tactic: rw [← ι_comp_coequalizerComparison_assoc, ← PreservesCoequalizer.iso_hom, Iso.hom_inv_id,
  comp_id]
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
X Y Z : C
f g : X ⟶ Y
h : Y ⟶ Z
w : f ≫ h = g ≫ h
inst✝² : HasCoequalizer f g
inst✝¹ : HasCoequalizer (G.map f) (G.map g)
inst✝ : PreservesColimit (parallelPair f g) G
⊢ G.map (coequalizer.π f g) ≫ (PreservesCoequalizer.iso G f g).inv = coequalizer.π (G.map f) (G.map g)
state_after: no goals
Theorem: SimpleGraph.card_interedges_badVertices_le
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Counting.lean

tactic: classical
refine (Nat.cast_le.2 $ (card_le_card $ subset_of_eq (Rel.interedges_eq_biUnion _)).trans
  card_biUnion_le).trans ?_
simp_rw [Nat.cast_sum, card_map, ← nsmul_eq_mul, smul_mul_assoc, mul_comm (t.card : ℝ)]
exact sum_le_card_nsmul _ _ _ fun x hx ↦ (mem_filter.1 hx).2.le
state_before: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ↑(Rel.interedges G.Adj (SimpleGraph.badVertices G ε s t) t).card ≤
    ↑(SimpleGraph.badVertices G ε s t).card * ↑t.card * (↑(G.edgeDensity s t) - ε)
state_after: no goals

tactic: refine (Nat.cast_le.2 $ (card_le_card $ subset_of_eq (Rel.interedges_eq_biUnion _)).trans
  card_biUnion_le).trans ?_
state_before: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ↑(Rel.interedges G.Adj (SimpleGraph.badVertices G ε s t) t).card ≤
    ↑(SimpleGraph.badVertices G ε s t).card * ↑t.card * (↑(G.edgeDensity s t) - ε)
state_after: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ↑(∑ a ∈ SimpleGraph.badVertices G ε s t, (map { toFun := fun x => (a, x), inj' := ⋯ } (filter (G.Adj a) t)).card) ≤
    ↑(SimpleGraph.badVertices G ε s t).card * ↑t.card * (↑(G.edgeDensity s t) - ε)

tactic: simp_rw [Nat.cast_sum, card_map, ← nsmul_eq_mul, smul_mul_assoc, mul_comm (t.card : ℝ)]
state_before: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ↑(∑ a ∈ SimpleGraph.badVertices G ε s t, (map { toFun := fun x => (a, x), inj' := ⋯ } (filter (G.Adj a) t)).card) ≤
    ↑(SimpleGraph.badVertices G ε s t).card * ↑t.card * (↑(G.edgeDensity s t) - ε)
state_after: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ∑ x ∈ SimpleGraph.badVertices G ε s t, ↑(filter (G.Adj x) t).card ≤
    (SimpleGraph.badVertices G ε s t).card • ((↑(G.edgeDensity s t) - ε) * ↑t.card)

tactic: exact sum_le_card_nsmul _ _ _ fun x hx ↦ (mem_filter.1 hx).2.le
state_before: α : Type u_1
G G' : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
⊢ ∑ x ∈ SimpleGraph.badVertices G ε s t, ↑(filter (G.Adj x) t).card ≤
    (SimpleGraph.badVertices G ε s t).card • ((↑(G.edgeDensity s t) - ε) * ↑t.card)
state_after: no goals
Theorem: Bool.toNat_le_toNat
File: Mathlib/Data/Bool/Basic.lean

tactic: cases b₀ <;> cases b₁ <;> simp_all (config := { decide := true })
state_before: b₀ b₁ : Bool
h : b₀ ≤ b₁
⊢ b₀.toNat ≤ b₁.toNat
state_after: no goals
Theorem: AdicCompletion.evalₐ_mkₐ
File: Mathlib/RingTheory/AdicCompletion/Algebra.lean

tactic: simp [mkₐ]
state_before: R : Type u_1
inst✝² : CommRing R
I : Ideal R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
n : ℕ
x : AdicCauchySequence I R
⊢ (evalₐ I n) ((mkₐ I) x) = (Ideal.Quotient.mk (I ^ n)) (↑x n)
state_after: no goals
Theorem: Nat.choose_le_middle
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: cases' le_or_gt r n with b b
state_before: r n : ℕ
⊢ n.choose r ≤ n.choose (n / 2)
state_after: case inl
r n : ℕ
b : r ≤ n
⊢ n.choose r ≤ n.choose (n / 2)

case inr
r n : ℕ
b : r > n
⊢ n.choose r ≤ n.choose (n / 2)

tactic: rcases le_or_lt r (n / 2) with a | h
state_before: case inl
r n : ℕ
b : r ≤ n
⊢ n.choose r ≤ n.choose (n / 2)
state_after: case inl.inl
r n : ℕ
b : r ≤ n
a : r ≤ n / 2
⊢ n.choose r ≤ n.choose (n / 2)

case inl.inr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n.choose r ≤ n.choose (n / 2)

tactic: apply choose_le_middle_of_le_half_left a
state_before: case inl.inl
r n : ℕ
b : r ≤ n
a : r ≤ n / 2
⊢ n.choose r ≤ n.choose (n / 2)
state_after: no goals

tactic: rw [← choose_symm b]
state_before: case inl.inr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n.choose r ≤ n.choose (n / 2)
state_after: case inl.inr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n.choose (n - r) ≤ n.choose (n / 2)

tactic: apply choose_le_middle_of_le_half_left
state_before: case inl.inr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n.choose (n - r) ≤ n.choose (n / 2)
state_after: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n - r ≤ n / 2

tactic: rw [div_lt_iff_lt_mul' Nat.zero_lt_two] at h
state_before: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n / 2 < r
⊢ n - r ≤ n / 2
state_after: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n < r * 2
⊢ n - r ≤ n / 2

tactic: rw [le_div_iff_mul_le' Nat.zero_lt_two, Nat.mul_sub_right_distrib, Nat.sub_le_iff_le_add,
  ← Nat.sub_le_iff_le_add', Nat.mul_two, Nat.add_sub_cancel]
state_before: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n < r * 2
⊢ n - r ≤ n / 2
state_after: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n < r * 2
⊢ n ≤ r * 2

tactic: exact le_of_lt h
state_before: case inl.inr.hr
r n : ℕ
b : r ≤ n
h : n < r * 2
⊢ n ≤ r * 2
state_after: no goals

tactic: rw [choose_eq_zero_of_lt b]
state_before: case inr
r n : ℕ
b : r > n
⊢ n.choose r ≤ n.choose (n / 2)
state_after: case inr
r n : ℕ
b : r > n
⊢ 0 ≤ n.choose (n / 2)

tactic: apply zero_le
state_before: case inr
r n : ℕ
b : r > n
⊢ 0 ≤ n.choose (n / 2)
state_after: no goals
Theorem: integral_exp_Iic
File: Mathlib/Analysis/SpecialFunctions/ImproperIntegrals.lean

tactic: refine
  tendsto_nhds_unique
    (intervalIntegral_tendsto_integral_Iic _ (integrableOn_exp_Iic _) tendsto_id) ?_
state_before: c : ℝ
⊢ ∫ (x : ℝ) in Iic c, rexp x = rexp c
state_after: c : ℝ
⊢ Tendsto (fun i => ∫ (x : ℝ) in id i..c, rexp x) atBot (𝓝 (rexp c))

tactic: simp_rw [integral_exp, show 𝓝 (exp c) = 𝓝 (exp c - 0) by rw [sub_zero]]
state_before: c : ℝ
⊢ Tendsto (fun i => ∫ (x : ℝ) in id i..c, rexp x) atBot (𝓝 (rexp c))
state_after: c : ℝ
⊢ Tendsto (fun i => rexp c - rexp (id i)) atBot (𝓝 (rexp c - 0))

tactic: exact tendsto_exp_atBot.const_sub _
state_before: c : ℝ
⊢ Tendsto (fun i => rexp c - rexp (id i)) atBot (𝓝 (rexp c - 0))
state_after: no goals

tactic: rw [sub_zero]
state_before: c : ℝ
⊢ 𝓝 (rexp c) = 𝓝 (rexp c - 0)
state_after: no goals
Theorem: Submonoid.LocalizationMap.lift_mk'_spec
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [f.lift_mk' hg]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
v : P
y : ↥S
⊢ (f.lift hg) (f.mk' x y) = v ↔ g x = g ↑y * v
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
v : P
y : ↥S
⊢ g x * ↑((IsUnit.liftRight (g.restrict S) hg) y)⁻¹ = v ↔ g x = g ↑y * v

tactic: exact mul_inv_left hg _ _ _
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
v : P
y : ↥S
⊢ g x * ↑((IsUnit.liftRight (g.restrict S) hg) y)⁻¹ = v ↔ g x = g ↑y * v
state_after: no goals