1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WeierstrassCurve.Projective.nonsingular_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rw [Nonsingular, eval_polynomialX, eval_polynomialY, eval_polynomialZ, sub_ne_zero, sub_ne_zero,
  ← sub_ne_zero (a := P y * P z)]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Nonsingular P ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 ≠ -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2) ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2) ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)

tactic: congr! 4
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2) ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2) ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: case a.h.e'_2.h.e'_2.h.e'_1.h.e'_2
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 = P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2)

tactic: ring1
state_before: case a.h.e'_2.h.e'_2.h.e'_1.h.e'_2
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 = P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2)
state_after: no goals
Theorem: MeasureTheory.pdf.IsUniform.aemeasurable
File: Mathlib/Probability/Distributions/Uniform.lean

tactic: dsimp [IsUniform, ProbabilityTheory.cond] at hu
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : IsUniform X s ℙ μ
⊢ AEMeasurable X ℙ
state_after: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : Measure.map X ℙ = (μ s)⁻¹ • μ.restrict s
⊢ AEMeasurable X ℙ

tactic: by_contra h
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : Measure.map X ℙ = (μ s)⁻¹ • μ.restrict s
⊢ AEMeasurable X ℙ
state_after: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : Measure.map X ℙ = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ False

tactic: rw [map_of_not_aemeasurable h] at hu
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : Measure.map X ℙ = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ False
state_after: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : 0 = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ False

tactic: apply zero_ne_one' ℝ≥0∞
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : 0 = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ False
state_after: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : 0 = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ 0 = 1

tactic: calc
  0 = (0 : Measure E) Set.univ := rfl
  _ = _ := by rw [hu, smul_apply, restrict_apply MeasurableSet.univ,
    Set.univ_inter, smul_eq_mul, ENNReal.inv_mul_cancel hns hnt]
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : 0 = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ 0 = 1
state_after: no goals

tactic: rw [hu, smul_apply, restrict_apply MeasurableSet.univ,
Set.univ_inter, smul_eq_mul, ENNReal.inv_mul_cancel hns hnt]
state_before: E : Type u_1
inst✝ : MeasurableSpace E
m μ : Measure E
Ω : Type u_2
x✝ : MeasurableSpace Ω
ℙ : Measure Ω
X : Ω → E
s : Set E
hns : μ s ≠ 0
hnt : μ s ≠ ⊤
hu : 0 = (μ s)⁻¹ • μ.restrict s
h : ¬AEMeasurable X ℙ
⊢ 0 Set.univ = 1
state_after: no goals
Theorem: RingHom.expChar
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: cases ‹ExpChar A p› with
| zero => haveI := f.charZero; exact .zero
| prime hp => haveI := f.charP H p; exact .prime hp
state_before: R✝ : Type u
R : Type u_1
A : Type u_2
inst✝² : Semiring R
inst✝¹ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
inst✝ : ExpChar A p
⊢ ExpChar R p
state_after: no goals

tactic: haveI := f.charZero
state_before: case zero
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝² : Semiring R
inst✝¹ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
inst✝ : CharZero A
⊢ ExpChar R 1
state_after: case zero
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝² : Semiring R
inst✝¹ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
inst✝ : CharZero A
this : CharZero R
⊢ ExpChar R 1

tactic: exact .zero
state_before: case zero
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝² : Semiring R
inst✝¹ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
inst✝ : CharZero A
this : CharZero R
⊢ ExpChar R 1
state_after: no goals

tactic: haveI := f.charP H p
state_before: case prime
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝¹ : Semiring R
inst✝ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
hp : Nat.Prime p
hchar✝ : CharP A p
⊢ ExpChar R p
state_after: case prime
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝¹ : Semiring R
inst✝ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
hp : Nat.Prime p
hchar✝ : CharP A p
this : CharP R p
⊢ ExpChar R p

tactic: exact .prime hp
state_before: case prime
R✝ : Type u
R : Type u_1
A : Type u_2
inst✝¹ : Semiring R
inst✝ : Semiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
hp : Nat.Prime p
hchar✝ : CharP A p
this : CharP R p
⊢ ExpChar R p
state_after: no goals
Theorem: TopologicalSpace.IsTopologicalBasis.mem_closure_iff
File: Mathlib/Topology/Bases.lean

tactic: simp only [and_imp]
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
b : Set (Set α)
hb : IsTopologicalBasis b
s : Set α
a : α
⊢ (∀ (i : Set α), i ∈ b ∧ a ∈ i → (i ∩ s).Nonempty) ↔ ∀ o ∈ b, a ∈ o → (o ∩ s).Nonempty
state_after: no goals
Theorem: constant_of_monotoneOn_antitoneOn
File: Mathlib/Order/Directed.lean

