1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.PreGaloisCategory.autMap_comp
File: Mathlib/CategoryTheory/Galois/GaloisObjects.lean

tactic: refine funext fun σ ↦ autMap_unique _ σ _ ?_
state_before: C : Type u₁
inst✝⁵ : Category.{u₂, u₁} C
inst✝⁴ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝³ : FiberFunctor F
X Y Z : C
inst✝² : IsConnected X
inst✝¹ : IsGalois Y
inst✝ : IsGalois Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ autMap (f ≫ g) = autMap g ∘ autMap f
state_after: C : Type u₁
inst✝⁵ : Category.{u₂, u₁} C
inst✝⁴ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝³ : FiberFunctor F
X Y Z : C
inst✝² : IsConnected X
inst✝¹ : IsGalois Y
inst✝ : IsGalois Z
f : X ⟶ Y
g : Y ⟶ Z
σ : Aut X
⊢ (f ≫ g) ≫ ((autMap g ∘ autMap f) σ).hom = σ.hom ≫ f ≫ g

tactic: rw [Function.comp_apply, Category.assoc, comp_autMap, ← Category.assoc]
state_before: C : Type u₁
inst✝⁵ : Category.{u₂, u₁} C
inst✝⁴ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝³ : FiberFunctor F
X Y Z : C
inst✝² : IsConnected X
inst✝¹ : IsGalois Y
inst✝ : IsGalois Z
f : X ⟶ Y
g : Y ⟶ Z
σ : Aut X
⊢ (f ≫ g) ≫ ((autMap g ∘ autMap f) σ).hom = σ.hom ≫ f ≫ g
state_after: C : Type u₁
inst✝⁵ : Category.{u₂, u₁} C
inst✝⁴ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝³ : FiberFunctor F
X Y Z : C
inst✝² : IsConnected X
inst✝¹ : IsGalois Y
inst✝ : IsGalois Z
f : X ⟶ Y
g : Y ⟶ Z
σ : Aut X
⊢ (f ≫ (autMap f σ).hom) ≫ g = σ.hom ≫ f ≫ g

tactic: simp
state_before: C : Type u₁
inst✝⁵ : Category.{u₂, u₁} C
inst✝⁴ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝³ : FiberFunctor F
X Y Z : C
inst✝² : IsConnected X
inst✝¹ : IsGalois Y
inst✝ : IsGalois Z
f : X ⟶ Y
g : Y ⟶ Z
σ : Aut X
⊢ (f ≫ (autMap f σ).hom) ≫ g = σ.hom ≫ f ≫ g
state_after: no goals
Theorem: Finset.prod_one_sub_ordered
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: rw [prod_sub_ordered]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f : ι → α
⊢ ∏ i ∈ s, (1 - f i) = 1 - ∑ i ∈ s, f i * ∏ j ∈ filter (fun x => x < i) s, (1 - f j)
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f : ι → α
⊢ ∏ i ∈ s, 1 - ∑ i ∈ s, (f i * ∏ j ∈ filter (fun x => x < i) s, (1 - f j)) * ∏ j ∈ filter (fun j => i < j) s, 1 =
    1 - ∑ i ∈ s, f i * ∏ j ∈ filter (fun x => x < i) s, (1 - f j)

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f : ι → α
⊢ ∏ i ∈ s, 1 - ∑ i ∈ s, (f i * ∏ j ∈ filter (fun x => x < i) s, (1 - f j)) * ∏ j ∈ filter (fun j => i < j) s, 1 =
    1 - ∑ i ∈ s, f i * ∏ j ∈ filter (fun x => x < i) s, (1 - f j)
state_after: no goals
Theorem: LucasLehmer.ω_pow_eq_neg_one
File: Mathlib/NumberTheory/LucasLehmer.lean

