1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: fourier_zero'
File: Mathlib/Analysis/Fourier/AddCircle.lean

tactic: have : fourier 0 x = @toCircle T 0 := by rw [fourier_apply, zero_smul]
state_before: T : ℝ
x : AddCircle T
⊢ ↑(toCircle 0) = 1
state_after: T : ℝ
x : AddCircle T
this : (fourier 0) x = ↑(toCircle 0)
⊢ ↑(toCircle 0) = 1

tactic: rw [← this]
state_before: T : ℝ
x : AddCircle T
this : (fourier 0) x = ↑(toCircle 0)
⊢ ↑(toCircle 0) = 1
state_after: T : ℝ
x : AddCircle T
this : (fourier 0) x = ↑(toCircle 0)
⊢ (fourier 0) x = 1

tactic: exact fourier_zero
state_before: T : ℝ
x : AddCircle T
this : (fourier 0) x = ↑(toCircle 0)
⊢ (fourier 0) x = 1
state_after: no goals

tactic: rw [fourier_apply, zero_smul]
state_before: T : ℝ
x : AddCircle T
⊢ (fourier 0) x = ↑(toCircle 0)
state_after: no goals
Theorem: Set.preimage_mul_const_Ioo_of_neg
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ioi_inter_Iio, h, inter_comm]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : c < 0
⊢ (fun x => x * c) ⁻¹' Ioo a b = Ioo (b / c) (a / c)
state_after: no goals
Theorem: ArithmeticFunction.LSeries_vonMangoldt_eq_deriv_riemannZeta_div
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

tactic: suffices deriv (L 1) s = deriv riemannZeta s by
  rw [LSeries_vonMangoldt_eq hs, ← LSeries_one_eq_riemannZeta hs, this]
state_before: s : ℂ
hs : 1 < s.re
⊢ L (fun n => ↑(Λ n)) s = -deriv riemannZeta s / riemannZeta s
state_after: s : ℂ
hs : 1 < s.re
⊢ deriv (L 1) s = deriv riemannZeta s

tactic: refine Filter.EventuallyEq.deriv_eq <| Filter.eventuallyEq_iff_exists_mem.mpr ?_
state_before: s : ℂ
hs : 1 < s.re
⊢ deriv (L 1) s = deriv riemannZeta s
state_after: s : ℂ
hs : 1 < s.re
⊢ ∃ s_1 ∈ nhds s, Set.EqOn (L 1) riemannZeta s_1

tactic: exact ⟨{z | 1 < z.re}, (isOpen_lt continuous_const continuous_re).mem_nhds hs,
  fun _ ↦ LSeries_one_eq_riemannZeta⟩
state_before: s : ℂ
hs : 1 < s.re
⊢ ∃ s_1 ∈ nhds s, Set.EqOn (L 1) riemannZeta s_1
state_after: no goals

tactic: rw [LSeries_vonMangoldt_eq hs, ← LSeries_one_eq_riemannZeta hs, this]
state_before: s : ℂ
hs : 1 < s.re
this : deriv (L 1) s = deriv riemannZeta s
⊢ L (fun n => ↑(Λ n)) s = -deriv riemannZeta s / riemannZeta s
state_after: no goals
Theorem: HNNExtension.of_mul_inv_t
File: Mathlib/GroupTheory/HNNExtension.lean

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

tactic: simp [mul_assoc]
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
a : ↥A
⊢ of ↑a * t⁻¹ = t⁻¹ * (t * of ↑a * t⁻¹)
state_after: no goals
Theorem: CochainComplex.mappingCone.liftCochain_fst
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: simp [liftCochain]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
n m : ℤ
α : Cochain K F m
β : Cochain K G n
h : n + 1 = m
⊢ (liftCochain φ α β h).comp (↑(fst φ)) h = α
state_after: no goals
Theorem: DiscreteQuotient.fiber_subset_ofLE
File: Mathlib/Topology/DiscreteQuotient.lean

tactic: rcases A.proj_surjective a with ⟨a, rfl⟩
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S A B : DiscreteQuotient X
h : A ≤ B
a : Quotient A.toSetoid
⊢ A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a}
state_after: case intro
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S A B : DiscreteQuotient X
h : A ≤ B
a : X
⊢ A.proj ⁻¹' {A.proj a} ⊆ B.proj ⁻¹' {ofLE h (A.proj a)}

tactic: rw [fiber_eq, ofLE_proj, fiber_eq]
state_before: case intro
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S A B : DiscreteQuotient X
h : A ≤ B
a : X
⊢ A.proj ⁻¹' {A.proj a} ⊆ B.proj ⁻¹' {ofLE h (A.proj a)}
state_after: case intro
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S A B : DiscreteQuotient X
h : A ≤ B
a : X
⊢ setOf (A.Rel a) ⊆ setOf (B.Rel a)

