1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.quadratic_dvd_of_aeval_eq_zero_im_ne_zero
File: Mathlib/Analysis/Complex/Polynomial.lean

tactic: rw [← map_dvd_map' (algebraMap ℝ ℂ)]
state_before: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2) ∣ p
state_after: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2)) ∣ map (algebraMap ℝ ℂ) p

tactic: convert p.mul_star_dvd_of_aeval_eq_zero_im_ne_zero h0 hz
state_before: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2)) ∣ map (algebraMap ℝ ℂ) p
state_after: case h.e'_3
p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2)) = (X - C ((starRingEnd ℂ) z)) * (X - C z)

tactic: calc
  map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2))
  _ = X ^ 2 - C (↑(2 * z.re) : ℂ) * X + C (‖z‖ ^ 2 : ℂ) := by simp
  _ = (X - C (conj z)) * (X - C z) := by
    rw [← add_conj, map_add, ← mul_conj', map_mul]
    ring
state_before: case h.e'_3
p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2)) = (X - C ((starRingEnd ℂ) z)) * (X - C z)
state_after: no goals

tactic: simp
state_before: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ map (algebraMap ℝ ℂ) (X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2)) = X ^ 2 - C ↑(2 * z.re) * X + C (↑‖z‖ ^ 2)
state_after: no goals

tactic: rw [← add_conj, map_add, ← mul_conj', map_mul]
state_before: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ X ^ 2 - C ↑(2 * z.re) * X + C (↑‖z‖ ^ 2) = (X - C ((starRingEnd ℂ) z)) * (X - C z)
state_after: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ X ^ 2 - (C z + C ((starRingEnd ℂ) z)) * X + C z * C ((starRingEnd ℂ) z) = (X - C ((starRingEnd ℂ) z)) * (X - C z)

tactic: ring
state_before: p : ℝ[X]
z : ℂ
h0 : (aeval z) p = 0
hz : z.im ≠ 0
⊢ X ^ 2 - (C z + C ((starRingEnd ℂ) z)) * X + C z * C ((starRingEnd ℂ) z) = (X - C ((starRingEnd ℂ) z)) * (X - C z)
state_after: no goals
Theorem: Real.cosh_add
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← ofReal_inj]
state_before: x y : ℝ
⊢ cosh (x + y) = cosh x * cosh y + sinh x * sinh y
state_after: x y : ℝ
⊢ ↑(cosh (x + y)) = ↑(cosh x * cosh y + sinh x * sinh y)

tactic: simp [cosh_add]
state_before: x y : ℝ
⊢ ↑(cosh (x + y)) = ↑(cosh x * cosh y + sinh x * sinh y)
state_after: no goals
Theorem: Basis.mk_coord_apply_ne
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp [hli.repr_eq_single j, h]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁸ : Ring R
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R₂ M
inst✝¹ : Module R M'
inst✝ : Module R M''
c d : R
x y : M
b : Basis ι R M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i j : ι
h : j ≠ i
⊢ (hli.repr ⟨v j, ⋯⟩) i = 0
state_after: no goals
Theorem: Nat.perm_factors_mul_of_coprime
File: Mathlib/Data/Nat/Factors.lean

tactic: rcases a.eq_zero_or_pos with (rfl | ha)
state_before: a b : ℕ
hab : a.Coprime b
⊢ (a * b).factors ~ a.factors ++ b.factors
state_after: case inl
b : ℕ
hab : Coprime 0 b
⊢ (0 * b).factors ~ factors 0 ++ b.factors

case inr
a b : ℕ
hab : a.Coprime b
ha : a > 0
⊢ (a * b).factors ~ a.factors ++ b.factors

tactic: rcases b.eq_zero_or_pos with (rfl | hb)
state_before: case inr
a b : ℕ
hab : a.Coprime b
ha : a > 0
⊢ (a * b).factors ~ a.factors ++ b.factors
state_after: case inr.inl
a : ℕ
ha : a > 0
hab : a.Coprime 0
⊢ (a * 0).factors ~ a.factors ++ factors 0

