1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.Pairwise.sublists'
File: Mathlib/Data/List/Sublists.lean

tactic: simp only [sublists'_cons, pairwise_append, pairwise_map, mem_sublists', mem_map, exists_imp,
  and_imp]
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
⊢ Pairwise (Lex (swap R)) (a :: l).sublists'
state_after: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
⊢ Pairwise (Lex (swap R)) l.sublists' ∧
    Pairwise (fun a_1 b => Lex (swap R) (a :: a_1) (a :: b)) l.sublists' ∧
      ∀ (a_1 : List α), a_1 <+ l → ∀ (b x : List α), x <+ l → a :: x = b → Lex (swap R) a_1 b

tactic: refine ⟨H₂.sublists', H₂.sublists'.imp fun l₁ => Lex.cons l₁, ?_⟩
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
⊢ Pairwise (Lex (swap R)) l.sublists' ∧
    Pairwise (fun a_1 b => Lex (swap R) (a :: a_1) (a :: b)) l.sublists' ∧
      ∀ (a_1 : List α), a_1 <+ l → ∀ (b x : List α), x <+ l → a :: x = b → Lex (swap R) a_1 b
state_after: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
⊢ ∀ (a_1 : List α), a_1 <+ l → ∀ (b x : List α), x <+ l → a :: x = b → Lex (swap R) a_1 b

tactic: rintro l₁ sl₁ x l₂ _ rfl
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
⊢ ∀ (a_1 : List α), a_1 <+ l → ∀ (b x : List α), x <+ l → a :: x = b → Lex (swap R) a_1 b
state_after: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₁ : List α
sl₁ : l₁ <+ l
l₂ : List α
a✝ : l₂ <+ l
⊢ Lex (swap R) l₁ (a :: l₂)

tactic: cases' l₁ with b l₁
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₁ : List α
sl₁ : l₁ <+ l
l₂ : List α
a✝ : l₂ <+ l
⊢ Lex (swap R) l₁ (a :: l₂)
state_after: case nil
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₂ : List α
a✝ : l₂ <+ l
sl₁ : [] <+ l
⊢ Lex (swap R) [] (a :: l₂)

case cons
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₂ : List α
a✝ : l₂ <+ l
b : α
l₁ : List α
sl₁ : b :: l₁ <+ l
⊢ Lex (swap R) (b :: l₁) (a :: l₂)

tactic: exact Lex.rel (H₁ _ <| sl₁.subset <| mem_cons_self _ _)
state_before: case cons
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₂ : List α
a✝ : l₂ <+ l
b : α
l₁ : List α
sl₁ : b :: l₁ <+ l
⊢ Lex (swap R) (b :: l₁) (a :: l₂)
state_after: no goals

tactic: constructor
state_before: case nil
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
a : α
l : List α
H₁ : ∀ a' ∈ l, R a a'
H₂ : Pairwise R l
l₂ : List α
a✝ : l₂ <+ l
sl₁ : [] <+ l
⊢ Lex (swap R) [] (a :: l₂)
state_after: no goals
Theorem: FermatLastTheorem.of_odd_primes
File: Mathlib/NumberTheory/FLT/Four.lean

tactic: intro n h
state_before: hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
⊢ FermatLastTheorem
state_after: hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : n ≥ 3
⊢ FermatLastTheoremFor n

tactic: rw [ge_iff_le, Nat.succ_le_iff] at h
state_before: hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : n ≥ 3
⊢ FermatLastTheoremFor n
state_after: hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
⊢ FermatLastTheoremFor n

tactic: obtain hdvd|⟨p, hpprime, hdvd, hpodd⟩ := Nat.four_dvd_or_exists_odd_prime_and_dvd_of_two_lt h <;>
  apply FermatLastTheoremWith.mono hdvd
state_before: hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
⊢ FermatLastTheoremFor n
state_after: case inl
hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
hdvd : 4 ∣ n
⊢ FermatLastTheoremWith ℕ 4

