ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MeasureTheory.IsFundamentalDomain.setIntegral_eq_tsum
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹² : Group G
inst✝¹¹ : Group H
inst✝¹⁰ : MulAction G α
inst✝⁹ : MeasurableSpace α
inst✝⁸ : MulAction H β
inst✝⁷ : MeasurableSpace β
inst✝⁶ : NormedAddCommGroup E
s t✝ : Set α
μ : Measure α
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSMul G α
inst✝³ : SMulInvariantMeasure G α μ
inst✝² : Countable G
ν : Measure α
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
h : IsFundamentalDomain G s μ
f : α → E
t : Set α
hf : IntegrableOn f t μ
⊢ ∑' (g : G), ∫ (x : α) in g • s, f x ∂μ.restrict t = ∑' (g : G), ∫ (x : α) in t ∩ g • s, f x ∂μ
state_after: no goals
tactic: simp only [h.restrict_restrict, measure_smul, inter_comm]
Theorem: Finset.image_subset_image
File: Mathlib/Data/Finset/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
s₁ s₂ : Finset α
h : s₁ ⊆ s₂
⊢ image f s₁ ⊆ image f s₂
state_after: no goals
tactic: simp only [subset_def, image_val, subset_dedup', dedup_subset', Multiset.map_subset_map h]
Theorem: AddMonoidHom.noncommCoprod_comp_inr
File: Mathlib/GroupTheory/NoncommCoprod.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : Monoid P
f : M →* P
g : N →* P
comm : ∀ (m : M) (n : N), Commute (f m) (g n)
x : N
⊢ ((f.noncommCoprod g comm).comp (inr M N)) x = g x
state_after: no goals
tactic: simp
Theorem: GenContFract.convs'Aux_stable_step_of_terminated
File: Mathlib/Algebra/ContinuedFractions/TerminatedStable.lean