case inr.inr
a b : ℕ
hab : a.Coprime b
ha : a > 0
hb : b > 0
⊢ (a * b).factors ~ a.factors ++ b.factors

tactic: exact perm_factors_mul ha.ne' hb.ne'
state_before: case inr.inr
a b : ℕ
hab : a.Coprime b
ha : a > 0
hb : b > 0
⊢ (a * b).factors ~ a.factors ++ b.factors
state_after: no goals

tactic: simp [(coprime_zero_left _).mp hab]
state_before: case inl
b : ℕ
hab : Coprime 0 b
⊢ (0 * b).factors ~ factors 0 ++ b.factors
state_after: no goals

tactic: simp [(coprime_zero_right _).mp hab]
state_before: case inr.inl
a : ℕ
ha : a > 0
hab : a.Coprime 0
⊢ (a * 0).factors ~ a.factors ++ factors 0
state_after: no goals
Theorem: GeneralizedContinuedFraction.of_s_of_int
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: intro n
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a : ℤ
⊢ ∀ (n : ℕ), (of ↑a).s.get? n = none
state_after: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n✝ : ℕ
a : ℤ
n : ℕ
⊢ (of ↑a).s.get? n = none

tactic: induction' n with n ih
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n✝ : ℕ
a : ℤ
n : ℕ
⊢ (of ↑a).s.get? n = none
state_after: case zero
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a : ℤ
⊢ (of ↑a).s.get? 0 = none

case succ
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n✝ : ℕ
a : ℤ
n : ℕ
ih : (of ↑a).s.get? n = none
⊢ (of ↑a).s.get? (n + 1) = none

tactic: rw [of_s_head_aux, stream_succ_of_int, Option.bind]
state_before: case zero
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a : ℤ
⊢ (of ↑a).s.get? 0 = none
state_after: no goals

tactic: exact (of (a : K)).s.prop ih
state_before: case succ
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n✝ : ℕ
a : ℤ
n : ℕ
ih : (of ↑a).s.get? n = none
⊢ (of ↑a).s.get? (n + 1) = none
state_after: no goals
Theorem: ProbabilityTheory.IndepFun.ae_eq
File: Mathlib/Probability/Independence/Basic.lean

tactic: refine kernel.IndepFun.ae_eq hfg ?_ ?_ <;>
  simp only [ae_dirac_eq, Filter.eventually_pure, kernel.const_apply]
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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
f' : Ω → β
g' : Ω → β'
hfg : IndepFun f g μ
hf : f =ᶠ[ae μ] f'
hg : g =ᶠ[ae μ] g'
⊢ IndepFun f' g' μ
state_after: case refine_1
Ω : 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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
f' : Ω → β
g' : Ω → β'
hfg : IndepFun f g μ
hf : f =ᶠ[ae μ] f'
hg : g =ᶠ[ae μ] g'
⊢ f =ᶠ[ae μ] f'

case refine_2
Ω : 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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
f' : Ω → β
g' : Ω → β'
hfg : IndepFun f g μ
hf : f =ᶠ[ae μ] f'
hg : g =ᶠ[ae μ] g'
⊢ g =ᶠ[ae μ] g'

tactic: exacts [hf, hg]
state_before: case refine_1
Ω : 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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
f' : Ω → β
g' : Ω → β'
hfg : IndepFun f g μ
hf : f =ᶠ[ae μ] f'
hg : g =ᶠ[ae μ] g'
⊢ f =ᶠ[ae μ] f'

case refine_2
Ω : 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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
f' : Ω → β
g' : Ω → β'
hfg : IndepFun f g μ
hf : f =ᶠ[ae μ] f'
hg : g =ᶠ[ae μ] g'
⊢ g =ᶠ[ae μ] g'
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.totalVariation_zero
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: simp [totalVariation, toJordanDecomposition_zero]
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
⊢ totalVariation 0 = 0
state_after: no goals
Theorem: IntermediateField.biSup_adjoin_simple
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [← iSup_subtype'', ← gc.l_iSup, iSup_subtype'']
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
⊢ ⨆ x ∈ S, F⟮x⟯ = adjoin F S
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
⊢ adjoin F (⨆ t ∈ S, {t}) = adjoin F S