tactic: exact fun _ h' => h h'
state_before: case intro
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S A B : DiscreteQuotient X
h : A ≤ B
a : X
⊢ setOf (A.Rel a) ⊆ setOf (B.Rel a)
state_after: no goals
Theorem: EReal.image_coe_Iic
File: Mathlib/Data/Real/EReal.lean

tactic: refine (image_comp WithBot.some WithTop.some _).trans ?_
state_before: x : ℝ
⊢ Real.toEReal '' Iic x = Ioc ⊥ ↑x
state_after: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Iic x) = Ioc ⊥ ↑x

tactic: rw [WithTop.image_coe_Iic, WithBot.image_coe_Iic]
state_before: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Iic x) = Ioc ⊥ ↑x
state_after: x : ℝ
⊢ Ioc ⊥ ↑↑x = Ioc ⊥ ↑x

tactic: rfl
state_before: x : ℝ
⊢ Ioc ⊥ ↑↑x = Ioc ⊥ ↑x
state_after: no goals
Theorem: Finpartition.sum_card_parts
File: Mathlib/Order/Partition/Finpartition.lean

tactic: convert congr_arg Finset.card P.biUnion_parts
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ ∑ i ∈ P.parts, i.card = s.card
state_after: case h.e'_2
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ ∑ i ∈ P.parts, i.card = (P.parts.biUnion id).card

tactic: rw [card_biUnion P.supIndep.pairwiseDisjoint]
state_before: case h.e'_2
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ ∑ i ∈ P.parts, i.card = (P.parts.biUnion id).card
state_after: case h.e'_2
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ ∑ i ∈ P.parts, i.card = ∑ u ∈ P.parts, (id u).card

tactic: rfl
state_before: case h.e'_2
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ ∑ i ∈ P.parts, i.card = ∑ u ∈ P.parts, (id u).card
state_after: no goals
Theorem: HasProd.mul_isCompl
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simpa [← hs.compl_eq] using
  (hasProd_subtype_iff_mulIndicator.1 ha).mul (hasProd_subtype_iff_mulIndicator.1 hb)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a b : α
s✝ : Finset β
inst✝ : ContinuousMul α
s t : Set β
hs : IsCompl s t
ha : HasProd (f ∘ Subtype.val) a
hb : HasProd (f ∘ Subtype.val) b
⊢ HasProd f (a * b)
state_after: no goals
Theorem: ceilDiv_zero
File: Mathlib/Algebra/Order/Floor/Div.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : OrderedAddCommMonoid α
inst✝² : OrderedAddCommMonoid β
inst✝¹ : SMulZeroClass α β
inst✝ : CeilDiv α β
a : α
b✝ c b : β
⊢ b ⌈/⌉ 0 = 0
state_after: no goals
Theorem: add_mul_self_eq
File: Mathlib/Algebra/Ring/Defs.lean

tactic: simp only [two_mul, add_mul, mul_add, add_assoc, mul_comm b]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : CommSemiring α
a✝ b✝ c a b : α
⊢ (a + b) * (a + b) = a * a + 2 * a * b + b * b
state_after: no goals
Theorem: Cardinal.natCast_pow
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: induction n <;> simp [pow_succ, power_add, *, Pow.pow]
state_before: α β : Type u
m n : ℕ
⊢ ↑(m ^ n) = ↑m ^ ↑n
state_after: no goals
Theorem: infEdist_cthickening
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: obtain hδ | hδ := le_or_lt δ 0
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ✝ ε δ : ℝ
s : Set E
x : E
⊢ infEdist x (cthickening δ s) = infEdist x s - ENNReal.ofReal δ
state_after: case inl
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ✝ ε δ : ℝ
s : Set E
x : E
hδ : δ ≤ 0
⊢ infEdist x (cthickening δ s) = infEdist x s - ENNReal.ofReal δ

case inr
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ✝ ε δ : ℝ
s : Set E
x : E
hδ : 0 < δ
⊢ infEdist x (cthickening δ s) = infEdist x s - ENNReal.ofReal δ

tactic: rw [cthickening_of_nonpos hδ, infEdist_closure, ofReal_of_nonpos hδ, tsub_zero]
state_before: case inl
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ✝ ε δ : ℝ
s : Set E
x : E
hδ : δ ≤ 0
⊢ infEdist x (cthickening δ s) = infEdist x s - ENNReal.ofReal δ
state_after: no goals