tactic: cases' ω_pow_formula p' h with k w
state_before: p' : ℕ
h : lucasLehmerResidue (p' + 2) = 0
⊢ ω ^ 2 ^ (p' + 1) = -1
state_after: case intro
p' : ℕ
h : lucasLehmerResidue (p' + 2) = 0
k : ℤ
w : ω ^ 2 ^ (p' + 1) = ↑k * ↑(mersenne (p' + 2)) * ω ^ 2 ^ p' - 1
⊢ ω ^ 2 ^ (p' + 1) = -1

tactic: rw [mersenne_coe_X] at w
state_before: case intro
p' : ℕ
h : lucasLehmerResidue (p' + 2) = 0
k : ℤ
w : ω ^ 2 ^ (p' + 1) = ↑k * ↑(mersenne (p' + 2)) * ω ^ 2 ^ p' - 1
⊢ ω ^ 2 ^ (p' + 1) = -1
state_after: case intro
p' : ℕ
h : lucasLehmerResidue (p' + 2) = 0
k : ℤ
w : ω ^ 2 ^ (p' + 1) = ↑k * 0 * ω ^ 2 ^ p' - 1
⊢ ω ^ 2 ^ (p' + 1) = -1

tactic: simpa using w
state_before: case intro
p' : ℕ
h : lucasLehmerResidue (p' + 2) = 0
k : ℤ
w : ω ^ 2 ^ (p' + 1) = ↑k * 0 * ω ^ 2 ^ p' - 1
⊢ ω ^ 2 ^ (p' + 1) = -1
state_after: no goals
Theorem: AffineIsometryEquiv.dist_pointReflection_self'
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

tactic: rw [pointReflection_apply, dist_eq_norm_vsub V, vadd_vsub_assoc, bit0]
state_before: 𝕜 : Type u_1
V : Type u_2
V₁ : Type u_3
V₁' : Type u_4
V₂ : Type u_5
V₃ : Type u_6
V₄ : Type u_7
P₁ : Type u_8
P₁' : Type u_9
P : Type u_10
P₂ : Type u_11
P₃ : Type u_12
P₄ : Type u_13
inst✝²⁵ : NormedField 𝕜
inst✝²⁴ : SeminormedAddCommGroup V
inst✝²³ : NormedSpace 𝕜 V
inst✝²² : PseudoMetricSpace P
inst✝²¹ : NormedAddTorsor V P
inst✝²⁰ : SeminormedAddCommGroup V₁
inst✝¹⁹ : NormedSpace 𝕜 V₁
inst✝¹⁸ : PseudoMetricSpace P₁
inst✝¹⁷ : NormedAddTorsor V₁ P₁
inst✝¹⁶ : SeminormedAddCommGroup V₁'
inst✝¹⁵ : NormedSpace 𝕜 V₁'
inst✝¹⁴ : MetricSpace P₁'
inst✝¹³ : NormedAddTorsor V₁' P₁'
inst✝¹² : SeminormedAddCommGroup V₂
inst✝¹¹ : NormedSpace 𝕜 V₂
inst✝¹⁰ : PseudoMetricSpace P₂
inst✝⁹ : NormedAddTorsor V₂ P₂
inst✝⁸ : SeminormedAddCommGroup V₃
inst✝⁷ : NormedSpace 𝕜 V₃
inst✝⁶ : PseudoMetricSpace P₃
inst✝⁵ : NormedAddTorsor V₃ P₃
inst✝⁴ : SeminormedAddCommGroup V₄
inst✝³ : NormedSpace 𝕜 V₄
inst✝² : PseudoMetricSpace P₄
inst✝¹ : NormedAddTorsor V₄ P₄
e : P ≃ᵃⁱ[𝕜] P₂
α : Type u_14
inst✝ : TopologicalSpace α
x y : P
⊢ dist ((pointReflection 𝕜 x) y) y = ‖bit0 (x -ᵥ y)‖
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.has_decomp_connected_components'
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

tactic: obtain ⟨ι, f, g, hl, hc, hf⟩ := has_decomp_connected_components X
state_before: C : Type u₁
inst✝¹ : Category.{u₂, u₁} C
inst✝ : GaloisCategory C
X : C
⊢ ∃ ι, ∃ (x : Finite ι), ∃ f x, ∀ (i : ι), IsConnected (f i)
state_after: case intro.intro.intro.intro.intro
C : Type u₁
inst✝¹ : Category.{u₂, u₁} C
inst✝ : GaloisCategory C
X : C
ι : Type
f : ι → C
g : (i : ι) → f i ⟶ X
hl : IsColimit (Cofan.mk X g)
hc : ∀ (i : ι), IsConnected (f i)
hf : Finite ι
⊢ ∃ ι, ∃ (x : Finite ι), ∃ f x, ∀ (i : ι), IsConnected (f i)

tactic: exact ⟨ι, hf, f, colimit.isoColimitCocone ⟨Cofan.mk X g, hl⟩, hc⟩
state_before: case intro.intro.intro.intro.intro
C : Type u₁
inst✝¹ : Category.{u₂, u₁} C
inst✝ : GaloisCategory C
X : C
ι : Type
f : ι → C
g : (i : ι) → f i ⟶ X
hl : IsColimit (Cofan.mk X g)
hc : ∀ (i : ι), IsConnected (f i)
hf : Finite ι
⊢ ∃ ι, ∃ (x : Finite ι), ∃ f x, ∀ (i : ι), IsConnected (f i)
state_after: no goals
Theorem: Finset.smul_neg
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp_rw [← image_neg]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Monoid α
inst✝² : AddGroup β
inst✝¹ : DistribMulAction α β
inst✝ : DecidableEq β
a : α
s : Finset α
t : Finset β
⊢ s • -t = -(s • t)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Monoid α
inst✝² : AddGroup β
inst✝¹ : DistribMulAction α β
inst✝ : DecidableEq β
a : α
s : Finset α
t : Finset β
⊢ s • image (fun x => -x) t = image (fun x => -x) (s • t)

tactic: exact image_image₂_right_comm smul_neg
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Monoid α
inst✝² : AddGroup β
inst✝¹ : DistribMulAction α β
inst✝ : DecidableEq β
a : α
s : Finset α
t : Finset β
⊢ s • image (fun x => -x) t = image (fun x => -x) (s • t)
state_after: no goals
Theorem: Complex.taylorSeries_eq_of_entire'
File: Mathlib/Analysis/Complex/TaylorSeries.lean

tactic: convert taylorSeries_eq_of_entire hf c z using 3 with n
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f✝¹ f✝ : ℂ → E
hf✝ : Differentiable ℂ f✝
c z : ℂ
f : ℂ → ℂ
hf : Differentiable ℂ f
⊢ ∑' (n : ℕ), (↑n !)⁻¹ * iteratedDeriv n f c * (z - c) ^ n = f z
state_after: case h.e'_2.h.e'_5.h
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f✝¹ f✝ : ℂ → E
hf✝ : Differentiable ℂ f✝
c z : ℂ
f : ℂ → ℂ
hf : Differentiable ℂ f
n : ℕ
⊢ (↑n !)⁻¹ * iteratedDeriv n f c * (z - c) ^ n = (↑n !)⁻¹ • (z - c) ^ n • iteratedDeriv n f c

tactic: rw [mul_right_comm, smul_eq_mul, smul_eq_mul, mul_assoc]
state_before: case h.e'_2.h.e'_5.h
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f✝¹ f✝ : ℂ → E
hf✝ : Differentiable ℂ f✝
c z : ℂ
f : ℂ → ℂ
hf : Differentiable ℂ f
n : ℕ
⊢ (↑n !)⁻¹ * iteratedDeriv n f c * (z - c) ^ n = (↑n !)⁻¹ • (z - c) ^ n • iteratedDeriv n f c
state_after: no goals
Theorem: Polynomial.coeffs_ofSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: classical
intro i hi
simp only [coeffs, Set.mem_image, mem_support_iff, Ne, Finset.mem_coe,
  (Finset.coe_image)] at hi
rcases hi with ⟨n, _, h'n⟩
rw [← h'n, coeff_ofSubring]
exact Subtype.mem (coeff p n : T)
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
⊢ ↑(ofSubring T p).coeffs ⊆ ↑T
state_after: no goals

tactic: intro i hi
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
⊢ ↑(ofSubring T p).coeffs ⊆ ↑T
state_after: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
hi : i ∈ ↑(ofSubring T p).coeffs
⊢ i ∈ ↑T

tactic: simp only [coeffs, Set.mem_image, mem_support_iff, Ne, Finset.mem_coe,
  (Finset.coe_image)] at hi
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
hi : i ∈ ↑(ofSubring T p).coeffs
⊢ i ∈ ↑T
state_after: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
hi : ∃ x, ¬(ofSubring T p).coeff x = 0 ∧ (ofSubring T p).coeff x = i
⊢ i ∈ ↑T

tactic: rcases hi with ⟨n, _, h'n⟩
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
hi : ∃ x, ¬(ofSubring T p).coeff x = 0 ∧ (ofSubring T p).coeff x = i
⊢ i ∈ ↑T
state_after: case intro.intro
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
n : ℕ
left✝ : ¬(ofSubring T p).coeff n = 0
h'n : (ofSubring T p).coeff n = i
⊢ i ∈ ↑T

tactic: rw [← h'n, coeff_ofSubring]
state_before: case intro.intro
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
n : ℕ
left✝ : ¬(ofSubring T p).coeff n = 0
h'n : (ofSubring T p).coeff n = i
⊢ i ∈ ↑T
state_after: case intro.intro
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
n : ℕ
left✝ : ¬(ofSubring T p).coeff n = 0
h'n : (ofSubring T p).coeff n = i
⊢ ↑(p.coeff n) ∈ ↑T

tactic: exact Subtype.mem (coeff p n : T)
state_before: case intro.intro
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
T : Subring R
p : (↥T)[X]
i : R
n : ℕ
left✝ : ¬(ofSubring T p).coeff n = 0
h'n : (ofSubring T p).coeff n = i
⊢ ↑(p.coeff n) ∈ ↑T
state_after: no goals
Theorem: Complex.cpow_mul_nat
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: rw [mul_comm, cpow_nat_mul]
state_before: x y : ℂ
n : ℕ
⊢ x ^ (y * ↑n) = (x ^ y) ^ n
state_after: no goals
Theorem: himp_inf_distrib
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [le_himp_iff, le_inf_iff, le_himp_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c✝ d✝ a b c d : α
⊢ d ≤ a ⇨ b ⊓ c ↔ d ≤ (a ⇨ b) ⊓ (a ⇨ c)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.map_negY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp [negY]
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ negY (map W' f) (⇑f ∘ P) = f (W'.negY P)
state_after: no goals
Theorem: HasCompactMulSupport.comp₂_left
File: Mathlib/Topology/Support.lean

tactic: rw [hasCompactMulSupport_iff_eventuallyEq] at hf hf₂ ⊢
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
hf : HasCompactMulSupport f
hf₂ : HasCompactMulSupport f₂
hm : m 1 1 = 1
⊢ HasCompactMulSupport fun x => m (f x) (f₂ x)
state_after: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
hf : f =ᶠ[coclosedCompact α] 1
hf₂ : f₂ =ᶠ[coclosedCompact α] 1
hm : m 1 1 = 1
⊢ (fun x => m (f x) (f₂ x)) =ᶠ[coclosedCompact α] 1

tactic: filter_upwards [hf, hf₂] using fun x (hx : f x = (1 : α → β) x) (hx₂ : f₂ x = (1 : α → γ) x) => by
  simp only [hx, hx₂, Pi.one_apply, hm]
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
hf : f =ᶠ[coclosedCompact α] 1
hf₂ : f₂ =ᶠ[coclosedCompact α] 1
hm : m 1 1 = 1
⊢ (fun x => m (f x) (f₂ x)) =ᶠ[coclosedCompact α] 1
state_after: no goals

tactic: simp only [hx, hx₂, Pi.one_apply, hm]
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x✝ : α
hf : f =ᶠ[coclosedCompact α] 1
hf₂ : f₂ =ᶠ[coclosedCompact α] 1
hm : m 1 1 = 1
x : α
hx : f x = 1 x
hx₂ : f₂ x = 1 x
⊢ m (f x) (f₂ x) = 1 x
state_after: no goals
Theorem: CoxeterSystem.IsReflection.length_mul_left_ne
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: suffices cs.lengthParity (w * t) ≠ cs.lengthParity w by
  contrapose! this
  simp only [lengthParity_eq_ofAdd_length, this]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
⊢ cs.length (w * t) ≠ cs.length w
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
⊢ cs.lengthParity (w * t) ≠ cs.lengthParity w

tactic: rcases ht with ⟨w, i, rfl⟩
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
⊢ cs.lengthParity (w * t) ≠ cs.lengthParity w
state_after: case intro.intro
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w✝ w : W
i : B
⊢ cs.lengthParity (w✝ * (w * cs.simple i * w⁻¹)) ≠ cs.lengthParity w✝

tactic: simp [lengthParity_simple]
state_before: case intro.intro
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w✝ w : W
i : B
⊢ cs.lengthParity (w✝ * (w * cs.simple i * w⁻¹)) ≠ cs.lengthParity w✝
state_after: no goals

tactic: contrapose! this
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
this : cs.lengthParity (w * t) ≠ cs.lengthParity w
⊢ cs.length (w * t) ≠ cs.length w
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
this : cs.length (w * t) = cs.length w
⊢ cs.lengthParity (w * t) = cs.lengthParity w

tactic: simp only [lengthParity_eq_ofAdd_length, this]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
this : cs.length (w * t) = cs.length w
⊢ cs.lengthParity (w * t) = cs.lengthParity w
state_after: no goals
Theorem: WittVector.iterate_verschiebung_mul_coeff
File: Mathlib/RingTheory/WittVector/Identities.lean

tactic: calc
  _ = (verschiebung^[i + j] (frobenius^[j] x * frobenius^[i] y)).coeff (i + j) := ?_
  _ = (frobenius^[j] x * frobenius^[i] y).coeff 0 := ?_
  _ = (frobenius^[j] x).coeff 0 * (frobenius^[i] y).coeff 0 := ?_
  _ = _ := ?_
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑verschiebung)^[i] x * (⇑verschiebung)^[j] y).coeff (i + j) = x.coeff 0 ^ p ^ j * y.coeff 0 ^ p ^ i
state_after: case calc_1
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑verschiebung)^[i] x * (⇑verschiebung)^[j] y).coeff (i + j) =
    ((⇑verschiebung)^[i + j] ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y)).coeff (i + j)

case calc_2
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑verschiebung)^[i + j] ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y)).coeff (i + j) =
    ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y).coeff 0

case calc_3
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y).coeff 0 = ((⇑frobenius)^[j] x).coeff 0 * ((⇑frobenius)^[i] y).coeff 0

case calc_4
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑frobenius)^[j] x).coeff 0 * ((⇑frobenius)^[i] y).coeff 0 = x.coeff 0 ^ p ^ j * y.coeff 0 ^ p ^ i

tactic: rw [iterate_verschiebung_mul]
state_before: case calc_1
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑verschiebung)^[i] x * (⇑verschiebung)^[j] y).coeff (i + j) =
    ((⇑verschiebung)^[i + j] ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y)).coeff (i + j)
