1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: PrimeSpectrum.vanishingIdeal_irreducibleComponents
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [irreducibleComponents_eq_maximals_closed, minimalPrimes_eq_minimals, ← minimals_swap,
  ← PrimeSpectrum.vanishingIdeal_isClosed_isIrreducible, image_minimals_of_rel_iff_rel]
state_before: R : Type u
S : Type v
inst✝ : CommSemiring R
⊢ vanishingIdeal '' irreducibleComponents (PrimeSpectrum R) = minimalPrimes R
state_after: R : Type u
S : Type v
inst✝ : CommSemiring R
⊢ ∀ ⦃a a' : Set (PrimeSpectrum R)⦄,
    a ∈ {s | IsClosed s ∧ IsIrreducible s} →
      a' ∈ {s | IsClosed s ∧ IsIrreducible s} →
        (Function.swap (fun x x_1 => x ≤ x_1) a a' ↔ vanishingIdeal a ≤ vanishingIdeal a')

tactic: exact fun s t hs _ ↦ vanishingIdeal_anti_mono_iff hs.1
state_before: R : Type u
S : Type v
inst✝ : CommSemiring R
⊢ ∀ ⦃a a' : Set (PrimeSpectrum R)⦄,
    a ∈ {s | IsClosed s ∧ IsIrreducible s} →
      a' ∈ {s | IsClosed s ∧ IsIrreducible s} →
        (Function.swap (fun x x_1 => x ≤ x_1) a a' ↔ vanishingIdeal a ≤ vanishingIdeal a')
