ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: geom_sum_mul
File: Mathlib/Algebra/GeomSum.lean

Proof steps:
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
state_after: α : Type u
inst✝ : Ring α
x : α
n : ℕ
this : (∑ i ∈ range n, x ^ i * 1 ^ (n - 1 - i)) * (x - 1) = x ^ n - 1 ^ n
⊢ (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
tactic: have := (Commute.one_right x).geom_sum₂_mul n
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
this : (∑ i ∈ range n, x ^ i * 1 ^ (n - 1 - i)) * (x - 1) = x ^ n - 1 ^ n
⊢ (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
state_after: α : Type u
inst✝ : Ring α
x : α
n : ℕ
this : (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
⊢ (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
tactic: rw [one_pow, geom_sum₂_with_one] at this
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
this : (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
⊢ (∑ i ∈ range n, x ^ i) * (x - 1) = x ^ n - 1
state_after: no goals
tactic: exact this
Theorem: Nat.gcdA_zero_right
File: Mathlib/Data/Int/GCD.lean

Proof steps:
state_before: s : ℕ
h : s ≠ 0
⊢ s.gcdA 0 = 1
state_after: s : ℕ
h : s ≠ 0
⊢ (s.xgcdAux 1 0 0 0 1).2.1 = 1
tactic: unfold gcdA xgcd
state_before: s : ℕ
h : s ≠ 0
⊢ (s.xgcdAux 1 0 0 0 1).2.1 = 1
state_after: case intro
s : ℕ
h : s.succ ≠ 0
⊢ (s.succ.xgcdAux 1 0 0 0 1).2.1 = 1
tactic: obtain ⟨s, rfl⟩ := Nat.exists_eq_succ_of_ne_zero h
state_before: case intro
s : ℕ
h : s.succ ≠ 0
⊢ (s.succ.xgcdAux 1 0 0 0 1).2.1 = 1
state_after: case intro
s : ℕ
h : s.succ ≠ 0
⊢ ((0 % s.succ).xgcdAux (0 - ↑(0 / s.succ) * 1) (1 - ↑(0 / s.succ) * 0) s.succ 1 0).2.1 = 1
tactic: rw [xgcdAux]
state_before: case intro
s : ℕ
h : s.succ ≠ 0
⊢ ((0 % s.succ).xgcdAux (0 - ↑(0 / s.succ) * 1) (1 - ↑(0 / s.succ) * 0) s.succ 1 0).2.1 = 1
state_after: no goals
tactic: simp
Theorem: continuousAt_of_tendsto_nhds
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : T1Space Y
f : X → Y
x : X
y : Y
h : Tendsto f (𝓝 x) (𝓝 y)
⊢ ContinuousAt f x
state_after: no goals
tactic: rwa [ContinuousAt, eq_of_tendsto_nhds h]
Theorem: Real.negMulLog_one
File: Mathlib/Analysis/SpecialFunctions/Log/NegMulLog.lean

Proof steps:
state_before: ⊢ negMulLog 1 = 0
state_after: no goals
tactic: simp [negMulLog]
Theorem: AkraBazziRecurrence.eventually_r_lt_n
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
⊢ ∀ᶠ (n : ℕ) in atTop, ∀ (i : α), r i n < n
state_after: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
hn : R.n₀ ≤ n
⊢ ∀ (i : α), r i n < n
tactic: filter_upwards [eventually_ge_atTop R.n₀] with n hn
state_before: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
hn : R.n₀ ≤ n
⊢ ∀ (i : α), r i n < n
state_after: no goals
tactic: exact fun i => R.r_lt_n i n hn
Theorem: all_mem_nhds
File: Mathlib/Topology/Basic.lean

Proof steps:
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
x : X
P : Set X → Prop
hP : ∀ (s t : Set X), s ⊆ t → P s → P t
⊢ (∀ (i : Set X), x ∈ i ∧ IsOpen i → P i) ↔ ∀ (s : Set X), IsOpen s → x ∈ s → P s
state_after: no goals
tactic: simp only [@and_comm (x ∈ _), and_imp]
Theorem: Module.End.genEigenspace_zero
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

Proof steps:
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
k : ℕ
⊢ (f.genEigenspace 0) k = LinearMap.ker (f ^ k)
state_after: no goals
tactic: simp [Module.End.genEigenspace]
Theorem: Complex.countable_preimage_exp
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

Proof steps:
state_before: s : Set ℂ
⊢ (cexp ⁻¹' s).Countable ↔ s.Countable
state_after: case refine_1
s : Set ℂ
hs : (cexp ⁻¹' s).Countable
⊢ s.Countable

case refine_2
s : Set ℂ
hs : s.Countable
⊢ (cexp ⁻¹' s).Countable
tactic: refine ⟨fun hs => ?_, fun hs => ?_⟩
Theorem: Finset.prod_Ico_succ_top
File: Mathlib/Algebra/BigOperators/Intervals.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a✝ : α
g f✝ : α → M
a b : ℕ
hab : a ≤ b
f : ℕ → M
⊢ ∏ k ∈ Ico a (b + 1), f k = (∏ k ∈ Ico a b, f k) * f b
state_after: no goals
tactic: rw [Nat.Ico_succ_right_eq_insert_Ico hab, prod_insert right_not_mem_Ico, mul_comm]
Theorem: SimpleGraph.pathGraph_adj
File: Mathlib/Combinatorics/SimpleGraph/Hasse.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
n : ℕ
u v : Fin n
⊢ (pathGraph n).Adj u v ↔ ↑u + 1 = ↑v ∨ ↑v + 1 = ↑u
state_after: α : Type u_1
β : Type u_2
n : ℕ
u v : Fin n
⊢ u ⋖ v ∨ v ⋖ u ↔ ↑u + 1 = ↑v ∨ ↑v + 1 = ↑u
tactic: simp only [pathGraph, hasse]
state_before: α : Type u_1
β : Type u_2
n : ℕ
u v : Fin n
⊢ u ⋖ v ∨ v ⋖ u ↔ ↑u + 1 = ↑v ∨ ↑v + 1 = ↑u
state_after: no goals
tactic: simp_rw [← Fin.coe_covBy_iff, Nat.covBy_iff_succ_eq]
Theorem: Nat.ne_one_iff_exists_prime_dvd
File: Mathlib/Data/Nat/Prime/Basic.lean

Proof steps:
state_before: n : ℕ
⊢ 0 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ 0
state_after: no goals
tactic: simpa using Exists.intro 2 Nat.prime_two
state_before: n : ℕ
⊢ 1 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ 1
state_after: no goals
tactic: simp [Nat.not_prime_one]
state_before: n✝ n : ℕ
⊢ n + 2 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ n + 2
state_after: n✝ n : ℕ
a : ℕ := n + 2
⊢ n + 2 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ n + 2
tactic: let a := n + 2
state_before: n✝ n : ℕ
a : ℕ := n + 2
⊢ n + 2 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ n + 2
state_after: n✝ n : ℕ
a : ℕ := n + 2
ha : a ≠ 1 := succ_succ_ne_one n
⊢ n + 2 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ n + 2
tactic: let ha : a ≠ 1 := Nat.succ_succ_ne_one n
state_before: n✝ n : ℕ
a : ℕ := n + 2
ha : a ≠ 1 := succ_succ_ne_one n
⊢ n + 2 ≠ 1 ↔ ∃ p, Prime p ∧ p ∣ n + 2
state_after: n✝ n : ℕ
a : ℕ := n + 2
ha : a ≠ 1 := succ_succ_ne_one n
⊢ ∃ p, Prime p ∧ p ∣ n + 2
tactic: simp only [true_iff_iff, Ne, not_false_iff, ha]
state_before: n✝ n : ℕ
a : ℕ := n + 2
ha : a ≠ 1 := succ_succ_ne_one n
⊢ ∃ p, Prime p ∧ p ∣ n + 2
state_after: no goals
tactic: exact ⟨a.minFac, Nat.minFac_prime ha, a.minFac_dvd⟩
Theorem: Valuation.supp_quot_supp
File: Mathlib/RingTheory/Valuation/Quotient.lean

Proof steps:
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ (v.onQuot ⋯).supp = 0
state_after: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ Ideal.map (Ideal.Quotient.mk v.supp) v.supp = 0
tactic: rw [supp_quot]
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ Ideal.map (Ideal.Quotient.mk v.supp) v.supp = 0
state_after: no goals
tactic: exact Ideal.map_quotient_self _
Theorem: CategoryTheory.ShortComplex.Exact.comp_descToInjective
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.217769, u_2} D
inst✝¹ : Abelian C
S : ShortComplex C
hS : S.Exact
J : C
f : S.X₂ ⟶ J
inst✝ : Injective J
hf : S.f ≫ f = 0
⊢ S.g ≫ hS.descToInjective f hf = f
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.217769, u_2} D
inst✝¹ : Abelian C
S : ShortComplex C
hS : S.Exact
J : C
f : S.X₂ ⟶ J
inst✝ : Injective J
hf : S.f ≫ f = 0
this : Mono S.fromOpcycles
⊢ S.g ≫ hS.descToInjective f hf = f
tactic: have := hS.mono_fromOpcycles
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.217769, u_2} D
inst✝¹ : Abelian C
S : ShortComplex C
hS : S.Exact
J : C
f : S.X₂ ⟶ J
inst✝ : Injective J
hf : S.f ≫ f = 0
this : Mono S.fromOpcycles
⊢ S.g ≫ hS.descToInjective f hf = f
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.217769, u_2} D
inst✝¹ : Abelian C
S : ShortComplex C
hS : S.Exact
J : C
f : S.X₂ ⟶ J
inst✝ : Injective J
hf : S.f ≫ f = 0
this : Mono S.fromOpcycles
⊢ S.g ≫ Injective.factorThru (S.descOpcycles f hf) S.fromOpcycles = f
tactic: dsimp [descToInjective]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.217769, u_2} D
inst✝¹ : Abelian C
S : ShortComplex C
hS : S.Exact
J : C
f : S.X₂ ⟶ J
inst✝ : Injective J
hf : S.f ≫ f = 0
this : Mono S.fromOpcycles
⊢ S.g ≫ Injective.factorThru (S.descOpcycles f hf) S.fromOpcycles = f
state_after: no goals
tactic: simp only [← p_fromOpcycles, assoc, Injective.comp_factorThru, p_descOpcycles]
Theorem: Subgroup.mem_rightTransversals_iff_existsUnique_quotient_mk''_eq
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ S ∈ rightTransversals ↑H ↔ ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! s, Quotient.mk'' ↑s = Quotient.mk'' g) ↔
    ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
tactic: simp_rw [mem_rightTransversals_iff_existsUnique_mul_inv_mem, SetLike.mem_coe, ←
    QuotientGroup.rightRel_apply, ← Quotient.eq'']
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! s, Quotient.mk'' ↑s = Quotient.mk'' g) ↔
    ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
state_after: no goals
tactic: exact ⟨fun h q => Quotient.inductionOn' q h, fun h g => h (Quotient.mk'' g)⟩
Theorem: RingQuot.smul_quot
File: Mathlib/Algebra/RingQuot.lean

Proof steps:
state_before: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r : R → R → Prop
inst✝ : Algebra S R
n : S
a : R
⊢ n • { toQuot := Quot.mk (Rel r) a } = { toQuot := Quot.mk (Rel r) (n • a) }
state_after: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r : R → R → Prop
inst✝ : Algebra S R
n : S
a : R
⊢ RingQuot.smul r n { toQuot := Quot.mk (Rel r) a } = { toQuot := Quot.mk (Rel r) (n • a) }
tactic: show smul r _ _ = _
state_before: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r : R → R → Prop
inst✝ : Algebra S R
n : S
a : R
⊢ RingQuot.smul r n { toQuot := Quot.mk (Rel r) a } = { toQuot := Quot.mk (Rel r) (n • a) }
state_after: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r : R → R → Prop
inst✝ : Algebra S R
n : S
a : R
⊢ (match { toQuot := Quot.mk (Rel r) a } with
    | { toQuot := a } => { toQuot := Quot.map (fun a => n • a) ⋯ a }) =
    { toQuot := Quot.mk (Rel r) (n • a) }
tactic: rw [smul]
state_before: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r : R → R → Prop
inst✝ : Algebra S R
n : S
a : R
⊢ (match { toQuot := Quot.mk (Rel r) a } with
    | { toQuot := a } => { toQuot := Quot.map (fun a => n • a) ⋯ a }) =
    { toQuot := Quot.mk (Rel r) (n • a) }
state_after: no goals
tactic: rfl
Theorem: Function.Commute.invOn_fixedPoints_comp
File: Mathlib/Dynamics/FixedPoints/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
f fa g : α → α
x y : α
fb : β → β
m n k : ℕ
e : Perm α
h : Function.Commute f g
⊢ Set.InvOn f g (fixedPoints (f ∘ g)) (fixedPoints (f ∘ g))
state_after: no goals
tactic: simpa only [h.comp_eq] using Function.invOn_fixedPoints_comp f g
Theorem: NormedField.exists_lt_norm
File: Mathlib/Analysis/Normed/Field/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : NontriviallyNormedField α
r : ℝ
w : α
hw : 1 < ‖w‖
n : ℕ
hn : r < ‖w‖ ^ n
⊢ r < ‖w ^ n‖
state_after: no goals
tactic: rwa [norm_pow]
Theorem: Filter.HasBasis.lift'_interior_eq_self
File: Mathlib/Topology/Basic.lean

Proof steps:
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
l : Filter X
p : ι → Prop
s : ι → Set X
h : l.HasBasis p s
ho : ∀ (i : ι), p i → IsOpen (s i)
i : ι
hi : p i
⊢ interior (s i) ∈ l
state_after: no goals
tactic: simpa only [(ho i hi).interior_eq] using h.mem_of_mem hi
Theorem: mem_span_gramSchmidt
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ι
hij : i ≤ j
⊢ f i ∈ span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ι
hij : i ≤ j
⊢ gramSchmidt 𝕜 f i + ∑ i_1 ∈ Finset.Iio i, ↑((orthogonalProjection (span 𝕜 {gramSchmidt 𝕜 f i_1})) (f i)) ∈
    span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)
