1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HNNExtension.inv_t_mul_of
File: Mathlib/GroupTheory/HNNExtension.lean

tactic: rw [equiv_symm_eq_conj]
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
b : ↥B
⊢ t⁻¹ * of ↑b = of ↑(φ.symm b) * t⁻¹
state_after: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
b : ↥B
⊢ t⁻¹ * of ↑b = t⁻¹ * of ↑b * t * t⁻¹

tactic: simp
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
b : ↥B
⊢ t⁻¹ * of ↑b = t⁻¹ * of ↑b * t * t⁻¹
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.comap_id'
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rwa [PrimeSpectrum.comap_id]
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
U : Opens ↑(PrimeSpectrum.Top R)
p : ↑(PrimeSpectrum.Top R)
hpU : p ∈ U.carrier
⊢ p ∈ ⇑(PrimeSpectrum.comap (RingHom.id R)) ⁻¹' U.carrier
state_after: no goals

tactic: rw [comap_id rfl]
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
U : Opens ↑(PrimeSpectrum.Top R)
⊢ comap (RingHom.id R) U U ⋯ = RingHom.id ↑((structureSheaf R).val.obj { unop := U })
state_after: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
U : Opens ↑(PrimeSpectrum.Top R)
⊢ eqToHom ⋯ = RingHom.id ↑((structureSheaf R).val.obj { unop := U })

tactic: rfl
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
U : Opens ↑(PrimeSpectrum.Top R)
⊢ eqToHom ⋯ = RingHom.id ↑((structureSheaf R).val.obj { unop := U })
state_after: no goals
Theorem: Cardinal.exists_eq_of_iSup_eq_of_not_isLimit
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: cases not_not.mp e
state_before: α β ι : Type u
hι : Nonempty ι
f : ι → Cardinal.{v}
hf : BddAbove (range f)
ω : Cardinal.{v}
hω : ¬ω.IsLimit
h : ⨆ i, f i = ω
e : ¬ω ≠ 0
⊢ f hι.some = ω
state_after: case refl
α β ι : Type u
hι : Nonempty ι
f : ι → Cardinal.{v}
hf : BddAbove (range f)
hω : ¬IsLimit 0
h : ⨆ i, f i = 0
e : ¬0 ≠ 0
⊢ f hι.some = 0

tactic: rw [← le_zero_iff] at h ⊢
state_before: case refl
α β ι : Type u
hι : Nonempty ι
f : ι → Cardinal.{v}
hf : BddAbove (range f)
hω : ¬IsLimit 0
h : ⨆ i, f i = 0
e : ¬0 ≠ 0
⊢ f hι.some = 0
state_after: case refl
α β ι : Type u
hι : Nonempty ι
f : ι → Cardinal.{v}
hf : BddAbove (range f)
hω : ¬IsLimit 0
h : ⨆ i, f i ≤ 0
e : ¬0 ≠ 0
⊢ f hι.some ≤ 0

tactic: exact (le_ciSup hf _).trans h
state_before: case refl
α β ι : Type u
hι : Nonempty ι
f : ι → Cardinal.{v}
hf : BddAbove (range f)
hω : ¬IsLimit 0
h : ⨆ i, f i ≤ 0
e : ¬0 ≠ 0
⊢ f hι.some ≤ 0
state_after: no goals
Theorem: CategoryTheory.Limits.inr_zeroCoprodIso_hom
File: Mathlib/CategoryTheory/Limits/Constructions/ZeroObjects.lean

tactic: dsimp [zeroCoprodIso, binaryCofanZeroLeft]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ coprod.inr ≫ (zeroCoprodIso X).hom = 𝟙 X
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ coprod.inr ≫
      (colimit.isoColimitCocone { cocone := BinaryCofan.mk 0 (𝟙 X), isColimit := binaryCofanZeroLeftIsColimit X }).hom =
    𝟙 X

tactic: simp
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ coprod.inr ≫
      (colimit.isoColimitCocone { cocone := BinaryCofan.mk 0 (𝟙 X), isColimit := binaryCofanZeroLeftIsColimit X }).hom =
    𝟙 X
state_after: no goals
Theorem: SemiconjBy.neg_right
File: Mathlib/Algebra/Ring/Semiconj.lean