case inr.intro.intro.intro
hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
p : ℕ
hpprime : Nat.Prime p
hdvd : p ∣ n
hpodd : Odd p
⊢ FermatLastTheoremWith ℕ p

tactic: exact fermatLastTheoremFour
state_before: case inl
hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
hdvd : 4 ∣ n
⊢ FermatLastTheoremWith ℕ 4
state_after: no goals

tactic: exact hprimes p hpprime hpodd
state_before: case inr.intro.intro.intro
hprimes : ∀ (p : ℕ), Nat.Prime p → Odd p → FermatLastTheoremFor p
n : ℕ
h : 2 < n
p : ℕ
hpprime : Nat.Prime p
hdvd : p ∣ n
hpodd : Odd p
⊢ FermatLastTheoremWith ℕ p
state_after: no goals
Theorem: isOpenMap_sigma
File: Mathlib/Topology/Constructions.lean

tactic: simp only [isOpenMap_iff_nhds_le, Sigma.forall, Sigma.nhds_eq, map_map, comp]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
f : Sigma σ → X
⊢ IsOpenMap f ↔ ∀ (i : ι), IsOpenMap fun a => f ⟨i, a⟩
state_after: no goals
Theorem: PowerSeries.trunc_mul_trunc
File: Mathlib/RingTheory/PowerSeries/Trunc.lean

tactic: rw [mul_comm, trunc_trunc_mul, mul_comm]
state_before: R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
⊢ trunc n (f * ↑(trunc n g)) = trunc n (f * g)
state_after: no goals
Theorem: Cubic.disc_ne_zero_iff_roots_ne
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [← _root_.map_ne_zero φ, disc_eq_prod_three_roots ha h3, pow_two]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ P.disc ≠ 0 ↔ x ≠ y ∧ x ≠ z ∧ y ≠ z
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ φ P.a * φ P.a * (x - y) * (x - z) * (y - z) * (φ P.a * φ P.a * (x - y) * (x - z) * (y - z)) ≠ 0 ↔
    x ≠ y ∧ x ≠ z ∧ y ≠ z

tactic: simp_rw [mul_ne_zero_iff, sub_ne_zero, _root_.map_ne_zero, and_self_iff, and_iff_right ha,
  and_assoc]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ φ P.a * φ P.a * (x - y) * (x - z) * (y - z) * (φ P.a * φ P.a * (x - y) * (x - z) * (y - z)) ≠ 0 ↔
    x ≠ y ∧ x ≠ z ∧ y ≠ z
state_after: no goals
Theorem: CategoryTheory.Pretriangulated.isIso₁_of_isIso₂₃
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

tactic: dsimp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso ((invRotate C).map φ).hom₁
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso ((shiftFunctor C (-1)).map φ.hom₃)

tactic: infer_instance
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso ((shiftFunctor C (-1)).map φ.hom₃)
state_after: no goals

tactic: dsimp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso ((invRotate C).map φ).hom₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso φ.hom₂

tactic: infer_instance
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₂ : IsIso φ.hom₂
h₃ : IsIso φ.hom₃
⊢ IsIso φ.hom₂
state_after: no goals
Theorem: PEquiv.single_mul_single_right
File: Mathlib/Data/Matrix/PEquiv.lean

tactic: rw [← Matrix.mul_assoc, single_mul_single]
state_before: k : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type v
inst✝⁵ : Fintype n
inst✝⁴ : Fintype k
inst✝³ : DecidableEq n
inst✝² : DecidableEq k
inst✝¹ : DecidableEq m
inst✝ : Semiring α
a : m
b : n
c : k
M : Matrix k l α
⊢ (single a b).toMatrix * ((single b c).toMatrix * M) = (single a c).toMatrix * M
state_after: no goals
Theorem: iInf₂_comm
File: Mathlib/Order/CompleteLattice.lean

