1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Surreal.Multiplication.P1_of_eq
File: Mathlib/SetTheory/Surreal/Multiplication.lean

tactic: rw [P1, ← h₁ he, ← h₃ he, sub_lt_sub_iff]
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
he : x₁ ≈ x₃
h₁ : P2 x₁ x₃ y₁
h₃ : P2 x₁ x₃ y₃
h3 : P3 x₁ x₂ y₂ y₃
⊢ P1 x₁ x₂ x₃ y₁ y₂ y₃
state_after: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
he : x₁ ≈ x₃
h₁ : P2 x₁ x₃ y₁
h₃ : P2 x₁ x₃ y₃
h3 : P3 x₁ x₂ y₂ y₃
⊢ ⟦x₁ * y₁⟧ + ⟦x₂ * y₂⟧ + ⟦x₁ * y₃⟧ < ⟦x₁ * y₁⟧ + ⟦x₂ * y₃⟧ + ⟦x₁ * y₂⟧

tactic: convert add_lt_add_left h3 ⟦x₁ * y₁⟧ using 1 <;> abel
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
he : x₁ ≈ x₃
h₁ : P2 x₁ x₃ y₁
h₃ : P2 x₁ x₃ y₃
h3 : P3 x₁ x₂ y₂ y₃
⊢ ⟦x₁ * y₁⟧ + ⟦x₂ * y₂⟧ + ⟦x₁ * y₃⟧ < ⟦x₁ * y₁⟧ + ⟦x₂ * y₃⟧ + ⟦x₁ * y₂⟧
state_after: no goals
Theorem: WittVector.mapFun.mul
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: map_fun_tac
state_before: p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
f : R →+* S
x y : 𝕎 R
⊢ mapFun (⇑f) (x * y) = mapFun (⇑f) x * mapFun (⇑f) y
state_after: no goals
Theorem: compl_le_compl_iff_le
File: Mathlib/Order/BooleanAlgebra.lean

tactic: have h := compl_le_compl h
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : yᶜ ≤ xᶜ
⊢ x ≤ y
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h✝ : yᶜ ≤ xᶜ
h : xᶜᶜ ≤ yᶜᶜ
⊢ x ≤ y

tactic: simpa using h
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h✝ : yᶜ ≤ xᶜ
h : xᶜᶜ ≤ yᶜᶜ
⊢ x ≤ y
state_after: no goals
Theorem: ZMod.χ₄_nat_mod_four
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: rw [← ZMod.natCast_mod n 4]
state_before: n : ℕ
⊢ χ₄ ↑n = χ₄ ↑(n % 4)
state_after: no goals
Theorem: DFinsupp.erase_add_single
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: subst h
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
i : ι
f : Π₀ (i : ι), β i
i' : ι
h : i = i'
⊢ (erase i f + single i (f i)) i' = f i'
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
i : ι
f : Π₀ (i : ι), β i
⊢ (erase i f + single i (f i)) i = f i

tactic: simp only [add_apply, single_apply, erase_apply, zero_add, dite_eq_ite, if_true]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
i : ι
f : Π₀ (i : ι), β i
⊢ (erase i f + single i (f i)) i = f i
state_after: no goals

tactic: simp only [add_apply, single_apply, erase_apply, dif_neg h, if_neg (Ne.symm h), add_zero]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → AddZeroClass (β i)
i : ι
f : Π₀ (i : ι), β i
i' : ι
h : ¬i = i'
⊢ (erase i f + single i (f i)) i' = f i'
state_after: no goals
Theorem: LinearEquiv.det_conj
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: rw [← Units.eq_iff, coe_det, coe_det, ← comp_coe, ← comp_coe, LinearMap.det_conj]
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type u_3
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
f : M ≃ₗ[R] M
e : M ≃ₗ[R] M'
⊢ LinearEquiv.det (e.symm ≪≫ₗ f ≪≫ₗ e) = LinearEquiv.det f
state_after: no goals
Theorem: Ideal.map_mul
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [_root_.map_mul]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
r : R
hri : r ∈ I
s : R
hsj : s ∈ J
⊢ f (r * s) ∈ map f I * map f J
state_after: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
r : R
hri : r ∈ I
s : R
hsj : s ∈ J
⊢ f r * f s ∈ map f I * map f J