tactic: rw [← closure_thickening hδ, infEdist_closure, infEdist_thickening hδ]
state_before: case inr
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ✝ ε δ : ℝ
s : Set E
x : E
hδ : 0 < δ
⊢ infEdist x (cthickening δ s) = infEdist x s - ENNReal.ofReal δ
state_after: no goals
Theorem: Complex.abs_cpow_inv_two_im
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← ofReal_ofNat, ← ofReal_inv, cpow_ofReal_im, ← div_eq_mul_inv, ← one_div,
  ← Real.sqrt_eq_rpow, _root_.abs_mul, _root_.abs_of_nonneg (sqrt_nonneg _), abs_sin_half,
  ← sqrt_mul (abs.nonneg _), ← mul_div_assoc, mul_sub, mul_one, abs_mul_cos_arg]
state_before: x : ℂ
⊢ |(x ^ 2⁻¹).im| = √((abs x - x.re) / 2)
state_after: no goals
Theorem: Subsemiring.prod_top
File: Mathlib/Algebra/Ring/Subsemiring/Basic.lean

tactic: simp [mem_prod, MonoidHom.coe_fst]
state_before: R : Type u
S : Type v
T : Type w
inst✝² : NonAssocSemiring R
M : Submonoid R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring T
s : Subsemiring R
x : R × S
⊢ x ∈ s.prod ⊤ ↔ x ∈ comap (RingHom.fst R S) s
state_after: no goals
Theorem: MeasureTheory.lintegral_mul_left_eq_self
File: Mathlib/MeasureTheory/Group/LIntegral.lean

tactic: convert (lintegral_map_equiv f <| MeasurableEquiv.mulLeft g).symm
state_before: G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulLeftInvariant
f : G → ℝ≥0∞
g : G
⊢ ∫⁻ (x : G), f (g * x) ∂μ = ∫⁻ (x : G), f x ∂μ
state_after: case h.e'_3.h.e'_3
G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulLeftInvariant
f : G → ℝ≥0∞
g : G
⊢ μ = map (⇑(MeasurableEquiv.mulLeft g)) μ

tactic: simp [map_mul_left_eq_self μ g]
state_before: case h.e'_3.h.e'_3
G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulLeftInvariant
f : G → ℝ≥0∞
g : G
⊢ μ = map (⇑(MeasurableEquiv.mulLeft g)) μ
state_after: no goals
Theorem: SemistandardYoungTableau.ext
File: Mathlib/Combinatorics/Young/SemistandardTableau.lean

tactic: funext
state_before: μ : YoungDiagram
T T' : SemistandardYoungTableau μ
h : ∀ (i j : ℕ), T i j = T' i j
x✝ : ℕ
⊢ T x✝ = T' x✝
state_after: case h
μ : YoungDiagram
T T' : SemistandardYoungTableau μ
h : ∀ (i j : ℕ), T i j = T' i j
x✝¹ x✝ : ℕ
⊢ T x✝¹ x✝ = T' x✝¹ x✝

tactic: apply h
state_before: case h
μ : YoungDiagram
T T' : SemistandardYoungTableau μ
h : ∀ (i j : ℕ), T i j = T' i j
x✝¹ x✝ : ℕ
⊢ T x✝¹ x✝ = T' x✝¹ x✝
state_after: no goals
Theorem: spectrum.spectralRadius_lt_of_forall_lt_of_nonempty
File: Mathlib/Analysis/NormedSpace/Spectrum.lean

tactic: exact mod_cast hr
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : (σ a).Nonempty
r : ℝ≥0
hr : ∀ k ∈ σ a, ‖k‖₊ < r
⊢ ∀ x ∈ σ a, ↑‖x‖₊ < ↑r
state_after: no goals
Theorem: Finsupp.single_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a✝ a' : α
b : M
a : α
⊢ (fun f => ⇑f) (single a 0) = (fun f => ⇑f) 0
state_after: no goals

tactic: simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a✝ a' : α
b : M
a : α
⊢ (fun f => ⇑f) (single a 0) = (fun f => ⇑f) 0
state_after: no goals
Theorem: ContinuousMultilinearMap.mkPiRing_eq_zero_iff
File: Mathlib/Topology/Algebra/Module/Multilinear/Basic.lean