tactic: simp only [@iInf_comm _ (κ₁ _), @iInf_comm _ ι₁]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
ι₁ : Sort u_9
ι₂ : Sort u_10
κ₁ : ι₁ → Sort u_11
κ₂ : ι₂ → Sort u_12
f : (i₁ : ι₁) → κ₁ i₁ → (i₂ : ι₂) → κ₂ i₂ → α
⊢ ⨅ i₁, ⨅ j₁, ⨅ i₂, ⨅ j₂, f i₁ j₁ i₂ j₂ = ⨅ i₂, ⨅ j₂, ⨅ i₁, ⨅ j₁, f i₁ j₁ i₂ j₂
state_after: no goals
Theorem: circleMap_eq_center_iff
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: simp [circleMap, exp_ne_zero]
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
c : ℂ
R θ : ℝ
⊢ circleMap c R θ = c ↔ R = 0
state_after: no goals
Theorem: CliffordAlgebra.invOf_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Inversion.lean

tactic: letI := invertibleιOfInvertible Q m
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
m : M
inst✝¹ : Invertible (Q m)
inst✝ : Invertible ((ι Q) m)
⊢ ⅟((ι Q) m) = (ι Q) (⅟(Q m) • m)
state_after: R : Type u_1
M : Type u_2
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
m : M
inst✝¹ : Invertible (Q m)
inst✝ : Invertible ((ι Q) m)
this : Invertible ((ι Q) m) := invertibleιOfInvertible Q m
⊢ ⅟((ι Q) m) = (ι Q) (⅟(Q m) • m)

tactic: convert (rfl : ⅟ (ι Q m) = _)
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
m : M
inst✝¹ : Invertible (Q m)
inst✝ : Invertible ((ι Q) m)
this : Invertible ((ι Q) m) := invertibleιOfInvertible Q m
⊢ ⅟((ι Q) m) = (ι Q) (⅟(Q m) • m)
state_after: no goals
Theorem: Set.image_val_sInter
File: Mathlib/Data/Set/Subset.lean

tactic: erw [sInter_image]
state_before: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
hT : T.Nonempty
⊢ ↑(⋂₀ T) = ⋂₀ {x | ∃ B ∈ T, ↑B = x}
state_after: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
hT : T.Nonempty
⊢ ↑(⋂₀ T) = ⋂ x ∈ T, ↑x

tactic: rw [sInter_eq_biInter, Subtype.val_injective.injOn.image_biInter_eq hT]
state_before: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
hT : T.Nonempty
⊢ ↑(⋂₀ T) = ⋂ x ∈ T, ↑x
state_after: no goals
Theorem: WeierstrassCurve.Affine.baseChange_polynomialX
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [← map_polynomialX, map_baseChange]
state_before: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
⊢ (baseChange W B).toAffine.polynomialX = Polynomial.map (mapRingHom ↑f) (baseChange W A).toAffine.polynomialX
state_after: no goals
Theorem: BoxIntegral.Prepartition.splitMany_insert
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: rw [splitMany, Finset.inf_insert, inf_comm, splitMany]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I✝ J : Box ι
i : ι
x : ℝ
I : Box ι
s : Finset (ι × ℝ)
p : ι × ℝ
⊢ splitMany I (insert p s) = splitMany I s ⊓ split I p.1 p.2
state_after: no goals
Theorem: FreeAddMonoid.count_of
File: Mathlib/Algebra/FreeMonoid/Count.lean

tactic: simp [Pi.single, Function.update, count, countP, List.countP, List.countP.go,
  Bool.beq_eq_decide_eq]
state_before: α : Type u_1
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidableEq α
x y : α
⊢ (count x) (of y) = Pi.single x 1 y
state_after: no goals
Theorem: HasFPowerSeriesAt.add
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rcases (hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x
state_after: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
r : ℝ≥0∞
hr : HasFPowerSeriesOnBall f pf x r ∧ HasFPowerSeriesOnBall g pg x r
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x

tactic: exact ⟨r, hr.1.add hr.2⟩
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
r : ℝ≥0∞
hr : HasFPowerSeriesOnBall f pf x r ∧ HasFPowerSeriesOnBall g pg x r
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x
state_after: no goals
Theorem: EReal.image_coe_Ioi
File: Mathlib/Data/Real/EReal.lean

tactic: refine (image_comp WithBot.some WithTop.some _).trans ?_
state_before: x : ℝ
⊢ Real.toEReal '' Ioi x = Ioo ↑x ⊤
state_after: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Ioi x) = Ioo ↑x ⊤

