ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: tendsto_atTop_isLUB
File: Mathlib/Topology/Order/MonotoneConvergence.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : SupConvergenceClass α
f : ι → α
a : α
h_mono : Monotone f
ha : IsLUB (range f) a
⊢ Tendsto f atTop (𝓝 a)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : SupConvergenceClass α
f : ι → α
a : α
h_mono : Monotone f
ha : IsLUB (range f) a
⊢ Tendsto (rangeFactorization f) atTop atTop
tactic: suffices Tendsto (rangeFactorization f) atTop atTop from
    (SupConvergenceClass.tendsto_coe_atTop_isLUB _ _ ha).comp this
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : SupConvergenceClass α
f : ι → α
a : α
h_mono : Monotone f
ha : IsLUB (range f) a
⊢ Tendsto (rangeFactorization f) atTop atTop
state_after: no goals
tactic: exact h_mono.rangeFactorization.tendsto_atTop_atTop fun b => b.2.imp fun a ha => ha.ge
Theorem: Finset.prod_preimage'
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
f : ι → κ
inst✝ : DecidablePred fun x => x ∈ Set.range f
s : Finset κ
hf : Set.InjOn f (f ⁻¹' ↑s)
g : κ → β
⊢ ∏ x ∈ s.preimage f hf, g (f x) = ∏ x ∈ filter (fun x => x ∈ Set.range f) s, g x
state_after: no goals
tactic: classical
  calc
    ∏ x ∈ preimage s f hf, g (f x) = ∏ x ∈ image f (preimage s f hf), g x :=
      Eq.symm <| prod_image <| by simpa only [mem_preimage, Set.InjOn] using hf
    _ = ∏ x ∈ s.filter fun x => x ∈ Set.range f, g x := by rw [image_preimage]
Theorem: spectrum.units_conjugate'
File: Mathlib/Algebra/Algebra/Spectrum.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a : A
u : Aˣ
⊢ spectrum R (↑u⁻¹ * a * ↑u) = spectrum R a
state_after: no goals
tactic: simpa using spectrum.units_conjugate (u := u⁻¹)
Theorem: IsCauSeq.const
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : ℕ → β
x : β
ε : α
ε0 : ε > 0
j : ℕ
x✝ : j ≥ 0
⊢ abv ((fun x_1 => x) j - (fun x_1 => x) 0) < ε
state_after: no goals
tactic: simpa [abv_zero] using ε0
Theorem: UniformCauchySeqOn.div
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Type u_3
l : Filter ι
l' : Filter β
f f' : ι → β → α
g g' : β → α
s : Set β
hf : UniformCauchySeqOn f l s
hf' : UniformCauchySeqOn f' l s
u : Set (α × α)
hu : u ∈ 𝓤 α
⊢ ∀ᶠ (m : ι × ι) in l ×ˢ l, ∀ x ∈ s, ((f / f') m.1 x, (f / f') m.2 x) ∈ u
state_after: no goals
tactic: simpa using (uniformContinuous_div.comp_uniformCauchySeqOn (hf.prod' hf')) u hu
Theorem: Basis.coe_ofEquivFun
File: Mathlib/LinearAlgebra/Basis.lean

Proof steps:
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
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
e : M ≃ₗ[R] ι → R
i j : ι
⊢ e ((ofEquivFun e) i) j = e (e.symm (update 0 i 1)) j
state_after: no goals
tactic: simp [Basis.ofEquivFun, ← Finsupp.single_eq_pi_single, Finsupp.single_eq_update]
Theorem: PiLp.nnnorm_equiv
File: Mathlib/Analysis/Normed/Lp/PiLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝² : Fact (1 ≤ p)
inst✝¹ : Fintype ι
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp ⊤ β
⊢ ‖(WithLp.equiv ⊤ ((i : ι) → β i)) f‖₊ = ‖f‖₊
state_after: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝² : Fact (1 ≤ p)
inst✝¹ : Fintype ι
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp ⊤ β
⊢ ⨆ i, ‖(WithLp.equiv ⊤ ((i : ι) → β i)) f i‖₊ = ⨆ i, ‖f i‖₊
tactic: rw [nnnorm_eq_ciSup, Pi.nnnorm_def, Finset.sup_univ_eq_ciSup]
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝² : Fact (1 ≤ p)
inst✝¹ : Fintype ι
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp ⊤ β
⊢ ⨆ i, ‖(WithLp.equiv ⊤ ((i : ι) → β i)) f i‖₊ = ⨆ i, ‖f i‖₊
state_after: no goals
tactic: dsimp only [WithLp.equiv_pi_apply]
Theorem: Polynomial.natDegree_lt_natDegree
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : p.degree < q.degree
⊢ p.natDegree < q.natDegree
state_after: case pos
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : p.degree < q.degree
hq : q = 0
⊢ p.natDegree < q.natDegree

case neg
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : p.degree < q.degree
hq : ¬q = 0
⊢ p.natDegree < q.natDegree
tactic: by_cases hq : q = 0
state_before: case neg
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : p.degree < q.degree
hq : ¬q = 0
⊢ p.natDegree < q.natDegree
state_after: no goals
tactic: rwa [degree_eq_natDegree hp, degree_eq_natDegree hq, Nat.cast_lt] at hpq
Theorem: AlgHom.isIntegrallyClosedIn
File: Mathlib/RingTheory/IntegralClosure/IntegrallyClosed.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
⊢ IsIntegrallyClosedIn R B → IsIntegrallyClosedIn R A
state_after: case mk
R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
inj : Function.Injective ⇑(algebraMap R B)
cl : ∀ {x : B}, IsIntegral R x ↔ ∃ y, (algebraMap R B) y = x
⊢ IsIntegrallyClosedIn R A
tactic: rintro ⟨inj, cl⟩
state_before: case mk
R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
inj : Function.Injective ⇑(algebraMap R B)
cl : ∀ {x : B}, IsIntegral R x ↔ ∃ y, (algebraMap R B) y = x
⊢ IsIntegrallyClosedIn R A
state_after: case mk.refine_1
R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
inj : Function.Injective ⇑(algebraMap R B)
cl : ∀ {x : B}, IsIntegral R x ↔ ∃ y, (algebraMap R B) y = x
⊢ Function.Injective (⇑f ∘ ⇑(algebraMap R A))

case mk.refine_2
R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
inj : Function.Injective ⇑(algebraMap R B)
cl : ∀ {x : B}, IsIntegral R x ↔ ∃ y, (algebraMap R B) y = x
x✝ : A
hx : IsIntegral R x✝
⊢ ∃ y, (algebraMap R A) y = x✝

case mk.refine_3
R : Type u_1
inst✝⁴ : CommRing R
A : Type u_2
B : Type u_3
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : A →ₐ[R] B
hf : Function.Injective ⇑f
inj : Function.Injective ⇑(algebraMap R B)
cl : ∀ {x : B}, IsIntegral R x ↔ ∃ y, (algebraMap R B) y = x
x✝ : A
⊢ (∃ y, (algebraMap R A) y = x✝) → IsIntegral R x✝
tactic: refine ⟨Function.Injective.of_comp (f := f) ?_, fun hx => ?_, ?_⟩
Theorem: Fin.Iio_castSucc
File: Mathlib/Data/Fintype/Fin.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
n : ℕ
i : Fin n
⊢ Iio i.castSucc = map castSuccEmb (Iio i)
state_after: case a
α : Type u_1
β : Type u_2
n : ℕ
i : Fin n
⊢ map valEmbedding (Iio i.castSucc) = map valEmbedding (map castSuccEmb (Iio i))
tactic: apply Finset.map_injective Fin.valEmbedding
state_before: case a
α : Type u_1
β : Type u_2
n : ℕ
i : Fin n
⊢ map valEmbedding (Iio i.castSucc) = map valEmbedding (map castSuccEmb (Iio i))
state_after: case a
α : Type u_1
β : Type u_2
n : ℕ
i : Fin n
⊢ Iio ↑i.castSucc = map (castSuccEmb.trans valEmbedding) (Iio i)
tactic: rw [Finset.map_map, Fin.map_valEmbedding_Iio]
state_before: case a
α : Type u_1
β : Type u_2
n : ℕ
i : Fin n
⊢ Iio ↑i.castSucc = map (castSuccEmb.trans valEmbedding) (Iio i)
state_after: no goals
tactic: exact (Fin.map_valEmbedding_Iio i).symm
Theorem: CategoryTheory.Iso.isoCongr_symm_apply
File: Mathlib/CategoryTheory/HomCongr.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X₁ Y₁ X₂ Y₂ : C
f : X₁ ≅ X₂
g : Y₁ ≅ Y₂
⊢ Function.LeftInverse (fun h => f ≪≫ h ≪≫ g.symm) fun h => f.symm ≪≫ h ≪≫ g
state_after: no goals
tactic: aesop_cat
state_before: C : Type u
inst✝ : Category.{v, u} C
X₁ Y₁ X₂ Y₂ : C
f : X₁ ≅ X₂
g : Y₁ ≅ Y₂
⊢ Function.RightInverse (fun h => f ≪≫ h ≪≫ g.symm) fun h => f.symm ≪≫ h ≪≫ g
state_after: no goals
tactic: aesop_cat
Theorem: AlgebraicTopology.DoldKan.comp_P_eq_self_iff
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
⊢ φ ≫ (P q).f (n + 1) = φ ↔ HigherFacesVanish q φ
state_after: case mp
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
⊢ φ ≫ (P q).f (n + 1) = φ → HigherFacesVanish q φ

case mpr
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
⊢ HigherFacesVanish q φ → φ ≫ (P q).f (n + 1) = φ
tactic: constructor
Theorem: Matroid.Indep.insert_dep_iff
File: Mathlib/Data/Matroid/Closure.lean

Proof steps:
state_before: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
⊢ M.Dep (insert e I) ↔ e ∈ M.closure I \ I
state_after: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
⊢ e ∈ I → ¬M.Dep (insert e I)
tactic: rw [mem_diff, hI.mem_closure_iff, or_and_right, and_not_self_iff, or_false,
    iff_self_and, imp_not_comm]
state_before: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
⊢ e ∈ I → ¬M.Dep (insert e I)
state_after: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
heI : e ∈ I
⊢ ¬M.Dep (insert e I)
tactic: intro heI
state_before: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
heI : e ∈ I
⊢ ¬M.Dep (insert e I)
state_after: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
heI : e ∈ I
⊢ ¬M.Dep I
tactic: rw [insert_eq_of_mem heI]
state_before: ι✝ : Type u_1
α : Type u_2
M : Matroid α
F X Y : Set α
e : α
ι : Sort u_3
I J B : Set α
f x y : α
hI : M.Indep I
heI : e ∈ I
⊢ ¬M.Dep I
state_after: no goals
tactic: exact hI.not_dep
Theorem: Set.pairwiseDisjoint_image_left_iff
File: Mathlib/Data/Set/Pairwise/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
s✝ : Set ι
t✝ : Set ι'
f : α → β → γ
s : Set α
t : Set β
hf : ∀ b ∈ t, Injective fun a => f a b
⊢ (t.PairwiseDisjoint fun b => (fun a => f a b) '' s) ↔ InjOn (fun p => f p.1 p.2) (s ×ˢ t)
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
s✝ : Set ι
t✝ : Set ι'
f : α → β → γ
s : Set α
t : Set β
hf : ∀ b ∈ t, Injective fun a => f a b
ht : t.PairwiseDisjoint fun b => (fun a => f a b) '' s
x : α × β
hx : x ∈ s ×ˢ t
y : α × β
hy : y ∈ s ×ˢ t
h : f x.1 x.2 = (fun p => f p.1 p.2) y
⊢ x = y

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
s✝ : Set ι
t✝ : Set ι'
f : α → β → γ
s : Set α
t : Set β
hf : ∀ b ∈ t, Injective fun a => f a b
ht : InjOn (fun p => f p.1 p.2) (s ×ˢ t)
x : β
hx : x ∈ t
y : β
hy : y ∈ t
h : x ≠ y
⊢ (Disjoint on fun b => (fun a => f a b) '' s) x y
tactic: refine ⟨fun ht x hx y hy (h : f _ _ = _) => ?_, fun ht x hx y hy h => ?_⟩
Theorem: Cardinal.natCast_le_toPartENat_iff
File: Mathlib/SetTheory/Cardinal/Finite.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
n : ℕ
c : Cardinal.{u_3}
⊢ ↑n ≤ toPartENat c ↔ ↑n ≤ c
state_after: no goals
tactic: rw [← toPartENat_natCast n, toPartENat_le_iff_of_le_aleph0 (le_of_lt (nat_lt_aleph0 n))]
Theorem: Summable.summable_of_eq_zero_or_self
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : CommGroup α
inst✝² : UniformSpace α
inst✝¹ : UniformGroup α
f g : β → α
a a₁ a₂ : α
inst✝ : CompleteSpace α
hf : Multipliable f
h : ∀ (b : β), g b = 1 ∨ g b = f b
⊢ Multipliable g
state_after: no goals
tactic: classical
  exact multipliable_iff_vanishing.2 fun e he ↦
    let ⟨s, hs⟩ := multipliable_iff_vanishing.1 hf e he
    ⟨s, fun t ht ↦
      have eq : ∏ b ∈ t.filter fun b ↦ g b = f b, f b = ∏ b ∈ t, g b :=
        calc
          ∏ b ∈ t.filter fun b ↦ g b = f b, f b = ∏ b ∈ t.filter fun b ↦ g b = f b, g b :=
            Finset.prod_congr rfl fun b hb ↦ (Finset.mem_filter.1 hb).2.symm
          _ = ∏ b ∈ t, g b := by
           {refine Finset.prod_subset (Finset.filter_subset _ _) ?_
            intro b hbt hb
            simp only [Finset.mem_filter, and_iff_right hbt] at hb
            exact (h b).resolve_right hb}
      eq ▸ hs _ <| Finset.disjoint_of_subset_left (Finset.filter_subset _ _) ht⟩
Theorem: IsPrimitiveRoot.card_quotient_toInteger_sub_one
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)
inst✝ : NumberField K
k : ℕ+
hk : 1 < k
hζ : IsPrimitiveRoot ζ ↑k
⊢ Nat.card (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) = ((Algebra.norm ℤ) (hζ.toInteger - 1)).natAbs
state_after: p : ℕ+
k✝ : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : NumberField K
k : ℕ+
hk : 1 < k
hζ : IsPrimitiveRoot ζ ↑k
this : Finite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
⊢ Nat.card (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) = ((Algebra.norm ℤ) (hζ.toInteger - 1)).natAbs
tactic: have := hζ.finite_quotient_toInteger_sub_one hk
state_before: p : ℕ+
k✝ : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : NumberField K
k : ℕ+
hk : 1 < k
hζ : IsPrimitiveRoot ζ ↑k
this : Finite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
⊢ Nat.card (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) = ((Algebra.norm ℤ) (hζ.toInteger - 1)).natAbs
state_after: p : ℕ+
k✝ : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : NumberField K
k : ℕ+
hk : 1 < k
hζ : IsPrimitiveRoot ζ ↑k
this : Finite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
x✝ : Fintype (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) := Fintype.ofFinite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
⊢ Nat.card (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) = ((Algebra.norm ℤ) (hζ.toInteger - 1)).natAbs
tactic: let _ := Fintype.ofFinite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
state_before: p : ℕ+
k✝ : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : NumberField K
k : ℕ+
hk : 1 < k
hζ : IsPrimitiveRoot ζ ↑k
this : Finite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
x✝ : Fintype (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) := Fintype.ofFinite (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1})
⊢ Nat.card (𝓞 K ⧸ Ideal.span {hζ.toInteger - 1}) = ((Algebra.norm ℤ) (hζ.toInteger - 1)).natAbs
state_after: no goals
tactic: rw [← Submodule.cardQuot_apply, ← Ideal.absNorm_apply, Ideal.absNorm_span_singleton]
Theorem: Finset.toDual_max'
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ toDual (s.max' hs) = (image (⇑toDual) s).min' ⋯
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ ↑(toDual (s.max' hs)) = ↑((image (⇑toDual) s).min' ⋯)
tactic: rw [← WithTop.coe_eq_coe]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ ↑(toDual (s.max' hs)) = ↑((image (⇑toDual) s).min' ⋯)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ s.inf (WithTop.some ∘ fun x => toDual x) = s.inf ((WithTop.some ∘ fun x => x) ∘ ⇑toDual)
tactic: simp only [max'_eq_sup', id_eq, toDual_sup', Function.comp_apply, coe_inf', min'_eq_inf',
    inf_image]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ s.inf (WithTop.some ∘ fun x => toDual x) = s.inf ((WithTop.some ∘ fun x => x) ∘ ⇑toDual)
state_after: no goals
tactic: rfl
Theorem: SetTheory.PGame.toLeftMovesNim_one_symm
File: Mathlib/SetTheory/Game/Nim.lean

Proof steps:
state_before: i : (nim 1).LeftMoves
⊢ toLeftMovesNim.symm i = ⟨0, ⋯⟩
state_after: no goals
tactic: simp [eq_iff_true_of_subsingleton]
Theorem: Orientation.oangle_zero_right
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
⊢ o.oangle x 0 = 0
state_after: no goals
tactic: simp [oangle]
Theorem: Real.cos_pi_div_four
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℝ
⊢ cos (π / 4) = √2 / 2
state_after: x : ℝ
⊢ cos (π / 4) = cos (π / 2 ^ 2)

x : ℝ
⊢ cos (π / 2 ^ 2) = √2 / 2
tactic: trans cos (π / 2 ^ 2)
Theorem: isClosedMap_iff_clusterPt
File: Mathlib/Topology/Maps/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
⊢ IsClosedMap f ↔ ∀ (s : Set X) (y : Y), MapClusterPt y (𝓟 s) f → ∃ x, f x = y ∧ ClusterPt x (𝓟 s)
state_after: no goals
tactic: simp [MapClusterPt, isClosedMap_iff_closure_image, subset_def, mem_closure_iff_clusterPt,
    and_comm]
Theorem: Set.LeftInvOn.extendDomain
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : LeftInvOn (⇑g₁) (⇑g₂) s
⊢ LeftInvOn (⇑(g₁.extendDomain f)) (⇑(g₂.extendDomain f)) (Subtype.val ∘ ⇑f '' s)
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : LeftInvOn (⇑g₁) (⇑g₂) s
a : α
ha : a ∈ s
⊢ (g₁.extendDomain f) ((g₂.extendDomain f) ((Subtype.val ∘ ⇑f) a)) = (Subtype.val ∘ ⇑f) a
tactic: rintro _ ⟨a, ha, rfl⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : LeftInvOn (⇑g₁) (⇑g₂) s
a : α
ha : a ∈ s
⊢ (g₁.extendDomain f) ((g₂.extendDomain f) ((Subtype.val ∘ ⇑f) a)) = (Subtype.val ∘ ⇑f) a
state_after: no goals
tactic: simp_rw [Function.comp_apply, extendDomain_apply_image, h ha]
Theorem: ComplexShape.boundaryLE_embeddingUpIntLE_iff
File: Mathlib/Algebra/Homology/Embedding/Boundary.lean

Proof steps:
state_before: p : ℤ
n : ℕ
⊢ (embeddingUpIntGE p).BoundaryGE n ↔ n = 0
state_after: case mp
p : ℤ
n : ℕ
⊢ (embeddingUpIntGE p).BoundaryGE n → n = 0

case mpr
p : ℤ
n : ℕ
⊢ n = 0 → (embeddingUpIntGE p).BoundaryGE n
tactic: constructor
Theorem: MeasureTheory.integrable_comp_div_left
File: Mathlib/MeasureTheory/Group/Integral.lean

Proof steps:
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
⊢ Integrable (fun t => f (g / t)) μ ↔ Integrable f μ
state_after: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
⊢ Integrable f μ
tactic: refine ⟨fun h => ?_, fun h => h.comp_div_left g⟩
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
⊢ Integrable f μ
state_after: case h.e'_5.h.h.e'_1
𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
x✝ : G
⊢ x✝ = g / (g⁻¹ * x✝)⁻¹
tactic: convert h.comp_inv.comp_mul_left g⁻¹
state_before: case h.e'_5.h.h.e'_1
𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
x✝ : G
⊢ x✝ = g / (g⁻¹ * x✝)⁻¹
state_after: no goals
tactic: simp_rw [div_inv_eq_mul, mul_inv_cancel_left]