state_after: no goals

tactic: convert iterate_verschiebung_coeff (p := p) (R := R) _ _ _ using 2
state_before: case calc_2
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑verschiebung)^[i + j] ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y)).coeff (i + j) =
    ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y).coeff 0
state_after: case h.e'_2.h.e'_4
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ i + j = 0 + (i + j)

tactic: rw [zero_add]
state_before: case h.e'_2.h.e'_4
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ i + j = 0 + (i + j)
state_after: no goals

tactic: apply mul_coeff_zero
state_before: case calc_3
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑frobenius)^[j] x * (⇑frobenius)^[i] y).coeff 0 = ((⇑frobenius)^[j] x).coeff 0 * ((⇑frobenius)^[i] y).coeff 0
state_after: no goals

tactic: simp only [iterate_frobenius_coeff]
state_before: case calc_4
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CharP R p
x y : 𝕎 R
i j : ℕ
⊢ ((⇑frobenius)^[j] x).coeff 0 * ((⇑frobenius)^[i] y).coeff 0 = x.coeff 0 ^ p ^ j * y.coeff 0 ^ p ^ i
state_after: no goals
Theorem: CategoryTheory.CosimplicialObject.δ_comp_σ_self'
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

tactic: subst H
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
j : Fin (n + 2)
i : Fin (n + 1)
H : j = i.castSucc
⊢ X.δ j ≫ X.σ i = 𝟙 (X.obj [n])
state_after: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 1)
⊢ X.δ i.castSucc ≫ X.σ i = 𝟙 (X.obj [n])