tactic: exact mul_mem_mul (mem_map_of_mem f hri) (mem_map_of_mem f hsj)
state_before: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
r : R
hri : r ∈ I
s : R
hsj : s ∈ J
⊢ f r * f s ∈ map f I * map f J
state_after: no goals

tactic: rw [← _root_.map_mul]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
i : S
x✝¹ : i ∈ ⇑f '' ↑I
r : R
hri : r ∈ ↑I
hfri : f r = i
j : S
x✝ : j ∈ ⇑f '' ↑J
s : R
hsj : s ∈ ↑J
hfsj : f s = j
⊢ f r * f s ∈ ↑(map f (I * J))
state_after: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
i : S
x✝¹ : i ∈ ⇑f '' ↑I
r : R
hri : r ∈ ↑I
hfri : f r = i
j : S
x✝ : j ∈ ⇑f '' ↑J
s : R
hsj : s ∈ ↑J
hfsj : f s = j
⊢ f (r * s) ∈ ↑(map f (I * J))

tactic: exact mem_map_of_mem f (mul_mem_mul hri hsj)
state_before: R : Type u
S : Type v
F : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
i : S
x✝¹ : i ∈ ⇑f '' ↑I
r : R
hri : r ∈ ↑I
hfri : f r = i
j : S
x✝ : j ∈ ⇑f '' ↑J
s : R
hsj : s ∈ ↑J
hfsj : f s = j
⊢ f (r * s) ∈ ↑(map f (I * J))
state_after: no goals
Theorem: Set.encard_pos
File: Mathlib/Data/Set/Card.lean

tactic: rw [pos_iff_ne_zero, encard_ne_zero]
state_before: α : Type u_1
β : Type u_2
s t : Set α
⊢ 0 < s.encard ↔ s.Nonempty
state_after: no goals
Theorem: CategoryTheory.IsIso.inv_hom_id_assoc
File: Mathlib/CategoryTheory/Iso.lean