tactic: simp only [SemiconjBy, h.eq, neg_mul, mul_neg]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝¹ : Mul R
inst✝ : HasDistribNeg R
a x y : R
h : SemiconjBy a x y
⊢ SemiconjBy a (-x) (-y)
state_after: no goals
Theorem: RingHom.not_one_mem_ker
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [mem_ker, map_one]
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ 1 ∉ ker f
state_after: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ ¬1 = 0

tactic: exact one_ne_zero
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ ¬1 = 0
state_after: no goals
Theorem: mem_nhdsSet_iff_forall
File: Mathlib/Topology/NhdsSet.lean

tactic: simp_rw [nhdsSet, Filter.mem_sSup, forall_mem_image]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : Filter X
s t s₁ s₂ t₁ t₂ : Set X
x : X
⊢ s ∈ 𝓝ˢ t ↔ ∀ x ∈ t, s ∈ 𝓝 x
state_after: no goals
Theorem: geom_sum_Ico'
File: Mathlib/Algebra/GeomSum.lean

tactic: simp only [geom_sum_Ico hx hmn]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ ∑ i ∈ Ico m n, x ^ i = (x ^ m - x ^ n) / (1 - x)
state_after: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ (x ^ n - x ^ m) / (x - 1) = (x ^ m - x ^ n) / (1 - x)

tactic: convert neg_div_neg_eq (x ^ m - x ^ n) (1 - x) using 2 <;> abel
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ (x ^ n - x ^ m) / (x - 1) = (x ^ m - x ^ n) / (1 - x)
state_after: no goals
Theorem: Finset.eq_singleton_or_nontrivial
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← coe_eq_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a b : α
ha : a ∈ s
⊢ s = {a} ∨ s.Nontrivial
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a b : α
ha : a ∈ s
⊢ ↑s = {a} ∨ s.Nontrivial

tactic: exact Set.eq_singleton_or_nontrivial ha
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a b : α
ha : a ∈ s
⊢ ↑s = {a} ∨ s.Nontrivial
state_after: no goals
Theorem: Matroid.Restriction.subset
File: Mathlib/Data/Matroid/Restrict.lean

tactic: obtain ⟨R, hR, rfl⟩ := h
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
h : N ≤r M
⊢ N.E ⊆ M.E
state_after: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y R : Set α
hR : R ⊆ M.E
⊢ (M ↾ R).E ⊆ M.E

tactic: exact hR
state_before: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y R : Set α
hR : R ⊆ M.E
⊢ (M ↾ R).E ⊆ M.E
state_after: no goals
Theorem: interior_subset_iff
File: Mathlib/Topology/Basic.lean

tactic: simp [interior]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ interior s ⊆ t ↔ ∀ (U : Set X), IsOpen U → U ⊆ s → U ⊆ t
state_after: no goals
Theorem: MeasureTheory.ae_dirac_eq
File: Mathlib/MeasureTheory/Measure/Dirac.lean

tactic: ext s
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a✝ : α
inst✝ : MeasurableSingletonClass α
a : α
⊢ ae (dirac a) = pure a
state_after: case a
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s✝ : Set α
a✝ : α
inst✝ : MeasurableSingletonClass α
a : α
s : Set α
⊢ s ∈ ae (dirac a) ↔ s ∈ pure a

tactic: simp [mem_ae_iff, imp_false]
state_before: case a
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s✝ : Set α
a✝ : α
inst✝ : MeasurableSingletonClass α
a : α
s : Set α
⊢ s ∈ ae (dirac a) ↔ s ∈ pure a
state_after: no goals
Theorem: exists_pos_lt_mul
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [← div_eq_inv_mul, lt_div_iff hc₀]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a✝ b✝ c✝ d e : α
m n : ℤ
a : α
h : 0 < a
b c : α
hc₀ : 0 < c
hc : b * c < a
⊢ b < c⁻¹ * a
state_after: no goals
Theorem: CategoryTheory.Limits.IsColimit.hom_desc
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

tactic: intros
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
m : t.pt ⟶ W
⊢ ∀ ⦃X Y : J⦄ (f : X ⟶ Y), F.map f ≫ (fun b => t.ι.app b ≫ m) Y = (fun b => t.ι.app b ≫ m) X ≫ ((const J).obj W).map f
state_after: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
m : t.pt ⟶ W
X✝ Y✝ : J
f✝ : X✝ ⟶ Y✝
⊢ F.map f✝ ≫ (fun b => t.ι.app b ≫ m) Y✝ = (fun b => t.ι.app b ≫ m) X✝ ≫ ((const J).obj W).map f✝