tactic: congr
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
⊢ adjoin F (⨆ t ∈ S, {t}) = adjoin F S
state_after: case e_S
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
⊢ ⨆ t ∈ S, {t} = S

tactic: exact S.biUnion_of_singleton
state_before: case e_S
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
⊢ ⨆ t ∈ S, {t} = S
state_after: no goals
Theorem: MulAction.fixedBy_inv
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: ext
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
⊢ fixedBy α g⁻¹ = fixedBy α g
state_after: case h
α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
x✝ : α
⊢ x✝ ∈ fixedBy α g⁻¹ ↔ x✝ ∈ fixedBy α g

tactic: rw [mem_fixedBy, mem_fixedBy, inv_smul_eq_iff, eq_comm]
state_before: case h
α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g : G
x✝ : α
⊢ x✝ ∈ fixedBy α g⁻¹ ↔ x✝ ∈ fixedBy α g
state_after: no goals
Theorem: ContinuousOn.angle_sign_comp
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: refine (ContinuousAt.continuousOn fun θ hθ => ?_).comp hf (Set.mapsTo_image f s)
state_before: α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ z ∈ s, f z ≠ 0 ∧ f z ≠ ↑π
⊢ ContinuousOn (sign ∘ f) s
state_after: α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ z ∈ s, f z ≠ 0 ∧ f z ≠ ↑π
θ : Angle
hθ : θ ∈ f '' s
⊢ ContinuousAt sign θ

tactic: obtain ⟨z, hz, rfl⟩ := hθ
state_before: α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ z ∈ s, f z ≠ 0 ∧ f z ≠ ↑π
θ : Angle
hθ : θ ∈ f '' s
⊢ ContinuousAt sign θ
state_after: case intro.intro
α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ z ∈ s, f z ≠ 0 ∧ f z ≠ ↑π
z : α
hz : z ∈ s
⊢ ContinuousAt sign (f z)

tactic: exact continuousAt_sign (hs _ hz).1 (hs _ hz).2
state_before: case intro.intro
α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ z ∈ s, f z ≠ 0 ∧ f z ≠ ↑π
z : α
hz : z ∈ s
⊢ ContinuousAt sign (f z)
state_after: no goals
Theorem: LSeries.term_convolution
File: Mathlib/NumberTheory/LSeries/Convolution.lean

tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: f g : ℕ → ℂ
s : ℂ
n : ℕ
⊢ term (f ⍟ g) s n = ∑ p ∈ n.divisorsAntidiagonal, term f s p.1 * term g s p.2
state_after: case inl
f g : ℕ → ℂ
s : ℂ
⊢ term (f ⍟ g) s 0 = ∑ p ∈ divisorsAntidiagonal 0, term f s p.1 * term g s p.2

case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ term (f ⍟ g) s n = ∑ p ∈ n.divisorsAntidiagonal, term f s p.1 * term g s p.2

tactic: rw [term_of_ne_zero hn, convolution_def, Finset.sum_div]
state_before: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ term (f ⍟ g) s n = ∑ p ∈ n.divisorsAntidiagonal, term f s p.1 * term g s p.2
state_after: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ ∑ i ∈ n.divisorsAntidiagonal, f i.1 * g i.2 / ↑n ^ s = ∑ p ∈ n.divisorsAntidiagonal, term f s p.1 * term g s p.2

tactic: refine Finset.sum_congr rfl fun p hp ↦ ?_
state_before: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ ∑ i ∈ n.divisorsAntidiagonal, f i.1 * g i.2 / ↑n ^ s = ∑ p ∈ n.divisorsAntidiagonal, term f s p.1 * term g s p.2
state_after: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ f p.1 * g p.2 / ↑n ^ s = term f s p.1 * term g s p.2