Proof steps:
state_before: K : Type u_1
g : GenContFract K
n m : ℕ
inst✝ : DivisionRing K
s : Stream'.Seq (Pair K)
terminatedAt_n : s.TerminatedAt n
⊢ convs'Aux s (n + 1) = convs'Aux s n
state_after: K : Type u_1
g : GenContFract K
n m : ℕ
inst✝ : DivisionRing K
s : Stream'.Seq (Pair K)
terminatedAt_n : s.get? n = none
⊢ convs'Aux s (n + 1) = convs'Aux s n
tactic: change s.get? n = none at terminatedAt_n
state_before: K : Type u_1
g : GenContFract K
n m : ℕ
inst✝ : DivisionRing K
s : Stream'.Seq (Pair K)
terminatedAt_n : s.get? n = none
⊢ convs'Aux s (n + 1) = convs'Aux s n
state_after: no goals
tactic: induction n generalizing s with
  | zero => simp only [convs'Aux, terminatedAt_n, Stream'.Seq.head]
  | succ n IH =>
    cases s_head_eq : s.head with
    | none => simp only [convs'Aux, s_head_eq]
    | some gp_head =>
      have : s.tail.TerminatedAt n := by
        simp only [Stream'.Seq.TerminatedAt, s.get?_tail, terminatedAt_n]
      have := IH this
      rw [convs'Aux] at this
      simp [this, Nat.add_eq, add_zero, convs'Aux, s_head_eq]
Theorem: BoundedContinuousFunction.isometry_extend
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

Proof steps:
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
f✝ g : α →ᵇ β
x : α
C : ℝ
δ : Type u_2
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology δ
f : α ↪ δ
h : δ →ᵇ β
g₁ g₂ : α →ᵇ β
⊢ dist (extend f g₁ h) (extend f g₂ h) = dist g₁ g₂
state_after: no goals
tactic: simp [dist_nonneg]
Theorem: CategoryTheory.ShortComplex.RightHomologyData.rightHomologyIso_hom_naturality
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁✝ : S₁.HomologyData
h₂✝ : S₂.HomologyData
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ h₁.homologyIso.hom ≫ rightHomologyMap' φ h₁ h₂ = homologyMap φ ≫ h₂.homologyIso.hom
state_after: no goals
tactic: rw [← cancel_epi h₁.homologyIso.inv, Iso.inv_hom_id_assoc,
    ← cancel_epi (leftRightHomologyComparison' S₁.leftHomologyData h₁),
    ← leftRightHomologyComparison'_naturality φ S₁.leftHomologyData h₁ S₂.leftHomologyData h₂,
    ← cancel_epi (S₁.leftHomologyData.homologyIso.hom),
    LeftHomologyData.leftHomologyIso_hom_naturality_assoc,
    leftRightHomologyComparison'_fac, leftRightHomologyComparison'_fac, assoc,
    Iso.hom_inv_id_assoc, Iso.hom_inv_id_assoc, Iso.hom_inv_id_assoc]
Theorem: Polynomial.revAt_eq_self_of_lt
File: Mathlib/Algebra/Polynomial/Reverse.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
N i : ℕ
h : N < i
⊢ (revAt N) i = i
state_after: no goals
tactic: simp [revAt, Nat.not_le.mpr h]
Theorem: Metric.hausdorffDist_self_zero
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ hausdorffDist s s = 0
state_after: no goals
tactic: simp [hausdorffDist]
Theorem: TopCat.nonempty_limitCone_of_compact_t2_cofiltered_system
File: Mathlib/Topology/Category/TopCat/Limits/Konig.lean

Proof steps:
state_before: J : Type u
inst✝⁴ : SmallCategory J
F✝ : J ⥤ TopCat
F : J ⥤ TopCat
inst✝³ : IsCofilteredOrEmpty J
inst✝² : ∀ (j : J), Nonempty ↑(F.obj j)
inst✝¹ : ∀ (j : J), CompactSpace ↑(F.obj j)
inst✝ : ∀ (j : J), T2Space ↑(F.obj j)
⊢ Nonempty ↑(limitCone F).pt
state_after: no goals
tactic: classical
  obtain ⟨u, hu⟩ :=
    IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed (fun G => partialSections F _)
      (partialSections.directed F) (fun G => partialSections.nonempty F _)
      (fun G => IsClosed.isCompact (partialSections.closed F _)) fun G =>
      partialSections.closed F _
  use u
  intro X Y f
  let G : FiniteDiagram J :=
    ⟨{X, Y},
      {⟨X, Y, by simp only [true_or_iff, eq_self_iff_true, Finset.mem_insert], by
          simp only [eq_self_iff_true, or_true_iff, Finset.mem_insert, Finset.mem_singleton], f⟩}⟩
  exact hu _ ⟨G, rfl⟩ (Finset.mem_singleton_self _)
Theorem: Nat.eq_zero_of_le_div
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ n * m ≤ m
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ m * n ≤ m
tactic: rw [Nat.mul_comm]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ m * n ≤ m
state_after: no goals
tactic: exact (Nat.le_div_iff_mul_le' (Nat.lt_of_lt_of_le (by decide) hn)).1 h
Theorem: Stonean.pullbackIsoPullback_hom
File: Mathlib/Topology/Category/Stonean/Limits.lean

Proof steps:
state_before: X Y Z : Stonean
f : X ⟶ Z
i : Y ⟶ Z
hi : OpenEmbedding ⇑i
this : HasPullback f i
⊢ (Limits.pullback.lift (pullback.fst f hi) (pullback.snd f hi) ⋯ ≫
        pullback.lift f hi (Limits.pullback.fst f i) (Limits.pullback.snd f i) ⋯) ≫
      pullback.fst f hi =
    𝟙 (pullback f hi) ≫ pullback.fst f hi
state_after: no goals
tactic: simp only [pullback.cone_pt, Category.assoc, pullback.lift_fst,
        limit.lift_π, PullbackCone.mk_pt, PullbackCone.mk_π_app, Category.id_comp]
state_before: X Y Z : Stonean
f : X ⟶ Z
i : Y ⟶ Z
hi : OpenEmbedding ⇑i
this : HasPullback f i
⊢ pullback.lift f hi (Limits.pullback.fst f i) (Limits.pullback.snd f i) ⋯ ≫
      Limits.pullback.lift (pullback.fst f hi) (pullback.snd f hi) ⋯ =
    𝟙 (Limits.pullback f i)
state_after: case refine_1
X Y Z : Stonean
f : X ⟶ Z
i : Y ⟶ Z
hi : OpenEmbedding ⇑i
this : HasPullback f i
⊢ (pullback.lift f hi (Limits.pullback.fst f i) (Limits.pullback.snd f i) ⋯ ≫
        Limits.pullback.lift (pullback.fst f hi) (pullback.snd f hi) ⋯) ≫
      Limits.pullback.fst f i =
    𝟙 (Limits.pullback f i) ≫ Limits.pullback.fst f i

case refine_2
X Y Z : Stonean
f : X ⟶ Z
i : Y ⟶ Z
hi : OpenEmbedding ⇑i
this : HasPullback f i
⊢ (pullback.lift f hi (Limits.pullback.fst f i) (Limits.pullback.snd f i) ⋯ ≫
        Limits.pullback.lift (pullback.fst f hi) (pullback.snd f hi) ⋯) ≫
      Limits.pullback.snd f i =
    𝟙 (Limits.pullback f i) ≫ Limits.pullback.snd f i
tactic: refine Limits.pullback.hom_ext (k := (pullback.lift f hi (Limits.pullback.fst _ _)
        (Limits.pullback.snd _ _) Limits.pullback.condition ≫ Limits.pullback.lift
        (pullback.fst _ hi) (pullback.snd _ hi) (pullback.condition f hi))) ?_ ?_
Theorem: Nat.eq_prime_pow_of_dvd_least_prime_pow
File: Mathlib/Data/Nat/Prime/Basic.lean

Proof steps:
state_before: n a p k : ℕ
pp : Prime p
h₁ : ¬a ∣ p ^ k
h₂ : a ∣ p ^ (k + 1)
⊢ a = p ^ (k + 1)
state_after: case intro.intro
n p k : ℕ
pp : Prime p
l : ℕ
h : l ≤ k + 1
h₁ : ¬p ^ l ∣ p ^ k
h₂ : p ^ l ∣ p ^ (k + 1)
⊢ p ^ l = p ^ (k + 1)
tactic: obtain ⟨l, ⟨h, rfl⟩⟩ := (dvd_prime_pow pp).1 h₂
state_before: case intro.intro
n p k : ℕ
pp : Prime p
l : ℕ
h : l ≤ k + 1
h₁ : ¬p ^ l ∣ p ^ k
h₂ : p ^ l ∣ p ^ (k + 1)
⊢ p ^ l = p ^ (k + 1)
state_after: case intro.intro.e_a
n p k : ℕ
pp : Prime p
l : ℕ
h : l ≤ k + 1
h₁ : ¬p ^ l ∣ p ^ k
h₂ : p ^ l ∣ p ^ (k + 1)
⊢ l = k + 1
tactic: congr
state_before: case intro.intro.e_a
n p k : ℕ
pp : Prime p
l : ℕ
h : l ≤ k + 1
h₁ : ¬p ^ l ∣ p ^ k
h₂ : p ^ l ∣ p ^ (k + 1)
⊢ l = k + 1
state_after: no goals
tactic: exact le_antisymm h (not_le.1 ((not_congr (pow_dvd_pow_iff_le_right (Prime.one_lt pp))).1 h₁))
Theorem: Prod.ext_iff
File: Mathlib/Data/Prod/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
p q : α × β
⊢ p = q ↔ p.fst = q.fst ∧ p.snd = q.snd
state_after: no goals
tactic: rw [mk.inj_iff]
Theorem: Module.DualBases.coeffs_lc
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
⊢ h.coeffs (lc e l) = l
state_after: case h
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ (h.coeffs (lc e l)) i = l i
tactic: ext i
state_before: case h
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ (h.coeffs (lc e l)) i = l i
state_after: no goals
tactic: rw [h.coeffs_apply, h.dual_lc]
Theorem: WithTop.LinearOrderedAddCommGroup.sub_top
File: Mathlib/Algebra/Order/AddGroupWithTop.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedAddCommGroup α
a✝ b c d : α
a : WithTop α
⊢ a - ⊤ = ⊤
state_after: no goals
tactic: cases a <;> rfl
Theorem: List.Palindrome.reverse_eq
File: Mathlib/Data/List/Palindrome.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l✝ l : List α
p : l.Palindrome
⊢ l.reverse = l
state_after: case cons_concat
α : Type u_1
β : Type u_2
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : l✝.Palindrome
a_ih✝ : l✝.reverse = l✝
⊢ (x✝ :: (l✝ ++ [x✝])).reverse = x✝ :: (l✝ ++ [x✝])
tactic: induction p <;> try (exact rfl)
state_before: case cons_concat
α : Type u_1
β : Type u_2
l✝¹ l : List α
x✝ : α
l✝ : List α
a✝ : l✝.Palindrome
a_ih✝ : l✝.reverse = l✝
⊢ (x✝ :: (l✝ ++ [x✝])).reverse = x✝ :: (l✝ ++ [x✝])
state_after: no goals
tactic: simpa
Theorem: Option.bnot_comp_isSome
File: Mathlib/Data/Option/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
⊢ (fun x => !x) ∘ isSome = isNone
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
x✝ : Option α
⊢ ((fun x => !x) ∘ isSome) x✝ = x✝.isNone
tactic: funext
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
x✝ : Option α
⊢ ((fun x => !x) ∘ isSome) x✝ = x✝.isNone
state_after: no goals
tactic: simp
Theorem: MeasureTheory.Measure.map_congr
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f g : α → β
h : f =ᶠ[ae μ] g
⊢ map f μ = map g μ
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f g : α → β
h : f =ᶠ[ae μ] g
hf : AEMeasurable f μ
⊢ map f μ = map g μ

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f g : α → β
h : f =ᶠ[ae μ] g
hf : ¬AEMeasurable f μ
⊢ map f μ = map g μ
tactic: by_cases hf : AEMeasurable f μ
Theorem: Matrix.smul_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Monoid R
inst✝³ : Mul α
inst✝² : AddCommMonoid α
inst✝¹ : DistribMulAction R α
inst✝ : IsScalarTower R α α
x : R
v w : m → α
⊢ x • v ⬝ᵥ w = x • (v ⬝ᵥ w)
state_after: no goals
tactic: simp [dotProduct, Finset.smul_sum, smul_mul_assoc]
Theorem: Multiset.disjoint_finset_sum_right
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 : α → β✝
β : Type u_6
i : Finset β
f : β → Multiset α
a : Multiset α
⊢ a.Disjoint (i.sum f) ↔ ∀ b ∈ i, a.Disjoint (f b)
state_after: no goals
tactic: simpa only [disjoint_comm] using disjoint_finset_sum_left
Theorem: LipschitzWith.const
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r : ℝ≥0∞
b : β
x y : α
⊢ edist ((fun x => b) x) ((fun x => b) y) ≤ ↑0 * edist x y
state_after: no goals
tactic: simp only [edist_self, zero_le]
Theorem: IsOpenMap.preimage_frontier_eq_frontier_preimage
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
hf : IsOpenMap f
hfc : Continuous f
s : Set Y
⊢ f ⁻¹' frontier s = frontier (f ⁻¹' s)
state_after: no goals
tactic: simp only [frontier_eq_closure_inter_closure, preimage_inter, preimage_compl,
    hf.preimage_closure_eq_closure_preimage hfc]
Theorem: FractionalIdeal.count_prod
File: Mathlib/RingTheory/DedekindDomain/Factorization.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
ι : Type u_3
s : Finset ι
I : ι → FractionalIdeal R⁰ K
hS : ∀ i ∈ s, I i ≠ 0
⊢ count K v (∏ i ∈ s, I i) = ∑ i ∈ s, count K v (I i)
state_after: case empty
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
ι : Type u_3
I : ι → FractionalIdeal R⁰ K
hS : ∀ i ∈ ∅, I i ≠ 0
⊢ count K v (∏ i ∈ ∅, I i) = ∑ i ∈ ∅, count K v (I i)

case insert
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
ι : Type u_3
I : ι → FractionalIdeal R⁰ K
i : ι
s : Finset ι
hi : i ∉ s
hrec : (∀ i ∈ s, I i ≠ 0) → count K v (∏ i ∈ s, I i) = ∑ i ∈ s, count K v (I i)
hS : ∀ i_1 ∈ insert i s, I i_1 ≠ 0
⊢ count K v (∏ i ∈ insert i s, I i) = ∑ i ∈ insert i s, count K v (I i)
tactic: induction' s using Finset.induction with i s hi hrec
Theorem: Finset.sum_neg
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : OrderedCancelCommMonoid M
f g : ι → M
s t : Finset ι
h : ∀ i ∈ s, f i < 1
hs : s.Nonempty
⊢ ∏ i ∈ s, 1 ≤ 1
state_after: no goals
tactic: rw [prod_const_one]
Theorem: ExteriorAlgebra.liftAlternatingEquiv_symm_apply
File: Mathlib/LinearAlgebra/ExteriorAlgebra/OfAlternating.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
N : Type u_3
N' : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup N
inst✝³ : AddCommGroup N'
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R N'
F : ExteriorAlgebra R M →ₗ[R] N
⊢ F ∘ₗ liftAlternating (ιMulti R) = F
state_after: no goals
tactic: rw [liftAlternating_ιMulti, LinearMap.comp_id]
Theorem: AddMonoidAlgebra.divOf_add
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
a b : G
⊢ x /ᵒᶠ (a + b) = x /ᵒᶠ a /ᵒᶠ b
state_after: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
a b x✝ : G
⊢ (x /ᵒᶠ (a + b)) x✝ = (x /ᵒᶠ a /ᵒᶠ b) x✝
tactic: refine Finsupp.ext fun _ => ?_
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
a b x✝ : G
⊢ (x /ᵒᶠ (a + b)) x✝ = (x /ᵒᶠ a /ᵒᶠ b) x✝
state_after: no goals
tactic: simp only [AddMonoidAlgebra.divOf_apply, add_assoc]
Theorem: Matrix.zpow_add_one_of_ne_neg_one
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

Proof steps:
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℕ
x✝ : ↑n ≠ -1
⊢ A ^ (↑n + 1) = A ^ ↑n * A
state_after: no goals
tactic: simp only [pow_succ, ← Nat.cast_succ, zpow_natCast]
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℕ
x✝ : -(↑n + 2) ≠ -1
⊢ A ^ (-(↑n + 2) + 1) = A ^ (-(↑n + 2)) * A
state_after: case inl.intro
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℕ
x✝ : -(↑n + 2) ≠ -1
h : A⁻¹ * A = 1
right✝ : A * A⁻¹ = 1
⊢ A ^ (-(↑n + 2) + 1) = A ^ (-(↑n + 2)) * A

case inr
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℕ
x✝ : -(↑n + 2) ≠ -1
h : A⁻¹ = 0
⊢ A ^ (-(↑n + 2) + 1) = A ^ (-(↑n + 2)) * A
tactic: rcases nonsing_inv_cancel_or_zero A with (⟨h, _⟩ | h)
Theorem: MulChar.pow_card_eq_one
File: Mathlib/NumberTheory/MulChar/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Fintype Mˣ
χ : MulChar M R
⊢ χ ^ Fintype.card Mˣ = 1
state_after: case h
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Fintype Mˣ
χ : MulChar M R
a✝ : Mˣ
⊢ (χ ^ Fintype.card Mˣ) ↑a✝ = 1 ↑a✝
tactic: ext1
state_before: case h
M : Type u_1
inst✝² : CommMonoid M
R : Type u_2
inst✝¹ : CommMonoidWithZero R
inst✝ : Fintype Mˣ
χ : MulChar M R
a✝ : Mˣ
⊢ (χ ^ Fintype.card Mˣ) ↑a✝ = 1 ↑a✝
state_after: no goals
tactic: rw [pow_apply_coe, ← map_pow, one_apply_coe, ← Units.val_pow_eq_pow_val, pow_card_eq_one,
    Units.val_eq_one.mpr rfl, map_one]
Theorem: finsum_mem_eq_zero_of_infinite
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i = 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (a : α), s.mulIndicator f a = 1
tactic: rw [finprod_mem_def]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (a : α), s.mulIndicator f a = 1
state_after: case hf
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ (mulSupport (s.mulIndicator f)).Infinite
tactic: apply finprod_of_infinite_mulSupport
state_before: case hf
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ (mulSupport (s.mulIndicator f)).Infinite
state_after: no goals
tactic: rwa [← mulSupport_mulIndicator] at hs
Theorem: Nat.choose_le_succ
File: Mathlib/Data/Nat/Choose/Basic.lean

Proof steps:
state_before: a c : ℕ
⊢ a.choose c ≤ a.succ.choose c
state_after: no goals
tactic: cases c <;> simp [Nat.choose_succ_succ]
Theorem: CategoryTheory.Subobject.inf_arrow_factors_left
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
B : C
X Y : Subobject B
⊢ (X ⊓ Y).ofLE X ⋯ ≫ (representative.obj X).arrow = (X ⊓ Y).arrow
state_after: no goals
tactic: simp
Theorem: Bool.coe_true
File: Mathlib/Data/Bool/Basic.lean

Proof steps:
state_before: ⊢ (true = true) = True
state_after: no goals
tactic: simp
Theorem: DirectedOn.convex_sUnion
File: Mathlib/Analysis/Convex/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
c : Set (Set E)
hdir : DirectedOn (fun x x_1 => x ⊆ x_1) c
hc : ∀ ⦃A : Set E⦄, A ∈ c → Convex 𝕜 A
⊢ Convex 𝕜 (⋃₀ c)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
c : Set (Set E)
hdir : DirectedOn (fun x x_1 => x ⊆ x_1) c
hc : ∀ ⦃A : Set E⦄, A ∈ c → Convex 𝕜 A
⊢ Convex 𝕜 (⋃ i, ↑i)
tactic: rw [sUnion_eq_iUnion]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
c : Set (Set E)
hdir : DirectedOn (fun x x_1 => x ⊆ x_1) c
hc : ∀ ⦃A : Set E⦄, A ∈ c → Convex 𝕜 A
⊢ Convex 𝕜 (⋃ i, ↑i)
state_after: no goals
tactic: exact (directedOn_iff_directed.1 hdir).convex_iUnion fun A => hc A.2
Theorem: QuaternionAlgebra.mul_coe_eq_smul
File: Mathlib/Algebra/Quaternion.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ a * ↑r = r • a
state_after: no goals
tactic: rw [← coe_commutes, coe_mul_eq_smul]
Theorem: LSeriesSummable.sub
File: Mathlib/NumberTheory/LSeries/Linearity.lean

Proof steps:
state_before: f g : ℕ → ℂ
s : ℂ
hf : LSeriesSummable f s
hg : LSeriesSummable g s
⊢ LSeriesSummable (f - g) s
state_after: no goals
tactic: simpa only [LSeriesSummable, ← term_sub_apply] using Summable.sub hf hg