tactic: erw [← assoc, t.ι.naturality, comp_id, comp_id]
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
m : t.pt ⟶ W
X✝ Y✝ : J
f✝ : X✝ ⟶ Y✝
⊢ F.map f✝ ≫ (fun b => t.ι.app b ≫ m) Y✝ = (fun b => t.ι.app b ≫ m) X✝ ≫ ((const J).obj W).map f✝
state_after: no goals
Theorem: Ideal.IsIntegralClosure.eq_bot_of_comap_eq_bot
File: Mathlib/RingTheory/Ideal/Over.lean

tactic: contrapose
state_before: R : Type u_1
inst✝⁹ : CommRing R
S : Type u_2
inst✝⁸ : CommRing S
f : R →+* S
I✝ J : Ideal S
inst✝⁷ : Algebra R S
A : Type u_3
inst✝⁶ : CommRing A
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra A S
inst✝³ : IsScalarTower R A S
inst✝² : IsIntegralClosure A R S
inst✝¹ : IsDomain A
inst✝ : Nontrivial R
I : Ideal A
⊢ comap (algebraMap R A) I = ⊥ → I = ⊥
state_after: R : Type u_1
inst✝⁹ : CommRing R
S : Type u_2
inst✝⁸ : CommRing S
f : R →+* S
I✝ J : Ideal S
inst✝⁷ : Algebra R S
A : Type u_3
inst✝⁶ : CommRing A
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra A S
inst✝³ : IsScalarTower R A S
inst✝² : IsIntegralClosure A R S
inst✝¹ : IsDomain A
inst✝ : Nontrivial R
I : Ideal A
⊢ ¬I = ⊥ → ¬comap (algebraMap R A) I = ⊥

tactic: exact (IsIntegralClosure.comap_ne_bot S)
state_before: R : Type u_1
inst✝⁹ : CommRing R
S : Type u_2
inst✝⁸ : CommRing S
f : R →+* S
I✝ J : Ideal S
inst✝⁷ : Algebra R S
A : Type u_3
inst✝⁶ : CommRing A
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra A S
inst✝³ : IsScalarTower R A S
inst✝² : IsIntegralClosure A R S
inst✝¹ : IsDomain A
inst✝ : Nontrivial R
I : Ideal A
⊢ ¬I = ⊥ → ¬comap (algebraMap R A) I = ⊥
state_after: no goals
Theorem: Real.dist_le_of_mem_Icc
File: Mathlib/Topology/MetricSpace/Pseudo/Lemmas.lean

tactic: simpa only [Real.dist_eq, abs_of_nonpos (sub_nonpos.2 <| hx.1.trans hx.2), neg_sub] using
  Real.dist_le_of_mem_uIcc (Icc_subset_uIcc hx) (Icc_subset_uIcc hy)
state_before: ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x y x' y' : ℝ
hx : x ∈ Icc x' y'
hy : y ∈ Icc x' y'
⊢ dist x y ≤ y' - x'
state_after: no goals
Theorem: Function.Semiconj.surjOn_image
File: Mathlib/Data/Set/Function.lean

tactic: rintro y ⟨x, hxt, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
⊢ SurjOn fb (f '' s) (f '' t)
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxt : x ∈ t
⊢ f x ∈ fb '' (f '' s)

tactic: rcases ha hxt with ⟨x, hxs, rfl⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxt : x ∈ t
⊢ f x ∈ fb '' (f '' s)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxs : x ∈ s
hxt : fa x ∈ t
⊢ f (fa x) ∈ fb '' (f '' s)

tactic: rw [h x]
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxs : x ∈ s
hxt : fa x ∈ t
⊢ f (fa x) ∈ fb '' (f '' s)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxs : x ∈ s
hxt : fa x ∈ t
⊢ fb (f x) ∈ fb '' (f '' s)

tactic: exact mem_image_of_mem _ (mem_image_of_mem _ hxs)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : SurjOn fa s t
x : α
hxs : x ∈ s
hxt : fa x ∈ t
⊢ fb (f x) ∈ fb '' (f '' s)
state_after: no goals
Theorem: Nat.bit0_le_bit1_iff
File: Mathlib/Data/Nat/Bits.lean

tactic: refine ⟨fun h ↦ ?_, fun h ↦ le_of_lt (Nat.bit0_lt_bit1 h)⟩
state_before: m n : ℕ
⊢ bit0 m ≤ bit1 n ↔ m ≤ n
state_after: m n : ℕ
h : bit0 m ≤ bit1 n
⊢ m ≤ n

