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

tactic: rw [← gcd_eq_one_iff_coprime, Nat.coprime_iff_gcd_eq_one, gcd_eq_natAbs]
state_before: a b : ℤ
⊢ IsCoprime a b ↔ a.natAbs.Coprime b.natAbs
state_after: no goals
Theorem: bernsteinPolynomial.flip'
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

tactic: simp [← flip _ _ _ h, Polynomial.comp_assoc]
state_before: R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ν ≤ n
⊢ bernsteinPolynomial R n ν = (bernsteinPolynomial R n (n - ν)).comp (1 - X)
state_after: no goals
Theorem: Batteries.UnionFind.parent_lt
File: .lake/packages/batteries/Batteries/Data/UnionFind/Basic.lean

tactic: simp only [parentD]
state_before: self : UnionFind
i : Nat
⊢ self.parent i < self.size ↔ i < self.size
state_after: self : UnionFind
i : Nat
⊢ (if h : i < self.arr.size then (self.arr.get ⟨i, h⟩).parent else i) < self.size ↔ i < self.size

tactic: split <;> simp only [*, parent'_lt]
state_before: self : UnionFind
i : Nat
⊢ (if h : i < self.arr.size then (self.arr.get ⟨i, h⟩).parent else i) < self.size ↔ i < self.size
state_after: no goals
Theorem: Polynomial.Monic.sub_of_left
File: Mathlib/Algebra/Polynomial/Monic.lean

tactic: rw [sub_eq_add_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hp : p.Monic
hpq : q.degree < p.degree
⊢ (p - q).Monic
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hp : p.Monic
hpq : q.degree < p.degree
⊢ (p + -q).Monic

tactic: apply hp.add_of_left
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hp : p.Monic
hpq : q.degree < p.degree
⊢ (p + -q).Monic
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hp : p.Monic
hpq : q.degree < p.degree
⊢ (-q).degree < p.degree

tactic: rwa [degree_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hp : p.Monic
hpq : q.degree < p.degree
⊢ (-q).degree < p.degree
state_after: no goals
Theorem: sdiff_sup_self
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sup_comm, sup_sdiff_self, sup_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c d a b : α
⊢ b \ a ⊔ a = b ⊔ a
state_after: no goals
Theorem: le_iff_le_of_cmp_eq_cmp
File: Mathlib/Order/Compare.lean

tactic: rw [← not_lt, ← not_lt]
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ x ≤ y ↔ x' ≤ y'
state_after: α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ ¬y < x ↔ ¬y' < x'

tactic: apply not_congr
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ ¬y < x ↔ ¬y' < x'
state_after: case h
α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ y < x ↔ y' < x'

tactic: apply lt_iff_lt_of_cmp_eq_cmp
state_before: case h
α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ y < x ↔ y' < x'
state_after: case h.h
α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ cmp y x = cmp y' x'

tactic: rwa [cmp_eq_cmp_symm]
state_before: case h.h
α : Type u_1
β✝ : Type u_2
inst✝¹ : LinearOrder α
x y : α
β : Type u_3
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ cmp y x = cmp y' x'
state_after: no goals
Theorem: Stream'.cons_get_inits_core
File: Mathlib/Data/Stream/Init.lean

tactic: intro a n
state_before: α : Type u
β : Type v
δ : Type w
⊢ ∀ (a : α) (n : ℕ) (l : List α) (s : Stream' α), a :: (initsCore l s).get n = (initsCore (a :: l) s).get n
state_after: α : Type u
β : Type v
δ : Type w
a : α
n : ℕ
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n = (initsCore (a :: l) s).get n

tactic: induction' n with n' ih
state_before: α : Type u
β : Type v
δ : Type w
a : α
n : ℕ
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n = (initsCore (a :: l) s).get n
state_after: case zero
α : Type u
β : Type v
δ : Type w
a : α
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get 0 = (initsCore (a :: l) s).get 0

case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get (n' + 1) = (initsCore (a :: l) s).get (n' + 1)

tactic: intros
state_before: case zero
α : Type u
β : Type v
δ : Type w
a : α
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get 0 = (initsCore (a :: l) s).get 0
state_after: case zero
α : Type u
β : Type v
δ : Type w
a : α
l✝ : List α
s✝ : Stream' α
⊢ a :: (initsCore l✝ s✝).get 0 = (initsCore (a :: l✝) s✝).get 0

tactic: rfl
state_before: case zero
α : Type u
β : Type v
δ : Type w
a : α
l✝ : List α
s✝ : Stream' α
⊢ a :: (initsCore l✝ s✝).get 0 = (initsCore (a :: l✝) s✝).get 0
state_after: no goals

tactic: intro l s
state_before: case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
⊢ ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get (n' + 1) = (initsCore (a :: l) s).get (n' + 1)
state_after: case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
l : List α
s : Stream' α
⊢ a :: (initsCore l s).get (n' + 1) = (initsCore (a :: l) s).get (n' + 1)

tactic: rw [get_succ, inits_core_eq, tail_cons, ih, inits_core_eq (a::l) s]
state_before: case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
l : List α
s : Stream' α
⊢ a :: (initsCore l s).get (n' + 1) = (initsCore (a :: l) s).get (n' + 1)
state_after: case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
l : List α
s : Stream' α
⊢ (initsCore (a :: (l ++ [s.head])) s.tail).get n' = ((a :: l) :: initsCore (a :: l ++ [s.head]) s.tail).get (n' + 1)

tactic: rfl
state_before: case succ
α : Type u
β : Type v
δ : Type w
a : α
n' : ℕ
ih : ∀ (l : List α) (s : Stream' α), a :: (initsCore l s).get n' = (initsCore (a :: l) s).get n'
l : List α
s : Stream' α
⊢ (initsCore (a :: (l ++ [s.head])) s.tail).get n' = ((a :: l) :: initsCore (a :: l ++ [s.head]) s.tail).get (n' + 1)
state_after: no goals
Theorem: Real.hasStrictDerivAt_rpow_const
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: rwa [← Nat.cast_one] at hx
state_before: z x✝ y x p : ℝ
hx : x ≠ 0 ∨ 1 ≤ p
⊢ x ≠ 0 ∨ ↑One.one ≤ p
state_after: no goals
Theorem: Finset.centerMass_insert
File: Mathlib/Analysis/Convex/Combination.lean

tactic: simp only [centerMass, sum_insert ha, smul_add, (mul_smul _ _ _).symm, ← div_eq_inv_mul]
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : i ∉ t
hw : ∑ j ∈ t, w j ≠ 0
⊢ (insert i t).centerMass w z =
    (w i / (w i + ∑ j ∈ t, w j)) • z i + ((∑ j ∈ t, w j) / (w i + ∑ j ∈ t, w j)) • t.centerMass w z
state_after: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : i ∉ t
hw : ∑ j ∈ t, w j ≠ 0
⊢ (w i / (w i + ∑ i ∈ t, w i)) • z i + (w i + ∑ i ∈ t, w i)⁻¹ • ∑ i ∈ t, w i • z i =
    (w i / (w i + ∑ i ∈ t, w i)) • z i + ((∑ i ∈ t, w i) / (w i + ∑ i ∈ t, w i) * (∑ i ∈ t, w i)⁻¹) • ∑ i ∈ t, w i • z i

tactic: congr 2
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : i ∉ t
hw : ∑ j ∈ t, w j ≠ 0
⊢ (w i / (w i + ∑ i ∈ t, w i)) • z i + (w i + ∑ i ∈ t, w i)⁻¹ • ∑ i ∈ t, w i • z i =
    (w i / (w i + ∑ i ∈ t, w i)) • z i + ((∑ i ∈ t, w i) / (w i + ∑ i ∈ t, w i) * (∑ i ∈ t, w i)⁻¹) • ∑ i ∈ t, w i • z i
state_after: case e_a.e_a
R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : i ∉ t
hw : ∑ j ∈ t, w j ≠ 0
⊢ (w i + ∑ i ∈ t, w i)⁻¹ = (∑ i ∈ t, w i) / (w i + ∑ i ∈ t, w i) * (∑ i ∈ t, w i)⁻¹

tactic: rw [div_mul_eq_mul_div, mul_inv_cancel hw, one_div]
state_before: case e_a.e_a
R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : i ∉ t
hw : ∑ j ∈ t, w j ≠ 0
⊢ (w i + ∑ i ∈ t, w i)⁻¹ = (∑ i ∈ t, w i) / (w i + ∑ i ∈ t, w i) * (∑ i ∈ t, w i)⁻¹
state_after: no goals
Theorem: div_helper
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [div_mul_eq_mul_div, one_mul, div_mul_cancel_left₀ h, one_div]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : CommGroupWithZero G₀
a b✝ c d b : G₀
h : a ≠ 0
⊢ 1 / (a * b) * a = 1 / b
state_after: no goals
Theorem: HomologicalComplex.d_comp_XIsoOfEq_inv
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: subst h
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₂ p₃ : ι
h : p₃ = p₂
p₁ : ι
⊢ K.d p₁ p₂ ≫ (K.XIsoOfEq h).inv = K.d p₁ p₃
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₃ p₁ : ι
⊢ K.d p₁ p₃ ≫ (K.XIsoOfEq ⋯).inv = K.d p₁ p₃

tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₃ p₁ : ι
⊢ K.d p₁ p₃ ≫ (K.XIsoOfEq ⋯).inv = K.d p₁ p₃
state_after: no goals
Theorem: Matrix.adjugate_smul
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: rw [adjugate, adjugate, transpose_smul, cramer_smul]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
r : α
A : Matrix n n α
⊢ (r • A).adjugate = r ^ (Fintype.card n - 1) • A.adjugate
state_after: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
r : α
A : Matrix n n α
⊢ (of fun i => (r ^ (Fintype.card n - 1) • Aᵀ.cramer) (Pi.single i 1)) =
    r ^ (Fintype.card n - 1) • of fun i => Aᵀ.cramer (Pi.single i 1)

tactic: rfl
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
r : α
A : Matrix n n α
⊢ (of fun i => (r ^ (Fintype.card n - 1) • Aᵀ.cramer) (Pi.single i 1)) =
    r ^ (Fintype.card n - 1) • of fun i => Aᵀ.cramer (Pi.single i 1)
state_after: no goals
Theorem: coe_upperClosure
File: Mathlib/Order/UpperLower/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
⊢ ↑(upperClosure s) = ⋃ a ∈ s, Ici a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
x✝ : α
⊢ x✝ ∈ ↑(upperClosure s) ↔ x✝ ∈ ⋃ a ∈ s, Ici a

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
x✝ : α
⊢ x✝ ∈ ↑(upperClosure s) ↔ x✝ ∈ ⋃ a ∈ s, Ici a
state_after: no goals
Theorem: intervalIntegral.measure_integral_sub_integral_sub_linear_isLittleO_of_tendsto_ae_right
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa using
  measure_integral_sub_integral_sub_linear_isLittleO_of_tendsto_ae hab stronglyMeasurableAt_bot
    hmeas ((tendsto_bot : Tendsto _ ⊥ (𝓝 (0 : E))).mono_left inf_le_left) hf
    (tendsto_const_pure : Tendsto _ _ (pure a)) tendsto_const_pure hu hv
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
f : ℝ → E
a b : ℝ
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
μ : Measure ℝ
u v ua va ub vb : ι → ℝ
inst✝³ : CompleteSpace E
inst✝² : FTCFilter a la la'
inst✝¹ : FTCFilter b lb lb'
inst✝ : IsLocallyFiniteMeasure μ
hab : IntervalIntegrable f μ a b
hmeas : StronglyMeasurableAtFilter f lb' μ
hf : Tendsto f (lb' ⊓ ae μ) (𝓝 c)
hu : Tendsto u lt lb
hv : Tendsto v lt lb
⊢ (fun t => ∫ (x : ℝ) in a..v t, f x ∂μ - ∫ (x : ℝ) in a..u t, f x ∂μ - ∫ (x : ℝ) in u t..v t, c ∂μ) =o[lt] fun t =>
    ∫ (x : ℝ) in u t..v t, 1 ∂μ
state_after: no goals
Theorem: ContDiffWithinAt.sub
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
s : Set E
f g : E → F
hf : ContDiffWithinAt 𝕜 n f s x
hg : ContDiffWithinAt 𝕜 n g s x
⊢ ContDiffWithinAt 𝕜 n (fun x => f x - g x) s x
state_after: no goals
Theorem: Filter.comap_map
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [preimage_image_eq s h, Subset.rfl]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s✝ : Set α
t : Set β
f : Filter α
m : α → β
h : Injective m
s : Set α
hs : s ∈ f
⊢ m ⁻¹' (m '' s) ⊆ s
state_after: no goals
Theorem: UpperSet.coe_iInf₂
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp_rw [coe_iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
S : Set (UpperSet α)
s t : UpperSet α
a : α
f : (i : ι) → κ i → UpperSet α
⊢ ↑(⨅ i, ⨅ j, f i j) = ⋃ i, ⋃ j, ↑(f i j)
state_after: no goals
Theorem: AlgebraicGeometry.isAffine_of_isIso
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

tactic: rw [← mem_Spec_essImage] at h ⊢
state_before: X Y : Scheme
f : X ⟶ Y
inst✝ : IsIso f
h : IsAffine Y
⊢ IsAffine X
state_after: X Y : Scheme
f : X ⟶ Y
inst✝ : IsIso f
h : Y ∈ Scheme.Spec.essImage
⊢ X ∈ Scheme.Spec.essImage

tactic: exact Functor.essImage.ofIso (asIso f).symm h
state_before: X Y : Scheme
f : X ⟶ Y
inst✝ : IsIso f
h : Y ∈ Scheme.Spec.essImage
⊢ X ∈ Scheme.Spec.essImage
state_after: no goals
Theorem: Nat.mem_smoothNumbersUpTo
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: simp [smoothNumbersUpTo, lt_succ]
state_before: N k n : ℕ
⊢ n ∈ N.smoothNumbersUpTo k ↔ n ≤ N ∧ n ∈ k.smoothNumbers
state_after: no goals
Theorem: Equiv.optionSubtypeNe_symm_self
File: Mathlib/Logic/Equiv/Option.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
a✝ b a : α
⊢ (optionSubtypeNe a).symm a = none
state_after: no goals
Theorem: CauSeq.mul_inv_cancel
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: simpa [(abv_pos abv).1 (lt_of_lt_of_le K0 (H _ ij)), abv_zero abv] using ε0
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f.LimZero
ε : α
ε0 : ε > 0
K : α
K0 : K > 0
i : ℕ
H : ∀ j ≥ i, K ≤ abv (↑f j)
j : ℕ
ij : j ≥ i
⊢ abv (↑(f * f.inv hf - 1) j) < ε
state_after: no goals
Theorem: MulAction.mul_stabilizer_self
File: Mathlib/Algebra/Pointwise/Stabilizer.lean

tactic: rw [mul_comm, stabilizer_mul_self]
state_before: G : Type u_1
inst✝ : CommGroup G
s : Set G
⊢ s * ↑(stabilizer G s) = s
state_after: no goals
Theorem: CategoryTheory.ShortComplex.comp_homologyMap_comp
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: dsimp only [LeftHomologyData.homologyIso, RightHomologyData.homologyIso,
  Iso.symm, Iso.trans, Iso.refl, leftHomologyIso, rightHomologyIso,
  leftHomologyMapIso', rightHomologyMapIso',
  LeftHomologyData.cyclesIso, RightHomologyData.opcyclesIso,
  LeftHomologyData.leftHomologyIso, RightHomologyData.rightHomologyIso,
  homologyMap, homologyMap']
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁✝ : S₁.HomologyData
h₂✝ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.RightHomologyData
⊢ h₁.π ≫ h₁.homologyIso.inv ≫ homologyMap φ ≫ h₂.homologyIso.hom ≫ h₂.ι = h₁.i ≫ φ.τ₂ ≫ h₂.p
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁✝ : S₁.HomologyData
h₂✝ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.RightHomologyData
⊢ h₁.π ≫
      (leftHomologyMap' (𝟙 S₁) h₁ S₁.leftHomologyData ≫
          leftHomologyMap' (𝟙 S₁) S₁.leftHomologyData S₁.homologyData.left) ≫
        leftHomologyMap' φ S₁.homologyData.left S₂.homologyData.left ≫
          ((S₂.homologyData.iso.hom ≫ rightHomologyMap' (𝟙 S₂) S₂.homologyData.right S₂.rightHomologyData) ≫
              rightHomologyMap' (𝟙 S₂) S₂.rightHomologyData h₂) ≫
            h₂.ι =
    h₁.i ≫ φ.τ₂ ≫ h₂.p

tactic: simp only [assoc, rightHomologyι_naturality', rightHomologyι_naturality'_assoc,
  leftHomologyπ_naturality'_assoc, HomologyData.comm_assoc, p_opcyclesMap'_assoc,
  id_τ₂, p_opcyclesMap', id_comp, cyclesMap'_i_assoc]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁✝ : S₁.HomologyData
h₂✝ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.RightHomologyData
⊢ h₁.π ≫
      (leftHomologyMap' (𝟙 S₁) h₁ S₁.leftHomologyData ≫
          leftHomologyMap' (𝟙 S₁) S₁.leftHomologyData S₁.homologyData.left) ≫
        leftHomologyMap' φ S₁.homologyData.left S₂.homologyData.left ≫
          ((S₂.homologyData.iso.hom ≫ rightHomologyMap' (𝟙 S₂) S₂.homologyData.right S₂.rightHomologyData) ≫
              rightHomologyMap' (𝟙 S₂) S₂.rightHomologyData h₂) ≫
            h₂.ι =
    h₁.i ≫ φ.τ₂ ≫ h₂.p
state_after: no goals
Theorem: Set.Subsingleton.einfsep
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: rw [einfsep_top]
state_before: α : Type u_1
β : Type u_2
inst✝ : EDist α
x y : α
s t : Set α
hs : s.Subsingleton
⊢ s.einfsep = ⊤
state_after: α : Type u_1
β : Type u_2
inst✝ : EDist α
x y : α
s t : Set α
hs : s.Subsingleton
⊢ ∀ x ∈ s, ∀ y ∈ s, x ≠ y → edist x y = ⊤

tactic: exact fun _ hx _ hy hxy => (hxy <| hs hx hy).elim
state_before: α : Type u_1
β : Type u_2
inst✝ : EDist α
x y : α
s t : Set α
hs : s.Subsingleton
⊢ ∀ x ∈ s, ∀ y ∈ s, x ≠ y → edist x y = ⊤
state_after: no goals
Theorem: ZNum.of_natCast
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← Int.cast_natCast, of_intCast, Int.cast_natCast]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
n : ℕ
⊢ ↑↑n = ↑n
state_after: no goals
Theorem: Complex.tan_eq_zero_iff'
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

tactic: simp only [tan, hθ, div_eq_zero_iff, sin_eq_zero_iff]
state_before: θ : ℂ
hθ : cos θ ≠ 0
⊢ tan θ = 0 ↔ ∃ k, ↑k * ↑π = θ
state_after: θ : ℂ
hθ : cos θ ≠ 0
⊢ (∃ k, θ = ↑k * ↑π) ∨ False ↔ ∃ k, ↑k * ↑π = θ

tactic: simp [eq_comm]
state_before: θ : ℂ
hθ : cos θ ≠ 0
⊢ (∃ k, θ = ↑k * ↑π) ∨ False ↔ ∃ k, ↑k * ↑π = θ
state_after: no goals
Theorem: Ordinal.mul_mod
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa using mul_add_mod_self x y 0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
x y : Ordinal.{u_4}
⊢ x * y % x = 0
state_after: no goals
Theorem: Submodule.isOrtho_sSup_right
File: Mathlib/Analysis/InnerProductSpace/Orthogonal.lean

tactic: simp_rw [isOrtho_comm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
U : Submodule 𝕜 E
V : Set (Submodule 𝕜 E)
⊢ (∀ Uᵢ ∈ V, Uᵢ ⟂ U) ↔ ∀ Vᵢ ∈ V, U ⟂ Vᵢ
state_after: no goals
Theorem: Set.image_image2_distrib
File: Mathlib/Data/Set/NAry.lean

tactic: simp_rw [image_image2, image2_image_left, image2_image_right, h_distrib]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f'✝ : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
g : γ → δ
f' : α' → β' → δ
g₁ : α → α'
g₂ : β → β'
h_distrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ a) (g₂ b)
⊢ g '' image2 f s t = image2 f' (g₁ '' s) (g₂ '' t)
state_after: no goals
Theorem: padicNormE.image
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: rw [← hn]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ_[p]
f : CauSeq ℚ (padicNorm p)
hf : ⟦f⟧ ≠ 0
this : ¬f ≈ 0
n : ℤ
hn : PadicSeq.norm f = ↑p ^ (-n)
⊢ ‖⟦f⟧‖ = ↑(↑p ^ (-n))
state_after: p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ_[p]
f : CauSeq ℚ (padicNorm p)
hf : ⟦f⟧ ≠ 0
this : ¬f ≈ 0
n : ℤ
hn : PadicSeq.norm f = ↑p ^ (-n)
⊢ ‖⟦f⟧‖ = ↑(PadicSeq.norm f)

tactic: rfl
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ_[p]
f : CauSeq ℚ (padicNorm p)
hf : ⟦f⟧ ≠ 0
this : ¬f ≈ 0
n : ℤ
hn : PadicSeq.norm f = ↑p ^ (-n)
⊢ ‖⟦f⟧‖ = ↑(PadicSeq.norm f)
state_after: no goals
Theorem: Set.prod_eq_iff_eq
File: Mathlib/Data/Set/Prod.lean

tactic: simp_rw [prod_eq_prod_iff, ht.ne_empty, and_true_iff, or_iff_left_iff_imp,
  or_false_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
ht : t.Nonempty
⊢ s ×ˢ t = s₁ ×ˢ t ↔ s = s₁
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
ht : t.Nonempty
⊢ s = ∅ ∧ s₁ = ∅ → s = s₁

tactic: rintro ⟨rfl, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
ht : t.Nonempty
⊢ s = ∅ ∧ s₁ = ∅ → s = s₁
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
ht : t.Nonempty
⊢ ∅ = ∅

tactic: rfl
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
ht : t.Nonempty
⊢ ∅ = ∅
state_after: no goals