ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Mathlib/Algebra/Lie/Basic.lean
R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f_inv : N → M
f : M → N
map_add'✝¹ : ∀ (x y : M), f (x + y) = f x + f y
map_smul'✝¹ : ∀ (m : R) (x : M), { toFun := f, map_add' := map_add'✝¹ }.toFun (m • x) = (RingHom.id R) m • { toFun := f, map_add' := map_add'✝¹ }.toFun x
map_lie'✝¹ : ∀ {x : L} {m : M}, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun ⁅x, m⁆ = ⁅x, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun m⁆
left_inv✝¹ : LeftInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
right_inv✝¹ : Function.RightInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
g_inv : N → M
g : M → N
map_add'✝ : ∀ (x y : M), g (x + y) = g x + g y
map_smul'✝ : ∀ (m : R) (x : M), { toFun := g, map_add' := map_add'✝ }.toFun (m • x) = (RingHom.id R) m • { toFun := g, map_add' := map_add'✝ }.toFun x
map_lie'✝ : ∀ {x : L} {m : M}, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun ⁅x, m⁆ = ⁅x, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun m⁆
left_inv✝ : LeftInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
right_inv✝ : Function.RightInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
h : { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹, invFun := f_inv, left_inv := left_inv✝¹, right_inv := right_inv✝¹ }.toEquiv = { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝, invFun := g_inv, left_inv := left_inv✝, right_inv := right_inv✝ }.toEquiv

⊢ { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹, invFun := f_inv, left_inv := left_inv✝¹, right_inv := right_inv✝¹ } = { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝, invFun := g_inv, left_inv := left_inv✝, right_inv := right_inv✝ }
-- Mathlib/Algebra/Lie/Basic.lean
R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f_inv : N → M
f : M → N
map_add'✝¹ : ∀ (x y : M), f (x + y) = f x + f y
map_smul'✝¹ : ∀ (m : R) (x : M), { toFun := f, map_add' := map_add'✝¹ }.toFun (m • x) = (RingHom.id R) m • { toFun := f, map_add' := map_add'✝¹ }.toFun x
map_lie'✝¹ : ∀ {x : L} {m : M}, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun ⁅x, m⁆ = ⁅x, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun m⁆
left_inv✝¹ : LeftInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
right_inv✝¹ : Function.RightInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
g_inv : N → M
g : M → N
map_add'✝ : ∀ (x y : M), g (x + y) = g x + g y
map_smul'✝ : ∀ (m : R) (x : M), { toFun := g, map_add' := map_add'✝ }.toFun (m • x) = (RingHom.id R) m • { toFun := g, map_add' := map_add'✝ }.toFun x
map_lie'✝ : ∀ {x : L} {m : M}, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun ⁅x, m⁆ = ⁅x, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun m⁆
left_inv✝ : LeftInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
right_inv✝ : Function.RightInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
h : f = g ∧ f_inv = g_inv

⊢ { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹, invFun := f_inv, left_inv := left_inv✝¹, right_inv := right_inv✝¹ } = { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝, invFun := g_inv, left_inv := left_inv✝, right_inv := right_inv✝ }
-- Mathlib/Algebra/Lie/Basic.lean
R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f_inv : N → M
f : M → N
map_add'✝¹ : ∀ (x y : M), f (x + y) = f x + f y
map_smul'✝¹ : ∀ (m : R) (x : M), { toFun := f, map_add' := map_add'✝¹ }.toFun (m • x) = (RingHom.id R) m • { toFun := f, map_add' := map_add'✝¹ }.toFun x
map_lie'✝¹ : ∀ {x : L} {m : M}, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun ⁅x, m⁆ = ⁅x, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun m⁆
left_inv✝¹ : LeftInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
right_inv✝¹ : Function.RightInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
g_inv : N → M
g : M → N
map_add'✝ : ∀ (x y : M), g (x + y) = g x + g y
map_smul'✝ : ∀ (m : R) (x : M), { toFun := g, map_add' := map_add'✝ }.toFun (m • x) = (RingHom.id R) m • { toFun := g, map_add' := map_add'✝ }.toFun x
map_lie'✝ : ∀ {x : L} {m : M}, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun ⁅x, m⁆ = ⁅x, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun m⁆
left_inv✝ : LeftInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
right_inv✝ : Function.RightInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
h : f = g ∧ f_inv = g_inv