tactic: rwa [← Nat.lt_succ_iff, n.bit1_eq_succ_bit0, ← n.bit0_succ_eq, Nat.bit0_lt_bit0, Nat.lt_succ_iff]
  at h
state_before: m n : ℕ
h : bit0 m ≤ bit1 n
⊢ m ≤ n
state_after: no goals
Theorem: TensorProduct.lift_compr₂
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: simp
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M →ₗ[R] N →ₗ[R] P
g : P →ₗ[R] Q
x✝¹ : M
x✝ : N
⊢ (g ∘ₗ lift f) (x✝¹ ⊗ₜ[R] x✝) = ((f.compr₂ g) x✝¹) x✝
state_after: no goals
Theorem: DualNumber.lift_smul
File: Mathlib/Algebra/DualNumber.lean

tactic: rw [← inl_mul_eq_smul, map_mul, lift_apply_inl]
state_before: R : Type u_1
A✝ : Type u_2
B : Type u_3
A : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
fe : { fe // fe.2 * fe.2 = 0 ∧ ∀ (a : A), Commute fe.2 (fe.1 a) }
a : A
ad : A[ε]
⊢ (lift fe) (a • ad) = (↑fe).1 a * (lift fe) ad
state_after: no goals
Theorem: tendsto_pow_div_pow_atTop_atTop
File: Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

tactic: rw [tendsto_congr' pow_div_pow_eventuallyEq_atTop]
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
hpq : q < p
⊢ Tendsto (fun x => x ^ p / x ^ q) atTop atTop
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
hpq : q < p
⊢ Tendsto (fun x => x ^ (↑p - ↑q)) atTop atTop

tactic: apply tendsto_zpow_atTop_atTop
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
hpq : q < p
⊢ Tendsto (fun x => x ^ (↑p - ↑q)) atTop atTop
state_after: case hn
𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
hpq : q < p
⊢ 0 < ↑p - ↑q

tactic: omega
state_before: case hn
𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
hpq : q < p
⊢ 0 < ↑p - ↑q
state_after: no goals
Theorem: ProbabilityTheory.kernel.integral_const
File: Mathlib/Probability/Kernel/Basic.lean

tactic: rw [kernel.const_apply]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : β → E
μ : Measure β
a : α
⊢ ∫ (x : β), f x ∂(const α μ) a = ∫ (x : β), f x ∂μ
state_after: no goals
Theorem: Ordinal.isNormal_iff_lt_succ_and_blsub_eq
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [isNormal_iff_lt_succ_and_bsup_eq.{u, v}, and_congr_right_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ IsNormal f ↔
    (∀ (a : Ordinal.{u}), f a < f (succ a)) ∧ ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ (∀ (a : Ordinal.{u}), f a < f (succ a)) →
    ((∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
      ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o)

tactic: intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ (∀ (a : Ordinal.{u}), f a < f (succ a)) →
    ((∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
      ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
h : ∀ (a : Ordinal.{u}), f a < f (succ a)
⊢ (∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
    ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o

tactic: constructor <;> intro H o ho <;> have := H o ho <;>
  rwa [← bsup_eq_blsub_of_lt_succ_limit ho fun a _ => h a] at *
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
h : ∀ (a : Ordinal.{u}), f a < f (succ a)
⊢ (∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
    ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o
state_after: no goals
Theorem: QuadraticForm.polar_comp
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [polar, Pi.smul_apply, Function.comp_apply, map_sub]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
F : Type u_6
inst✝² : CommRing S
inst✝¹ : FunLike F R S
inst✝ : AddMonoidHomClass F R S
f : M → R
g : F
x y : M
⊢ polar (⇑g ∘ f) x y = g (polar f x y)
state_after: no goals
Theorem: legendreSym.sq_one'
File: Mathlib/NumberTheory/LegendreSymbol/Basic.lean

tactic: dsimp only [legendreSym]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
⊢ legendreSym p (a ^ 2) = 1
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
⊢ (quadraticChar (ZMod p)) ↑(a ^ 2) = 1

tactic: rw [Int.cast_pow]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
⊢ (quadraticChar (ZMod p)) ↑(a ^ 2) = 1
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
⊢ (quadraticChar (ZMod p)) (↑a ^ 2) = 1

tactic: exact quadraticChar_sq_one' ha
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
⊢ (quadraticChar (ZMod p)) (↑a ^ 2) = 1
state_after: no goals
Theorem: Submodule.pow_toAddSubmonoid
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: induction' n with n ih
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
h : n ≠ 0
⊢ (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
state_after: case zero
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
h : 0 ≠ 0
⊢ (M ^ 0).toAddSubmonoid = M.toAddSubmonoid ^ 0

case succ
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
ih : n ≠ 0 → (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
h : n + 1 ≠ 0
⊢ (M ^ (n + 1)).toAddSubmonoid = M.toAddSubmonoid ^ (n + 1)

tactic: exact (h rfl).elim
state_before: case zero
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
h : 0 ≠ 0
⊢ (M ^ 0).toAddSubmonoid = M.toAddSubmonoid ^ 0
state_after: no goals

tactic: rw [pow_succ, pow_succ, mul_toAddSubmonoid]
state_before: case succ
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
ih : n ≠ 0 → (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
h : n + 1 ≠ 0
⊢ (M ^ (n + 1)).toAddSubmonoid = M.toAddSubmonoid ^ (n + 1)
state_after: case succ
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
ih : n ≠ 0 → (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
h : n + 1 ≠ 0
⊢ (M ^ n).toAddSubmonoid * M.toAddSubmonoid = M.toAddSubmonoid ^ n * M.toAddSubmonoid

tactic: cases n with
| zero => rw [pow_zero, pow_zero, one_mul, ← mul_toAddSubmonoid, one_mul]
| succ n => rw [ih n.succ_ne_zero]
state_before: case succ
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
ih : n ≠ 0 → (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
h : n + 1 ≠ 0
⊢ (M ^ n).toAddSubmonoid * M.toAddSubmonoid = M.toAddSubmonoid ^ n * M.toAddSubmonoid
state_after: no goals

tactic: rw [pow_zero, pow_zero, one_mul, ← mul_toAddSubmonoid, one_mul]
state_before: case succ.zero
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
ih : 0 ≠ 0 → (M ^ 0).toAddSubmonoid = M.toAddSubmonoid ^ 0
h : 0 + 1 ≠ 0
⊢ (M ^ 0).toAddSubmonoid * M.toAddSubmonoid = M.toAddSubmonoid ^ 0 * M.toAddSubmonoid
state_after: no goals

tactic: rw [ih n.succ_ne_zero]
state_before: case succ.succ
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
ih : n + 1 ≠ 0 → (M ^ (n + 1)).toAddSubmonoid = M.toAddSubmonoid ^ (n + 1)
h : n + 1 + 1 ≠ 0
⊢ (M ^ (n + 1)).toAddSubmonoid * M.toAddSubmonoid = M.toAddSubmonoid ^ (n + 1) * M.toAddSubmonoid
state_after: no goals
Theorem: Finsupp.sum_cons
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: rw [sum_fintype _ _ (fun _ => rfl), sum_fintype _ _ (fun _ => rfl)]
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝³ : AddCommMonoid A
inst✝² : AddCommMonoid B
inst✝¹ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝ : AddCommMonoid M
n : ℕ
σ : Fin n →₀ M
i : M
⊢ ((cons i σ).sum fun x e => e) = i + σ.sum fun x e => e
state_after: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝³ : AddCommMonoid A
inst✝² : AddCommMonoid B
inst✝¹ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝ : AddCommMonoid M
n : ℕ
σ : Fin n →₀ M
i : M
⊢ ∑ i_1 : Fin (n + 1), (cons i σ) i_1 = i + ∑ i : Fin n, σ i

tactic: exact Fin.sum_cons i σ
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝³ : AddCommMonoid A
inst✝² : AddCommMonoid B
inst✝¹ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝ : AddCommMonoid M
n : ℕ
σ : Fin n →₀ M
i : M
⊢ ∑ i_1 : Fin (n + 1), (cons i σ) i_1 = i + ∑ i : Fin n, σ i
state_after: no goals
Theorem: Associates.mul_mono
File: Mathlib/Algebra/Associated.lean

tactic: simp [hx, hy, mul_comm, mul_assoc, mul_left_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a b c d : Associates α
h₁ : a ≤ b
h₂ : c ≤ d
x : Associates α
hx : b = a * x
y : Associates α
hy : d = c * y
⊢ b * d = a * c * (x * y)
state_after: no goals