tactic: rintro a ha b hb
state_before: α : Type u
β : Type v
ι : Sort w
r r' s✝ : α → α → Prop
inst✝¹ : Preorder α
a : α
inst✝ : PartialOrder β
f : α → β
s : Set α
hf : MonotoneOn f s
hf' : AntitoneOn f s
hs : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ ∀ ⦃a : α⦄, a ∈ s → ∀ ⦃b : α⦄, b ∈ s → f a = f b
state_after: α : Type u
β : Type v
ι : Sort w
r r' s✝ : α → α → Prop
inst✝¹ : Preorder α
a✝ : α
inst✝ : PartialOrder β
f : α → β
s : Set α
hf : MonotoneOn f s
hf' : AntitoneOn f s
hs : DirectedOn (fun x x_1 => x ≤ x_1) s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a = f b

tactic: obtain ⟨c, hc, hac, hbc⟩ := hs _ ha _ hb
state_before: α : Type u
β : Type v
ι : Sort w
r r' s✝ : α → α → Prop
inst✝¹ : Preorder α
a✝ : α
inst✝ : PartialOrder β
f : α → β
s : Set α
hf : MonotoneOn f s
hf' : AntitoneOn f s
hs : DirectedOn (fun x x_1 => x ≤ x_1) s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a = f b
state_after: case intro.intro.intro
α : Type u
β : Type v
ι : Sort w
r r' s✝ : α → α → Prop
inst✝¹ : Preorder α
a✝ : α
inst✝ : PartialOrder β
f : α → β
s : Set α
hf : MonotoneOn f s
hf' : AntitoneOn f s
hs : DirectedOn (fun x x_1 => x ≤ x_1) s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
c : α
hc : c ∈ s
hac : a ≤ c
hbc : b ≤ c
⊢ f a = f b

tactic: exact le_antisymm ((hf ha hc hac).trans $ hf' hb hc hbc) ((hf hb hc hbc).trans $ hf' ha hc hac)
state_before: case intro.intro.intro
α : Type u
β : Type v
ι : Sort w
r r' s✝ : α → α → Prop
inst✝¹ : Preorder α
a✝ : α
inst✝ : PartialOrder β
f : α → β
s : Set α
hf : MonotoneOn f s
hf' : AntitoneOn f s
hs : DirectedOn (fun x x_1 => x ≤ x_1) s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
c : α
hc : c ∈ s
hac : a ≤ c
hbc : b ≤ c
⊢ f a = f b
state_after: no goals
Theorem: dite_dite_distrib_left
File: Mathlib/Logic/Lemmas.lean

tactic: split_ifs <;> rfl
state_before: α : Sort u_1
p q r : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
a✝ b✝ c✝ : α
a : p → α
b : ¬p → q → α
c : ¬p → ¬q → α
⊢ (dite p a fun hp => dite q (b hp) (c hp)) = if hq : q then dite p a fun hp => b hp hq else dite p a fun hp => c hp hq
state_after: no goals
Theorem: galois_poly_separable
File: Mathlib/FieldTheory/Finite/GaloisField.lean

tactic: use 1, X ^ q - X - 1
state_before: K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : p ∣ q
⊢ (X ^ q - X).Separable
state_after: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : p ∣ q
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * derivative (X ^ q - X) = 1

tactic: rw [← CharP.cast_eq_zero_iff K[X] p] at h
state_before: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : p ∣ q
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * derivative (X ^ q - X) = 1
state_after: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : ↑q = 0
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * derivative (X ^ q - X) = 1

tactic: rw [derivative_sub, derivative_X_pow, derivative_X, C_eq_natCast, h]
state_before: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : ↑q = 0
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * derivative (X ^ q - X) = 1
state_after: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : ↑q = 0
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * (0 * X ^ (q - 1) - 1) = 1

tactic: ring
state_before: case h
K : Type u_1
inst✝¹ : Field K
p q : ℕ
inst✝ : CharP K p
h : ↑q = 0
⊢ 1 * (X ^ q - X) + (X ^ q - X - 1) * (0 * X ^ (q - 1) - 1) = 1
state_after: no goals
Theorem: Real.arcsin_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: simp [le_antisymm_iff]
state_before: x✝ y x : ℝ
⊢ arcsin x = 0 ↔ x = 0
state_after: no goals
Theorem: MulChar.orderOf_pos
File: Mathlib/NumberTheory/MulChar/Basic.lean

tactic: cases nonempty_fintype Mˣ
state_before: M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Finite Mˣ
χ : MulChar M R
⊢ 0 < orderOf χ
state_after: case intro
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Finite Mˣ
χ : MulChar M R
val✝ : Fintype Mˣ
⊢ 0 < orderOf χ

tactic: apply IsOfFinOrder.orderOf_pos
state_before: case intro
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Finite Mˣ
χ : MulChar M R
val✝ : Fintype Mˣ
⊢ 0 < orderOf χ
state_after: case intro.h
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Finite Mˣ
χ : MulChar M R
val✝ : Fintype Mˣ
⊢ IsOfFinOrder χ