⊢ f = g
-- Mathlib/Algebra/Lie/Basic.lean
R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f_inv : N → M
f : M → N
map_add'✝¹ : ∀ (x y : M), f (x + y) = f x + f y
map_smul'✝¹ : ∀ (m : R) (x : M), { toFun := f, map_add' := map_add'✝¹ }.toFun (m • x) = (RingHom.id R) m • { toFun := f, map_add' := map_add'✝¹ }.toFun x
map_lie'✝¹ : ∀ {x : L} {m : M}, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun ⁅x, m⁆ = ⁅x, { toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹ }.toFun m⁆
left_inv✝¹ : LeftInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
right_inv✝¹ : Function.RightInverse f_inv (↑{ toFun := f, map_add' := map_add'✝¹, map_smul' := map_smul'✝¹, map_lie' := map_lie'✝¹ }).toFun
g_inv : N → M
g : M → N
map_add'✝ : ∀ (x y : M), g (x + y) = g x + g y
map_smul'✝ : ∀ (m : R) (x : M), { toFun := g, map_add' := map_add'✝ }.toFun (m • x) = (RingHom.id R) m • { toFun := g, map_add' := map_add'✝ }.toFun x
map_lie'✝ : ∀ {x : L} {m : M}, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun ⁅x, m⁆ = ⁅x, { toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝ }.toFun m⁆
left_inv✝ : LeftInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
right_inv✝ : Function.RightInverse g_inv (↑{ toFun := g, map_add' := map_add'✝, map_smul' := map_smul'✝, map_lie' := map_lie'✝ }).toFun
h : f = g ∧ f_inv = g_inv

⊢ f_inv = g_inv
-- Mathlib/Logic/Equiv/PartialEquiv.lean
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
s : Set α

⊢ ((e.restr s).trans e').source = ((e.trans e').restr s).source
-- Mathlib/MeasureTheory/Function/L1Space.lean
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ

⊢ Integrable g (μ.withDensity f) ↔ Integrable (fun x => g x * (f x).toReal) μ
-- Mathlib/MeasureTheory/Function/L1Space.lean
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ
this : (fun x => g x * (f x).toReal) = fun x => (f x).toReal • g x

⊢ Integrable g (μ.withDensity f) ↔ Integrable (fun x => g x * (f x).toReal) μ
-- Mathlib/MeasureTheory/Function/L1Space.lean
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ
this : (fun x => g x * (f x).toReal) = fun x => (f x).toReal • g x

⊢ Integrable g (μ.withDensity f) ↔ Integrable (fun x => (f x).toReal • g x) μ
-- Mathlib/GroupTheory/NoncommCoprod.lean
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)

⊢ (fun mn => f mn.1 * g mn.2) 1 = 1
-- Mathlib/Algebra/AlgebraicCard.lean
R A : Type u
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra R A
inst✝ : NoZeroSMulDivisors R A

⊢ #{ x // IsAlgebraic R x } ≤ #R[X] * ℵ₀
-- Mathlib/Algebra/AlgebraicCard.lean
R A : Type u
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra R A
inst✝ : NoZeroSMulDivisors R A

⊢ lift.{u, u} #{ x // IsAlgebraic R x } ≤ lift.{u, u} #R[X] * ℵ₀
-- Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
w₁ : InfinitePlace K
B : ℕ
hB : minkowskiBound K 1 < ↑(convexBodyLTFactor K) * ↑B
n : ℕ

⊢ ((Algebra.norm ℤ) ↑(seq K w₁ hB n)).natAbs ≤ B
-- Mathlib/Topology/Compactification/OnePoint.lean
X : Type u_1
inst✝¹ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
Y : Type u_2
inst✝ : TopologicalSpace Y
f : OnePoint X → Y

⊢ Tendsto (f ∘ some) (coclosedCompact X) (𝓝 (f ∞)) ↔ ∀ s ∈ 𝓝 (f ∞), ∃ t, IsClosed t ∧ IsCompact t ∧ MapsTo (f ∘ some) tᶜ s
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ

⊢ limMap (whiskerLeft F (restriction R (𝟙 X))) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (𝟙 X))) (F ⋙ evaluation R X)).inv = (ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ

⊢ limMap (whiskerLeft F (restriction R (𝟙 X))) = (ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (𝟙 X))) (F ⋙ evaluation R X)).hom
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ

⊢ ∀ (j : J), limMap (whiskerLeft F (restriction R (𝟙 X))) ≫ limit.π (F ⋙ evaluation R X ⋙ ModuleCat.restrictScalars (R.map (𝟙 X))) j = ((ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (𝟙 X))) (F ⋙ evaluation R X)).hom) ≫ limit.π (F ⋙ evaluation R X ⋙ ModuleCat.restrictScalars (R.map (𝟙 X))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ
j : J

⊢ limMap (whiskerLeft F (restriction R (𝟙 X))) ≫ limit.π (F ⋙ evaluation R X ⋙ ModuleCat.restrictScalars (R.map (𝟙 X))) j = ((ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (𝟙 X))) (F ⋙ evaluation R X)).hom) ≫ limit.π (F ⋙ evaluation R X ⋙ ModuleCat.restrictScalars (R.map (𝟙 X))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp (𝟙 X) (F.obj j) = (ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (𝟙 X))) (F ⋙ evaluation R X)).hom ≫ limit.π (F ⋙ evaluation R X ⋙ ModuleCat.restrictScalars (R.map (𝟙 X))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp (𝟙 X) (F.obj j) = (ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ (limit (F ⋙ evaluation R X))).inv ≫ (ModuleCat.restrictScalars (R.map (𝟙 X))).map (limit.π (F ⋙ evaluation R X) j)
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X : Cᵒᵖ
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ (ModuleCat.restrictScalarsId' (R.map (𝟙 X)) ⋯).inv.app ((F.obj j).obj X) = limit.π (F ⋙ evaluation R X) j ≫ (ModuleCat.restrictScalarsId'App (R.map (𝟙 X)) ⋯ ((F ⋙ evaluation R X).obj j)).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z

⊢ limMap (whiskerLeft F (restriction R (f ≫ g))) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (f ≫ g))) (F ⋙ evaluation R Z)).inv = (limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv) ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ (limit (F ⋙ evaluation R Z))).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z