tactic: rw [WithTop.image_coe_Ioi, WithBot.image_coe_Ioo]
state_before: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Ioi x) = Ioo ↑x ⊤
state_after: x : ℝ
⊢ Ioo ↑↑x ↑⊤ = Ioo ↑x ⊤

tactic: rfl
state_before: x : ℝ
⊢ Ioo ↑↑x ↑⊤ = Ioo ↑x ⊤
state_after: no goals
Theorem: Complex.sin_ne_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

tactic: rw [← not_exists, not_iff_not, sin_eq_zero_iff]
state_before: θ : ℂ
⊢ sin θ ≠ 0 ↔ ∀ (k : ℤ), θ ≠ ↑k * ↑π
state_after: no goals
Theorem: dvd_mul
File: Mathlib/Algebra/Divisibility/Basic.lean

tactic: refine ⟨exists_dvd_and_dvd_of_dvd_mul, ?_⟩
state_before: α : Type u_1
inst✝¹ : CommSemigroup α
a b c : α
inst✝ : DecompositionMonoid α
k m n : α
⊢ k ∣ m * n ↔ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂
state_after: α : Type u_1
inst✝¹ : CommSemigroup α
a b c : α
inst✝ : DecompositionMonoid α
k m n : α
⊢ (∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂) → k ∣ m * n

tactic: rintro ⟨d₁, d₂, hy, hz, rfl⟩
state_before: α : Type u_1
inst✝¹ : CommSemigroup α
a b c : α
inst✝ : DecompositionMonoid α
k m n : α
⊢ (∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂) → k ∣ m * n
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommSemigroup α
a b c : α
inst✝ : DecompositionMonoid α
m n d₁ d₂ : α
hy : d₁ ∣ m
hz : d₂ ∣ n
⊢ d₁ * d₂ ∣ m * n

tactic: exact mul_dvd_mul hy hz
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommSemigroup α
a b c : α
inst✝ : DecompositionMonoid α
m n d₁ d₂ : α
hy : d₁ ∣ m
hz : d₂ ∣ n
⊢ d₁ * d₂ ∣ m * n
state_after: no goals
Theorem: CategoryTheory.Presheaf.isSheaf_iff_preservesFiniteProducts_of_projective
File: Mathlib/CategoryTheory/Sites/Coherent/SheafComparison.lean

tactic: rw [isSheaf_coherent_iff_regular_and_extensive, and_iff_left (isSheaf_of_projective F),
  isSheaf_iff_preservesFiniteProducts]
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.44059, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝³ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
inst✝² : Preregular C
inst✝¹ : FinitaryExtensive C
inst✝ : ∀ (X : C), Projective X
⊢ IsSheaf (coherentTopology C) F ↔ Nonempty (PreservesFiniteProducts F)
state_after: no goals
Theorem: IsLocalization.exists_integer_multiple
File: Mathlib/RingTheory/Localization/Integer.lean

tactic: simp_rw [Algebra.smul_def, mul_comm _ a]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (↑b • a)
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (a * (algebraMap R S) ↑b)

tactic: apply exists_integer_multiple'
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
a : S
⊢ ∃ b, IsInteger R (a * (algebraMap R S) ↑b)
state_after: no goals
Theorem: Matrix.transpose_eq_diagonal
File: Mathlib/Data/Matrix/Basic.lean

tactic: rw [diagonal_transpose]
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✝¹ : DecidableEq n
inst✝ : Zero α
M : Matrix n n α
v : n → α
⊢ M = (diagonal v)ᵀ ↔ M = diagonal v
state_after: no goals
Theorem: ENNReal.mul_lt_top_iff
File: Mathlib/Data/ENNReal/Operations.lean

