ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.ShortComplex.Splitting.ofIso_s
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
⊢ S₂.f ≫ e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁ = 𝟙 S₂.X₁
state_after: no goals
tactic: rw [← e.inv.comm₁₂_assoc, s.f_r_assoc, ← comp_τ₁, e.inv_hom_id, id_τ₁]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
⊢ (e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂) ≫ S₂.g = 𝟙 S₂.X₃
state_after: no goals
tactic: rw [assoc, assoc, e.hom.comm₂₃, s.s_g_assoc, ← comp_τ₃, e.inv_hom_id, id_τ₃]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
⊢ (e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁) ≫ S₂.f + S₂.g ≫ e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂ = 𝟙 S₂.X₂
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
eq : e.inv.τ₂ ≫ (s.r ≫ S₁.f + S₁.g ≫ s.s) ≫ e.hom.τ₂ = e.inv.τ₂ ≫ 𝟙 S₁.X₂ ≫ e.hom.τ₂
⊢ (e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁) ≫ S₂.f + S₂.g ≫ e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂ = 𝟙 S₂.X₂
tactic: have eq := e.inv.τ₂ ≫= s.id =≫ e.hom.τ₂
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
eq : e.inv.τ₂ ≫ (s.r ≫ S₁.f + S₁.g ≫ s.s) ≫ e.hom.τ₂ = e.inv.τ₂ ≫ 𝟙 S₁.X₂ ≫ e.hom.τ₂
⊢ (e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁) ≫ S₂.f + S₂.g ≫ e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂ = 𝟙 S₂.X₂
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
eq : e.inv.τ₂ ≫ (s.r ≫ S₁.f + S₁.g ≫ s.s) ≫ e.hom.τ₂ = 𝟙 S₂.X₂
⊢ (e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁) ≫ S₂.f + S₂.g ≫ e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂ = 𝟙 S₂.X₂
tactic: rw [id_comp, ← comp_τ₂, e.inv_hom_id, id_τ₂] at eq
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.96949, u_1} C
inst✝² : Category.{?u.96953, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S S₁ S₂ : ShortComplex C
s : S₁.Splitting
e : S₁ ≅ S₂
eq : e.inv.τ₂ ≫ (s.r ≫ S₁.f + S₁.g ≫ s.s) ≫ e.hom.τ₂ = 𝟙 S₂.X₂
⊢ (e.inv.τ₂ ≫ s.r ≫ e.hom.τ₁) ≫ S₂.f + S₂.g ≫ e.inv.τ₃ ≫ s.s ≫ e.hom.τ₂ = 𝟙 S₂.X₂
state_after: no goals
tactic: rw [← eq, assoc, assoc, add_comp, assoc, assoc, comp_add,
      e.hom.comm₁₂, e.inv.comm₂₃_assoc]
Theorem: IsOpen.measure_zero_iff_eq_empty
File: Mathlib/MeasureTheory/Measure/OpenPos.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
m : MeasurableSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : T2Space Y
μ ν : Measure X
inst✝ : μ.IsOpenPosMeasure
s U F : Set X
x : X
hU : IsOpen U
h : U = ∅
⊢ μ U = 0
state_after: no goals
tactic: simp [h]
Theorem: map_prod
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
inst✝³ : CommMonoid β
inst✝² : CommMonoid γ
G : Type u_6
inst✝¹ : FunLike G β γ
inst✝ : MonoidHomClass G β γ
g : G
f : α → β
s : Finset α
⊢ g (∏ x ∈ s, f x) = ∏ x ∈ s, g (f x)
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝³ : CommMonoid β
inst✝² : CommMonoid γ
G : Type u_6
inst✝¹ : FunLike G β γ
inst✝ : MonoidHomClass G β γ
g : G
f : α → β
s : Finset α
⊢ (Multiset.map (⇑g ∘ f) s.val).prod = (Multiset.map (fun x => g (f x)) s.val).prod
tactic: simp only [Finset.prod_eq_multiset_prod, map_multiset_prod, Multiset.map_map]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝³ : CommMonoid β
inst✝² : CommMonoid γ
G : Type u_6
inst✝¹ : FunLike G β γ
inst✝ : MonoidHomClass G β γ
g : G
f : α → β
s : Finset α
⊢ (Multiset.map (⇑g ∘ f) s.val).prod = (Multiset.map (fun x => g (f x)) s.val).prod
state_after: no goals
tactic: rfl
Theorem: Finite.wellFounded_of_trans_of_irrefl
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
⊢ WellFounded r
state_after: no goals
tactic: classical
  cases nonempty_fintype α
  have :
    ∀ x y, r x y → (univ.filter fun z => r z x).card < (univ.filter fun z => r z y).card :=
    fun x y hxy =>
    Finset.card_lt_card <| by
      simp only [Finset.lt_iff_ssubset.symm, lt_iff_le_not_le, Finset.le_iff_subset,
          Finset.subset_iff, mem_filter, true_and_iff, mem_univ, hxy]
      exact
        ⟨fun z hzx => _root_.trans hzx hxy,
          not_forall_of_exists_not ⟨x, Classical.not_imp.2 ⟨hxy, irrefl x⟩⟩⟩
  exact Subrelation.wf (this _ _) (measure _).wf
Theorem: Nat.add_mod_eq_add_mod_right
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c✝ d m n k : ℕ
p q : ℕ → Prop
c : ℕ
H : a % d = b % d
⊢ (a + c) % d = (b + c) % d
state_after: no goals
tactic: rw [← mod_add_mod, ← mod_add_mod b, H]
Theorem: MeasureTheory.measurable_measure_mul_right
File: Mathlib/MeasureTheory/Group/Prod.lean

Proof steps:
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun x => μ ((fun y => y * x) ⁻¹' s)
state_after: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
tactic: suffices
    Measurable fun y =>
      μ ((fun x => (x, y)) ⁻¹' ((fun z : G × G => ((1 : G), z.1 * z.2)) ⁻¹' univ ×ˢ s))
    by convert this using 1; ext1 x; congr 1 with y : 1; simp
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun y => μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s))
state_after: case hs
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSet ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)
tactic: apply measurable_measure_prod_mk_right
state_before: case hs
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSet ((fun z => (1, z.1 * z.2)) ⁻¹' univ ×ˢ s)
state_after: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSpace G
tactic: apply measurable_const.prod_mk measurable_mul (MeasurableSet.univ.prod hs)
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSpace G
state_after: no goals
tactic: infer_instance
Theorem: ModularForm.const_toFun
File: Mathlib/NumberTheory/ModularForms/Basic.lean

Proof steps:
state_before: F : Type u_1
Γ : Subgroup SL(2, ℤ)
k : ℤ
x : ℂ
A : SL(2, ℤ)
⊢ IsBoundedAtImInfty (⇑(SlashInvariantForm.const x) ∣[0] A)
state_after: no goals
tactic: simpa only [SlashInvariantForm.const_toFun,
      ModularForm.is_invariant_const] using atImInfty.const_boundedAtFilter x
Theorem: IntermediateField.finInsepDegree_bot
File: Mathlib/FieldTheory/SeparableClosure.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
⊢ finInsepDegree F ↥⊥ = 1
state_after: no goals
tactic: rw [finInsepDegree_eq_of_equiv _ _ _ (botEquiv F E), finInsepDegree_self]
Theorem: Monoid.Coprod.induction_on'
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
C : M ∗ N → Prop
m : M ∗ N
one : C 1
inl_mul : ∀ (m : M) (x : M ∗ N), C x → C (inl m * x)
inr_mul : ∀ (n : N) (x : M ∗ N), C x → C (inr n * x)
⊢ C m
state_after: case intro
M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
C : M ∗ N → Prop
one : C 1
inl_mul : ∀ (m : M) (x : M ∗ N), C x → C (inl m * x)
inr_mul : ∀ (n : N) (x : M ∗ N), C x → C (inr n * x)
x : FreeMonoid (M ⊕ N)
⊢ C (mk x)
tactic: rcases mk_surjective m with ⟨x, rfl⟩
state_before: case intro
M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
P : Type u_5
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass M'
inst✝¹ : MulOneClass N'
inst✝ : MulOneClass P
C : M ∗ N → Prop
one : C 1
inl_mul : ∀ (m : M) (x : M ∗ N), C x → C (inl m * x)
inr_mul : ∀ (n : N) (x : M ∗ N), C x → C (inr n * x)
x : FreeMonoid (M ⊕ N)
⊢ C (mk x)
state_after: no goals
tactic: induction x with
  | h0 => exact one
  | ih x xs ih =>
    cases x with
    | inl m => simpa using inl_mul m _ ih
    | inr n => simpa using inr_mul n _ ih
Theorem: Set.enumerate_inj
File: Mathlib/Data/Set/Enumerate.lean

Proof steps:
state_before: α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
⊢ n₁ = n₂
state_after: case inl
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₁ ≤ n₂
⊢ n₁ = n₂

case inr
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₂ ≤ n₁
⊢ n₁ = n₂
tactic: rcases le_total n₁ n₂ with (hn|hn)
state_before: case inl
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₁ ≤ n₂
⊢ n₁ = n₂

case inr
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₂ ≤ n₁
⊢ n₁ = n₂
state_after: case inl
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₁ ≤ n₂
⊢ n₁ = n₂

case inr
α : Type u_1
sel : Set α → Option α
n₂ n₁ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₂ : enumerate sel s n₂ = some a
h₁ : enumerate sel s n₁ = some a
hn : n₁ ≤ n₂
⊢ n₂ = n₁
tactic: on_goal 2 => swap_var n₁ ↔ n₂, h₁ ↔ h₂
state_before: case inl
α : Type u_1
sel : Set α → Option α
n₁ n₂ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₁ : enumerate sel s n₁ = some a
h₂ : enumerate sel s n₂ = some a
hn : n₁ ≤ n₂
⊢ n₁ = n₂

case inr
α : Type u_1
sel : Set α → Option α
n₂ n₁ : ℕ
a : α
s : Set α
h_sel : ∀ (s : Set α) (a : α), sel s = some a → a ∈ s
h₂ : enumerate sel s n₂ = some a
h₁ : enumerate sel s n₁ = some a
hn : n₁ ≤ n₂
⊢ n₂ = n₁
state_after: no goals
tactic: all_goals
    rcases Nat.le.dest hn with ⟨m, rfl⟩
    clear hn
    induction n₁ generalizing s with
    | zero =>
      cases m with
      | zero => rfl
      | succ m =>
        have h' : enumerate sel (s \ {a}) m = some a := by
          simp_all only [enumerate, Nat.zero_eq, Nat.add_eq, zero_add]; exact h₂
        have : a ∈ s \ {a} := enumerate_mem sel h_sel h'
        simp_all [Set.mem_diff_singleton]
    | succ k ih =>
      cases h : sel s with
      /- Porting note: The original covered both goals with just `simp_all <;> tauto` -/
      | none =>
        simp_all only [add_comm, self_eq_add_left, Nat.add_succ, enumerate_eq_none_of_sel _ h]
      | some =>
        simp_all only [add_comm, self_eq_add_left, enumerate, Option.some.injEq,
                       Nat.add_succ, Nat.succ.injEq]
        exact ih h₁ h₂
Theorem: Polynomial.prime_X
File: Mathlib/Algebra/Polynomial/RingDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ Prime X
state_after: case h.e'_3
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ X = X - C 0
tactic: convert prime_X_sub_C (0 : R)
state_before: case h.e'_3
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ X = X - C 0
state_after: no goals
tactic: simp
Theorem: Primrec.vector_cons
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
⊢ Primrec fun a => (a.1 ::ᵥ a.2).toList
state_after: no goals
tactic: simpa using list_cons.comp fst (vector_toList_iff.2 snd)
Theorem: CategoryTheory.Equalizer.Presieve.Arrows.compatible_iff
File: Mathlib/CategoryTheory/Sites/EqualizerSheafCondition.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
P✝ : Cᵒᵖ ⥤ Type (max v u)
X✝¹ : C
R✝ : Presieve X✝¹
S✝ : Sieve X✝¹
inst✝¹ : R✝.hasPullbacks
P : Cᵒᵖ ⥤ Type w
X✝ : C
R : Presieve X✝
S : Sieve X✝
B : C
I : Type
X : I → C
π : (i : I) → X i ⟶ B
inst✝ : (Presieve.ofArrows X π).hasPullbacks
x : FirstObj P X
⊢ Arrows.Compatible P π ((Types.productIso fun i => P.obj (op (X i))).hom x) ↔ firstMap P X π x = secondMap P X π x
state_after: C : Type u
inst✝² : Category.{v, u} C
P✝ : Cᵒᵖ ⥤ Type (max v u)
X✝¹ : C
R✝ : Presieve X✝¹
S✝ : Sieve X✝¹
inst✝¹ : R✝.hasPullbacks
P : Cᵒᵖ ⥤ Type w
X✝ : C
R : Presieve X✝
S : Sieve X✝
B : C
I : Type
X : I → C
π : (i : I) → X i ⟶ B
inst✝ : (Presieve.ofArrows X π).hasPullbacks
x : FirstObj P X
⊢ Arrows.PullbackCompatible P π ((Types.productIso fun i => P.obj (op (X i))).hom x) ↔
    firstMap P X π x = secondMap P X π x
tactic: rw [Arrows.pullbackCompatible_iff]
state_before: C : Type u
inst✝² : Category.{v, u} C
P✝ : Cᵒᵖ ⥤ Type (max v u)
X✝¹ : C
R✝ : Presieve X✝¹
S✝ : Sieve X✝¹
inst✝¹ : R✝.hasPullbacks
P : Cᵒᵖ ⥤ Type w
X✝ : C
R : Presieve X✝
S : Sieve X✝
B : C
I : Type
X : I → C
π : (i : I) → X i ⟶ B
inst✝ : (Presieve.ofArrows X π).hasPullbacks
x : FirstObj P X
⊢ Arrows.PullbackCompatible P π ((Types.productIso fun i => P.obj (op (X i))).hom x) ↔
    firstMap P X π x = secondMap P X π x
state_after: case mp
C : Type u
inst✝² : Category.{v, u} C
P✝ : Cᵒᵖ ⥤ Type (max v u)
X✝¹ : C
R✝ : Presieve X✝¹
S✝ : Sieve X✝¹
inst✝¹ : R✝.hasPullbacks
P : Cᵒᵖ ⥤ Type w
X✝ : C
R : Presieve X✝
S : Sieve X✝
B : C
I : Type
X : I → C
π : (i : I) → X i ⟶ B
inst✝ : (Presieve.ofArrows X π).hasPullbacks
x : FirstObj P X
⊢ Arrows.PullbackCompatible P π ((Types.productIso fun i => P.obj (op (X i))).hom x) →
    firstMap P X π x = secondMap P X π x

case mpr
C : Type u
inst✝² : Category.{v, u} C
P✝ : Cᵒᵖ ⥤ Type (max v u)
X✝¹ : C
R✝ : Presieve X✝¹
S✝ : Sieve X✝¹
inst✝¹ : R✝.hasPullbacks
P : Cᵒᵖ ⥤ Type w
X✝ : C
R : Presieve X✝
S : Sieve X✝
B : C
I : Type
X : I → C
π : (i : I) → X i ⟶ B
inst✝ : (Presieve.ofArrows X π).hasPullbacks
x : FirstObj P X
⊢ firstMap P X π x = secondMap P X π x →
    Arrows.PullbackCompatible P π ((Types.productIso fun i => P.obj (op (X i))).hom x)
tactic: constructor
Theorem: MeasureTheory.L1.norm_of_fun_eq_integral_norm
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_7
inst✝ : NormedAddCommGroup H
f : α → H
hf : Integrable f μ
⊢ ‖Integrable.toL1 f hf‖ = ∫ (a : α), ‖f a‖ ∂μ
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_7
inst✝ : NormedAddCommGroup H
f : α → H
hf : Integrable f μ
⊢ ∫ (a : α), ‖↑↑(Integrable.toL1 f hf) a‖ ∂μ = ∫ (a : α), ‖f a‖ ∂μ
tactic: rw [L1.norm_eq_integral_norm]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_7
inst✝ : NormedAddCommGroup H
f : α → H
hf : Integrable f μ
⊢ ∫ (a : α), ‖↑↑(Integrable.toL1 f hf) a‖ ∂μ = ∫ (a : α), ‖f a‖ ∂μ
state_after: no goals
tactic: exact integral_congr_ae <| hf.coeFn_toL1.fun_comp _
Theorem: Polynomial.aeval_algHom
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : CommSemiring A'
inst✝³ : Semiring B
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R B
p q : R[X]
x✝ : A
f : A →ₐ[R] B
x : A
⊢ (aeval (f x)) X = (f.comp (aeval x)) X
state_after: no goals
tactic: simp only [aeval_X, AlgHom.comp_apply]
Theorem: AddSubsemigroup.subsingleton_of_subsingleton
File: Mathlib/Algebra/Group/Subsemigroup/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ Subsingleton M
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ ∀ (a b : M), a = b
tactic: constructor
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
⊢ ∀ (a b : M), a = b
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
⊢ x = y
tactic: intro x y
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
⊢ x = y
state_after: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
this : ∀ (a : M), a ∈ ⊥
⊢ x = y
tactic: have : ∀ a : M, a ∈ (⊥ : Subsemigroup M) := by simp [Subsingleton.elim (⊥ : Subsemigroup M) ⊤]
state_before: case allEq
M : Type u_1
N : Type u_2
A : Type u_3
inst✝² : Mul M
s : Set M
inst✝¹ : Add A
t : Set A
S : Subsemigroup M
inst✝ : Subsingleton (Subsemigroup M)
x y : M
this : ∀ (a : M), a ∈ ⊥
⊢ x = y
state_after: no goals
tactic: exact absurd (this x) not_mem_bot
Theorem: finsum_mem_comm
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✝ g : α → M
a b : α
s✝ t✝ s : Set α
t : Set β
f : α → β → M
hs : s.Finite
ht : t.Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s) (j : β) (_ : j ∈ t), f i j = ∏ᶠ (j : β) (_ : j ∈ t) (i : α) (_ : i ∈ s), f i j
state_after: case intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
t : Set β
f : α → β → M
ht : t.Finite
s : Finset α
⊢ ∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ t), f i j = ∏ᶠ (j : β) (_ : j ∈ t) (i : α) (_ : i ∈ ↑s), f i j
tactic: lift s to Finset α using hs
state_before: case intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
t : Set β
f : α → β → M
ht : t.Finite
s : Finset α
⊢ ∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ t), f i j = ∏ᶠ (j : β) (_ : j ∈ t) (i : α) (_ : i ∈ ↑s), f i j
state_after: case intro.intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ ∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ ↑t), f i j = ∏ᶠ (j : β) (_ : j ∈ ↑t) (i : α) (_ : i ∈ ↑s), f i j
tactic: lift t to Finset β using ht
state_before: case intro.intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ ∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ ↑t), f i j = ∏ᶠ (j : β) (_ : j ∈ ↑t) (i : α) (_ : i ∈ ↑s), f i j
state_after: case intro.intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ ∏ i ∈ s, ∏ i_1 ∈ t, f i i_1 = ∏ i ∈ t, ∏ i_1 ∈ s, f i_1 i
tactic: simp only [finprod_mem_coe_finset]
state_before: case intro.intro
α : 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✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ ∏ i ∈ s, ∏ i_1 ∈ t, f i i_1 = ∏ i ∈ t, ∏ i_1 ∈ s, f i_1 i
state_after: no goals
tactic: exact Finset.prod_comm
Theorem: Complex.edist_of_im_eq
File: Mathlib/Analysis/Complex/Basic.lean

Proof steps:
state_before: z✝ : ℂ
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℂ E
z w : ℂ
h : z.im = w.im
⊢ edist z w = edist z.re w.re
state_after: no goals
tactic: rw [edist_nndist, edist_nndist, nndist_of_im_eq h]
Theorem: CliffordAlgebra.comp_ι_sq_scalar
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
g : CliffordAlgebra Q →ₐ[R] A
m : M
⊢ g ((ι Q) m) * g ((ι Q) m) = (algebraMap R A) (Q m)
state_after: no goals
tactic: rw [← map_mul, ι_sq_scalar, AlgHom.commutes]