⊢ limMap (whiskerLeft F (restriction R (f ≫ g))) = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ (limit (F ⋙ evaluation R Z))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (f ≫ g))) (F ⋙ evaluation R Z)).hom
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z

⊢ ∀ (j : J), limMap (whiskerLeft F (restriction R (f ≫ g))) ≫ limit.π (F ⋙ evaluation R Z ⋙ ModuleCat.restrictScalars (R.map (f ≫ g))) j = (limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ (limit (F ⋙ evaluation R Z))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (f ≫ g))) (F ⋙ evaluation R Z)).hom) ≫ limit.π (F ⋙ evaluation R Z ⋙ ModuleCat.restrictScalars (R.map (f ≫ g))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limMap (whiskerLeft F (restriction R (f ≫ g))) ≫ limit.π (F ⋙ evaluation R Z ⋙ ModuleCat.restrictScalars (R.map (f ≫ g))) j = (limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ (limit (F ⋙ evaluation R Z))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (f ≫ g))) (F ⋙ evaluation R Z)).hom) ≫ limit.π (F ⋙ evaluation R Z ⋙ ModuleCat.restrictScalars (R.map (f ≫ g))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp f (F.obj j) ≫ (ModuleCat.restrictScalars (R.map f)).map (restrictionApp g (F.obj j)) ≫ (ModuleCat.restrictScalarsComp' (R.map f) (R.map g) (R.map (f ≫ g)) ⋯).inv.app ((F.obj j).obj Z) = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g))) ≫ (ModuleCat.restrictScalars (R.map f)).map (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ (limit (F ⋙ evaluation R Z))).inv ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map (f ≫ g))) (F ⋙ evaluation R Z)).hom ≫ limit.π (F ⋙ evaluation R Z ⋙ ModuleCat.restrictScalars (R.map (f ≫ g))) j
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp f (F.obj j) ≫ (ModuleCat.restrictScalars (R.map f)).map (restrictionApp g (F.obj j)) ≫ (ModuleCat.restrictScalarsComp' (R.map f) (R.map g) (R.map (f ≫ g)) ⋯).inv.app ((F.obj j).obj Z) = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g))) ≫ (ModuleCat.restrictScalars (R.map f)).map (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map ((ModuleCat.restrictScalars (R.map g)).map (limit.π (F ⋙ evaluation R Z) j)) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F ⋙ evaluation R Z).obj j)).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp f (F.obj j) ≫ (ModuleCat.restrictScalars (R.map f)).map (restrictionApp g (F.obj j)) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g))) ≫ (ModuleCat.restrictScalars (R.map f)).map (preservesLimitIso (ModuleCat.restrictScalars (R.map g)) (F ⋙ evaluation R Z)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map ((ModuleCat.restrictScalars (R.map g)).map (limit.π (F ⋙ evaluation R Z) j)) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp f (F.obj j) ≫ (ModuleCat.restrictScalars (R.map f)).map (restrictionApp g (F.obj j)) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limMap (whiskerLeft F (restriction R g)) ≫ limit.π ((F ⋙ evaluation R Z) ⋙ ModuleCat.restrictScalars (R.map g)) j) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv
-- Mathlib/Algebra/Category/ModuleCat/Presheaf/Limits.lean
C : Type u₁
inst✝² : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
J : Type u₂
inst✝¹ : Category.{v₂, u₂} J
F : J ⥤ PresheafOfModules R
inst✝ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : Y ⟶ Z
j : J

⊢ limit.π (F ⋙ evaluation R X) j ≫ restrictionApp f (F.obj j) ≫ (ModuleCat.restrictScalars (R.map f)).map (restrictionApp g (F.obj j)) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv = limMap (whiskerLeft F (restriction R f)) ≫ (preservesLimitIso (ModuleCat.restrictScalars (R.map f)) (F ⋙ evaluation R Y)).inv ≫ (ModuleCat.restrictScalars (R.map f)).map (limit.π (F ⋙ evaluation R Y) j ≫ (whiskerLeft F (restriction R g)).app j) ≫ (ModuleCat.restrictScalarsComp'App (R.map f) (R.map g) (R.map (f ≫ g)) ⋯ ((F.obj j).obj Z)).inv