tactic: rw [δ_comp_σ_self]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 1)
⊢ X.δ i.castSucc ≫ X.σ i = 𝟙 (X.obj [n])
state_after: no goals
Theorem: Batteries.RBNode.setRed_toList
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: cases t <;> simp [setRed]
state_before: α : Type u_1
t : RBNode α
⊢ t.setRed.toList = t.toList
state_after: no goals
Theorem: Int.cobounded_eq
File: Mathlib/Topology/Instances/Int.lean

tactic: simp_rw [← comap_dist_right_atTop (0 : ℤ), dist_eq', sub_zero,
  ← comap_abs_atTop, ← @Int.comap_cast_atTop ℝ, comap_comap]
state_before: ⊢ Bornology.cobounded ℤ = atBot ⊔ atTop
state_after: ⊢ comap (fun x => ↑|x|) atTop = comap (Int.cast ∘ abs) atTop

tactic: rfl
state_before: ⊢ comap (fun x => ↑|x|) atTop = comap (Int.cast ∘ abs) atTop
state_after: no goals
Theorem: Complex.ext_abs_arg
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← abs_mul_exp_arg_mul_I x, ← abs_mul_exp_arg_mul_I y, h₁, h₂]
state_before: a x✝ z x y : ℂ
h₁ : abs x = abs y
h₂ : x.arg = y.arg
⊢ x = y
state_after: no goals
Theorem: MeasureTheory.IsFundamentalDomain.measure_fundamentalFrontier
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: simpa only [fundamentalFrontier, iUnion₂_inter, one_smul, measure_iUnion_null_iff, inter_comm s,
  Function.onFun] using fun g (hg : g ≠ 1) => hs.aedisjoint hg
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝³ : Countable G
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
⊢ μ (fundamentalFrontier G s) = 0
state_after: no goals
Theorem: Int.pred_neg_pred
File: Mathlib/Data/Int/Defs.lean