state_after: no goals
Theorem: ENNReal.tendsto_nhds_of_Icc
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine Tendsto.mono_right ?_ (biInf_le_nhds _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : Filter α
u : α → ℝ≥0∞
a : ℝ≥0∞
h : ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Icc (a - ε) (a + ε)
⊢ Tendsto u f (𝓝 a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : Filter α
u : α → ℝ≥0∞
a : ℝ≥0∞
h : ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Icc (a - ε) (a + ε)
⊢ Tendsto u f (⨅ ε, ⨅ (_ : ε > 0), 𝓟 (Icc (a - ε) (a + ε)))

tactic: simpa only [tendsto_iInf, tendsto_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : Filter α
u : α → ℝ≥0∞
a : ℝ≥0∞
h : ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Icc (a - ε) (a + ε)
⊢ Tendsto u f (⨅ ε, ⨅ (_ : ε > 0), 𝓟 (Icc (a - ε) (a + ε)))
state_after: no goals
Theorem: MeasureTheory.Measure.haar.prehaar_mem_haarProduct
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: rintro ⟨K, hK⟩ _
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : (interior U).Nonempty
⊢ prehaar (↑K₀) U ∈ haarProduct ↑K₀
state_after: case mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : (interior U).Nonempty
K : Set G
hK : IsCompact K
a✝ : { carrier := K, isCompact' := hK } ∈ univ
⊢ prehaar (↑K₀) U { carrier := K, isCompact' := hK } ∈
    (fun K => Icc 0 ↑(index ↑K ↑K₀)) { carrier := K, isCompact' := hK }

tactic: rw [mem_Icc]
state_before: case mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : (interior U).Nonempty
K : Set G
hK : IsCompact K
a✝ : { carrier := K, isCompact' := hK } ∈ univ
⊢ prehaar (↑K₀) U { carrier := K, isCompact' := hK } ∈
    (fun K => Icc 0 ↑(index ↑K ↑K₀)) { carrier := K, isCompact' := hK }
state_after: case mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : (interior U).Nonempty
K : Set G
hK : IsCompact K
a✝ : { carrier := K, isCompact' := hK } ∈ univ
⊢ 0 ≤ prehaar (↑K₀) U { carrier := K, isCompact' := hK } ∧
    prehaar (↑K₀) U { carrier := K, isCompact' := hK } ≤ ↑(index ↑{ carrier := K, isCompact' := hK } ↑K₀)

tactic: exact ⟨prehaar_nonneg K₀ _, prehaar_le_index K₀ _ hU⟩
state_before: case mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : (interior U).Nonempty
K : Set G
hK : IsCompact K
a✝ : { carrier := K, isCompact' := hK } ∈ univ
⊢ 0 ≤ prehaar (↑K₀) U { carrier := K, isCompact' := hK } ∧
    prehaar (↑K₀) U { carrier := K, isCompact' := hK } ≤ ↑(index ↑{ carrier := K, isCompact' := hK } ↑K₀)
state_after: no goals
Theorem: IsCyclotomicExtension.Rat.isIntegralClosure_adjoin_singleton_of_prime
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

tactic: rw [← pow_one p] at hζ hcycl
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsIntegralClosure ↥(adjoin ℤ {ζ}) ℤ K
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p ^ 1} ℚ K
hζ : IsPrimitiveRoot ζ ↑(p ^ 1)
⊢ IsIntegralClosure ↥(adjoin ℤ {ζ}) ℤ K

tactic: exact isIntegralClosure_adjoin_singleton_of_prime_pow hζ
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p ^ 1} ℚ K
hζ : IsPrimitiveRoot ζ ↑(p ^ 1)
⊢ IsIntegralClosure ↥(adjoin ℤ {ζ}) ℤ K
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyData.liftCycles_comp_cyclesIso_hom
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: simp only [← cancel_mono h.i, assoc, LeftHomologyData.cyclesIso_hom_comp_i,
  liftCycles_i, LeftHomologyData.liftK_i]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
A : C
k : A ⟶ S.X₂
hk : k ≫ S.g = 0
inst✝ : S.HasLeftHomology
⊢ S.liftCycles k hk ≫ h.cyclesIso.hom = h.liftK k hk
state_after: no goals
Theorem: Int.modEq_sub_fac
File: Mathlib/Data/Int/ModEq.lean

tactic: convert Int.modEq_add_fac (-c) ha using 1
state_before: m n✝ a✝ b✝ c✝ d a b n c : ℤ
ha : a ≡ b [ZMOD n]
⊢ a - n * c ≡ b [ZMOD n]
state_after: case h.e'_2
m n✝ a✝ b✝ c✝ d a b n c : ℤ
ha : a ≡ b [ZMOD n]
⊢ a - n * c = a + n * -c

tactic: rw [mul_neg, sub_eq_add_neg]
state_before: case h.e'_2
m n✝ a✝ b✝ c✝ d a b n c : ℤ
ha : a ≡ b [ZMOD n]
⊢ a - n * c = a + n * -c
state_after: no goals
Theorem: Polynomial.reverse_X_pow_mul
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: rw [commute_X_pow p, reverse_mul_X_pow]
state_before: R : Type u_1
inst✝ : Semiring R
f p : R[X]
n : ℕ
⊢ (X ^ n * p).reverse = p.reverse
state_after: no goals
Theorem: Matrix.smul_mul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝⁵ : AddCommMonoid α
inst✝⁴ : Mul α
inst✝³ : Fintype n
inst✝² : Monoid R
inst✝¹ : DistribMulAction R α
inst✝ : IsScalarTower R α α
a : R
M : Matrix m n α
N : Matrix n l α
⊢ a • M * N = a • (M * N)
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝⁵ : AddCommMonoid α
inst✝⁴ : Mul α
inst✝³ : Fintype n
inst✝² : Monoid R
inst✝¹ : DistribMulAction R α
inst✝ : IsScalarTower R α α
a : R
M : Matrix m n α
N : Matrix n l α
i✝ : m
j✝ : l
⊢ (a • M * N) i✝ j✝ = (a • (M * N)) i✝ j✝

tactic: apply smul_dotProduct a
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝⁵ : AddCommMonoid α
inst✝⁴ : Mul α
inst✝³ : Fintype n
inst✝² : Monoid R
inst✝¹ : DistribMulAction R α
inst✝ : IsScalarTower R α α
a : R
M : Matrix m n α
N : Matrix n l α
i✝ : m
j✝ : l
⊢ (a • M * N) i✝ j✝ = (a • (M * N)) i✝ j✝
state_after: no goals
Theorem: dist_prod_prod_le_of_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp only [dist_eq_norm_div, ← Finset.prod_div_distrib] at *
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f a : ι → E
d : ι → ℝ
h : ∀ b ∈ s, dist (f b) (a b) ≤ d b
⊢ dist (∏ b ∈ s, f b) (∏ b ∈ s, a b) ≤ ∑ b ∈ s, d b
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f a : ι → E
d : ι → ℝ
h : ∀ b ∈ s, ‖f b / a b‖ ≤ d b
⊢ ‖∏ x ∈ s, f x / a x‖ ≤ ∑ b ∈ s, d b

tactic: exact norm_prod_le_of_le s h
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f a : ι → E
d : ι → ℝ
h : ∀ b ∈ s, ‖f b / a b‖ ≤ d b
⊢ ‖∏ x ∈ s, f x / a x‖ ≤ ∑ b ∈ s, d b
state_after: no goals
Theorem: CommGroupWithZero.normalize_eq_one
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: simp [normalize_apply, h0]
state_before: α : Type u_1
G₀ : Type u_2
inst✝¹ : CommGroupWithZero G₀
inst✝ : DecidableEq G₀
a : G₀
h0 : a ≠ 0
⊢ normalize a = 1
state_after: no goals
Theorem: RelSeries.length_ne_zero
File: Mathlib/Order/RelSeries.lean

tactic: refine ⟨fun h ↦ ⟨s 0, by simp [mem_def], s 1, by simp [mem_def], fun rid ↦ irrefl (s 0) ?_⟩,
  length_ne_zero_of_nontrivial⟩
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
⊢ s.length ≠ 0 ↔ {x | x ∈ s}.Nontrivial
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ r (s.toFun 0) (s.toFun 0)

tactic: nth_rw 2 [rid]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ r (s.toFun 0) (s.toFun 0)
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ r (s.toFun 0) (s.toFun 1)

tactic: convert s.step ⟨0, by omega⟩
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ r (s.toFun 0) (s.toFun 1)
state_after: case h.e'_2.h.e'_4
α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ 1 = ⟨0, ⋯⟩.succ

tactic: ext
state_before: case h.e'_2.h.e'_4
α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ 1 = ⟨0, ⋯⟩.succ
state_after: case h.e'_2.h.e'_4.h
α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ ↑1 = ↑⟨0, ⋯⟩.succ

tactic: simpa [Nat.pos_iff_ne_zero]
state_before: case h.e'_2.h.e'_4.h
α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ ↑1 = ↑⟨0, ⋯⟩.succ
state_after: no goals

tactic: simp [mem_def]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
⊢ s.toFun 0 ∈ {x | x ∈ s}
state_after: no goals

tactic: simp [mem_def]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
⊢ s.toFun 1 ∈ {x | x ∈ s}
state_after: no goals

tactic: omega
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
irrefl : Irreflexive r
h : s.length ≠ 0
rid : s.toFun 0 = s.toFun 1
⊢ 0 < s.length
state_after: no goals
Theorem: Nat.addSubmonoid_closure_one
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: refine (eq_top_iff' _).2 <| Nat.rec (zero_mem _) ?_
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ closure {1} = ⊤
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ ∀ n ∈ closure {1}, n.succ ∈ closure {1}

tactic: simp_rw [Nat.succ_eq_add_one]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ ∀ n ∈ closure {1}, n.succ ∈ closure {1}
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ ∀ n ∈ closure {1}, n + 1 ∈ closure {1}

tactic: exact fun n hn ↦ AddSubmonoid.add_mem _ hn <| subset_closure <| Set.mem_singleton _
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ ∀ n ∈ closure {1}, n + 1 ∈ closure {1}
state_after: no goals
Theorem: Action.Iso.conj_ρ
File: Mathlib/RepresentationTheory/Action/Basic.lean

tactic: rw [Iso.conj_apply, Iso.eq_inv_comp]
state_before: V : Type (u + 1)
inst✝ : LargeCategory V
G : MonCat
M N : Action V G
f : M ≅ N
g : ↑G
⊢ N.ρ g = ((forget V G).mapIso f).conj (M.ρ g)
state_after: V : Type (u + 1)
inst✝ : LargeCategory V
G : MonCat
M N : Action V G
f : M ≅ N
g : ↑G
⊢ ((forget V G).mapIso f).hom ≫ N.ρ g = M.ρ g ≫ ((forget V G).mapIso f).hom

tactic: simp [f.hom.comm]
state_before: V : Type (u + 1)
inst✝ : LargeCategory V
G : MonCat
M N : Action V G
f : M ≅ N
g : ↑G
⊢ ((forget V G).mapIso f).hom ≫ N.ρ g = M.ρ g ≫ ((forget V G).mapIso f).hom
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable'.neg
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/AEMeasurable.lean

tactic: rcases hfm with ⟨f', hf'_meas, hf_ae⟩
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f : α → β
hfm : AEStronglyMeasurable' m f μ
⊢ AEStronglyMeasurable' m (-f) μ
state_after: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
⊢ AEStronglyMeasurable' m (-f) μ

tactic: refine ⟨-f', hf'_meas.neg, hf_ae.mono fun x hx => ?_⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
⊢ AEStronglyMeasurable' m (-f) μ
state_after: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
x : α
hx : f x = f' x
⊢ (-f) x = (-f') x

tactic: simp_rw [Pi.neg_apply]
state_before: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
x : α
hx : f x = f' x
⊢ (-f) x = (-f') x
state_after: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
x : α
hx : f x = f' x
⊢ -f x = -f' x

tactic: rw [hx]
state_before: case intro.intro
α : Type u_1
β : Type u_2
𝕜 : Type u_3
m m0 : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
f✝ g : α → β
inst✝¹ : AddGroup β
inst✝ : TopologicalAddGroup β
f f' : α → β
hf'_meas : StronglyMeasurable f'
hf_ae : f =ᶠ[ae μ] f'
x : α
hx : f x = f' x
⊢ -f x = -f' x
state_after: no goals
Theorem: CategoryTheory.Idempotents.Karoubi.p_comp
File: Mathlib/CategoryTheory/Idempotents/Karoubi.lean

tactic: rw [f.comm, ← assoc, P.idem]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f : P.Hom Q
⊢ P.p ≫ f.f = f.f
state_after: no goals
Theorem: MvPolynomial.support_X_mul
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: simp
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q : MvPolynomial σ R
s : σ
p : MvPolynomial σ R
⊢ ∀ (y : R), 1 * y = 0 ↔ y = 0
state_after: no goals
Theorem: Int.card_fintype_Ioc
File: Mathlib/Data/Int/Interval.lean

tactic: rw [← card_Ioc, Fintype.card_ofFinset]
state_before: a b : ℤ
⊢ Fintype.card ↑(Set.Ioc a b) = (b - a).toNat
state_after: no goals
Theorem: Set.SurjOn.congr
File: Mathlib/Data/Set/Function.lean

tactic: rwa [SurjOn, ← H.image_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
h : SurjOn f₁ s t
H : EqOn f₁ f₂ s
⊢ SurjOn f₂ s t
state_after: no goals
Theorem: Matrix.det_mul_comm
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: rw [det_mul, det_mul, mul_comm]
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
M N : Matrix m m R
⊢ (M * N).det = (N * M).det
state_after: no goals
Theorem: ProbabilityTheory.kernel.measurable_rnDeriv_right
File: Mathlib/Probability/Kernel/RadonNikodym.lean

tactic: change Measurable ((fun p : α × γ ↦ rnDeriv κ η p.1 p.2) ∘ (fun x ↦ (a, x)))
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
⊢ Measurable fun x => rnDeriv κ η a x
state_after: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
⊢ Measurable ((fun p => rnDeriv κ η p.1 p.2) ∘ fun x => (a, x))

tactic: exact (measurable_rnDeriv _ _).comp measurable_prod_mk_left
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
⊢ Measurable ((fun p => rnDeriv κ η p.1 p.2) ∘ fun x => (a, x))
state_after: no goals
Theorem: Nat.squarefree_iff_nodup_factors
File: Mathlib/Data/Nat/Squarefree.lean

tactic: rw [UniqueFactorizationMonoid.squarefree_iff_nodup_normalizedFactors h0, Nat.factors_eq]
state_before: n : ℕ
h0 : n ≠ 0
⊢ Squarefree n ↔ n.factors.Nodup
state_after: n : ℕ
h0 : n ≠ 0
⊢ (↑n.factors).Nodup ↔ n.factors.Nodup

tactic: simp
state_before: n : ℕ
h0 : n ≠ 0
⊢ (↑n.factors).Nodup ↔ n.factors.Nodup
state_after: no goals
Theorem: Profinite.mono_iff_injective
File: Mathlib/Topology/Category/Profinite/Basic.lean

tactic: constructor
state_before: X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Mono f ↔ Function.Injective ⇑f
state_after: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Mono f → Function.Injective ⇑f

case mpr
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Function.Injective ⇑f → Mono f

tactic: intro h
state_before: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Mono f → Function.Injective ⇑f
state_after: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
⊢ Function.Injective ⇑f

tactic: haveI : Limits.PreservesLimits profiniteToCompHaus := inferInstance
state_before: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
⊢ Function.Injective ⇑f
state_after: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this : Limits.PreservesLimits profiniteToCompHaus
⊢ Function.Injective ⇑f

tactic: haveI : Mono (profiniteToCompHaus.map f) := inferInstance
state_before: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this : Limits.PreservesLimits profiniteToCompHaus
⊢ Function.Injective ⇑f
state_after: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this✝ : Limits.PreservesLimits profiniteToCompHaus
this : Mono (profiniteToCompHaus.map f)
⊢ Function.Injective ⇑f

tactic: erw [← CompHaus.mono_iff_injective]
state_before: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this✝ : Limits.PreservesLimits profiniteToCompHaus
this : Mono (profiniteToCompHaus.map f)
⊢ Function.Injective ⇑f
state_after: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this✝ : Limits.PreservesLimits profiniteToCompHaus
this : Mono (profiniteToCompHaus.map f)
⊢ Mono f

tactic: assumption
state_before: case mp
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
h : Mono f
this✝ : Limits.PreservesLimits profiniteToCompHaus
this : Mono (profiniteToCompHaus.map f)
⊢ Mono f
state_after: no goals

tactic: rw [← CategoryTheory.mono_iff_injective]
state_before: case mpr
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Function.Injective ⇑f → Mono f
state_after: case mpr
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Mono ⇑f → Mono f

tactic: exact (forget Profinite).mono_of_mono_map (f := f)
state_before: case mpr
X✝ Y✝ : Profinite
f✝ : X✝ ⟶ Y✝
X Y : Profinite
f : X ⟶ Y
⊢ Mono ⇑f → Mono f
state_after: no goals
Theorem: FractionalIdeal.coe_inv_of_nonzero
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: simp_rw [inv_nonzero _ h, coe_one, coe_mk, IsLocalization.coeSubmodule_top]
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
R₁ : Type u_4
inst✝³ : CommRing R₁
inst✝² : IsDomain R₁
inst✝¹ : Algebra R₁ K
inst✝ : IsFractionRing R₁ K
I J✝ J : FractionalIdeal R₁⁰ K
h : J ≠ 0
⊢ ↑J⁻¹ = IsLocalization.coeSubmodule K ⊤ / ↑J
state_after: no goals
Theorem: Subfield.mem_iSup_of_directed
File: Mathlib/Algebra/Field/Subfield.lean

tactic: let s : Subfield K :=
  { __ := Subring.copy _ _ (Subring.coe_iSup_of_directed hS).symm
    inv_mem' := fun _ hx ↦ have ⟨i, hi⟩ := Set.mem_iUnion.mp hx
      Set.mem_iUnion.mpr ⟨i, (S i).inv_mem hi⟩ }
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
⊢ x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
state_after: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
s : Subfield K :=
  let __spread.0 := (⨆ i, (S i).toSubring).copy (⋃ i, ↑(S i).toSubring) ⋯;
  { toSubring := __spread.0, inv_mem' := ⋯ }
⊢ x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i

tactic: have : iSup S = s := le_antisymm
  (iSup_le fun i ↦ le_iSup (fun i ↦ (S i : Set K)) i) (Set.iUnion_subset fun _ ↦ le_iSup S _)
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
s : Subfield K :=
  let __spread.0 := (⨆ i, (S i).toSubring).copy (⋃ i, ↑(S i).toSubring) ⋯;
  { toSubring := __spread.0, inv_mem' := ⋯ }
⊢ x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
state_after: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
s : Subfield K :=
  let __spread.0 := (⨆ i, (S i).toSubring).copy (⋃ i, ↑(S i).toSubring) ⋯;
  { toSubring := __spread.0, inv_mem' := ⋯ }
this : iSup S = s
⊢ x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i

tactic: exact this ▸ Set.mem_iUnion
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
ι : Sort u_1
hι : Nonempty ι
S : ι → Subfield K
hS : Directed (fun x x_1 => x ≤ x_1) S
x : K
s : Subfield K :=
  let __spread.0 := (⨆ i, (S i).toSubring).copy (⋃ i, ↑(S i).toSubring) ⋯;
  { toSubring := __spread.0, inv_mem' := ⋯ }
this : iSup S = s
⊢ x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
state_after: no goals