tactic: exact isOfFinOrder_iff_pow_eq_one.2 ⟨_, Fintype.card_pos, χ.pow_card_eq_one⟩
state_before: case intro.h
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Finite Mˣ
χ : MulChar M R
val✝ : Fintype Mˣ
⊢ IsOfFinOrder χ
state_after: no goals
Theorem: Complex.normSq_add_mul_I
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [← mk_eq_add_mul_I, normSq_mk, sq, sq]
state_before: x y : ℝ
⊢ normSq (↑x + ↑y * I) = x ^ 2 + y ^ 2
state_after: no goals
Theorem: IsCyclotomicExtension.Rat.nrRealPlaces_eq_zero
File: Mathlib/NumberTheory/Cyclotomic/Embeddings.lean

tactic: have := IsCyclotomicExtension.numberField {n} ℚ K
state_before: n : ℕ+
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
inst✝ : IsCyclotomicExtension {n} ℚ K
hn : 2 < n
⊢ NrRealPlaces K = 0
state_after: n : ℕ+
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
inst✝ : IsCyclotomicExtension {n} ℚ K
hn : 2 < n
this : NumberField K
⊢ NrRealPlaces K = 0

tactic: apply (IsCyclotomicExtension.zeta_spec n ℚ K).nrRealPlaces_eq_zero_of_two_lt hn
state_before: n : ℕ+
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
inst✝ : IsCyclotomicExtension {n} ℚ K
hn : 2 < n
this : NumberField K
⊢ NrRealPlaces K = 0
state_after: no goals
Theorem: real_inner_self_eq_norm_mul_norm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: have h := @inner_self_eq_norm_mul_norm ℝ F _ _ _ x
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : F
⊢ ⟪x, x⟫_ℝ = ‖x‖ * ‖x‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : F
h : re ⟪x, x⟫_ℝ = ‖x‖ * ‖x‖
⊢ ⟪x, x⟫_ℝ = ‖x‖ * ‖x‖

tactic: simpa using h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : F
h : re ⟪x, x⟫_ℝ = ‖x‖ * ‖x‖
⊢ ⟪x, x⟫_ℝ = ‖x‖ * ‖x‖
state_after: no goals
Theorem: CategoryTheory.Preadditive.mono_of_kernel_zero
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: rw [← kernel.lift_ι f g h, w, Limits.comp_zero]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
P Q R : C
f✝ f' : P ⟶ Q
g✝ g' : Q ⟶ R
X Y : C
f : X ⟶ Y
inst✝ : HasLimit (parallelPair f 0)
w : kernel.ι f = 0
P✝ : C
g : P✝ ⟶ X
h : g ≫ f = 0
⊢ g = 0
state_after: no goals
Theorem: MeasurableSet.analyticSet
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: obtain ⟨t', t't, t'_polish, s_closed, _⟩ :
    ∃ t' : TopologicalSpace α, t' ≤ t ∧ @PolishSpace α t' ∧ IsClosed[t'] s ∧ IsOpen[t'] s :=
  hs.isClopenable
state_before: α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
⊢ AnalyticSet s
state_after: case intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
⊢ AnalyticSet s

tactic: have A := @IsClosed.analyticSet α t' t'_polish s s_closed
state_before: case intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
⊢ AnalyticSet s
state_after: case intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ AnalyticSet s

tactic: convert @AnalyticSet.image_of_continuous α t' α t s A id (continuous_id_of_le t't)
state_before: case intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ AnalyticSet s
state_after: case h.e'_3
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ s = id '' s