tactic: rw [← mkPiRing_zero, mkPiRing_eq_iff]
state_before: R : Type u
ι : Type v
n : ℕ
M✝ : Fin n.succ → Type w
M₁ : ι → Type w₁
M₁' : ι → Type w₁'
M₂ : Type w₂
M₃ : Type w₃
M₄ : Type w₄
M : Type u_1
inst✝⁷ : Fintype ι
inst✝⁶ : CommRing R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : TopologicalSpace R
inst✝² : TopologicalSpace M
inst✝¹ : ContinuousMul R
inst✝ : ContinuousSMul R M
z : M
⊢ ContinuousMultilinearMap.mkPiRing R ι z = 0 ↔ z = 0
state_after: no goals
Theorem: AdjoinRoot.algEquivOfEq_apply_root
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [← coe_algHom, algEquivOfEq_toAlgHom, liftHom_root]
state_before: K : Type u_1
L : Type ?u.599299
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p q : K[X]
hp : p ≠ 0
h_eq : p = q
⊢ (algEquivOfEq hp h_eq) (root p) = root q
state_after: no goals
Theorem: ack_three
File: Mathlib/Computability/Ackermann.lean

tactic: induction' n with n IH
state_before: n : ℕ
⊢ ack 3 n = 2 ^ (n + 3) - 3
state_after: case zero

⊢ ack 3 0 = 2 ^ (0 + 3) - 3

case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
⊢ ack 3 (n + 1) = 2 ^ (n + 1 + 3) - 3

tactic: rfl
state_before: case zero

⊢ ack 3 0 = 2 ^ (0 + 3) - 3
state_after: no goals

tactic: rw [ack_succ_succ, IH, ack_two, Nat.succ_add, Nat.pow_succ 2 (n + 3), mul_comm _ 2,
    Nat.mul_sub_left_distrib, ← Nat.sub_add_comm, two_mul 3, Nat.add_sub_add_right]
state_before: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
⊢ ack 3 (n + 1) = 2 ^ (n + 1 + 3) - 3
state_after: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
⊢ 2 * 3 ≤ 2 * 2 ^ (n + 3)

tactic: have H : 2 * 3 ≤ 2 * 2 ^ 3 := by norm_num
state_before: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
⊢ 2 * 3 ≤ 2 * 2 ^ (n + 3)
state_after: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 * 3 ≤ 2 * 2 ^ (n + 3)

tactic: apply H.trans
state_before: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 * 3 ≤ 2 * 2 ^ (n + 3)
state_after: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 * 2 ^ 3 ≤ 2 * 2 ^ (n + 3)

tactic: rw [_root_.mul_le_mul_left two_pos]
state_before: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 * 2 ^ 3 ≤ 2 * 2 ^ (n + 3)
state_after: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 ^ 3 ≤ 2 ^ (n + 3)

tactic: exact pow_le_pow_right one_le_two (Nat.le_add_left 3 n)
state_before: case succ
n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
H : 2 * 3 ≤ 2 * 2 ^ 3
⊢ 2 ^ 3 ≤ 2 ^ (n + 3)
state_after: no goals

tactic: norm_num
state_before: n : ℕ
IH : ack 3 n = 2 ^ (n + 3) - 3
⊢ 2 * 3 ≤ 2 * 2 ^ 3
state_after: no goals
Theorem: BoxIntegral.IntegrationParams.MemBaseSet.unionComplToSubordinate
File: Mathlib/Analysis/BoxIntegral/Partition/Filter.lean

tactic: simp
state_before: ι : Type u_1
inst✝ : Fintype ι
I J : Box ι
c c₁ c₂ : ℝ≥0
r r₁ r₂ : (ι → ℝ) → ↑(Set.Ioi 0)
π π₁ π₂✝ : TaggedPrepartition I
l l₁ l₂ : IntegrationParams
hπ₁ : l.MemBaseSet I c r₁ π₁
hle : ∀ x ∈ Box.Icc I, r₂ x ≤ r₁ x
π₂ : Prepartition I
hU : π₂.iUnion = ↑I \ π₁.iUnion
hc : l.bDistortion = true → π₂.distortion ≤ c
x✝ : l.bDistortion = true
⊢ ⊥.iUnion = ↑I \ (π₁.unionComplToSubordinate π₂ hU r₂).iUnion ∧ ⊥.distortion ≤ c
state_after: no goals
Theorem: minpoly.dvd
File: Mathlib/FieldTheory/Minpoly/Field.lean

tactic: by_cases hp0 : p = 0
state_before: A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
⊢ minpoly A x ∣ p
state_after: case pos
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : p = 0
⊢ minpoly A x ∣ p

case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
⊢ minpoly A x ∣ p

tactic: have hx : IsIntegral A x := IsAlgebraic.isIntegral ⟨p, hp0, hp⟩
state_before: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
⊢ minpoly A x ∣ p
state_after: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
⊢ minpoly A x ∣ p