tactic: rw [neg_pred, pred_succ]
state_before: a✝ b c d m n a : ℤ
⊢ (-a.pred).pred = -a
state_after: no goals
Theorem: Set.image2_inter_right
File: Mathlib/Data/Set/NAry.lean

tactic: simp_rw [← image_uncurry_prod, prod_inter, image_inter hf.uncurry]
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' : δ
hf : Injective2 f
⊢ image2 f s (t ∩ t') = image2 f s t ∩ image2 f s t'
state_after: no goals
Theorem: WittVector.mapFun.surjective
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: ext n
state_before: p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
f : α → β
hf : Surjective f
x : 𝕎 β
⊢ mapFun f (mk p fun n => Classical.choose ⋯) = x
state_after: case h
p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
f : α → β
hf : Surjective f
x : 𝕎 β
n : ℕ
⊢ (mapFun f (mk p fun n => Classical.choose ⋯)).coeff n = x.coeff n

tactic: simp only [mapFun, coeff_mk, comp_apply, Classical.choose_spec (hf (x.coeff n))]
state_before: case h
p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
f : α → β
hf : Surjective f
x : 𝕎 β
n : ℕ
⊢ (mapFun f (mk p fun n => Classical.choose ⋯)).coeff n = x.coeff n
state_after: no goals
Theorem: bddBelow_insert
File: Mathlib/Order/Bounds/Basic.lean

tactic: simp only [insert_eq, bddBelow_union, bddBelow_singleton, true_and_iff]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a✝ b : α
inst✝ : IsDirected α fun x x_1 => x ≥ x_1
s : Set α
a : α
⊢ BddBelow (insert a s) ↔ BddBelow s
state_after: no goals
Theorem: Equiv.zpow_mulRight
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
inst✝ : Group α
a b : α
n : ℕ
⊢ Equiv.mulRight a ^ Int.ofNat n = Equiv.mulRight (a ^ Int.ofNat n)
state_after: no goals

tactic: simp
state_before: α : Type u
β : Type v
inst✝ : Group α
a b : α
n : ℕ
⊢ Equiv.mulRight a ^ Int.negSucc n = Equiv.mulRight (a ^ Int.negSucc n)
state_after: no goals
Theorem: Polynomial.natDegree_multiset_sum_le
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: simpa using natDegree_list_sum_le
state_before: R : Type u
ι : Type w
s : Finset ι
S : Type u_1
inst✝ : Semiring S
l : Multiset S[X]
⊢ ∀ (a : List S[X]), (Multiset.sum ⟦a⟧).natDegree ≤ foldr max ⋯ 0 (Multiset.map natDegree ⟦a⟧)
state_after: no goals
Theorem: ENNReal.hasSum_coe
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [HasSum, ← coe_finset_sum, tendsto_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : α → ℝ≥0
r : ℝ≥0
⊢ HasSum (fun a => ↑(f a)) ↑r ↔ HasSum f r
state_after: no goals