ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Equiv.Perm.sign_of_cycleType
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
f : Perm α
⊢ sign f = (-1) ^ (f.cycleType.sum + card f.cycleType)
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
f : Perm α
⊢ (Multiset.map (fun n => -(-1) ^ n) f.cycleType).prod = (-1) ^ (f.cycleType.sum + card f.cycleType)
tactic: rw [sign_of_cycleType']
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
f : Perm α
⊢ (Multiset.map (fun n => -(-1) ^ n) f.cycleType).prod = (-1) ^ (f.cycleType.sum + card f.cycleType)
state_after: case empty
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
f : Perm α
⊢ (Multiset.map (fun n => -(-1) ^ n) 0).prod = (-1) ^ (Multiset.sum 0 + card 0)

case cons
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
f : Perm α
a : ℕ
s : Multiset ℕ
ihs : (Multiset.map (fun n => -(-1) ^ n) s).prod = (-1) ^ (s.sum + card s)
⊢ (Multiset.map (fun n => -(-1) ^ n) (a ::ₘ s)).prod = (-1) ^ ((a ::ₘ s).sum + card (a ::ₘ s))
tactic: induction' f.cycleType using Multiset.induction_on with a s ihs
Theorem: Subgroup.SchurZassenhausInduction.step7
File: Mathlib/GroupTheory/SchurZassenhaus.lean

Proof steps:
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Finite G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Finite G'],
    Nat.card G' < Nat.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Nat.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
⊢ N.IsCommutative
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Finite G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Finite G'],
    Nat.card G' < Nat.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Nat.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
this : Nontrivial ↥N
⊢ N.IsCommutative
tactic: haveI := N.bot_or_nontrivial.resolve_left (step0 h1 h3)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Finite G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Finite G'],
    Nat.card G' < Nat.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Nat.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
this : Nontrivial ↥N
⊢ N.IsCommutative
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Finite G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Finite G'],
    Nat.card G' < Nat.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Nat.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
this✝ : Nontrivial ↥N
this : Fact (Nat.Prime (Nat.card ↥N).minFac)
⊢ N.IsCommutative
tactic: haveI : Fact (Nat.card N).minFac.Prime := ⟨step4 h1 h3⟩
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Finite G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Finite G'],
    Nat.card G' < Nat.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Nat.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
this✝ : Nontrivial ↥N
this : Fact (Nat.Prime (Nat.card ↥N).minFac)
⊢ N.IsCommutative
state_after: no goals
tactic: exact
    ⟨⟨fun g h => ((eq_top_iff.mp ((step3 h1 h2 h3 (center N)).resolve_left
      (step6 h1 h2 h3).bot_lt_center.ne') (mem_top h)).comm g).symm⟩⟩
Theorem: Set.ite_inter_compl_self
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u t s s' : Set α
⊢ t.ite s s' ∩ tᶜ = s' ∩ tᶜ
state_after: no goals
tactic: rw [← ite_compl, ite_inter_self]
Theorem: CochainComplex.shiftShortComplexFunctor'_inv_app_τ₁
File: Mathlib/Algebra/Homology/HomotopyCategory/ShiftSequence.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.87, u_1} C
inst✝ : Preadditive C
n i j k i' j' k' : ℤ
hi : n + i = i'
hj : n + j = j'
hk : n + k = k'
K : CochainComplex C ℤ
⊢ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) n ⋙ shortComplexFunctor' C (up ℤ) i j k).obj K ≅
    (shortComplexFunctor' C (up ℤ) i' j' k').obj K
state_after: C : Type u_1
inst✝¹ : Category.{?u.87, u_1} C
inst✝ : Preadditive C
n i j k i' j' k' : ℤ
hi : n + i = i'
hj : n + j = j'
hk : n + k = k'
K : CochainComplex C ℤ
⊢ ShortComplex.mk (n.negOnePow • K.d (i + n) (j + n)) (n.negOnePow • K.d (j + n) (k + n)) ⋯ ≅
    ShortComplex.mk (K.d i' j') (K.d j' k') ⋯
tactic: dsimp [shortComplexFunctor']
state_before: C : Type u_1
inst✝¹ : Category.{?u.87, u_1} C
inst✝ : Preadditive C
n i j k i' j' k' : ℤ
hi : n + i = i'
hj : n + j = j'
hk : n + k = k'
K : CochainComplex C ℤ
⊢ ShortComplex.mk (n.negOnePow • K.d (i + n) (j + n)) (n.negOnePow • K.d (j + n) (k + n)) ⋯ ≅
    ShortComplex.mk (K.d i' j') (K.d j' k') ⋯
state_after: no goals
tactic: exact ShortComplex.isoMk
      (n.negOnePow • ((shiftEval C n i i' hi).app K))
      ((shiftEval C n j j' hj).app K) (n.negOnePow • ((shiftEval C n k k' hk).app K))
Theorem: ProbabilityTheory.Kernel.tendsto_density_fst_atTop_ae_of_monotone
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : Kernel α (γ × β)
ν : Kernel α γ
inst✝ : IsFiniteKernel κ
a : α
seq : ℕ → Set β
hseq : Monotone seq
hseq_iUnion : ⋃ i, seq i = univ
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ ∀ᵐ (x : γ) ∂κ.fst a, Tendsto (fun m => κ.density κ.fst a x (seq m)) atTop (𝓝 1)
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : Kernel α (γ × β)
ν : Kernel α γ
inst✝ : IsFiniteKernel κ
a : α
seq : ℕ → Set β
hseq : Monotone seq
hseq_iUnion : ⋃ i, seq i = univ
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ ∀ (n : ℕ), Integrable (fun x => κ.density κ.fst a x (seq n)) (κ.fst a)

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : Kernel α (γ × β)
ν : Kernel α γ
inst✝ : IsFiniteKernel κ
a : α
seq : ℕ → Set β
hseq : Monotone seq
hseq_iUnion : ⋃ i, seq i = univ
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ Tendsto (fun i => ∫ (a_1 : γ), κ.density κ.fst a a_1 (seq i) ∂κ.fst a) atTop (𝓝 (∫ (a : γ), 1 ∂κ.fst a))

case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : Kernel α (γ × β)
ν : Kernel α γ
inst✝ : IsFiniteKernel κ
a : α
seq : ℕ → Set β
hseq : Monotone seq
hseq_iUnion : ⋃ i, seq i = univ
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ ∀ᵐ (a_1 : γ) ∂κ.fst a, Monotone fun i => κ.density κ.fst a a_1 (seq i)

case refine_4
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : Kernel α (γ × β)
ν : Kernel α γ
inst✝ : IsFiniteKernel κ
a : α
seq : ℕ → Set β
hseq : Monotone seq
hseq_iUnion : ⋃ i, seq i = univ
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ ∀ᵐ (a_1 : γ) ∂κ.fst a, ∀ (i : ℕ), κ.density κ.fst a a_1 (seq i) ≤ 1
tactic: refine tendsto_of_integral_tendsto_of_monotone ?_ (integrable_const _) ?_ ?_ ?_
Theorem: PartialHomeomorph.ext_iff
File: Mathlib/Topology/PartialHomeomorph.lean

Proof steps:
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e✝ e e' : PartialHomeomorph X Y
⊢ e = e' → (∀ (x : X), ↑e x = ↑e' x) ∧ (∀ (x : Y), ↑e.symm x = ↑e'.symm x) ∧ e.source = e'.source
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e✝ e : PartialHomeomorph X Y
⊢ (∀ (x : X), ↑e x = ↑e x) ∧ (∀ (x : Y), ↑e.symm x = ↑e.symm x) ∧ e.source = e.source
tactic: rintro rfl
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e✝ e : PartialHomeomorph X Y
⊢ (∀ (x : X), ↑e x = ↑e x) ∧ (∀ (x : Y), ↑e.symm x = ↑e.symm x) ∧ e.source = e.source
state_after: no goals
tactic: exact ⟨fun x => rfl, fun x => rfl, rfl⟩
Theorem: isLittleO_rpow_exp_pos_mul_atTop
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

Proof steps:
state_before: s b : ℝ
hb : 0 < b
⊢ Tendsto (fun x => x ^ s / rexp (b * x)) atTop (𝓝 0)
state_after: no goals
tactic: simpa only [div_eq_mul_inv, exp_neg, neg_mul] using
      tendsto_rpow_mul_exp_neg_mul_atTop_nhds_zero s b hb
Theorem: eq_add_neg_iff_add_eq
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a = b * c⁻¹
⊢ a * c = b
state_after: no goals
tactic: rw [h, inv_mul_cancel_right]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a * c = b
⊢ a = b * c⁻¹
state_after: no goals
tactic: rw [← h, mul_inv_cancel_right]
Theorem: exists_pos_rat_lt
File: Mathlib/Algebra/Order/Archimedean.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x✝ y ε x : α
x0 : 0 < x
⊢ ∃ q, 0 < q ∧ ↑q < x
state_after: no goals
tactic: simpa only [Rat.cast_pos] using exists_rat_btwn x0
Theorem: InnerProductGeometry.inner_eq_mul_norm_of_angle_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
h : angle x y = 0
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖
state_after: no goals
tactic: simp [← cos_angle_mul_norm_mul_norm, h]
Theorem: MeasureTheory.integrableOn_const
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
C : E
⊢ C = 0 ∨ (μ.restrict s) univ < ⊤ ↔ C = 0 ∨ μ s < ⊤
state_after: no goals
tactic: rw [Measure.restrict_apply_univ]
Theorem: hnot_le_comm
File: Mathlib/Order/Heyting/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a b c : α
⊢ ￢a ≤ b ↔ ￢b ≤ a
state_after: no goals
tactic: rw [hnot_le_iff_codisjoint_right, hnot_le_iff_codisjoint_left]
Theorem: Matrix.adjugate_one
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

Proof steps:
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
⊢ adjugate 1 = 1
state_after: case a
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
i✝ j✝ : n
⊢ adjugate 1 i✝ j✝ = 1 i✝ j✝
tactic: ext
state_before: case a
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
i✝ j✝ : n
⊢ adjugate 1 i✝ j✝ = 1 i✝ j✝
state_after: no goals
tactic: simp [adjugate_def, Matrix.one_apply, Pi.single_apply, eq_comm]
Theorem: AhlswedeZhang.IsAntichain.le_infSum
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
⊢ ∑ s ∈ 𝒜, (↑((card α).choose s.card))⁻¹ ≤ infSum 𝒜
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
⊢ ∑ s ∈ 𝒜, (↑((card α).choose s.card))⁻¹ = ∑ s ∈ 𝒜, ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
tactic: calc
    _ = ∑ s ∈ 𝒜, (truncatedInf 𝒜 s).card / (s.card * (card α).choose s.card : ℚ) := ?_
    _ ≤ _ := sum_le_univ_sum_of_nonneg fun s ↦ by positivity
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
⊢ ∑ s ∈ 𝒜, (↑((card α).choose s.card))⁻¹ = ∑ s ∈ 𝒜, ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
⊢ (↑((card α).choose s.card))⁻¹ = ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
tactic: refine sum_congr rfl fun s hs ↦ ?_
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
⊢ (↑((card α).choose s.card))⁻¹ = ↑(𝒜.truncatedInf s).card / (↑s.card * ↑((card α).choose s.card))
state_after: case ha
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
⊢ ↑s.card ≠ 0
tactic: rw [truncatedInf_of_isAntichain h𝒜 hs, div_mul_cancel_left₀]
state_before: case ha
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
⊢ ↑s.card ≠ 0
state_after: case ha
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
this : 0 < s.card
⊢ ↑s.card ≠ 0
tactic: have := (nonempty_iff_ne_empty.2 $ ne_of_mem_of_not_mem hs h𝒜₀).card_pos
state_before: case ha
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s✝ : Finset α
h𝒜 : IsAntichain (fun x x_1 => x ⊆ x_1) ↑𝒜
h𝒜₀ : ∅ ∉ 𝒜
s : Finset α
hs : s ∈ 𝒜
this : 0 < s.card
⊢ ↑s.card ≠ 0
state_after: no goals
tactic: positivity
Theorem: MeasureTheory.SimpleFunc.nearestPtInd_succ
File: Mathlib/MeasureTheory/Function/SimpleFuncDense.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ ↑(nearestPtInd e (N + 1)) x = if ∀ k ≤ N, edist (e (N + 1)) x < edist (e k) x then N + 1 else ↑(nearestPtInd e N) x
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (if x ∈ ⋂ k, ⋂ (_ : k ≤ N), {x | edist (e (N + 1)) x < edist (e k) x} then ↑(const α (N + 1)) x
    else ↑(nearestPtInd e N) x) =
    if ∀ k ≤ N, edist (e (N + 1)) x < edist (e k) x then N + 1 else ↑(nearestPtInd e N) x
tactic: simp only [nearestPtInd, coe_piecewise, Set.piecewise]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (if x ∈ ⋂ k, ⋂ (_ : k ≤ N), {x | edist (e (N + 1)) x < edist (e k) x} then ↑(const α (N + 1)) x
    else ↑(nearestPtInd e N) x) =
    if ∀ k ≤ N, edist (e (N + 1)) x < edist (e k) x then N + 1 else ↑(nearestPtInd e N) x
state_after: case e_c
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (x ∈ ⋂ k, ⋂ (_ : k ≤ N), {x | edist (e (N + 1)) x < edist (e k) x}) = ∀ k ≤ N, edist (e (N + 1)) x < edist (e k) x
tactic: congr
state_before: case e_c
α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (x ∈ ⋂ k, ⋂ (_ : k ≤ N), {x | edist (e (N + 1)) x < edist (e k) x}) = ∀ k ≤ N, edist (e (N + 1)) x < edist (e k) x
state_after: no goals
tactic: simp
Theorem: AlgebraicTopology.DoldKan.factors_normalizedMooreComplex_PInfty
File: Mathlib/AlgebraicTopology/DoldKan/Normalized.lean

Proof steps:
state_before: A : Type u_1
inst✝¹ : Category.{u_2, u_1} A
inst✝ : Abelian A
X : SimplicialObject A
n : ℕ
⊢ (NormalizedMooreComplex.objX X n).Factors (PInfty.f n)
state_after: case zero
A : Type u_1
inst✝¹ : Category.{u_2, u_1} A
inst✝ : Abelian A
X : SimplicialObject A
⊢ (NormalizedMooreComplex.objX X 0).Factors (PInfty.f 0)

case succ
A : Type u_1
inst✝¹ : Category.{u_2, u_1} A
inst✝ : Abelian A
X : SimplicialObject A
n : ℕ
⊢ (NormalizedMooreComplex.objX X (n + 1)).Factors (PInfty.f (n + 1))
tactic: rcases n with _|n
Theorem: PFun.mem_toSubtype_iff
File: Mathlib/Data/PFun.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
p : β → Prop
f : α → β
a : α
b : Subtype p
⊢ b ∈ toSubtype p f a ↔ ↑b = f a
state_after: no goals
tactic: rw [toSubtype_apply, Part.mem_mk_iff, exists_subtype_mk_eq_iff, eq_comm]
Theorem: AddSemiconjBy.addUnits_neg_right
File: Mathlib/Algebra/Group/Semiconj/Units.lean

Proof steps:
state_before: M : Type u_1
G : Type u_2
inst✝ : Monoid M
a : M
x y : Mˣ
h : SemiconjBy a ↑x ↑y
⊢ a * ↑x⁻¹ = ↑y⁻¹ * (↑y * a) * ↑x⁻¹
state_after: no goals
tactic: rw [Units.inv_mul_cancel_left]
state_before: M : Type u_1
G : Type u_2
inst✝ : Monoid M
a : M
x y : Mˣ
h : SemiconjBy a ↑x ↑y
⊢ ↑y⁻¹ * (↑y * a) * ↑x⁻¹ = ↑y⁻¹ * a
state_after: no goals
tactic: rw [← h.eq, mul_assoc, Units.mul_inv_cancel_right]
Theorem: FreeGroup.map.id
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

Proof steps:
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
f : α → β
x✝ y x : FreeGroup α
⊢ (map _root_.id) x = x
state_after: case mk
α : Type u
L✝ L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
f : α → β
x✝ y x : FreeGroup α
L : List (α × Bool)
⊢ (map _root_.id) (Quot.mk Red.Step L) = Quot.mk Red.Step L
tactic: rcases x with ⟨L⟩
state_before: case mk
α : Type u
L✝ L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
f : α → β
x✝ y x : FreeGroup α
L : List (α × Bool)
⊢ (map _root_.id) (Quot.mk Red.Step L) = Quot.mk Red.Step L
state_after: no goals
tactic: simp [List.map_id']
Theorem: CategoryTheory.Localization.Construction.lift_obj
File: Mathlib/CategoryTheory/Localization/Construction.lean

Proof steps:
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
⊢ ∀ (x y : Paths (LocQuiver W)) (f₁ f₂ : x ⟶ y),
    relations W f₁ f₂ → (liftToPathCategory G hG).map f₁ = (liftToPathCategory G hG).map f₂
state_after: case mk.mk
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X Y : C
f₁ f₂ : { obj := X } ⟶ { obj := Y }
r : relations W f₁ f₂
⊢ (liftToPathCategory G hG).map f₁ = (liftToPathCategory G hG).map f₂
tactic: rintro ⟨X⟩ ⟨Y⟩ f₁ f₂ r
state_before: case mk.mk
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X Y : C
f₁ f₂ : { obj := X } ⟶ { obj := Y }
r : relations W f₁ f₂
⊢ (liftToPathCategory G hG).map f₁ = (liftToPathCategory G hG).map f₂
state_after: case mk.mk.id
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ : C
X Y : Paths (LocQuiver W)
⊢ (liftToPathCategory G hG).map (ψ₁ W (𝟙 X✝)) = (liftToPathCategory G hG).map (𝟙 (ιPaths W X✝))

case mk.mk.comp
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝¹ : C
X Y : Paths (LocQuiver W)
Y✝ : C
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Y✝¹
⊢ (liftToPathCategory G hG).map (ψ₁ W (f✝ ≫ g✝)) = (liftToPathCategory G hG).map (ψ₁ W f✝ ≫ ψ₁ W g✝)

case mk.mk.Winv₁
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ : C
X Y : Paths (LocQuiver W)
Y✝ : C
f : X✝ ⟶ Y✝
hf : W f
⊢ (liftToPathCategory G hG).map (ψ₁ W f ≫ ψ₂ W f hf) = (liftToPathCategory G hG).map (𝟙 (ιPaths W X✝))

case mk.mk.Winv₂
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝¹ : C
X Y : Paths (LocQuiver W)
X✝ : C
f : X✝ ⟶ X✝¹
hf : W f
⊢ (liftToPathCategory G hG).map (ψ₂ W f hf ≫ ψ₁ W f) = (liftToPathCategory G hG).map (𝟙 (ιPaths W X✝¹))
tactic: rcases r with (_|_|⟨f,hf⟩|⟨f,hf⟩)
state_before: case mk.mk.Winv₁
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ : C
X Y : Paths (LocQuiver W)
Y✝ : C
f : X✝ ⟶ Y✝
hf : W f
⊢ (liftToPathCategory G hG).map (ψ₁ W f ≫ ψ₂ W f hf) = (liftToPathCategory G hG).map (𝟙 (ιPaths W X✝))

case mk.mk.Winv₂
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝¹ : C
X Y : Paths (LocQuiver W)
X✝ : C
f : X✝ ⟶ X✝¹
hf : W f
⊢ (liftToPathCategory G hG).map (ψ₂ W f hf ≫ ψ₁ W f) = (liftToPathCategory G hG).map (𝟙 (ιPaths W X✝¹))
state_after: no goals
tactic: all_goals
        dsimp
        haveI := hG f hf
        simp
        rfl
Theorem: DirectSum.IsInternal.submodule_iSup_eq_top
File: Mathlib/Algebra/DirectSum/Module.lean

Proof steps:
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
⊢ iSup A = ⊤
state_after: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
⊢ Function.Surjective ⇑((DFinsupp.lsum ℕ) fun i => (A i).subtype)
tactic: rw [Submodule.iSup_eq_range_dfinsupp_lsum, LinearMap.range_eq_top]
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
⊢ Function.Surjective ⇑((DFinsupp.lsum ℕ) fun i => (A i).subtype)
state_after: no goals
tactic: exact Function.Bijective.surjective h
Theorem: Nat.card_Iio
File: Mathlib/Order/Interval/Finset/Nat.lean

Proof steps:
state_before: a b c : ℕ
⊢ (Iio b).card = b
state_after: no goals
tactic: rw [Iio_eq_Ico, card_Ico, Nat.bot_eq_zero, Nat.sub_zero]
Theorem: QuaternionAlgebra.Basis.compHom_i
File: Mathlib/Algebra/QuaternionBasis.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
q : Basis A c₁ c₂
F : A →ₐ[R] B
⊢ F q.i * F q.i = c₁ • 1
state_after: no goals
tactic: rw [← map_mul, q.i_mul_i, map_smul, map_one]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
q : Basis A c₁ c₂
F : A →ₐ[R] B
⊢ F q.j * F q.j = c₂ • 1
state_after: no goals
tactic: rw [← map_mul, q.j_mul_j, map_smul, map_one]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
q : Basis A c₁ c₂
F : A →ₐ[R] B
⊢ F q.i * F q.j = F q.k
state_after: no goals
tactic: rw [← map_mul, q.i_mul_j]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
q : Basis A c₁ c₂
F : A →ₐ[R] B
⊢ F q.j * F q.i = -F q.k
state_after: no goals
tactic: rw [← map_mul, q.j_mul_i, map_neg]