tactic: constructor
state_before: a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
⊢ a * b < ⊤ ↔ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0
state_after: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
⊢ a * b < ⊤ → a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0

case mpr
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
⊢ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0 → a * b < ⊤

tactic: intro h
state_before: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
⊢ a * b < ⊤ → a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0
state_after: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
⊢ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0

tactic: rw [← or_assoc, or_iff_not_imp_right, or_iff_not_imp_right]
state_before: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
⊢ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0
state_after: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
⊢ ¬b = 0 → ¬a = 0 → a < ⊤ ∧ b < ⊤

tactic: intro hb ha
state_before: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
⊢ ¬b = 0 → ¬a = 0 → a < ⊤ ∧ b < ⊤
state_after: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
hb : ¬b = 0
ha : ¬a = 0
⊢ a < ⊤ ∧ b < ⊤

tactic: exact ⟨lt_top_of_mul_ne_top_left h.ne hb, lt_top_of_mul_ne_top_right h.ne ha⟩
state_before: case mp
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
h : a * b < ⊤
hb : ¬b = 0
ha : ¬a = 0
⊢ a < ⊤ ∧ b < ⊤
state_after: no goals

tactic: rintro (⟨ha, hb⟩ | rfl | rfl) <;> [exact mul_lt_top ha.ne hb.ne; simp; simp]
state_before: case mpr
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
a b : ℝ≥0∞
⊢ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0 → a * b < ⊤
state_after: no goals
Theorem: UniformSpace.toCore_toTopologicalSpace
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [u.nhds_eq_comap_uniformity, u.toCore.nhds_toTopologicalSpace]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
u : UniformSpace α
a : α
⊢ 𝓝 a = 𝓝 a
state_after: no goals
Theorem: disjointed_le_id
File: Mathlib/Order/Disjointed.lean

tactic: rintro f n
state_before: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
⊢ disjointed ≤ id
state_after: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
n : ℕ
⊢ disjointed f n ≤ id f n

tactic: cases n
state_before: α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
n : ℕ
⊢ disjointed f n ≤ id f n
state_after: case zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
⊢ disjointed f 0 ≤ id f 0

case succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
n✝ : ℕ
⊢ disjointed f (n✝ + 1) ≤ id f (n✝ + 1)

tactic: rfl
state_before: case zero
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
⊢ disjointed f 0 ≤ id f 0
state_after: no goals

tactic: exact sdiff_le
state_before: case succ
α : Type u_1
β : Type u_2
inst✝ : GeneralizedBooleanAlgebra α
f : ℕ → α
n✝ : ℕ
⊢ disjointed f (n✝ + 1) ≤ id f (n✝ + 1)
state_after: no goals
Theorem: HasDerivAtFilter.comp
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

tactic: rw [mul_comm]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' (h x) L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
⊢ HasDerivAtFilter (h₂ ∘ h) (h₂' * h') x L
state_after: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' (h x) L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
⊢ HasDerivAtFilter (h₂ ∘ h) (h' * h₂') x L

tactic: exact hh₂.scomp x hh hL
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' (h x) L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
⊢ HasDerivAtFilter (h₂ ∘ h) (h' * h₂') x L
state_after: no goals
Theorem: ContractingWith.dist_le_of_fixedPoint
File: Mathlib/Topology/MetricSpace/Contracting.lean

tactic: simpa only [hy.eq, dist_self, add_zero] using hf.dist_inequality x y
state_before: α : Type u_1
inst✝ : MetricSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
x y : α
hy : IsFixedPt f y
⊢ dist x y ≤ dist x (f x) / (1 - ↑K)
state_after: no goals
Theorem: HurwitzZeta.completedCosZeta₀_zero
File: Mathlib/NumberTheory/LSeries/RiemannZeta.lean

tactic: rw [completedRiemannZeta₀, completedHurwitzZetaEven₀, completedCosZeta₀,
  hurwitzEvenFEPair_zero_symm]
state_before: s : ℂ
⊢ completedCosZeta₀ 0 s = completedRiemannZeta₀ s
state_after: no goals