tactic: rw [gramSchmidt_def' 𝕜 f i]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ι
hij : i ≤ j
⊢ gramSchmidt 𝕜 f i + ∑ i_1 ∈ Finset.Iio i, ↑((orthogonalProjection (span 𝕜 {gramSchmidt 𝕜 f i_1})) (f i)) ∈
    span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ι
hij : i ≤ j
⊢ gramSchmidt 𝕜 f i +
      ∑ x ∈ Finset.Iio i, (⟪gramSchmidt 𝕜 f x, f i⟫_𝕜 / ↑(‖gramSchmidt 𝕜 f x‖ ^ 2)) • gramSchmidt 𝕜 f x ∈
    span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)
tactic: simp_rw [orthogonalProjection_singleton]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ι
hij : i ≤ j
⊢ gramSchmidt 𝕜 f i +
      ∑ x ∈ Finset.Iio i, (⟪gramSchmidt 𝕜 f x, f i⟫_𝕜 / ↑(‖gramSchmidt 𝕜 f x‖ ^ 2)) • gramSchmidt 𝕜 f x ∈
    span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)
state_after: no goals
tactic: exact Submodule.add_mem _ (subset_span <| mem_image_of_mem _ hij)
    (Submodule.sum_mem _ fun k hk => smul_mem (span 𝕜 (gramSchmidt 𝕜 f '' Set.Iic j)) _ <|
      subset_span <| mem_image_of_mem (gramSchmidt 𝕜 f) <| (Finset.mem_Iio.1 hk).le.trans hij)