tactic: have ⟨hp₁, hp₂⟩ := ne_zero_of_mem_divisorsAntidiagonal hp
state_before: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ f p.1 * g p.2 / ↑n ^ s = term f s p.1 * term g s p.2
state_after: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
hp₁ : p.1 ≠ 0
hp₂ : p.2 ≠ 0
⊢ f p.1 * g p.2 / ↑n ^ s = term f s p.1 * term g s p.2

tactic: rw [term_of_ne_zero hp₁ f s, term_of_ne_zero hp₂ g s, mul_comm_div, div_div, ← mul_div_assoc,
  ← natCast_mul_natCast_cpow, ← cast_mul, mul_comm p.2, (mem_divisorsAntidiagonal.mp hp).1]
state_before: case inr
f g : ℕ → ℂ
s : ℂ
n : ℕ
hn : n ≠ 0
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
hp₁ : p.1 ≠ 0
hp₂ : p.2 ≠ 0
⊢ f p.1 * g p.2 / ↑n ^ s = term f s p.1 * term g s p.2
state_after: no goals

tactic: simp only [term_zero, divisorsAntidiagonal_zero, Finset.sum_empty]
state_before: case inl
f g : ℕ → ℂ
s : ℂ
⊢ term (f ⍟ g) s 0 = ∑ p ∈ divisorsAntidiagonal 0, term f s p.1 * term g s p.2
state_after: no goals
Theorem: Coalgebra.coassoc_symm_apply
File: Mathlib/RingTheory/Coalgebra/Basic.lean

tactic: rw [(TensorProduct.assoc R A A A).symm_apply_eq, coassoc_apply a]
state_before: R : Type u
A : Type v
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid A
inst✝¹ : Module R A
inst✝ : Coalgebra R A
a : A
⊢ (TensorProduct.assoc R A A A).symm ((LinearMap.lTensor A comul) (comul a)) = (LinearMap.rTensor A comul) (comul a)
state_after: no goals
Theorem: Set.subset_iInter₂_iff
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [subset_iInter_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : (i : ι) → κ i → Set α
⊢ s ⊆ ⋂ i, ⋂ j, t i j ↔ ∀ (i : ι) (j : κ i), s ⊆ t i j
state_after: no goals
Theorem: ENNReal.tendsto_nhds_top_iff_nnreal
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [nhds_top', tendsto_iInf, tendsto_principal, mem_Ioi]
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∞
m : α → ℝ≥0∞
f : Filter α
⊢ Tendsto m f (𝓝 ⊤) ↔ ∀ (x : ℝ≥0), ∀ᶠ (a : α) in f, ↑x < m a
state_after: no goals
Theorem: HasProd.div
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

tactic: simp only [div_eq_mul_inv]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
hf : HasProd f a₁
hg : HasProd g a₂
⊢ HasProd (fun b => f b / g b) (a₁ / a₂)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
hf : HasProd f a₁
hg : HasProd g a₂
⊢ HasProd (fun b => f b * (g b)⁻¹) (a₁ * a₂⁻¹)

tactic: exact hf.mul hg.inv
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
hf : HasProd f a₁
hg : HasProd g a₂
⊢ HasProd (fun b => f b * (g b)⁻¹) (a₁ * a₂⁻¹)
state_after: no goals
Theorem: CategoryTheory.ExactPairing.coevaluation_evaluation''
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: convert coevaluation_evaluation X Y <;> simp [monoidalComp]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : ExactPairing X Y
⊢ Y ◁ η_ X Y ⊗≫ ε_ X Y ▷ Y = ⊗𝟙
state_after: no goals
Theorem: IsPrimitiveRoot.pow_of_dvd
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: suffices orderOf (ζ ^ p) = k / p by exact this ▸ IsPrimitiveRoot.orderOf (ζ ^ p)
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
⊢ IsPrimitiveRoot (ζ ^ p) (k / p)
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
⊢ orderOf (ζ ^ p) = k / p

tactic: rw [orderOf_pow' _ hp, ← eq_orderOf h, Nat.gcd_eq_right hdiv]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
⊢ orderOf (ζ ^ p) = k / p
state_after: no goals

tactic: exact this ▸ IsPrimitiveRoot.orderOf (ζ ^ p)
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
this : orderOf (ζ ^ p) = k / p
⊢ IsPrimitiveRoot (ζ ^ p) (k / p)
state_after: no goals
Theorem: CategoryTheory.unitCompPartialBijective_symm_natural
File: Mathlib/CategoryTheory/Adjunction/Reflective.lean

tactic: simp
state_before: C : Type u₁
D : Type u₂
E : Type u₃
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
inst✝¹ : Category.{v₃, u₃} E
i : D ⥤ C
inst✝ : Reflective i
A B B' : C
h : B ⟶ B'
hB : B ∈ i.essImage
hB' : B' ∈ i.essImage
f : i.obj ((reflector i).obj A) ⟶ B
⊢ (unitCompPartialBijective A hB').symm (f ≫ h) = (unitCompPartialBijective A hB).symm f ≫ h
state_after: no goals
Theorem: Num.add_zero
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type u_1
n : Num
⊢ n + 0 = n
state_after: no goals
Theorem: Nat.gcd_add_mul_left_left
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [gcd_comm, gcd_add_mul_left_right, gcd_comm]
state_before: m n k : ℕ
⊢ (m + n * k).gcd n = m.gcd n
state_after: no goals
Theorem: ZMod.eq_iff_modEq_nat
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n a b : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD n]
state_after: case zero
a b : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD 0]

case succ
a b n✝ : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD n✝ + 1]

tactic: simp [Nat.ModEq, Int.natCast_inj, Nat.mod_zero]
state_before: case zero
a b : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD 0]
state_after: no goals