tactic: rw [← modByMonic_eq_zero_iff_dvd (monic hx)]
state_before: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
⊢ minpoly A x ∣ p
state_after: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
⊢ p %ₘ minpoly A x = 0

tactic: by_contra hnz
state_before: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
⊢ p %ₘ minpoly A x = 0
state_after: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
hnz : ¬p %ₘ minpoly A x = 0
⊢ False

tactic: apply degree_le_of_ne_zero A x hnz
  ((aeval_modByMonic_eq_self_of_root (monic hx) (aeval _ _)).trans hp) |>.not_lt
state_before: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
hnz : ¬p %ₘ minpoly A x = 0
⊢ False
state_after: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
hnz : ¬p %ₘ minpoly A x = 0
⊢ (p %ₘ minpoly A x).degree < (minpoly A x).degree

tactic: exact degree_modByMonic_lt _ (monic hx)
state_before: case neg
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : ¬p = 0
hx : IsIntegral A x
hnz : ¬p %ₘ minpoly A x = 0
⊢ (p %ₘ minpoly A x).degree < (minpoly A x).degree
state_after: no goals

tactic: simp only [hp0, dvd_zero]
state_before: case pos
A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
hp : (Polynomial.aeval x) p = 0
hp0 : p = 0
⊢ minpoly A x ∣ p
state_after: no goals
Theorem: closureOperator_gi_self
File: Mathlib/Order/Closure.lean

tactic: ext x
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : PartialOrder α
c : ClosureOperator α
⊢ ⋯.closureOperator = c
state_after: case a
α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : PartialOrder α
c : ClosureOperator α
x : α
⊢ ⋯.closureOperator x = c x

tactic: rfl
state_before: case a
α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : PartialOrder α
c : ClosureOperator α
x : α
⊢ ⋯.closureOperator x = c x
state_after: no goals
Theorem: MeasureTheory.snorm_const'
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp [snorm_eq_snorm' h0 h_top, snorm'_const, ENNReal.toReal_pos h0 h_top]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : F
h0 : p ≠ 0
h_top : p ≠ ⊤
⊢ snorm (fun x => c) p μ = ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal)
state_after: no goals
Theorem: RCLike.summable_ofReal
File: Mathlib/Analysis/Complex/Basic.lean

tactic: simpa only [RCLike.reCLM_apply, RCLike.ofReal_re] using reCLM.summable h
state_before: α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → ℝ
h : Summable fun x => ↑(f x)
⊢ Summable f
state_after: no goals
Theorem: WittVector.mul_polyOfInterest_vars
File: Mathlib/RingTheory/WittVector/MulCoeff.lean

tactic: rw [mul_polyOfInterest_aux5]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (↑p ^ (n + 1) * polyOfInterest p n).vars ⊆ univ ×ˢ range (n + 1)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n - wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)

tactic: apply Subset.trans (vars_sub_subset _)
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n - wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n).vars ∪ (wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)

tactic: refine union_subset ?_ ?_
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n).vars ∪ (wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)
state_after: case refine_1
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n).vars ⊆ univ ×ˢ range (n + 1)

case refine_2
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)

tactic: apply remainder_vars
state_before: case refine_1
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (remainder p n).vars ⊆ univ ×ˢ range (n + 1)
state_after: no goals

tactic: apply wittPolyProdRemainder_vars
state_before: case refine_2
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (wittPolyProdRemainder p (n + 1)).vars ⊆ univ ×ˢ range (n + 1)
state_after: no goals
Theorem: Orientation.oangle_add_left_eq_arctan_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ o.oangle (x + y) y = ↑(Real.arctan (‖x‖ / ‖y‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle y (x + y) = ↑(Real.arctan (‖x‖ / ‖y‖))

tactic: rw [add_comm]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle y (x + y) = ↑(Real.arctan (‖x‖ / ‖y‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle y (y + x) = ↑(Real.arctan (‖x‖ / ‖y‖))

tactic: exact (-o).oangle_add_right_eq_arctan_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle y (y + x) = ↑(Real.arctan (‖x‖ / ‖y‖))
state_after: no goals
Theorem: List.modifyNth_eq_modifyNthTR
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: funext α f n l
state_before: ⊢ @modifyNth = @modifyNthTR
state_after: case h.h.h.h
α : Type u_1
f : α → α
n : Nat
l : List α
⊢ modifyNth f n l = modifyNthTR f n l

tactic: simp [modifyNthTR, modifyNthTR_go_eq]
state_before: case h.h.h.h
α : Type u_1
f : α → α
n : Nat
l : List α
⊢ modifyNth f n l = modifyNthTR f n l
state_after: no goals