Theorem: IsPrimitiveRoot.not_exists_int_prime_dvd_sub_of_prime_ne_two'
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

Proof steps:
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
hodd : p ≠ 2
⊢ ¬∃ n, ↑↑p ∣ hζ.toInteger - ↑n
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
hodd : p ≠ 2
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ ¬∃ n, ↑↑p ∣ hζ.toInteger - ↑n
tactic: have : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K := by simpa using hcycl
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
hodd : p ≠ 2
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ ¬∃ n, ↑↑p ∣ hζ.toInteger - ↑n
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ✝ : IsPrimitiveRoot ζ ↑p
hodd : p ≠ 2
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
hζ : IsPrimitiveRoot ζ (↑p ^ (0 + 1))
⊢ ¬∃ n, ↑↑p ∣ hζ✝.toInteger - ↑n
tactic: replace hζ : IsPrimitiveRoot ζ (p ^ (0 + 1)) := by simpa using hζ
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ✝ : IsPrimitiveRoot ζ ↑p
hodd : p ≠ 2
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
hζ : IsPrimitiveRoot ζ (↑p ^ (0 + 1))
⊢ ¬∃ n, ↑↑p ∣ hζ✝.toInteger - ↑n
state_after: no goals
tactic: exact not_exists_int_prime_dvd_sub_of_prime_ne_two hζ hodd
Theorem: EllipticCurve.map_Δ'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑((Units.map ↑φ) E.Δ') = (E.map φ).Δ
state_after: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑φ E.Δ = φ E.Δ
tactic: simp only [Units.coe_map, coe_Δ', E.map_Δ]
state_before: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
⊢ ↑φ E.Δ = φ E.Δ
state_after: no goals
tactic: rfl
Theorem: MeasureTheory.measurePreserving_pi_empty
File: Mathlib/MeasureTheory/Constructions/Pi.lean

Proof steps:
state_before: ι✝ : Type u_1
ι' : Type u_2
α✝ : ι✝ → Type u_3
inst✝⁴ : Fintype ι✝
m✝¹ : (i : ι✝) → OuterMeasure (α✝ i)
m✝ : (i : ι✝) → MeasurableSpace (α✝ i)
μ✝ : (i : ι✝) → Measure (α✝ i)
inst✝³ : ∀ (i : ι✝), SigmaFinite (μ✝ i)
inst✝² : Fintype ι'
ι : Type u
α : ι → Type v
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ MeasurePreserving (⇑(MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit)) (Measure.pi μ) (Measure.dirac ())
state_after: ι✝ : Type u_1
ι' : Type u_2
α✝ : ι✝ → Type u_3
inst✝⁴ : Fintype ι✝
m✝¹ : (i : ι✝) → OuterMeasure (α✝ i)
m✝ : (i : ι✝) → MeasurableSpace (α✝ i)
μ✝ : (i : ι✝) → Measure (α✝ i)
inst✝³ : ∀ (i : ι✝), SigmaFinite (μ✝ i)
inst✝² : Fintype ι'
ι : Type u
α : ι → Type v
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ MeasurePreserving (⇑e) (Measure.pi μ) (Measure.dirac ())
tactic: set e := MeasurableEquiv.ofUniqueOfUnique (∀ i, α i) Unit
state_before: ι✝ : Type u_1
ι' : Type u_2
α✝ : ι✝ → Type u_3
inst✝⁴ : Fintype ι✝
m✝¹ : (i : ι✝) → OuterMeasure (α✝ i)
m✝ : (i : ι✝) → MeasurableSpace (α✝ i)
μ✝ : (i : ι✝) → Measure (α✝ i)
inst✝³ : ∀ (i : ι✝), SigmaFinite (μ✝ i)
inst✝² : Fintype ι'
ι : Type u
α : ι → Type v
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ MeasurePreserving (⇑e) (Measure.pi μ) (Measure.dirac ())
state_after: ι✝ : Type u_1
ι' : Type u_2
α✝ : ι✝ → Type u_3
inst✝⁴ : Fintype ι✝
m✝¹ : (i : ι✝) → OuterMeasure (α✝ i)
m✝ : (i : ι✝) → MeasurableSpace (α✝ i)
μ✝ : (i : ι✝) → Measure (α✝ i)
inst✝³ : ∀ (i : ι✝), SigmaFinite (μ✝ i)
inst✝² : Fintype ι'
ι : Type u
α : ι → Type v
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ Measure.map (⇑e) (Measure.pi μ) = Measure.dirac ()
tactic: refine ⟨e.measurable, ?_⟩
state_before: ι✝ : Type u_1
ι' : Type u_2
α✝ : ι✝ → Type u_3
inst✝⁴ : Fintype ι✝
m✝¹ : (i : ι✝) → OuterMeasure (α✝ i)
m✝ : (i : ι✝) → MeasurableSpace (α✝ i)
μ✝ : (i : ι✝) → Measure (α✝ i)
inst✝³ : ∀ (i : ι✝), SigmaFinite (μ✝ i)
inst✝² : Fintype ι'
ι : Type u
α : ι → Type v
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ Measure.map (⇑e) (Measure.pi μ) = Measure.dirac ()
state_after: no goals
tactic: rw [Measure.pi_of_empty, Measure.map_dirac e.measurable]
Theorem: div_nonpos_of_nonneg_of_nonpos
File: Mathlib/Algebra/Order/Field/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
hb : b ≤ 0
⊢ a / b ≤ 0
state_after: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
hb : b ≤ 0
⊢ a * b⁻¹ ≤ 0
tactic: rw [div_eq_mul_inv]
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
hb : b ≤ 0
⊢ a * b⁻¹ ≤ 0
state_after: no goals
tactic: exact mul_nonpos_of_nonneg_of_nonpos ha (inv_nonpos.2 hb)
Theorem: ContinuousMap.HomotopyEquiv.trans_apply
File: Mathlib/Topology/Homotopy/Equiv.lean

Proof steps:
state_before: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₁.invFun.comp h₂.invFun).comp (h₂.toFun.comp h₁.toFun)).Homotopic (ContinuousMap.id X)
state_after: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₁.invFun.comp h₂.invFun).comp (h₂.toFun.comp h₁.toFun)).Homotopic (h₁.invFun.comp h₁.toFun)
tactic: refine Homotopic.trans ?_ h₁.left_inv
state_before: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₁.invFun.comp h₂.invFun).comp (h₂.toFun.comp h₁.toFun)).Homotopic (h₁.invFun.comp h₁.toFun)
state_after: no goals
tactic: exact ((Homotopic.refl _).hcomp h₂.left_inv).hcomp (Homotopic.refl _)
state_before: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₂.toFun.comp h₁.toFun).comp (h₁.invFun.comp h₂.invFun)).Homotopic (ContinuousMap.id Z)
state_after: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₂.toFun.comp h₁.toFun).comp (h₁.invFun.comp h₂.invFun)).Homotopic (h₂.toFun.comp h₂.invFun)
tactic: refine Homotopic.trans ?_ h₂.right_inv
state_before: X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
h₁ : X ≃ₕ Y
h₂ : Y ≃ₕ Z
⊢ ((h₂.toFun.comp h₁.toFun).comp (h₁.invFun.comp h₂.invFun)).Homotopic (h₂.toFun.comp h₂.invFun)
state_after: no goals
tactic: exact ((Homotopic.refl _).hcomp h₁.right_inv).hcomp (Homotopic.refl _)
Theorem: Fin.range_succ
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n✝ m : ℕ
p : Fin (n✝ + 1)
i j : Fin n✝
n : ℕ
⊢ Set.range succ = {0}ᶜ
state_after: n✝ m : ℕ
p : Fin (n✝ + 1)
i j : Fin n✝
n : ℕ
⊢ Set.range (succAbove 0) = {0}ᶜ
tactic: rw [← succAbove_zero]
state_before: n✝ m : ℕ
p : Fin (n✝ + 1)
i j : Fin n✝
n : ℕ
⊢ Set.range (succAbove 0) = {0}ᶜ
state_after: no goals
tactic: exact range_succAbove (0 : Fin (n + 1))