tactic: rw [Fin.ext_iff, Nat.ModEq, ← val_natCast, ← val_natCast]
state_before: case succ
a b n✝ : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD n✝ + 1]
state_after: case succ
a b n✝ : ℕ
⊢ ↑↑a = ↑↑b ↔ (↑a).val = (↑b).val

tactic: exact Iff.rfl
state_before: case succ
a b n✝ : ℕ
⊢ ↑↑a = ↑↑b ↔ (↑a).val = (↑b).val
state_after: no goals
Theorem: Cardinal.card_lt_of_card_biUnion_lt
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [biUnion_eq_iUnion] at h
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ a, ⋃ (h : a ∈ s), t a h) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c

tactic: have := card_lt_of_card_iUnion_lt h
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
this : ∀ (i : ↑s), #↑(t ↑i ⋯) < c
⊢ #↑(t a ha) < c

tactic: simp_all only [iUnion_coe_set,
  Subtype.forall]
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
this : ∀ (i : ↑s), #↑(t ↑i ⋯) < c
⊢ #↑(t a ha) < c
state_after: no goals
Theorem: IsPGroup.exists_le_sylow
File: Mathlib/GroupTheory/Sylow.lean

tactic: refine Exists.imp (fun k hk => ?_) (hc1 S.2 ⟨g, hg⟩)
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
P : Subgroup G
hP : IsPGroup p ↥P
c : Set (Subgroup G)
hc1 : c ⊆ {Q | IsPGroup p ↥Q}
hc2 : IsChain (fun x x_1 => x ≤ x_1) c
Q : Subgroup G
hQ : Q ∈ c
x✝ : ↥{ carrier := ⋃ R, ↑↑R, mul_mem' := ⋯, one_mem' := ⋯, inv_mem' := ⋯ }
g : G
S : ↑c
hg : g ∈ (fun R => ↑↑R) S
⊢ ∃ k, ⟨g, ⋯⟩ ^ p ^ k = 1
state_after: p : ℕ
G : Type u_1
inst✝ : Group G
P : Subgroup G
hP : IsPGroup p ↥P
c : Set (Subgroup G)
hc1 : c ⊆ {Q | IsPGroup p ↥Q}
hc2 : IsChain (fun x x_1 => x ≤ x_1) c
Q : Subgroup G
hQ : Q ∈ c
x✝ : ↥{ carrier := ⋃ R, ↑↑R, mul_mem' := ⋯, one_mem' := ⋯, inv_mem' := ⋯ }
g : G
S : ↑c
hg : g ∈ (fun R => ↑↑R) S
k : ℕ
hk : ⟨g, hg⟩ ^ p ^ k = 1
⊢ ⟨g, ⋯⟩ ^ p ^ k = 1

tactic: rwa [Subtype.ext_iff, coe_pow] at hk ⊢
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
P : Subgroup G
hP : IsPGroup p ↥P
c : Set (Subgroup G)
hc1 : c ⊆ {Q | IsPGroup p ↥Q}
hc2 : IsChain (fun x x_1 => x ≤ x_1) c
Q : Subgroup G
hQ : Q ∈ c
x✝ : ↥{ carrier := ⋃ R, ↑↑R, mul_mem' := ⋯, one_mem' := ⋯, inv_mem' := ⋯ }
g : G
S : ↑c
hg : g ∈ (fun R => ↑↑R) S
k : ℕ
hk : ⟨g, hg⟩ ^ p ^ k = 1
⊢ ⟨g, ⋯⟩ ^ p ^ k = 1
state_after: no goals
Theorem: soln_dist_to_a_lt_deriv
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: rw [soln_dist_to_a, div_lt_iff (deriv_norm_pos _), ← sq] <;> assumption
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖soln - a‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖
state_after: no goals
Theorem: Compactum.isClosed_cl
File: Mathlib/Topology/Category/Compactum.lean

tactic: rw [isClosed_iff]
state_before: X : Compactum
A : Set X.A
⊢ IsClosed (Compactum.cl A)
state_after: X : Compactum
A : Set X.A
⊢ ∀ (F : Ultrafilter X.A), Compactum.cl A ∈ F → X.str F ∈ Compactum.cl A

tactic: intro F hF
state_before: X : Compactum
A : Set X.A
⊢ ∀ (F : Ultrafilter X.A), Compactum.cl A ∈ F → X.str F ∈ Compactum.cl A
state_after: X : Compactum
A : Set X.A
F : Ultrafilter X.A
hF : Compactum.cl A ∈ F
⊢ X.str F ∈ Compactum.cl A

tactic: exact cl_cl _ ⟨F, hF, rfl⟩
state_before: X : Compactum
A : Set X.A
F : Ultrafilter X.A
hF : Compactum.cl A ∈ F
⊢ X.str F ∈ Compactum.cl A
state_after: no goals
Theorem: MeasureTheory.integral_fun_fst
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: rw [← integral_prod_swap]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α → E
⊢ ∫ (z : α × β), f z.1 ∂μ.prod ν = (ν univ).toReal • ∫ (x : α), f x ∂μ
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α → E
⊢ ∫ (z : β × α), f z.swap.1 ∂ν.prod μ = (ν univ).toReal • ∫ (x : α), f x ∂μ

tactic: apply integral_fun_snd
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α → E
⊢ ∫ (z : β × α), f z.swap.1 ∂ν.prod μ = (ν univ).toReal • ∫ (x : α), f x ∂μ
state_after: no goals
Theorem: Equiv.comp_map
File: Mathlib/Control/Traversable/Equiv.lean

tactic: simpa [Equiv.map] using comp_map ..
state_before: t t' : Type u → Type u
eqv : (α : Type u) → t α ≃ t' α
inst✝¹ : Functor t
inst✝ : LawfulFunctor t
α β γ : Type u
g : α → β
h : β → γ
x : t' α
⊢ Equiv.map eqv (h ∘ g) x = Equiv.map eqv h (Equiv.map eqv g x)
state_after: no goals