tactic: simp only [id, image_id']
state_before: case h.e'_3
α✝ : Type u_1
ι : Type u_2
inst✝³ : TopologicalSpace α✝
α : Type u_3
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ s = id '' s
state_after: no goals
Theorem: Computation.destruct_map
File: Mathlib/Data/Seq/Computation.lean

tactic: apply s.recOn <;> intro <;> simp
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
s : Computation α
⊢ (map f s).destruct = lmap f (rmap (map f) s.destruct)
state_after: no goals
Theorem: Finset.disjoint_box_succ_prod
File: Mathlib/Order/Interval/Finset/Box.lean

tactic: rw [box_succ_eq_sdiff]
state_before: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n✝ n : ℕ
⊢ Disjoint (box (n + 1)) (Icc (-↑n) ↑n)
state_after: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n✝ n : ℕ
⊢ Disjoint (Icc (-↑n.succ) ↑n.succ \ Icc (-↑n) ↑n) (Icc (-↑n) ↑n)

tactic: exact disjoint_sdiff_self_left
state_before: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n✝ n : ℕ
⊢ Disjoint (Icc (-↑n.succ) ↑n.succ \ Icc (-↑n) ↑n) (Icc (-↑n) ↑n)
state_after: no goals
Theorem: Polynomial.degree_mul
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp only [hp0, degree_zero, zero_mul, WithBot.bot_add]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
this : DecidableEq R := Classical.decEq R
hp0 : p = 0
⊢ (p * q).degree = p.degree + q.degree
state_after: no goals

tactic: simp only [hq0, degree_zero, mul_zero, WithBot.add_bot]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
this : DecidableEq R := Classical.decEq R
hp0 : ¬p = 0
hq0 : q = 0
⊢ (p * q).degree = p.degree + q.degree
state_after: no goals
Theorem: one_lt_div_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rcases lt_trichotomy b 0 with (hb | rfl | hb)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
⊢ 1 < a / b ↔ 0 < b ∧ b < a ∨ b < 0 ∧ a < b
state_after: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ 1 < a / b ↔ 0 < b ∧ b < a ∨ b < 0 ∧ a < b

case inr.inl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a c d : α
n : ℤ
⊢ 1 < a / 0 ↔ 0 < 0 ∧ 0 < a ∨ 0 < 0 ∧ a < 0

case inr.inr
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : 0 < b
⊢ 1 < a / b ↔ 0 < b ∧ b < a ∨ b < 0 ∧ a < b

tactic: simp [hb, hb.not_lt, one_lt_div_of_neg]
state_before: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ 1 < a / b ↔ 0 < b ∧ b < a ∨ b < 0 ∧ a < b
state_after: no goals

tactic: simp [lt_irrefl, zero_le_one]
state_before: case inr.inl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a c d : α
n : ℤ
⊢ 1 < a / 0 ↔ 0 < 0 ∧ 0 < a ∨ 0 < 0 ∧ a < 0
state_after: no goals

tactic: simp [hb, hb.not_lt, one_lt_div]
state_before: case inr.inr
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : 0 < b
⊢ 1 < a / b ↔ 0 < b ∧ b < a ∨ b < 0 ∧ a < b
state_after: no goals
Theorem: isClosed_iff_clusterPt
File: Mathlib/Topology/Basic.lean

tactic: simp only [subset_def, mem_closure_iff_clusterPt]
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
⊢ closure s ⊆ s ↔ ∀ (a : X), ClusterPt a (𝓟 s) → a ∈ s
state_after: no goals
Theorem: WithSeminorms.hasBasis
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: exact AddGroupFilterBasis.nhds_zero_hasBasis _
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
⊢ (𝓝 0).HasBasis (fun s => s ∈ p.basisSets) id
state_after: no goals
Theorem: AddCircle.continuousAt_equivIoc
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: induction x using QuotientAddGroup.induction_on'
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
hx : x ≠ ↑a
⊢ ContinuousAt (⇑(equivIoc p a)) x
state_after: case H
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ ContinuousAt ⇑(equivIoc p a) ↑z✝

tactic: rw [ContinuousAt, Filter.Tendsto, QuotientAddGroup.nhds_eq, Filter.map_map]
state_before: case H
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ ContinuousAt ⇑(equivIoc p a) ↑z✝
state_after: case H
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ Filter.map (⇑(equivIoc p a) ∘ QuotientAddGroup.mk) (𝓝 z✝) ≤ 𝓝 ((equivIoc p a) ↑z✝)

tactic: exact (continuousAt_toIocMod hp.out a hx).codRestrict _
state_before: case H
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ Filter.map (⇑(equivIoc p a) ∘ QuotientAddGroup.mk) (𝓝 z✝) ≤ 𝓝 ((equivIoc p a) ↑z✝)
state_after: no goals
Theorem: PMF.toMeasure_apply_inter_support
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: simp [p.toMeasure_apply_eq_toOuterMeasure_apply s hs,
  p.toMeasure_apply_eq_toOuterMeasure_apply _ (hs.inter hp)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : MeasurableSpace α
p : PMF α
s t : Set α
hs : MeasurableSet s
hp : MeasurableSet p.support
⊢ p.toMeasure (s ∩ p.support) = p.toMeasure s
state_after: no goals
Theorem: MeasureTheory.hasFiniteIntegral_restrict_of_bounded
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rwa [Measure.restrict_apply_univ]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f : α → E
s : Set α
μ : Measure α
C : ℝ
hs : μ s < ⊤
hf : ∀ᵐ (x : α) ∂μ.restrict s, ‖f x‖ ≤ C
⊢ (μ.restrict s) univ < ⊤
state_after: no goals
Theorem: NNReal.rpow_inv_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← rpow_mul, inv_mul_cancel hy, rpow_one]
state_before: w x✝ y✝ z y : ℝ
hy : y ≠ 0
x : ℝ≥0
⊢ (x ^ y⁻¹) ^ y = x
state_after: no goals