tactic: simp [← Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z✝ : C
f : X ⟶ Y
I : IsIso f
Z : C
g : Y ⟶ Z
⊢ inv f ≫ f ≫ g = g
state_after: no goals
Theorem: MeasureTheory.AEEqFun.ext
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rwa [← f.mk_coeFn, ← g.mk_coeFn, mk_eq_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f g : α →ₘ[μ] β
h : ↑f =ᶠ[ae μ] ↑g
⊢ f = g
state_after: no goals
Theorem: minpoly.coeff_zero_ne_zero
File: Mathlib/FieldTheory/Minpoly/Field.lean

tactic: contrapose! h
state_before: A : Type u_1
B : Type u_2
inst✝³ : Field A
inst✝² : Ring B
inst✝¹ : IsDomain B
inst✝ : Algebra A B
x : B
hx : IsIntegral A x
h : x ≠ 0
⊢ (minpoly A x).coeff 0 ≠ 0
state_after: A : Type u_1
B : Type u_2
inst✝³ : Field A
inst✝² : Ring B
inst✝¹ : IsDomain B
inst✝ : Algebra A B
x : B
hx : IsIntegral A x
h : (minpoly A x).coeff 0 = 0
⊢ x = 0

tactic: simpa only [hx, coeff_zero_eq_zero] using h
state_before: A : Type u_1
B : Type u_2
inst✝³ : Field A
inst✝² : Ring B
inst✝¹ : IsDomain B
inst✝ : Algebra A B
x : B
hx : IsIntegral A x
h : (minpoly A x).coeff 0 = 0
⊢ x = 0
state_after: no goals
Theorem: IsClosed.trans
File: Mathlib/Topology/Constructions.lean

tactic: rcases isClosed_induced_iff.mp ht with ⟨s', hs', rfl⟩
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
s : Set X
t : Set ↑s
ht : IsClosed t
hs : IsClosed s
⊢ IsClosed (Subtype.val '' t)
state_after: case intro.intro
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
s : Set X
hs : IsClosed s
s' : Set X
hs' : IsClosed s'
ht : IsClosed (Subtype.val ⁻¹' s')
⊢ IsClosed (Subtype.val '' (Subtype.val ⁻¹' s'))

tactic: rw [Subtype.image_preimage_coe]
state_before: case intro.intro
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
s : Set X
hs : IsClosed s
s' : Set X
hs' : IsClosed s'
ht : IsClosed (Subtype.val ⁻¹' s')
⊢ IsClosed (Subtype.val '' (Subtype.val ⁻¹' s'))
state_after: case intro.intro
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
s : Set X
hs : IsClosed s
s' : Set X
hs' : IsClosed s'
ht : IsClosed (Subtype.val ⁻¹' s')
⊢ IsClosed (s ∩ s')

tactic: exact hs.inter hs'
state_before: case intro.intro
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
s : Set X
hs : IsClosed s
s' : Set X
hs' : IsClosed s'
ht : IsClosed (Subtype.val ⁻¹' s')
⊢ IsClosed (s ∩ s')
state_after: no goals
Theorem: Ordinal.lt_limit
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [not_forall₂, not_le, bex_def] using not_congr (@limit_le _ h a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
h : o.IsLimit
a : Ordinal.{u_4}
⊢ a < o ↔ ∃ x < o, a < x
state_after: no goals
Theorem: Matrix.IsAdjMatrix.apply_diag_ne
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: simp [h.apply_diag i]
state_before: V : Type u_1
α : Type u_2
β : Type u_3
A : Matrix V V α
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
h : A.IsAdjMatrix
i : V
⊢ ¬A i i = 1
state_after: no goals
Theorem: ENNReal.smul_top
File: Mathlib/Data/ENNReal/Operations.lean

tactic: rw [← smul_one_mul, mul_top']
state_before: a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
R : Type u_1
inst✝⁴ : Zero R
inst✝³ : SMulWithZero R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : NoZeroSMulDivisors R ℝ≥0∞
inst✝ : DecidableEq R
c : R
⊢ c • ⊤ = if c = 0 then 0 else ⊤
state_after: a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
R : Type u_1
inst✝⁴ : Zero R
inst✝³ : SMulWithZero R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : NoZeroSMulDivisors R ℝ≥0∞
inst✝ : DecidableEq R
c : R
⊢ (if c • 1 = 0 then 0 else ⊤) = if c = 0 then 0 else ⊤

tactic: simp_rw [smul_eq_zero, or_iff_left (one_ne_zero' ℝ≥0∞)]
state_before: a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
R : Type u_1
inst✝⁴ : Zero R
inst✝³ : SMulWithZero R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : NoZeroSMulDivisors R ℝ≥0∞
inst✝ : DecidableEq R
c : R
⊢ (if c • 1 = 0 then 0 else ⊤) = if c = 0 then 0 else ⊤
state_after: no goals
Theorem: UpperHalfPlane.cosh_half_dist
File: Mathlib/Analysis/Complex/UpperHalfPlane/Metric.lean

tactic: rw [← sq_eq_sq, cosh_sq', sinh_half_dist, div_pow, div_pow, one_add_div, mul_pow, sq_sqrt]
state_before: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ cosh (dist z w / 2) = dist (↑z) ((starRingEnd ℂ) ↑w) / (2 * √(z.im * w.im))
state_after: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ (2 ^ 2 * (z.im * w.im) + dist ↑z ↑w ^ 2) / (2 ^ 2 * (z.im * w.im)) =
    dist (↑z) ((starRingEnd ℂ) ↑w) ^ 2 / (2 ^ 2 * (z.im * w.im))

z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ z.im * w.im

z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ (2 * √(z.im * w.im)) ^ 2 ≠ 0

case ha
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ cosh (dist z w / 2)

case hb
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ dist (↑z) ((starRingEnd ℂ) ↑w) / (2 * √(z.im * w.im))

tactic: all_goals positivity
state_before: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ z.im * w.im

z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ (2 * √(z.im * w.im)) ^ 2 ≠ 0

case ha
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ cosh (dist z w / 2)

case hb
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ dist (↑z) ((starRingEnd ℂ) ↑w) / (2 * √(z.im * w.im))
state_after: no goals

tactic: congr 1
state_before: z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ (2 ^ 2 * (z.im * w.im) + dist ↑z ↑w ^ 2) / (2 ^ 2 * (z.im * w.im)) =
    dist (↑z) ((starRingEnd ℂ) ↑w) ^ 2 / (2 ^ 2 * (z.im * w.im))
state_after: case e_a
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 ^ 2 * (z.im * w.im) + dist ↑z ↑w ^ 2 = dist (↑z) ((starRingEnd ℂ) ↑w) ^ 2

tactic: simp only [Complex.dist_eq, Complex.sq_abs, Complex.normSq_sub, Complex.normSq_conj,
  Complex.conj_conj, Complex.mul_re, Complex.conj_re, Complex.conj_im, coe_im]
state_before: case e_a
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 ^ 2 * (z.im * w.im) + dist ↑z ↑w ^ 2 = dist (↑z) ((starRingEnd ℂ) ↑w) ^ 2
state_after: case e_a
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 ^ 2 * (z.im * w.im) + (Complex.normSq ↑z + Complex.normSq ↑w - 2 * ((↑z).re * (↑w).re - z.im * -w.im)) =
    Complex.normSq ↑z + Complex.normSq ↑w - 2 * ((↑z).re * (↑w).re - z.im * w.im)

tactic: ring
state_before: case e_a
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 2 ^ 2 * (z.im * w.im) + (Complex.normSq ↑z + Complex.normSq ↑w - 2 * ((↑z).re * (↑w).re - z.im * -w.im)) =
    Complex.normSq ↑z + Complex.normSq ↑w - 2 * ((↑z).re * (↑w).re - z.im * w.im)
state_after: no goals

tactic: positivity
state_before: case hb
z✝ w✝ : ℍ
r R : ℝ
z w : ℍ
⊢ 0 ≤ dist (↑z) ((starRingEnd ℂ) ↑w) / (2 * √(z.im * w.im))
state_after: no goals
Theorem: PiLp.edist_comm
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: rcases p.trichotomy with (rfl | rfl | h)
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp p β
⊢ edist f g = edist g f
state_after: case inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp 0 β
⊢ edist f g = edist g f

case inr.inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp ⊤ β
⊢ edist f g = edist g f

case inr.inr
p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp p β
h : 0 < p.toReal
⊢ edist f g = edist g f

tactic: simp only [edist_eq_card, edist_comm]
state_before: case inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp 0 β
⊢ edist f g = edist g f
state_after: no goals

tactic: simp only [edist_eq_iSup, edist_comm]
state_before: case inr.inl
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp ⊤ β
⊢ edist f g = edist g f
state_after: no goals

tactic: simp only [edist_eq_sum h, edist_comm]
state_before: case inr.inr
p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f g : PiLp p β
h : 0 < p.toReal
⊢ edist f g = edist g f
state_after: no goals
Theorem: Polynomial.mem_aroots'
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [mem_roots', IsRoot.def, ← eval₂_eq_eval_map, aeval_def]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
p✝ q : R[X]
inst✝³ : CommRing T
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
p : T[X]
a : S
⊢ a ∈ p.aroots S ↔ map (algebraMap T S) p ≠ 0 ∧ (aeval a) p = 0
state_after: no goals
Theorem: PolyEquivTensor.toFunLinear_mul_tmul_mul_aux_2
File: Mathlib/RingTheory/PolynomialAlgebra.lean

tactic: simp_rw [mul_assoc, Algebra.commutes, ← Finset.mul_sum, mul_assoc, ← Finset.mul_sum]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ a₁ * a₂ * (algebraMap R A) ((p₁ * p₂).coeff k) =
    ∑ x ∈ Finset.antidiagonal k, a₁ * (algebraMap R A) (p₁.coeff x.1) * (a₂ * (algebraMap R A) (p₂.coeff x.2))
state_after: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ a₁ * (a₂ * (algebraMap R A) ((p₁ * p₂).coeff k)) =
    a₁ * (a₂ * ∑ i ∈ Finset.antidiagonal k, (algebraMap R A) (p₂.coeff i.2) * (algebraMap R A) (p₁.coeff i.1))

tactic: congr
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ a₁ * (a₂ * (algebraMap R A) ((p₁ * p₂).coeff k)) =
    a₁ * (a₂ * ∑ i ∈ Finset.antidiagonal k, (algebraMap R A) (p₂.coeff i.2) * (algebraMap R A) (p₁.coeff i.1))
state_after: case e_a.e_a
R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ (algebraMap R A) ((p₁ * p₂).coeff k) =
    ∑ i ∈ Finset.antidiagonal k, (algebraMap R A) (p₂.coeff i.2) * (algebraMap R A) (p₁.coeff i.1)

tactic: simp_rw [Algebra.commutes (coeff p₂ _), coeff_mul, map_sum, RingHom.map_mul]
state_before: case e_a.e_a
R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ (algebraMap R A) ((p₁ * p₂).coeff k) =
    ∑ i ∈ Finset.antidiagonal k, (algebraMap R A) (p₂.coeff i.2) * (algebraMap R A) (p₁.coeff i.1)
state_after: no goals
Theorem: Filter.Tendsto.inseparable_iff_uniformity
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: refine ⟨fun h ↦ (ha.prod_mk_nhds hb).mono_right h.nhds_le_uniformity, fun h ↦ ?_⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
l : Filter β
inst✝ : l.NeBot
f g : β → α
a b : α
ha : Tendsto f l (𝓝 a)
hb : Tendsto g l (𝓝 b)
⊢ Inseparable a b ↔ Tendsto (fun x => (f x, g x)) l (𝓤 α)
state_after: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
l : Filter β
inst✝ : l.NeBot
f g : β → α
a b : α
ha : Tendsto f l (𝓝 a)
hb : Tendsto g l (𝓝 b)
h : Tendsto (fun x => (f x, g x)) l (𝓤 α)
⊢ Inseparable a b

tactic: rw [inseparable_iff_clusterPt_uniformity]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
l : Filter β
inst✝ : l.NeBot
f g : β → α
a b : α
ha : Tendsto f l (𝓝 a)
hb : Tendsto g l (𝓝 b)
h : Tendsto (fun x => (f x, g x)) l (𝓤 α)
⊢ Inseparable a b
state_after: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
l : Filter β
inst✝ : l.NeBot
f g : β → α
a b : α
ha : Tendsto f l (𝓝 a)
hb : Tendsto g l (𝓝 b)
h : Tendsto (fun x => (f x, g x)) l (𝓤 α)
⊢ ClusterPt (a, b) (𝓤 α)

tactic: exact (ClusterPt.of_le_nhds (ha.prod_mk_nhds hb)).mono h
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
l : Filter β
inst✝ : l.NeBot
f g : β → α
a b : α
ha : Tendsto f l (𝓝 a)
hb : Tendsto g l (𝓝 b)
h : Tendsto (fun x => (f x, g x)) l (𝓤 α)
⊢ ClusterPt (a, b) (𝓤 α)
state_after: no goals
Theorem: MonotoneOn.intervalIntegrable
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rw [intervalIntegrable_iff]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
μ : Measure ℝ
inst✝³ : IsLocallyFiniteMeasure μ
inst✝² : ConditionallyCompleteLinearOrder E
inst✝¹ : OrderTopology E
inst✝ : SecondCountableTopology E
u : ℝ → E
a b : ℝ
hu : MonotoneOn u [[a, b]]
⊢ IntervalIntegrable u μ a b
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
μ : Measure ℝ
inst✝³ : IsLocallyFiniteMeasure μ
inst✝² : ConditionallyCompleteLinearOrder E
inst✝¹ : OrderTopology E
inst✝ : SecondCountableTopology E
u : ℝ → E
a b : ℝ
hu : MonotoneOn u [[a, b]]
⊢ IntegrableOn u (Ι a b) μ

tactic: exact (hu.integrableOn_isCompact isCompact_uIcc).mono_set Ioc_subset_Icc_self
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
μ : Measure ℝ
inst✝³ : IsLocallyFiniteMeasure μ
inst✝² : ConditionallyCompleteLinearOrder E
inst✝¹ : OrderTopology E
inst✝ : SecondCountableTopology E
u : ℝ → E
a b : ℝ
hu : MonotoneOn u [[a, b]]
⊢ IntegrableOn u (Ι a b) μ
state_after: no goals
Theorem: Set.encard_le_coe_iff
File: Mathlib/Data/Set/Card.lean

tactic: rwa [ENat.le_coe_iff] at h
state_before: α : Type u_1
β : Type u_2
s t : Set α
k : ℕ
h : s.encard ≤ ↑k
⊢ ∃ n₀, s.encard = ↑n₀ ∧ n₀ ≤ k
state_after: no goals

tactic: rwa [hs, Nat.cast_le]
state_before: α : Type u_1
β : Type u_2
s t : Set α
k : ℕ
x✝ : s.Finite ∧ ∃ n₀, s.encard = ↑n₀ ∧ n₀ ≤ k
left✝ : s.Finite
n₀ : ℕ
hs : s.encard = ↑n₀
hle : n₀ ≤ k
⊢ s.encard ≤ ↑k
state_after: no goals
Theorem: kstar_le_of_mul_le_left
File: Mathlib/Algebra/Order/Kleene.lean

tactic: simpa using mul_kstar_le hb
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝ : KleeneAlgebra α
a b c : α
hb : 1 ≤ b
⊢ b * a ≤ b → a∗ ≤ b
state_after: no goals
Theorem: Set.unbounded_lt_inter_lt
File: Mathlib/Order/Bounded.lean

tactic: rw [← not_bounded_iff, ← not_bounded_iff, not_iff_not]
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝¹ : LinearOrder α
inst✝ : NoMaxOrder α
a : α
⊢ Unbounded (fun x x_1 => x < x_1) (s ∩ {b | a < b}) ↔ Unbounded (fun x x_1 => x < x_1) s
state_after: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝¹ : LinearOrder α
inst✝ : NoMaxOrder α
a : α
⊢ Bounded (fun x x_1 => x < x_1) (s ∩ {b | a < b}) ↔ Bounded (fun x x_1 => x < x_1) s

tactic: exact bounded_lt_inter_lt a
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝¹ : LinearOrder α
inst✝ : NoMaxOrder α
a : α
⊢ Bounded (fun x x_1 => x < x_1) (s ∩ {b | a < b}) ↔ Bounded (fun x x_1 => x < x_1) s
state_after: no goals
Theorem: Metric.thickening_closure
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: simp_rw [thickening, infEdist_closure]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
⊢ thickening δ (closure s) = thickening δ s
state_after: no goals
Theorem: CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

tactic: convert (sheafIso (asIso (whiskerLeft G.op α.val))).isIso_hom using 1
state_before: C : Type u_1
inst✝⁵ : Category.{u_7, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.119011, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{u_6, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft G.op α.val)
⊢ IsIso α
state_after: case h.e'_5
C : Type u_1
inst✝⁵ : Category.{u_7, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.119011, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{u_6, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft G.op α.val)
⊢ α = (sheafIso (asIso (whiskerLeft G.op α.val))).hom

tactic: ext1
state_before: case h.e'_5
C : Type u_1
inst✝⁵ : Category.{u_7, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.119011, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{u_6, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft G.op α.val)
⊢ α = (sheafIso (asIso (whiskerLeft G.op α.val))).hom
state_after: case h.e'_5.h
C : Type u_1
inst✝⁵ : Category.{u_7, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.119011, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{u_6, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft G.op α.val)
⊢ α.val = (sheafIso (asIso (whiskerLeft G.op α.val))).hom.val

tactic: apply (sheafHom_eq _ _).symm
state_before: case h.e'_5.h
C : Type u_1
inst✝⁵ : Category.{u_7, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.119011, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{u_6, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft G.op α.val)
⊢ α.val = (sheafIso (asIso (whiskerLeft G.op α.val))).hom.val
state_after: no goals