From 7a1b67c7ab5e6ccd1ca2bb3916d87e403142da51 Mon Sep 17 00:00:00 2001 From: leanprover-community-bot Date: Thu, 13 Apr 2023 14:43:35 +0000 Subject: [PATCH] bump to nightly-2023-04-13-14 mathlib commit https://github.com/leanprover-community/mathlib/commit/347636a7a80595d55bedf6e6fbd996a3c39da69a --- Mathbin/Algebra/Category/Module/EpiMono.lean | 50 +++ Mathbin/Analysis/Asymptotics/Theta.lean | 332 +++++++++++++++++- .../LocallyConvex/BalancedCoreHull.lean | 126 ++++++- Mathbin/Analysis/Seminorm.lean | 2 +- Mathbin/Analysis/SpecialFunctions/Pow.lean | 2 +- .../CategoryTheory/Sites/Sheafification.lean | 324 +++++++++++++++++ lake-manifest.json | 8 +- lakefile.lean | 4 +- 8 files changed, 830 insertions(+), 18 deletions(-) diff --git a/Mathbin/Algebra/Category/Module/EpiMono.lean b/Mathbin/Algebra/Category/Module/EpiMono.lean index 1f7af6860f..f2f1cd516c 100644 --- a/Mathbin/Algebra/Category/Module/EpiMono.lean +++ b/Mathbin/Algebra/Category/Module/EpiMono.lean @@ -33,54 +33,104 @@ variable {R : Type u} [Ring R] {X Y : ModuleCat.{v} R} (f : X ⟶ Y) variable {M : Type v} [AddCommGroup M] [Module R M] +/- warning: Module.ker_eq_bot_of_mono -> ModuleCat.ker_eq_bot_of_mono is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) [_inst_4 : CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f], Eq.{succ u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (LinearMap.ker.{u2, u2, u1, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.linearMapClass.{u2, u1} R _inst_1 X Y) f) (Bot.bot.{u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (Submodule.hasBot.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) [_inst_4 : CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f], Eq.{succ u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (LinearMap.ker.{u2, u2, u1, u1, u1} R R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.instLinearMapClassHomModuleCatToQuiverToCategoryStructModuleCategoryCarrierToSemiringToAddCommMonoidIsAddCommGroupIsModule.{u2, u1} R _inst_1 X Y) f) (Bot.bot.{u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (Submodule.instBotSubmodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X))) +Case conversion may be inaccurate. Consider using '#align Module.ker_eq_bot_of_mono ModuleCat.ker_eq_bot_of_monoₓ'. -/ theorem ker_eq_bot_of_mono [Mono f] : f.ker = ⊥ := LinearMap.ker_eq_bot_of_cancel fun u v => (@cancel_mono _ _ _ _ _ f _ (↟u) (↟v)).1 #align Module.ker_eq_bot_of_mono ModuleCat.ker_eq_bot_of_mono +/- warning: Module.range_eq_top_of_epi -> ModuleCat.range_eq_top_of_epi is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) [_inst_4 : CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f], Eq.{succ u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (LinearMap.range.{u2, u2, u1, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.linearMapClass.{u2, u1} R _inst_1 X Y) (RingHomSurjective.ids.{u2} R (Ring.toSemiring.{u2} R _inst_1)) f) (Top.top.{u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (Submodule.hasTop.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) [_inst_4 : CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f], Eq.{succ u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (LinearMap.range.{u2, u2, u1, u1, u1} R R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.instLinearMapClassHomModuleCatToQuiverToCategoryStructModuleCategoryCarrierToSemiringToAddCommMonoidIsAddCommGroupIsModule.{u2, u1} R _inst_1 X Y) (RingHomSurjective.ids.{u2} R (Ring.toSemiring.{u2} R _inst_1)) f) (Top.top.{u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (Submodule.instTopSubmodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y))) +Case conversion may be inaccurate. Consider using '#align Module.range_eq_top_of_epi ModuleCat.range_eq_top_of_epiₓ'. -/ theorem range_eq_top_of_epi [Epi f] : f.range = ⊤ := LinearMap.range_eq_top_of_cancel fun u v => (@cancel_epi _ _ _ _ _ f _ (↟u) (↟v)).1 #align Module.range_eq_top_of_epi ModuleCat.range_eq_top_of_epi +/- warning: Module.mono_iff_ker_eq_bot -> ModuleCat.mono_iff_ker_eq_bot is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Eq.{succ u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (LinearMap.ker.{u2, u2, u1, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.linearMapClass.{u2, u1} R _inst_1 X Y) f) (Bot.bot.{u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (Submodule.hasBot.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Eq.{succ u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (LinearMap.ker.{u2, u2, u1, u1, u1} R R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.instLinearMapClassHomModuleCatToQuiverToCategoryStructModuleCategoryCarrierToSemiringToAddCommMonoidIsAddCommGroupIsModule.{u2, u1} R _inst_1 X Y) f) (Bot.bot.{u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)) (Submodule.instBotSubmodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (ModuleCat.isModule.{u1, u2} R _inst_1 X)))) +Case conversion may be inaccurate. Consider using '#align Module.mono_iff_ker_eq_bot ModuleCat.mono_iff_ker_eq_botₓ'. -/ theorem mono_iff_ker_eq_bot : Mono f ↔ f.ker = ⊥ := ⟨fun hf => ker_eq_bot_of_mono _, fun hf => ConcreteCategory.mono_of_injective _ <| LinearMap.ker_eq_bot.1 hf⟩ #align Module.mono_iff_ker_eq_bot ModuleCat.mono_iff_ker_eq_bot +/- warning: Module.mono_iff_injective -> ModuleCat.mono_iff_injective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Function.Injective.{succ u1, succ u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (coeFn.{succ u1, succ u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) => (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) -> (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) f)) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Mono.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Function.Injective.{succ u1, succ u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (FunLike.coe.{succ u1, succ u1, succ u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.carrier.{u1, u2} R _inst_1 X) (fun (_x : ModuleCat.carrier.{u1, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Category.ModuleCat.Basic._hyg.275 : ModuleCat.carrier.{u1, u2} R _inst_1 X) => ModuleCat.carrier.{u1, u2} R _inst_1 Y) _x) (ModuleCat.instFunLikeHomModuleCatToQuiverToCategoryStructModuleCategoryCarrier.{u1, u2} R _inst_1 X Y) f)) +Case conversion may be inaccurate. Consider using '#align Module.mono_iff_injective ModuleCat.mono_iff_injectiveₓ'. -/ theorem mono_iff_injective : Mono f ↔ Function.Injective f := by rw [mono_iff_ker_eq_bot, LinearMap.ker_eq_bot] #align Module.mono_iff_injective ModuleCat.mono_iff_injective +/- warning: Module.epi_iff_range_eq_top -> ModuleCat.epi_iff_range_eq_top is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Eq.{succ u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (LinearMap.range.{u2, u2, u1, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.linearMapClass.{u2, u1} R _inst_1 X Y) (RingHomSurjective.ids.{u2} R (Ring.toSemiring.{u2} R _inst_1)) f) (Top.top.{u1} (Submodule.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (Submodule.hasTop.{u2, u1} R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Eq.{succ u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (LinearMap.range.{u2, u2, u1, u1, u1} R R (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.instLinearMapClassHomModuleCatToQuiverToCategoryStructModuleCategoryCarrierToSemiringToAddCommMonoidIsAddCommGroupIsModule.{u2, u1} R _inst_1 X Y) (RingHomSurjective.ids.{u2} R (Ring.toSemiring.{u2} R _inst_1)) f) (Top.top.{u1} (Submodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) (Submodule.instTopSubmodule.{u2, u1} R (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)))) +Case conversion may be inaccurate. Consider using '#align Module.epi_iff_range_eq_top ModuleCat.epi_iff_range_eq_topₓ'. -/ theorem epi_iff_range_eq_top : Epi f ↔ f.range = ⊤ := ⟨fun hf => range_eq_top_of_epi _, fun hf => ConcreteCategory.epi_of_surjective _ <| LinearMap.range_eq_top.1 hf⟩ #align Module.epi_iff_range_eq_top ModuleCat.epi_iff_range_eq_top +/- warning: Module.epi_iff_surjective -> ModuleCat.epi_iff_surjective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Function.Surjective.{succ u1, succ u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (coeFn.{succ u1, succ u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y)) => (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) -> (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) X) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 X)) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{max (succ u2) (succ (succ u1)), succ (succ u1)} (ModuleCat.{u1, u2} R _inst_1) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u2} R _inst_1) Y) (ModuleCat.isAddCommGroup.{u1, u2} R _inst_1 Y)) (ModuleCat.isModule.{u1, u2} R _inst_1 X) (ModuleCat.isModule.{u1, u2} R _inst_1 Y) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) f)) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {X : ModuleCat.{u1, u2} R _inst_1} {Y : ModuleCat.{u1, u2} R _inst_1} (f : Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y), Iff (CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X Y f) (Function.Surjective.{succ u1, succ u1} (ModuleCat.carrier.{u1, u2} R _inst_1 X) (ModuleCat.carrier.{u1, u2} R _inst_1 Y) (FunLike.coe.{succ u1, succ u1, succ u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X Y) (ModuleCat.carrier.{u1, u2} R _inst_1 X) (fun (_x : ModuleCat.carrier.{u1, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Category.ModuleCat.Basic._hyg.275 : ModuleCat.carrier.{u1, u2} R _inst_1 X) => ModuleCat.carrier.{u1, u2} R _inst_1 Y) _x) (ModuleCat.instFunLikeHomModuleCatToQuiverToCategoryStructModuleCategoryCarrier.{u1, u2} R _inst_1 X Y) f)) +Case conversion may be inaccurate. Consider using '#align Module.epi_iff_surjective ModuleCat.epi_iff_surjectiveₓ'. -/ theorem epi_iff_surjective : Epi f ↔ Function.Surjective f := by rw [epi_iff_range_eq_top, LinearMap.range_eq_top] #align Module.epi_iff_surjective ModuleCat.epi_iff_surjective +/- warning: Module.unique_of_epi_zero -> ModuleCat.uniqueOfEpiZero is a dubious translation: +lean 3 declaration is + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {M : Type.{u1}} [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] (X : ModuleCat.{u1, u2} R _inst_1) [h : CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.CategoryTheory.preadditive.{u1, u2} R _inst_1)) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)))))], Unique.{succ u1} M +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {M : Type.{u1}} [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] (X : ModuleCat.{u1, u2} R _inst_1) [h : CategoryTheory.Epi.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1))) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, max u2 (succ u1)} (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.instPreadditiveModuleCatModuleCategory.{u1, u2} R _inst_1)) X (ModuleCat.of.{u1, u2} R _inst_1 M _inst_2 _inst_3))))], Unique.{succ u1} M +Case conversion may be inaccurate. Consider using '#align Module.unique_of_epi_zero ModuleCat.uniqueOfEpiZeroₓ'. -/ /-- If the zero morphism is an epi then the codomain is trivial. -/ def uniqueOfEpiZero (X) [h : Epi (0 : X ⟶ of R M)] : Unique M := uniqueOfSurjectiveZero X ((ModuleCat.epi_iff_surjective _).mp h) #align Module.unique_of_epi_zero ModuleCat.uniqueOfEpiZero +#print ModuleCat.mono_as_hom'_subtype /- instance mono_as_hom'_subtype (U : Submodule R X) : Mono (↾U.Subtype) := (mono_iff_ker_eq_bot _).mpr (Submodule.ker_subtype U) #align Module.mono_as_hom'_subtype ModuleCat.mono_as_hom'_subtype +-/ +#print ModuleCat.epi_as_hom''_mkQ /- instance epi_as_hom''_mkQ (U : Submodule R X) : Epi (↿U.mkQ) := (epi_iff_range_eq_top _).mpr <| Submodule.range_mkQ _ #align Module.epi_as_hom''_mkq ModuleCat.epi_as_hom''_mkQ +-/ +#print ModuleCat.forget_preservesEpimorphisms /- instance forget_preservesEpimorphisms : (forget (ModuleCat.{v} R)).PreservesEpimorphisms where preserves X Y f hf := by rwa [forget_map_eq_coe, CategoryTheory.epi_iff_surjective, ← epi_iff_surjective] #align Module.forget_preserves_epimorphisms ModuleCat.forget_preservesEpimorphisms +-/ +#print ModuleCat.forget_preservesMonomorphisms /- instance forget_preservesMonomorphisms : (forget (ModuleCat.{v} R)).PreservesMonomorphisms where preserves X Y f hf := by rwa [forget_map_eq_coe, CategoryTheory.mono_iff_injective, ← mono_iff_injective] #align Module.forget_preserves_monomorphisms ModuleCat.forget_preservesMonomorphisms +-/ end ModuleCat diff --git a/Mathbin/Analysis/Asymptotics/Theta.lean b/Mathbin/Analysis/Asymptotics/Theta.lean index c5e7aa403f..7762d2396e 100644 --- a/Mathbin/Analysis/Asymptotics/Theta.lean +++ b/Mathbin/Analysis/Asymptotics/Theta.lean @@ -44,183 +44,413 @@ variable {f'' : α → E''} {g'' : α → F''} variable {l l' : Filter α} +#print Asymptotics.IsTheta /- /-- We say that `f` is `Θ(g)` along a filter `l` (notation: `f =Θ[l] g`) if `f =O[l] g` and `g =O[l] f`. -/ def IsTheta (l : Filter α) (f : α → E) (g : α → F) : Prop := IsBigO l f g ∧ IsBigO l g f #align asymptotics.is_Theta Asymptotics.IsTheta +-/ -- mathport name: «expr =Θ[ ] » notation:100 f " =Θ[" l "] " g:100 => IsTheta l f g +/- warning: asymptotics.is_O.antisymm -> Asymptotics.IsBigO.antisymm is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {f : α -> E} {g : α -> F} {l : Filter.{u1} α}, (Asymptotics.IsBigO.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsBigO.{u1, u3, u2} α F E _inst_2 _inst_1 l g f) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {f : α -> E} {g : α -> F} {l : Filter.{u3} α}, (Asymptotics.IsBigO.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsBigO.{u3, u1, u2} α F E _inst_2 _inst_1 l g f) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_O.antisymm Asymptotics.IsBigO.antisymmₓ'. -/ theorem IsBigO.antisymm (h₁ : f =O[l] g) (h₂ : g =O[l] f) : f =Θ[l] g := ⟨h₁, h₂⟩ #align asymptotics.is_O.antisymm Asymptotics.IsBigO.antisymm +/- warning: asymptotics.is_Theta_refl -> Asymptotics.isTheta_refl is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} [_inst_1 : Norm.{u2} E] (f : α -> E) (l : Filter.{u1} α), Asymptotics.IsTheta.{u1, u2, u2} α E E _inst_1 _inst_1 l f f +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} [_inst_1 : Norm.{u1} E] (f : α -> E) (l : Filter.{u2} α), Asymptotics.IsTheta.{u2, u1, u1} α E E _inst_1 _inst_1 l f f +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_refl Asymptotics.isTheta_reflₓ'. -/ @[refl] theorem isTheta_refl (f : α → E) (l : Filter α) : f =Θ[l] f := ⟨isBigO_refl _ _, isBigO_refl _ _⟩ #align asymptotics.is_Theta_refl Asymptotics.isTheta_refl +/- warning: asymptotics.is_Theta_rfl -> Asymptotics.isTheta_rfl is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} [_inst_1 : Norm.{u2} E] {f : α -> E} {l : Filter.{u1} α}, Asymptotics.IsTheta.{u1, u2, u2} α E E _inst_1 _inst_1 l f f +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} [_inst_1 : Norm.{u1} E] {f : α -> E} {l : Filter.{u2} α}, Asymptotics.IsTheta.{u2, u1, u1} α E E _inst_1 _inst_1 l f f +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_rfl Asymptotics.isTheta_rflₓ'. -/ theorem isTheta_rfl : f =Θ[l] f := isTheta_refl _ _ #align asymptotics.is_Theta_rfl Asymptotics.isTheta_rfl +/- warning: asymptotics.is_Theta.symm -> Asymptotics.IsTheta.symm is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {f : α -> E} {g : α -> F} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsTheta.{u1, u3, u2} α F E _inst_2 _inst_1 l g f) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {f : α -> E} {g : α -> F} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsTheta.{u3, u1, u2} α F E _inst_2 _inst_1 l g f) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.symm Asymptotics.IsTheta.symmₓ'. -/ @[symm] theorem IsTheta.symm (h : f =Θ[l] g) : g =Θ[l] f := h.symm #align asymptotics.is_Theta.symm Asymptotics.IsTheta.symm +/- warning: asymptotics.is_Theta_comm -> Asymptotics.isTheta_comm is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {f : α -> E} {g : α -> F} {l : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) (Asymptotics.IsTheta.{u1, u3, u2} α F E _inst_2 _inst_1 l g f) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {f : α -> E} {g : α -> F} {l : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) (Asymptotics.IsTheta.{u3, u1, u2} α F E _inst_2 _inst_1 l g f) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_comm Asymptotics.isTheta_commₓ'. -/ theorem isTheta_comm : f =Θ[l] g ↔ g =Θ[l] f := ⟨fun h => h.symm, fun h => h.symm⟩ #align asymptotics.is_Theta_comm Asymptotics.isTheta_comm +/- warning: asymptotics.is_Theta.trans -> Asymptotics.IsTheta.trans is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {G : Type.{u3}} {F' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_3 : Norm.{u3} G] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {l : Filter.{u1} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u1, u2, u4} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f g) -> (Asymptotics.IsTheta.{u1, u4, u3} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsTheta.{u1, u2, u3} α E G _inst_1 _inst_3 l f k) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u3}} {G : Type.{u1}} {F' : Type.{u2}} [_inst_1 : Norm.{u3} E] [_inst_3 : Norm.{u1} G] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {l : Filter.{u4} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u4, u3, u2} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f g) -> (Asymptotics.IsTheta.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsTheta.{u4, u3, u1} α E G _inst_1 _inst_3 l f k) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.trans Asymptotics.IsTheta.transₓ'. -/ @[trans] theorem IsTheta.trans {f : α → E} {g : α → F'} {k : α → G} (h₁ : f =Θ[l] g) (h₂ : g =Θ[l] k) : f =Θ[l] k := ⟨h₁.1.trans h₂.1, h₂.2.trans h₁.2⟩ #align asymptotics.is_Theta.trans Asymptotics.IsTheta.trans +/- warning: asymptotics.is_O.trans_is_Theta -> Asymptotics.IsBigO.trans_isTheta is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {G : Type.{u3}} {F' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_3 : Norm.{u3} G] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {l : Filter.{u1} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsBigO.{u1, u2, u4} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f g) -> (Asymptotics.IsTheta.{u1, u4, u3} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsBigO.{u1, u2, u3} α E G _inst_1 _inst_3 l f k) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u3}} {G : Type.{u1}} {F' : Type.{u2}} [_inst_1 : Norm.{u3} E] [_inst_3 : Norm.{u1} G] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {l : Filter.{u4} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsBigO.{u4, u3, u2} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f g) -> (Asymptotics.IsTheta.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsBigO.{u4, u3, u1} α E G _inst_1 _inst_3 l f k) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_O.trans_is_Theta Asymptotics.IsBigO.trans_isThetaₓ'. -/ @[trans] theorem IsBigO.trans_isTheta {f : α → E} {g : α → F'} {k : α → G} (h₁ : f =O[l] g) (h₂ : g =Θ[l] k) : f =O[l] k := h₁.trans h₂.1 #align asymptotics.is_O.trans_is_Theta Asymptotics.IsBigO.trans_isTheta +/- warning: asymptotics.is_Theta.trans_is_O -> Asymptotics.IsTheta.trans_isBigO is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {G : Type.{u3}} {F' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_3 : Norm.{u3} G] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {l : Filter.{u1} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u1, u2, u4} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f g) -> (Asymptotics.IsBigO.{u1, u4, u3} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsBigO.{u1, u2, u3} α E G _inst_1 _inst_3 l f k) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u3}} {G : Type.{u1}} {F' : Type.{u2}} [_inst_1 : Norm.{u3} E] [_inst_3 : Norm.{u1} G] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {l : Filter.{u4} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u4, u3, u2} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f g) -> (Asymptotics.IsBigO.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsBigO.{u4, u3, u1} α E G _inst_1 _inst_3 l f k) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.trans_is_O Asymptotics.IsTheta.trans_isBigOₓ'. -/ @[trans] theorem IsTheta.trans_isBigO {f : α → E} {g : α → F'} {k : α → G} (h₁ : f =Θ[l] g) (h₂ : g =O[l] k) : f =O[l] k := h₁.1.trans h₂ #align asymptotics.is_Theta.trans_is_O Asymptotics.IsTheta.trans_isBigO +/- warning: asymptotics.is_o.trans_is_Theta -> Asymptotics.IsLittleO.trans_isTheta is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} {G' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] [_inst_6 : SeminormedAddCommGroup.{u4} G'] {l : Filter.{u1} α} {f : α -> E} {g : α -> F} {k : α -> G'}, (Asymptotics.IsLittleO.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsTheta.{u1, u3, u4} α F G' _inst_2 (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l g k) -> (Asymptotics.IsLittleO.{u1, u2, u4} α E G' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l f k) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u3}} {F : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Norm.{u3} E] [_inst_2 : Norm.{u2} F] [_inst_6 : SeminormedAddCommGroup.{u1} G'] {l : Filter.{u4} α} {f : α -> E} {g : α -> F} {k : α -> G'}, (Asymptotics.IsLittleO.{u4, u3, u2} α E F _inst_1 _inst_2 l f g) -> (Asymptotics.IsTheta.{u4, u2, u1} α F G' _inst_2 (SeminormedAddCommGroup.toNorm.{u1} G' _inst_6) l g k) -> (Asymptotics.IsLittleO.{u4, u3, u1} α E G' _inst_1 (SeminormedAddCommGroup.toNorm.{u1} G' _inst_6) l f k) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_o.trans_is_Theta Asymptotics.IsLittleO.trans_isThetaₓ'. -/ @[trans] theorem IsLittleO.trans_isTheta {f : α → E} {g : α → F} {k : α → G'} (h₁ : f =o[l] g) (h₂ : g =Θ[l] k) : f =o[l] k := h₁.trans_isBigO h₂.1 #align asymptotics.is_o.trans_is_Theta Asymptotics.IsLittleO.trans_isTheta +/- warning: asymptotics.is_Theta.trans_is_o -> Asymptotics.IsTheta.trans_isLittleO is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {G : Type.{u3}} {F' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_3 : Norm.{u3} G] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {l : Filter.{u1} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u1, u2, u4} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f g) -> (Asymptotics.IsLittleO.{u1, u4, u3} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsLittleO.{u1, u2, u3} α E G _inst_1 _inst_3 l f k) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u3}} {G : Type.{u1}} {F' : Type.{u2}} [_inst_1 : Norm.{u3} E] [_inst_3 : Norm.{u1} G] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {l : Filter.{u4} α} {f : α -> E} {g : α -> F'} {k : α -> G}, (Asymptotics.IsTheta.{u4, u3, u2} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f g) -> (Asymptotics.IsLittleO.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g k) -> (Asymptotics.IsLittleO.{u4, u3, u1} α E G _inst_1 _inst_3 l f k) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.trans_is_o Asymptotics.IsTheta.trans_isLittleOₓ'. -/ @[trans] theorem IsTheta.trans_isLittleO {f : α → E} {g : α → F'} {k : α → G} (h₁ : f =Θ[l] g) (h₂ : g =o[l] k) : f =o[l] k := h₁.1.trans_isLittleO h₂ #align asymptotics.is_Theta.trans_is_o Asymptotics.IsTheta.trans_isLittleO +/- warning: asymptotics.is_Theta.trans_eventually_eq -> Asymptotics.IsTheta.trans_eventuallyEq is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {l : Filter.{u1} α} {f : α -> E} {g₁ : α -> F} {g₂ : α -> F}, (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g₁) -> (Filter.EventuallyEq.{u1, u3} α F l g₁ g₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g₂) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {l : Filter.{u3} α} {f : α -> E} {g₁ : α -> F} {g₂ : α -> F}, (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g₁) -> (Filter.EventuallyEq.{u3, u1} α F l g₁ g₂) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g₂) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.trans_eventually_eq Asymptotics.IsTheta.trans_eventuallyEqₓ'. -/ @[trans] theorem IsTheta.trans_eventuallyEq {f : α → E} {g₁ g₂ : α → F} (h : f =Θ[l] g₁) (hg : g₁ =ᶠ[l] g₂) : f =Θ[l] g₂ := ⟨h.1.trans_eventuallyEq hg, hg.symm.trans_isBigO h.2⟩ #align asymptotics.is_Theta.trans_eventually_eq Asymptotics.IsTheta.trans_eventuallyEq +/- warning: filter.eventually_eq.trans_is_Theta -> Filter.EventuallyEq.trans_isTheta is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {l : Filter.{u1} α} {f₁ : α -> E} {f₂ : α -> E} {g : α -> F}, (Filter.EventuallyEq.{u1, u2} α E l f₁ f₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f₂ g) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f₁ g) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {l : Filter.{u3} α} {f₁ : α -> E} {f₂ : α -> E} {g : α -> F}, (Filter.EventuallyEq.{u3, u2} α E l f₁ f₂) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f₂ g) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f₁ g) +Case conversion may be inaccurate. Consider using '#align filter.eventually_eq.trans_is_Theta Filter.EventuallyEq.trans_isThetaₓ'. -/ @[trans] theorem Filter.EventuallyEq.trans_isTheta {f₁ f₂ : α → E} {g : α → F} (hf : f₁ =ᶠ[l] f₂) (h : f₂ =Θ[l] g) : f₁ =Θ[l] g := ⟨hf.trans_isBigO h.1, h.2.trans_eventuallyEq hf.symm⟩ #align filter.eventually_eq.trans_is_Theta Filter.EventuallyEq.trans_isTheta +/- warning: asymptotics.is_Theta_norm_left -> Asymptotics.isTheta_norm_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, 0, u2} α Real F Real.hasNorm _inst_2 l (fun (x : α) => Norm.norm.{u3} E' (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) (f' x)) g) (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g) +but is expected to have type + forall {α : Type.{u3}} {F : Type.{u2}} {E' : Type.{u1}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u1} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, 0, u2} α Real F Real.norm _inst_2 l (fun (x : α) => Norm.norm.{u1} E' (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) (f' x)) g) (Asymptotics.IsTheta.{u3, u1, u2} α E' F (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) _inst_2 l f' g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_norm_left Asymptotics.isTheta_norm_leftₓ'. -/ @[simp] theorem isTheta_norm_left : (fun x => ‖f' x‖) =Θ[l] g ↔ f' =Θ[l] g := by simp [is_Theta] #align asymptotics.is_Theta_norm_left Asymptotics.isTheta_norm_left +/- warning: asymptotics.is_Theta_norm_right -> Asymptotics.isTheta_norm_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, u2, 0} α E Real _inst_1 Real.hasNorm l f (fun (x : α) => Norm.norm.{u3} F' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (g' x))) (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F' : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, u2, 0} α E Real _inst_1 Real.norm l f (fun (x : α) => Norm.norm.{u1} F' (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) (g' x))) (Asymptotics.IsTheta.{u3, u2, u1} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f g') +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_norm_right Asymptotics.isTheta_norm_rightₓ'. -/ @[simp] theorem isTheta_norm_right : (f =Θ[l] fun x => ‖g' x‖) ↔ f =Θ[l] g' := by simp [is_Theta] #align asymptotics.is_Theta_norm_right Asymptotics.isTheta_norm_right +/- warning: asymptotics.is_Theta.of_norm_left -> Asymptotics.IsTheta.of_norm_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, 0, u2} α Real F Real.hasNorm _inst_2 l (fun (x : α) => Norm.norm.{u3} E' (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) (f' x)) g) -> (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g) +but is expected to have type + forall {α : Type.{u3}} {F : Type.{u2}} {E' : Type.{u1}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u1} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, 0, u2} α Real F Real.norm _inst_2 l (fun (x : α) => Norm.norm.{u1} E' (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) (f' x)) g) -> (Asymptotics.IsTheta.{u3, u1, u2} α E' F (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) _inst_2 l f' g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_norm_left Asymptotics.IsTheta.of_norm_leftₓ'. -/ +/- warning: asymptotics.is_Theta.norm_left -> Asymptotics.IsTheta.norm_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g) -> (Asymptotics.IsTheta.{u1, 0, u2} α Real F Real.hasNorm _inst_2 l (fun (x : α) => Norm.norm.{u3} E' (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) (f' x)) g) +but is expected to have type + forall {α : Type.{u3}} {F : Type.{u2}} {E' : Type.{u1}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u1} E'] {g : α -> F} {f' : α -> E'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u1, u2} α E' F (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) _inst_2 l f' g) -> (Asymptotics.IsTheta.{u3, 0, u2} α Real F Real.norm _inst_2 l (fun (x : α) => Norm.norm.{u1} E' (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) (f' x)) g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.norm_left Asymptotics.IsTheta.norm_leftₓ'. -/ alias is_Theta_norm_left ↔ is_Theta.of_norm_left is_Theta.norm_left #align asymptotics.is_Theta.of_norm_left Asymptotics.IsTheta.of_norm_left #align asymptotics.is_Theta.norm_left Asymptotics.IsTheta.norm_left +/- warning: asymptotics.is_Theta.of_norm_right -> Asymptotics.IsTheta.of_norm_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, 0} α E Real _inst_1 Real.hasNorm l f (fun (x : α) => Norm.norm.{u3} F' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (g' x))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F' : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, 0} α E Real _inst_1 Real.norm l f (fun (x : α) => Norm.norm.{u1} F' (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) (g' x))) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f g') +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_norm_right Asymptotics.IsTheta.of_norm_rightₓ'. -/ +/- warning: asymptotics.is_Theta.norm_right -> Asymptotics.IsTheta.norm_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') -> (Asymptotics.IsTheta.{u1, u2, 0} α E Real _inst_1 Real.hasNorm l f (fun (x : α) => Norm.norm.{u3} F' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (g' x))) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F' : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f : α -> E} {g' : α -> F'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f g') -> (Asymptotics.IsTheta.{u3, u2, 0} α E Real _inst_1 Real.norm l f (fun (x : α) => Norm.norm.{u1} F' (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) (g' x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.norm_right Asymptotics.IsTheta.norm_rightₓ'. -/ alias is_Theta_norm_right ↔ is_Theta.of_norm_right is_Theta.norm_right #align asymptotics.is_Theta.of_norm_right Asymptotics.IsTheta.of_norm_right #align asymptotics.is_Theta.norm_right Asymptotics.IsTheta.norm_right +/- warning: asymptotics.is_Theta_of_norm_eventually_eq -> Asymptotics.isTheta_of_norm_eventuallyEq is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {f : α -> E} {g : α -> F} {l : Filter.{u1} α}, (Filter.EventuallyEq.{u1, 0} α Real l (fun (x : α) => Norm.norm.{u2} E _inst_1 (f x)) (fun (x : α) => Norm.norm.{u3} F _inst_2 (g x))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {f : α -> E} {g : α -> F} {l : Filter.{u3} α}, (Filter.EventuallyEq.{u3, 0} α Real l (fun (x : α) => Norm.norm.{u2} E _inst_1 (f x)) (fun (x : α) => Norm.norm.{u1} F _inst_2 (g x))) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_of_norm_eventually_eq Asymptotics.isTheta_of_norm_eventuallyEqₓ'. -/ theorem isTheta_of_norm_eventuallyEq (h : (fun x => ‖f x‖) =ᶠ[l] fun x => ‖g x‖) : f =Θ[l] g := ⟨IsBigO.of_bound 1 <| by simpa only [one_mul] using h.le, IsBigO.of_bound 1 <| by simpa only [one_mul] using h.symm.le⟩ #align asymptotics.is_Theta_of_norm_eventually_eq Asymptotics.isTheta_of_norm_eventuallyEq -theorem isTheta_of_norm_eventually_eq' {g : α → ℝ} (h : (fun x => ‖f' x‖) =ᶠ[l] g) : f' =Θ[l] g := +/- warning: asymptotics.is_Theta_of_norm_eventually_eq' -> Asymptotics.isTheta_of_norm_eventuallyEq' is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] {f' : α -> E'} {l : Filter.{u1} α} {g : α -> Real}, (Filter.EventuallyEq.{u1, 0} α Real l (fun (x : α) => Norm.norm.{u2} E' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (f' x)) g) -> (Asymptotics.IsTheta.{u1, u2, 0} α E' Real (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) Real.hasNorm l f' g) +but is expected to have type + forall {α : Type.{u2}} {E' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u1} E'] {f' : α -> E'} {l : Filter.{u2} α} {g : α -> Real}, (Filter.EventuallyEq.{u2, 0} α Real l (fun (x : α) => Norm.norm.{u1} E' (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) (f' x)) g) -> (Asymptotics.IsTheta.{u2, u1, 0} α E' Real (SeminormedAddCommGroup.toNorm.{u1} E' _inst_4) Real.norm l f' g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_of_norm_eventually_eq' Asymptotics.isTheta_of_norm_eventuallyEq'ₓ'. -/ +theorem isTheta_of_norm_eventuallyEq' {g : α → ℝ} (h : (fun x => ‖f' x‖) =ᶠ[l] g) : f' =Θ[l] g := isTheta_of_norm_eventuallyEq <| h.mono fun x hx => by simp only [← hx, norm_norm] -#align asymptotics.is_Theta_of_norm_eventually_eq' Asymptotics.isTheta_of_norm_eventually_eq' - +#align asymptotics.is_Theta_of_norm_eventually_eq' Asymptotics.isTheta_of_norm_eventuallyEq' + +/- warning: asymptotics.is_Theta.is_o_congr_left -> Asymptotics.IsTheta.isLittleO_congr_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {G : Type.{u2}} {E' : Type.{u3}} {F' : Type.{u4}} [_inst_3 : Norm.{u2} G] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {k : α -> G} {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u3, u4} α E' F' (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f' g') -> (Iff (Asymptotics.IsLittleO.{u1, u3, u2} α E' G (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_3 l f' k) (Asymptotics.IsLittleO.{u1, u4, u2} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g' k)) +but is expected to have type + forall {α : Type.{u4}} {G : Type.{u1}} {E' : Type.{u3}} {F' : Type.{u2}} [_inst_3 : Norm.{u1} G] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {k : α -> G} {f' : α -> E'} {g' : α -> F'} {l : Filter.{u4} α}, (Asymptotics.IsTheta.{u4, u3, u2} α E' F' (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f' g') -> (Iff (Asymptotics.IsLittleO.{u4, u3, u1} α E' G (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_3 l f' k) (Asymptotics.IsLittleO.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g' k)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.is_o_congr_left Asymptotics.IsTheta.isLittleO_congr_leftₓ'. -/ theorem IsTheta.isLittleO_congr_left (h : f' =Θ[l] g') : f' =o[l] k ↔ g' =o[l] k := ⟨h.symm.trans_isLittleO, h.trans_isLittleO⟩ #align asymptotics.is_Theta.is_o_congr_left Asymptotics.IsTheta.isLittleO_congr_left +/- warning: asymptotics.is_Theta.is_o_congr_right -> Asymptotics.IsTheta.isLittleO_congr_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} {G' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_6 : SeminormedAddCommGroup.{u4} G'] {f : α -> E} {g' : α -> F'} {k' : α -> G'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u3, u4} α F' G' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l g' k') -> (Iff (Asymptotics.IsLittleO.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') (Asymptotics.IsLittleO.{u1, u2, u4} α E G' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l f k')) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u1}} {F' : Type.{u3}} {G' : Type.{u2}} [_inst_1 : Norm.{u1} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_6 : SeminormedAddCommGroup.{u2} G'] {f : α -> E} {g' : α -> F'} {k' : α -> G'} {l : Filter.{u4} α}, (Asymptotics.IsTheta.{u4, u3, u2} α F' G' (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) (SeminormedAddCommGroup.toNorm.{u2} G' _inst_6) l g' k') -> (Iff (Asymptotics.IsLittleO.{u4, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f g') (Asymptotics.IsLittleO.{u4, u1, u2} α E G' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} G' _inst_6) l f k')) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.is_o_congr_right Asymptotics.IsTheta.isLittleO_congr_rightₓ'. -/ theorem IsTheta.isLittleO_congr_right (h : g' =Θ[l] k') : f =o[l] g' ↔ f =o[l] k' := ⟨fun H => H.trans_isTheta h, fun H => H.trans_isTheta h.symm⟩ #align asymptotics.is_Theta.is_o_congr_right Asymptotics.IsTheta.isLittleO_congr_right +/- warning: asymptotics.is_Theta.is_O_congr_left -> Asymptotics.IsTheta.isBigO_congr_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {G : Type.{u2}} {E' : Type.{u3}} {F' : Type.{u4}} [_inst_3 : Norm.{u2} G] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_5 : SeminormedAddCommGroup.{u4} F'] {k : α -> G} {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u3, u4} α E' F' (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) l f' g') -> (Iff (Asymptotics.IsBigO.{u1, u3, u2} α E' G (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_3 l f' k) (Asymptotics.IsBigO.{u1, u4, u2} α F' G (SeminormedAddCommGroup.toHasNorm.{u4} F' _inst_5) _inst_3 l g' k)) +but is expected to have type + forall {α : Type.{u4}} {G : Type.{u1}} {E' : Type.{u3}} {F' : Type.{u2}} [_inst_3 : Norm.{u1} G] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_5 : SeminormedAddCommGroup.{u2} F'] {k : α -> G} {f' : α -> E'} {g' : α -> F'} {l : Filter.{u4} α}, (Asymptotics.IsTheta.{u4, u3, u2} α E' F' (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l f' g') -> (Iff (Asymptotics.IsBigO.{u4, u3, u1} α E' G (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_3 l f' k) (Asymptotics.IsBigO.{u4, u2, u1} α F' G (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) _inst_3 l g' k)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.is_O_congr_left Asymptotics.IsTheta.isBigO_congr_leftₓ'. -/ theorem IsTheta.isBigO_congr_left (h : f' =Θ[l] g') : f' =O[l] k ↔ g' =O[l] k := ⟨h.symm.trans_isBigO, h.trans_isBigO⟩ #align asymptotics.is_Theta.is_O_congr_left Asymptotics.IsTheta.isBigO_congr_left +/- warning: asymptotics.is_Theta.is_O_congr_right -> Asymptotics.IsTheta.isBigO_congr_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} {G' : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_6 : SeminormedAddCommGroup.{u4} G'] {f : α -> E} {g' : α -> F'} {k' : α -> G'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u3, u4} α F' G' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l g' k') -> (Iff (Asymptotics.IsBigO.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') (Asymptotics.IsBigO.{u1, u2, u4} α E G' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u4} G' _inst_6) l f k')) +but is expected to have type + forall {α : Type.{u4}} {E : Type.{u1}} {F' : Type.{u3}} {G' : Type.{u2}} [_inst_1 : Norm.{u1} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_6 : SeminormedAddCommGroup.{u2} G'] {f : α -> E} {g' : α -> F'} {k' : α -> G'} {l : Filter.{u4} α}, (Asymptotics.IsTheta.{u4, u3, u2} α F' G' (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) (SeminormedAddCommGroup.toNorm.{u2} G' _inst_6) l g' k') -> (Iff (Asymptotics.IsBigO.{u4, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f g') (Asymptotics.IsBigO.{u4, u1, u2} α E G' _inst_1 (SeminormedAddCommGroup.toNorm.{u2} G' _inst_6) l f k')) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.is_O_congr_right Asymptotics.IsTheta.isBigO_congr_rightₓ'. -/ theorem IsTheta.isBigO_congr_right (h : g' =Θ[l] k') : f =O[l] g' ↔ f =O[l] k' := ⟨fun H => H.trans_isTheta h, fun H => H.trans_isTheta h.symm⟩ #align asymptotics.is_Theta.is_O_congr_right Asymptotics.IsTheta.isBigO_congr_right +/- warning: asymptotics.is_Theta.mono -> Asymptotics.IsTheta.mono is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u3} F] {f : α -> E} {g : α -> F} {l : Filter.{u1} α} {l' : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l f g) -> (LE.le.{u1} (Filter.{u1} α) (Preorder.toLE.{u1} (Filter.{u1} α) (PartialOrder.toPreorder.{u1} (Filter.{u1} α) (Filter.partialOrder.{u1} α))) l' l) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F _inst_1 _inst_2 l' f g) +but is expected to have type + forall {α : Type.{u3}} {E : Type.{u2}} {F : Type.{u1}} [_inst_1 : Norm.{u2} E] [_inst_2 : Norm.{u1} F] {f : α -> E} {g : α -> F} {l : Filter.{u3} α} {l' : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l f g) -> (LE.le.{u3} (Filter.{u3} α) (Preorder.toLE.{u3} (Filter.{u3} α) (PartialOrder.toPreorder.{u3} (Filter.{u3} α) (Filter.instPartialOrderFilter.{u3} α))) l' l) -> (Asymptotics.IsTheta.{u3, u2, u1} α E F _inst_1 _inst_2 l' f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.mono Asymptotics.IsTheta.monoₓ'. -/ theorem IsTheta.mono (h : f =Θ[l] g) (hl : l' ≤ l) : f =Θ[l'] g := ⟨h.1.mono hl, h.2.mono hl⟩ #align asymptotics.is_Theta.mono Asymptotics.IsTheta.mono +/- warning: asymptotics.is_Theta.sup -> Asymptotics.IsTheta.sup is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α} {l' : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f' g') -> (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l' f' g') -> (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (Sup.sup.{u1} (Filter.{u1} α) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} α) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} α) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} α) (Filter.completeLattice.{u1} α))))) l l') f' g') +but is expected to have type + forall {α : Type.{u3}} {E' : Type.{u2}} {F' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u3} α} {l' : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f' g') -> (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l' f' g') -> (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) (Sup.sup.{u3} (Filter.{u3} α) (SemilatticeSup.toSup.{u3} (Filter.{u3} α) (Lattice.toSemilatticeSup.{u3} (Filter.{u3} α) (ConditionallyCompleteLattice.toLattice.{u3} (Filter.{u3} α) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Filter.{u3} α) (Filter.instCompleteLatticeFilter.{u3} α))))) l l') f' g') +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.sup Asymptotics.IsTheta.supₓ'. -/ theorem IsTheta.sup (h : f' =Θ[l] g') (h' : f' =Θ[l'] g') : f' =Θ[l ⊔ l'] g' := ⟨h.1.sup h'.1, h.2.sup h'.2⟩ #align asymptotics.is_Theta.sup Asymptotics.IsTheta.sup +/- warning: asymptotics.is_Theta_sup -> Asymptotics.isTheta_sup is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α} {l' : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) (Sup.sup.{u1} (Filter.{u1} α) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} α) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} α) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} α) (Filter.completeLattice.{u1} α))))) l l') f' g') (And (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f' g') (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l' f' g')) +but is expected to have type + forall {α : Type.{u3}} {E' : Type.{u2}} {F' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u3} α} {l' : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) (Sup.sup.{u3} (Filter.{u3} α) (SemilatticeSup.toSup.{u3} (Filter.{u3} α) (Lattice.toSemilatticeSup.{u3} (Filter.{u3} α) (ConditionallyCompleteLattice.toLattice.{u3} (Filter.{u3} α) (CompleteLattice.toConditionallyCompleteLattice.{u3} (Filter.{u3} α) (Filter.instCompleteLatticeFilter.{u3} α))))) l l') f' g') (And (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f' g') (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l' f' g')) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_sup Asymptotics.isTheta_supₓ'. -/ @[simp] theorem isTheta_sup : f' =Θ[l ⊔ l'] g' ↔ f' =Θ[l] g' ∧ f' =Θ[l'] g' := ⟨fun h => ⟨h.mono le_sup_left, h.mono le_sup_right⟩, fun h => h.1.sup h.2⟩ #align asymptotics.is_Theta_sup Asymptotics.isTheta_sup +/- warning: asymptotics.is_Theta.eq_zero_iff -> Asymptotics.IsTheta.eq_zero_iff is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E'' : Type.{u2}} {F'' : Type.{u3}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u3} F''] {f'' : α -> E''} {g'' : α -> F''} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E'' F'' (NormedAddCommGroup.toHasNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toHasNorm.{u3} F'' _inst_8) l f'' g'') -> (Filter.Eventually.{u1} α (fun (x : α) => Iff (Eq.{succ u2} E'' (f'' x) (OfNat.ofNat.{u2} E'' 0 (OfNat.mk.{u2} E'' 0 (Zero.zero.{u2} E'' (AddZeroClass.toHasZero.{u2} E'' (AddMonoid.toAddZeroClass.{u2} E'' (SubNegMonoid.toAddMonoid.{u2} E'' (AddGroup.toSubNegMonoid.{u2} E'' (NormedAddGroup.toAddGroup.{u2} E'' (NormedAddCommGroup.toNormedAddGroup.{u2} E'' _inst_7)))))))))) (Eq.{succ u3} F'' (g'' x) (OfNat.ofNat.{u3} F'' 0 (OfNat.mk.{u3} F'' 0 (Zero.zero.{u3} F'' (AddZeroClass.toHasZero.{u3} F'' (AddMonoid.toAddZeroClass.{u3} F'' (SubNegMonoid.toAddMonoid.{u3} F'' (AddGroup.toSubNegMonoid.{u3} F'' (NormedAddGroup.toAddGroup.{u3} F'' (NormedAddCommGroup.toNormedAddGroup.{u3} F'' _inst_8))))))))))) l) +but is expected to have type + forall {α : Type.{u3}} {E'' : Type.{u2}} {F'' : Type.{u1}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u1} F''] {f'' : α -> E''} {g'' : α -> F''} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E'' F'' (NormedAddCommGroup.toNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toNorm.{u1} F'' _inst_8) l f'' g'') -> (Filter.Eventually.{u3} α (fun (x : α) => Iff (Eq.{succ u2} E'' (f'' x) (OfNat.ofNat.{u2} E'' 0 (Zero.toOfNat0.{u2} E'' (NegZeroClass.toZero.{u2} E'' (SubNegZeroMonoid.toNegZeroClass.{u2} E'' (SubtractionMonoid.toSubNegZeroMonoid.{u2} E'' (SubtractionCommMonoid.toSubtractionMonoid.{u2} E'' (AddCommGroup.toDivisionAddCommMonoid.{u2} E'' (NormedAddCommGroup.toAddCommGroup.{u2} E'' _inst_7))))))))) (Eq.{succ u1} F'' (g'' x) (OfNat.ofNat.{u1} F'' 0 (Zero.toOfNat0.{u1} F'' (NegZeroClass.toZero.{u1} F'' (SubNegZeroMonoid.toNegZeroClass.{u1} F'' (SubtractionMonoid.toSubNegZeroMonoid.{u1} F'' (SubtractionCommMonoid.toSubtractionMonoid.{u1} F'' (AddCommGroup.toDivisionAddCommMonoid.{u1} F'' (NormedAddCommGroup.toAddCommGroup.{u1} F'' _inst_8)))))))))) l) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.eq_zero_iff Asymptotics.IsTheta.eq_zero_iffₓ'. -/ theorem IsTheta.eq_zero_iff (h : f'' =Θ[l] g'') : ∀ᶠ x in l, f'' x = 0 ↔ g'' x = 0 := h.1.eq_zero_imp.mp <| h.2.eq_zero_imp.mono fun x => Iff.intro #align asymptotics.is_Theta.eq_zero_iff Asymptotics.IsTheta.eq_zero_iff +/- warning: asymptotics.is_Theta.tendsto_zero_iff -> Asymptotics.IsTheta.tendsto_zero_iff is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E'' : Type.{u2}} {F'' : Type.{u3}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u3} F''] {f'' : α -> E''} {g'' : α -> F''} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E'' F'' (NormedAddCommGroup.toHasNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toHasNorm.{u3} F'' _inst_8) l f'' g'') -> (Iff (Filter.Tendsto.{u1, u2} α E'' f'' l (nhds.{u2} E'' (UniformSpace.toTopologicalSpace.{u2} E'' (PseudoMetricSpace.toUniformSpace.{u2} E'' (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E'' (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E'' _inst_7)))) (OfNat.ofNat.{u2} E'' 0 (OfNat.mk.{u2} E'' 0 (Zero.zero.{u2} E'' (AddZeroClass.toHasZero.{u2} E'' (AddMonoid.toAddZeroClass.{u2} E'' (SubNegMonoid.toAddMonoid.{u2} E'' (AddGroup.toSubNegMonoid.{u2} E'' (NormedAddGroup.toAddGroup.{u2} E'' (NormedAddCommGroup.toNormedAddGroup.{u2} E'' _inst_7))))))))))) (Filter.Tendsto.{u1, u3} α F'' g'' l (nhds.{u3} F'' (UniformSpace.toTopologicalSpace.{u3} F'' (PseudoMetricSpace.toUniformSpace.{u3} F'' (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} F'' (NormedAddCommGroup.toSeminormedAddCommGroup.{u3} F'' _inst_8)))) (OfNat.ofNat.{u3} F'' 0 (OfNat.mk.{u3} F'' 0 (Zero.zero.{u3} F'' (AddZeroClass.toHasZero.{u3} F'' (AddMonoid.toAddZeroClass.{u3} F'' (SubNegMonoid.toAddMonoid.{u3} F'' (AddGroup.toSubNegMonoid.{u3} F'' (NormedAddGroup.toAddGroup.{u3} F'' (NormedAddCommGroup.toNormedAddGroup.{u3} F'' _inst_8)))))))))))) +but is expected to have type + forall {α : Type.{u3}} {E'' : Type.{u2}} {F'' : Type.{u1}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u1} F''] {f'' : α -> E''} {g'' : α -> F''} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E'' F'' (NormedAddCommGroup.toNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toNorm.{u1} F'' _inst_8) l f'' g'') -> (Iff (Filter.Tendsto.{u3, u2} α E'' f'' l (nhds.{u2} E'' (UniformSpace.toTopologicalSpace.{u2} E'' (PseudoMetricSpace.toUniformSpace.{u2} E'' (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E'' (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E'' _inst_7)))) (OfNat.ofNat.{u2} E'' 0 (Zero.toOfNat0.{u2} E'' (NegZeroClass.toZero.{u2} E'' (SubNegZeroMonoid.toNegZeroClass.{u2} E'' (SubtractionMonoid.toSubNegZeroMonoid.{u2} E'' (SubtractionCommMonoid.toSubtractionMonoid.{u2} E'' (AddCommGroup.toDivisionAddCommMonoid.{u2} E'' (NormedAddCommGroup.toAddCommGroup.{u2} E'' _inst_7)))))))))) (Filter.Tendsto.{u3, u1} α F'' g'' l (nhds.{u1} F'' (UniformSpace.toTopologicalSpace.{u1} F'' (PseudoMetricSpace.toUniformSpace.{u1} F'' (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} F'' (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} F'' _inst_8)))) (OfNat.ofNat.{u1} F'' 0 (Zero.toOfNat0.{u1} F'' (NegZeroClass.toZero.{u1} F'' (SubNegZeroMonoid.toNegZeroClass.{u1} F'' (SubtractionMonoid.toSubNegZeroMonoid.{u1} F'' (SubtractionCommMonoid.toSubtractionMonoid.{u1} F'' (AddCommGroup.toDivisionAddCommMonoid.{u1} F'' (NormedAddCommGroup.toAddCommGroup.{u1} F'' _inst_8))))))))))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.tendsto_zero_iff Asymptotics.IsTheta.tendsto_zero_iffₓ'. -/ theorem IsTheta.tendsto_zero_iff (h : f'' =Θ[l] g'') : Tendsto f'' l (𝓝 0) ↔ Tendsto g'' l (𝓝 0) := by simp only [← is_o_one_iff ℝ, h.is_o_congr_left] #align asymptotics.is_Theta.tendsto_zero_iff Asymptotics.IsTheta.tendsto_zero_iff +/- warning: asymptotics.is_Theta.tendsto_norm_at_top_iff -> Asymptotics.IsTheta.tendsto_norm_atTop_iff is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f' g') -> (Iff (Filter.Tendsto.{u1, 0} α Real (Function.comp.{succ u1, succ u2, 1} α E' Real (Norm.norm.{u2} E' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4)) f') l (Filter.atTop.{0} Real Real.preorder)) (Filter.Tendsto.{u1, 0} α Real (Function.comp.{succ u1, succ u3, 1} α F' Real (Norm.norm.{u3} F' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5)) g') l (Filter.atTop.{0} Real Real.preorder))) +but is expected to have type + forall {α : Type.{u3}} {E' : Type.{u2}} {F' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f' g') -> (Iff (Filter.Tendsto.{u3, 0} α Real (Function.comp.{succ u3, succ u2, 1} α E' Real (Norm.norm.{u2} E' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4)) f') l (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.Tendsto.{u3, 0} α Real (Function.comp.{succ u3, succ u1, 1} α F' Real (Norm.norm.{u1} F' (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5)) g') l (Filter.atTop.{0} Real Real.instPreorderReal))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.tendsto_norm_at_top_iff Asymptotics.IsTheta.tendsto_norm_atTop_iffₓ'. -/ theorem IsTheta.tendsto_norm_atTop_iff (h : f' =Θ[l] g') : Tendsto (norm ∘ f') l atTop ↔ Tendsto (norm ∘ g') l atTop := by simp only [← is_o_const_left_of_ne (one_ne_zero' ℝ), h.is_o_congr_right] #align asymptotics.is_Theta.tendsto_norm_at_top_iff Asymptotics.IsTheta.tendsto_norm_atTop_iff +/- warning: asymptotics.is_Theta.is_bounded_under_le_iff -> Asymptotics.IsTheta.isBoundedUnder_le_iff is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u3} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u1} α}, (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f' g') -> (Iff (Filter.IsBoundedUnder.{0, u1} Real α (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u1, succ u2, 1} α E' Real (Norm.norm.{u2} E' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4)) f')) (Filter.IsBoundedUnder.{0, u1} Real α (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u1, succ u3, 1} α F' Real (Norm.norm.{u3} F' (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5)) g'))) +but is expected to have type + forall {α : Type.{u3}} {E' : Type.{u2}} {F' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u1} F'] {f' : α -> E'} {g' : α -> F'} {l : Filter.{u3} α}, (Asymptotics.IsTheta.{u3, u2, u1} α E' F' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f' g') -> (Iff (Filter.IsBoundedUnder.{0, u3} Real α (fun (x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5162 : Real) (x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5164 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5162 x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5164) l (Function.comp.{succ u3, succ u2, 1} α E' Real (Norm.norm.{u2} E' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4)) f')) (Filter.IsBoundedUnder.{0, u3} Real α (fun (x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5186 : Real) (x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5188 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5186 x._@.Mathlib.Analysis.Asymptotics.Theta._hyg.5188) l (Function.comp.{succ u3, succ u1, 1} α F' Real (Norm.norm.{u1} F' (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5)) g'))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.is_bounded_under_le_iff Asymptotics.IsTheta.isBoundedUnder_le_iffₓ'. -/ theorem IsTheta.isBoundedUnder_le_iff (h : f' =Θ[l] g') : IsBoundedUnder (· ≤ ·) l (norm ∘ f') ↔ IsBoundedUnder (· ≤ ·) l (norm ∘ g') := by simp only [← is_O_const_of_ne (one_ne_zero' ℝ), h.is_O_congr_left] #align asymptotics.is_Theta.is_bounded_under_le_iff Asymptotics.IsTheta.isBoundedUnder_le_iff +/- warning: asymptotics.is_Theta.smul -> Asymptotics.IsTheta.smul is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F' : Type.{u3}} {𝕜 : Type.{u4}} {𝕜' : Type.{u5}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] [_inst_13 : NormedField.{u5} 𝕜'] {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u2} 𝕜 E' _inst_12 _inst_4] [_inst_15 : NormedSpace.{u5, u3} 𝕜' F' _inst_13 _inst_5] {f₁ : α -> 𝕜} {f₂ : α -> 𝕜'} {g₁ : α -> E'} {g₂ : α -> F'}, (Asymptotics.IsTheta.{u1, u4, u5} α 𝕜 𝕜' (NormedField.toHasNorm.{u4} 𝕜 _inst_12) (NormedField.toHasNorm.{u5} 𝕜' _inst_13) l f₁ f₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l g₁ g₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α E' F' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l (fun (x : α) => SMul.smul.{u4, u2} 𝕜 E' (SMulZeroClass.toHasSmul.{u4, u2} 𝕜 E' (AddZeroClass.toHasZero.{u2} E' (AddMonoid.toAddZeroClass.{u2} E' (AddCommMonoid.toAddMonoid.{u2} E' (AddCommGroup.toAddCommMonoid.{u2} E' (SeminormedAddCommGroup.toAddCommGroup.{u2} E' _inst_4))))) (SMulWithZero.toSmulZeroClass.{u4, u2} 𝕜 E' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u2} E' (AddMonoid.toAddZeroClass.{u2} E' (AddCommMonoid.toAddMonoid.{u2} E' (AddCommGroup.toAddCommMonoid.{u2} E' (SeminormedAddCommGroup.toAddCommGroup.{u2} E' _inst_4))))) (MulActionWithZero.toSMulWithZero.{u4, u2} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u2} E' (AddMonoid.toAddZeroClass.{u2} E' (AddCommMonoid.toAddMonoid.{u2} E' (AddCommGroup.toAddCommMonoid.{u2} E' (SeminormedAddCommGroup.toAddCommGroup.{u2} E' _inst_4))))) (Module.toMulActionWithZero.{u4, u2} 𝕜 E' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u2} E' (SeminormedAddCommGroup.toAddCommGroup.{u2} E' _inst_4)) (NormedSpace.toModule.{u4, u2} 𝕜 E' _inst_12 _inst_4 _inst_14))))) (f₁ x) (g₁ x)) (fun (x : α) => SMul.smul.{u5, u3} 𝕜' F' (SMulZeroClass.toHasSmul.{u5, u3} 𝕜' F' (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (SMulWithZero.toSmulZeroClass.{u5, u3} 𝕜' F' (MulZeroClass.toHasZero.{u5} 𝕜' (MulZeroOneClass.toMulZeroClass.{u5} 𝕜' (MonoidWithZero.toMulZeroOneClass.{u5} 𝕜' (Semiring.toMonoidWithZero.{u5} 𝕜' (Ring.toSemiring.{u5} 𝕜' (NormedRing.toRing.{u5} 𝕜' (NormedCommRing.toNormedRing.{u5} 𝕜' (NormedField.toNormedCommRing.{u5} 𝕜' _inst_13)))))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (MulActionWithZero.toSMulWithZero.{u5, u3} 𝕜' F' (Semiring.toMonoidWithZero.{u5} 𝕜' (Ring.toSemiring.{u5} 𝕜' (NormedRing.toRing.{u5} 𝕜' (NormedCommRing.toNormedRing.{u5} 𝕜' (NormedField.toNormedCommRing.{u5} 𝕜' _inst_13))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (Module.toMulActionWithZero.{u5, u3} 𝕜' F' (Ring.toSemiring.{u5} 𝕜' (NormedRing.toRing.{u5} 𝕜' (NormedCommRing.toNormedRing.{u5} 𝕜' (NormedField.toNormedCommRing.{u5} 𝕜' _inst_13)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u5, u3} 𝕜' F' _inst_13 _inst_5 _inst_15))))) (f₂ x) (g₂ x))) +but is expected to have type + forall {α : Type.{u1}} {E' : Type.{u4}} {F' : Type.{u2}} {𝕜 : Type.{u5}} {𝕜' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u4} E'] [_inst_5 : SeminormedAddCommGroup.{u2} F'] [_inst_12 : NormedField.{u5} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u5, u4} 𝕜 E' _inst_12 _inst_4] [_inst_15 : NormedSpace.{u3, u2} 𝕜' F' _inst_13 _inst_5] {f₁ : α -> 𝕜} {f₂ : α -> 𝕜'} {g₁ : α -> E'} {g₂ : α -> F'}, (Asymptotics.IsTheta.{u1, u5, u3} α 𝕜 𝕜' (NormedField.toNorm.{u5} 𝕜 _inst_12) (NormedField.toNorm.{u3} 𝕜' _inst_13) l f₁ f₂) -> (Asymptotics.IsTheta.{u1, u4, u2} α E' F' (SeminormedAddCommGroup.toNorm.{u4} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l g₁ g₂) -> (Asymptotics.IsTheta.{u1, u4, u2} α E' F' (SeminormedAddCommGroup.toNorm.{u4} E' _inst_4) (SeminormedAddCommGroup.toNorm.{u2} F' _inst_5) l (fun (x : α) => HSMul.hSMul.{u5, u4, u4} 𝕜 E' E' (instHSMul.{u5, u4} 𝕜 E' (SMulZeroClass.toSMul.{u5, u4} 𝕜 E' (NegZeroClass.toZero.{u4} E' (SubNegZeroMonoid.toNegZeroClass.{u4} E' (SubtractionMonoid.toSubNegZeroMonoid.{u4} E' (SubtractionCommMonoid.toSubtractionMonoid.{u4} E' (AddCommGroup.toDivisionAddCommMonoid.{u4} E' (SeminormedAddCommGroup.toAddCommGroup.{u4} E' _inst_4)))))) (SMulWithZero.toSMulZeroClass.{u5, u4} 𝕜 E' (CommMonoidWithZero.toZero.{u5} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u5} 𝕜 (Semifield.toCommGroupWithZero.{u5} 𝕜 (Field.toSemifield.{u5} 𝕜 (NormedField.toField.{u5} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u4} E' (SubNegZeroMonoid.toNegZeroClass.{u4} E' (SubtractionMonoid.toSubNegZeroMonoid.{u4} E' (SubtractionCommMonoid.toSubtractionMonoid.{u4} E' (AddCommGroup.toDivisionAddCommMonoid.{u4} E' (SeminormedAddCommGroup.toAddCommGroup.{u4} E' _inst_4)))))) (MulActionWithZero.toSMulWithZero.{u5, u4} 𝕜 E' (Semiring.toMonoidWithZero.{u5} 𝕜 (DivisionSemiring.toSemiring.{u5} 𝕜 (Semifield.toDivisionSemiring.{u5} 𝕜 (Field.toSemifield.{u5} 𝕜 (NormedField.toField.{u5} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u4} E' (SubNegZeroMonoid.toNegZeroClass.{u4} E' (SubtractionMonoid.toSubNegZeroMonoid.{u4} E' (SubtractionCommMonoid.toSubtractionMonoid.{u4} E' (AddCommGroup.toDivisionAddCommMonoid.{u4} E' (SeminormedAddCommGroup.toAddCommGroup.{u4} E' _inst_4)))))) (Module.toMulActionWithZero.{u5, u4} 𝕜 E' (DivisionSemiring.toSemiring.{u5} 𝕜 (Semifield.toDivisionSemiring.{u5} 𝕜 (Field.toSemifield.{u5} 𝕜 (NormedField.toField.{u5} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u4} E' (SeminormedAddCommGroup.toAddCommGroup.{u4} E' _inst_4)) (NormedSpace.toModule.{u5, u4} 𝕜 E' _inst_12 _inst_4 _inst_14)))))) (f₁ x) (g₁ x)) (fun (x : α) => HSMul.hSMul.{u3, u2, u2} 𝕜' F' F' (instHSMul.{u3, u2} 𝕜' F' (SMulZeroClass.toSMul.{u3, u2} 𝕜' F' (NegZeroClass.toZero.{u2} F' (SubNegZeroMonoid.toNegZeroClass.{u2} F' (SubtractionMonoid.toSubNegZeroMonoid.{u2} F' (SubtractionCommMonoid.toSubtractionMonoid.{u2} F' (AddCommGroup.toDivisionAddCommMonoid.{u2} F' (SeminormedAddCommGroup.toAddCommGroup.{u2} F' _inst_5)))))) (SMulWithZero.toSMulZeroClass.{u3, u2} 𝕜' F' (CommMonoidWithZero.toZero.{u3} 𝕜' (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜' (Semifield.toCommGroupWithZero.{u3} 𝕜' (Field.toSemifield.{u3} 𝕜' (NormedField.toField.{u3} 𝕜' _inst_13))))) (NegZeroClass.toZero.{u2} F' (SubNegZeroMonoid.toNegZeroClass.{u2} F' (SubtractionMonoid.toSubNegZeroMonoid.{u2} F' (SubtractionCommMonoid.toSubtractionMonoid.{u2} F' (AddCommGroup.toDivisionAddCommMonoid.{u2} F' (SeminormedAddCommGroup.toAddCommGroup.{u2} F' _inst_5)))))) (MulActionWithZero.toSMulWithZero.{u3, u2} 𝕜' F' (Semiring.toMonoidWithZero.{u3} 𝕜' (DivisionSemiring.toSemiring.{u3} 𝕜' (Semifield.toDivisionSemiring.{u3} 𝕜' (Field.toSemifield.{u3} 𝕜' (NormedField.toField.{u3} 𝕜' _inst_13))))) (NegZeroClass.toZero.{u2} F' (SubNegZeroMonoid.toNegZeroClass.{u2} F' (SubtractionMonoid.toSubNegZeroMonoid.{u2} F' (SubtractionCommMonoid.toSubtractionMonoid.{u2} F' (AddCommGroup.toDivisionAddCommMonoid.{u2} F' (SeminormedAddCommGroup.toAddCommGroup.{u2} F' _inst_5)))))) (Module.toMulActionWithZero.{u3, u2} 𝕜' F' (DivisionSemiring.toSemiring.{u3} 𝕜' (Semifield.toDivisionSemiring.{u3} 𝕜' (Field.toSemifield.{u3} 𝕜' (NormedField.toField.{u3} 𝕜' _inst_13)))) (AddCommGroup.toAddCommMonoid.{u2} F' (SeminormedAddCommGroup.toAddCommGroup.{u2} F' _inst_5)) (NormedSpace.toModule.{u3, u2} 𝕜' F' _inst_13 _inst_5 _inst_15)))))) (f₂ x) (g₂ x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.smul Asymptotics.IsTheta.smulₓ'. -/ theorem IsTheta.smul [NormedSpace 𝕜 E'] [NormedSpace 𝕜' F'] {f₁ : α → 𝕜} {f₂ : α → 𝕜'} {g₁ : α → E'} {g₂ : α → F'} (hf : f₁ =Θ[l] f₂) (hg : g₁ =Θ[l] g₂) : (fun x => f₁ x • g₁ x) =Θ[l] fun x => f₂ x • g₂ x := ⟨hf.1.smul hg.1, hf.2.smul hg.2⟩ #align asymptotics.is_Theta.smul Asymptotics.IsTheta.smul +/- warning: asymptotics.is_Theta.mul -> Asymptotics.IsTheta.mul is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f₁ : α -> 𝕜} {f₂ : α -> 𝕜} {g₁ : α -> 𝕜'} {g₂ : α -> 𝕜'}, (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f₁ g₁) -> (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f₂ g₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (NormedRing.toRing.{u2} 𝕜 (NormedCommRing.toNormedRing.{u2} 𝕜 (NormedField.toNormedCommRing.{u2} 𝕜 _inst_12)))))) (f₁ x) (f₂ x)) (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜' 𝕜' 𝕜' (instHMul.{u3} 𝕜' (Distrib.toHasMul.{u3} 𝕜' (Ring.toDistrib.{u3} 𝕜' (NormedRing.toRing.{u3} 𝕜' (NormedCommRing.toNormedRing.{u3} 𝕜' (NormedField.toNormedCommRing.{u3} 𝕜' _inst_13)))))) (g₁ x) (g₂ x))) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f₁ : α -> 𝕜} {f₂ : α -> 𝕜} {g₁ : α -> 𝕜'} {g₂ : α -> 𝕜'}, (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f₁ g₁) -> (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f₂ g₂) -> (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (NormedRing.toRing.{u2} 𝕜 (NormedCommRing.toNormedRing.{u2} 𝕜 (NormedField.toNormedCommRing.{u2} 𝕜 _inst_12))))))) (f₁ x) (f₂ x)) (fun (x : α) => HMul.hMul.{u1, u1, u1} 𝕜' 𝕜' 𝕜' (instHMul.{u1} 𝕜' (NonUnitalNonAssocRing.toMul.{u1} 𝕜' (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜' (Ring.toNonAssocRing.{u1} 𝕜' (NormedRing.toRing.{u1} 𝕜' (NormedCommRing.toNormedRing.{u1} 𝕜' (NormedField.toNormedCommRing.{u1} 𝕜' _inst_13))))))) (g₁ x) (g₂ x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.mul Asymptotics.IsTheta.mulₓ'. -/ theorem IsTheta.mul {f₁ f₂ : α → 𝕜} {g₁ g₂ : α → 𝕜'} (h₁ : f₁ =Θ[l] g₁) (h₂ : f₂ =Θ[l] g₂) : (fun x => f₁ x * f₂ x) =Θ[l] fun x => g₁ x * g₂ x := h₁.smul h₂ #align asymptotics.is_Theta.mul Asymptotics.IsTheta.mul +/- warning: asymptotics.is_Theta.inv -> Asymptotics.IsTheta.inv is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f g) -> (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => Inv.inv.{u2} 𝕜 (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (NormedDivisionRing.toDivisionRing.{u2} 𝕜 (NormedField.toNormedDivisionRing.{u2} 𝕜 _inst_12)))) (f x)) (fun (x : α) => Inv.inv.{u3} 𝕜' (DivInvMonoid.toHasInv.{u3} 𝕜' (DivisionRing.toDivInvMonoid.{u3} 𝕜' (NormedDivisionRing.toDivisionRing.{u3} 𝕜' (NormedField.toNormedDivisionRing.{u3} 𝕜' _inst_13)))) (g x))) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f g) -> (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => Inv.inv.{u2} 𝕜 (Field.toInv.{u2} 𝕜 (NormedField.toField.{u2} 𝕜 _inst_12)) (f x)) (fun (x : α) => Inv.inv.{u1} 𝕜' (Field.toInv.{u1} 𝕜' (NormedField.toField.{u1} 𝕜' _inst_13)) (g x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.inv Asymptotics.IsTheta.invₓ'. -/ theorem IsTheta.inv {f : α → 𝕜} {g : α → 𝕜'} (h : f =Θ[l] g) : (fun x => (f x)⁻¹) =Θ[l] fun x => (g x)⁻¹ := ⟨h.2.inv_rev h.1.eq_zero_imp, h.1.inv_rev h.2.eq_zero_imp⟩ #align asymptotics.is_Theta.inv Asymptotics.IsTheta.inv +/- warning: asymptotics.is_Theta_inv -> Asymptotics.isTheta_inv is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f : α -> 𝕜} {g : α -> 𝕜'}, Iff (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => Inv.inv.{u2} 𝕜 (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (NormedDivisionRing.toDivisionRing.{u2} 𝕜 (NormedField.toNormedDivisionRing.{u2} 𝕜 _inst_12)))) (f x)) (fun (x : α) => Inv.inv.{u3} 𝕜' (DivInvMonoid.toHasInv.{u3} 𝕜' (DivisionRing.toDivInvMonoid.{u3} 𝕜' (NormedDivisionRing.toDivisionRing.{u3} 𝕜' (NormedField.toNormedDivisionRing.{u3} 𝕜' _inst_13)))) (g x))) (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f g) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f : α -> 𝕜} {g : α -> 𝕜'}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => Inv.inv.{u2} 𝕜 (Field.toInv.{u2} 𝕜 (NormedField.toField.{u2} 𝕜 _inst_12)) (f x)) (fun (x : α) => Inv.inv.{u1} 𝕜' (Field.toInv.{u1} 𝕜' (NormedField.toField.{u1} 𝕜' _inst_13)) (g x))) (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_inv Asymptotics.isTheta_invₓ'. -/ @[simp] theorem isTheta_inv {f : α → 𝕜} {g : α → 𝕜'} : ((fun x => (f x)⁻¹) =Θ[l] fun x => (g x)⁻¹) ↔ f =Θ[l] g := ⟨fun h => by simpa only [inv_inv] using h.inv, IsTheta.inv⟩ #align asymptotics.is_Theta_inv Asymptotics.isTheta_inv +/- warning: asymptotics.is_Theta.div -> Asymptotics.IsTheta.div is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f₁ : α -> 𝕜} {f₂ : α -> 𝕜} {g₁ : α -> 𝕜'} {g₂ : α -> 𝕜'}, (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f₁ g₁) -> (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f₂ g₂) -> (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => HDiv.hDiv.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHDiv.{u2} 𝕜 (DivInvMonoid.toHasDiv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (NormedDivisionRing.toDivisionRing.{u2} 𝕜 (NormedField.toNormedDivisionRing.{u2} 𝕜 _inst_12))))) (f₁ x) (f₂ x)) (fun (x : α) => HDiv.hDiv.{u3, u3, u3} 𝕜' 𝕜' 𝕜' (instHDiv.{u3} 𝕜' (DivInvMonoid.toHasDiv.{u3} 𝕜' (DivisionRing.toDivInvMonoid.{u3} 𝕜' (NormedDivisionRing.toDivisionRing.{u3} 𝕜' (NormedField.toNormedDivisionRing.{u3} 𝕜' _inst_13))))) (g₁ x) (g₂ x))) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f₁ : α -> 𝕜} {f₂ : α -> 𝕜} {g₁ : α -> 𝕜'} {g₂ : α -> 𝕜'}, (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f₁ g₁) -> (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f₂ g₂) -> (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => HDiv.hDiv.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHDiv.{u2} 𝕜 (Field.toDiv.{u2} 𝕜 (NormedField.toField.{u2} 𝕜 _inst_12))) (f₁ x) (f₂ x)) (fun (x : α) => HDiv.hDiv.{u1, u1, u1} 𝕜' 𝕜' 𝕜' (instHDiv.{u1} 𝕜' (Field.toDiv.{u1} 𝕜' (NormedField.toField.{u1} 𝕜' _inst_13))) (g₁ x) (g₂ x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.div Asymptotics.IsTheta.divₓ'. -/ theorem IsTheta.div {f₁ f₂ : α → 𝕜} {g₁ g₂ : α → 𝕜'} (h₁ : f₁ =Θ[l] g₁) (h₂ : f₂ =Θ[l] g₂) : (fun x => f₁ x / f₂ x) =Θ[l] fun x => g₁ x / g₂ x := by simpa only [div_eq_mul_inv] using h₁.mul h₂.inv #align asymptotics.is_Theta.div Asymptotics.IsTheta.div +/- warning: asymptotics.is_Theta.pow -> Asymptotics.IsTheta.pow is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f g) -> (forall (n : Nat), Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => HPow.hPow.{u2, 0, u2} 𝕜 Nat 𝕜 (instHPow.{u2, 0} 𝕜 Nat (Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (NormedRing.toRing.{u2} 𝕜 (NormedCommRing.toNormedRing.{u2} 𝕜 (NormedField.toNormedCommRing.{u2} 𝕜 _inst_12)))))) (f x) n) (fun (x : α) => HPow.hPow.{u3, 0, u3} 𝕜' Nat 𝕜' (instHPow.{u3, 0} 𝕜' Nat (Monoid.Pow.{u3} 𝕜' (Ring.toMonoid.{u3} 𝕜' (NormedRing.toRing.{u3} 𝕜' (NormedCommRing.toNormedRing.{u3} 𝕜' (NormedField.toNormedCommRing.{u3} 𝕜' _inst_13)))))) (g x) n)) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f g) -> (forall (n : Nat), Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => HPow.hPow.{u2, 0, u2} 𝕜 Nat 𝕜 (instHPow.{u2, 0} 𝕜 Nat (Monoid.Pow.{u2} 𝕜 (MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 (NormedField.toField.{u2} 𝕜 _inst_12)))))))) (f x) n) (fun (x : α) => HPow.hPow.{u1, 0, u1} 𝕜' Nat 𝕜' (instHPow.{u1, 0} 𝕜' Nat (Monoid.Pow.{u1} 𝕜' (MonoidWithZero.toMonoid.{u1} 𝕜' (Semiring.toMonoidWithZero.{u1} 𝕜' (DivisionSemiring.toSemiring.{u1} 𝕜' (Semifield.toDivisionSemiring.{u1} 𝕜' (Field.toSemifield.{u1} 𝕜' (NormedField.toField.{u1} 𝕜' _inst_13)))))))) (g x) n)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.pow Asymptotics.IsTheta.powₓ'. -/ theorem IsTheta.pow {f : α → 𝕜} {g : α → 𝕜'} (h : f =Θ[l] g) (n : ℕ) : (fun x => f x ^ n) =Θ[l] fun x => g x ^ n := ⟨h.1.pow n, h.2.pow n⟩ #align asymptotics.is_Theta.pow Asymptotics.IsTheta.pow +/- warning: asymptotics.is_Theta.zpow -> Asymptotics.IsTheta.zpow is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {𝕜 : Type.{u2}} {𝕜' : Type.{u3}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u3} 𝕜'] {l : Filter.{u1} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l f g) -> (forall (n : Int), Asymptotics.IsTheta.{u1, u2, u3} α 𝕜 𝕜' (NormedField.toHasNorm.{u2} 𝕜 _inst_12) (NormedField.toHasNorm.{u3} 𝕜' _inst_13) l (fun (x : α) => HPow.hPow.{u2, 0, u2} 𝕜 Int 𝕜 (instHPow.{u2, 0} 𝕜 Int (DivInvMonoid.Pow.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (NormedDivisionRing.toDivisionRing.{u2} 𝕜 (NormedField.toNormedDivisionRing.{u2} 𝕜 _inst_12))))) (f x) n) (fun (x : α) => HPow.hPow.{u3, 0, u3} 𝕜' Int 𝕜' (instHPow.{u3, 0} 𝕜' Int (DivInvMonoid.Pow.{u3} 𝕜' (DivisionRing.toDivInvMonoid.{u3} 𝕜' (NormedDivisionRing.toDivisionRing.{u3} 𝕜' (NormedField.toNormedDivisionRing.{u3} 𝕜' _inst_13))))) (g x) n)) +but is expected to have type + forall {α : Type.{u3}} {𝕜 : Type.{u2}} {𝕜' : Type.{u1}} [_inst_12 : NormedField.{u2} 𝕜] [_inst_13 : NormedField.{u1} 𝕜'] {l : Filter.{u3} α} {f : α -> 𝕜} {g : α -> 𝕜'}, (Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l f g) -> (forall (n : Int), Asymptotics.IsTheta.{u3, u2, u1} α 𝕜 𝕜' (NormedField.toNorm.{u2} 𝕜 _inst_12) (NormedField.toNorm.{u1} 𝕜' _inst_13) l (fun (x : α) => HPow.hPow.{u2, 0, u2} 𝕜 Int 𝕜 (instHPow.{u2, 0} 𝕜 Int (DivInvMonoid.Pow.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (NormedDivisionRing.toDivisionRing.{u2} 𝕜 (NormedField.toNormedDivisionRing.{u2} 𝕜 _inst_12))))) (f x) n) (fun (x : α) => HPow.hPow.{u1, 0, u1} 𝕜' Int 𝕜' (instHPow.{u1, 0} 𝕜' Int (DivInvMonoid.Pow.{u1} 𝕜' (DivisionRing.toDivInvMonoid.{u1} 𝕜' (NormedDivisionRing.toDivisionRing.{u1} 𝕜' (NormedField.toNormedDivisionRing.{u1} 𝕜' _inst_13))))) (g x) n)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.zpow Asymptotics.IsTheta.zpowₓ'. -/ theorem IsTheta.zpow {f : α → 𝕜} {g : α → 𝕜'} (h : f =Θ[l] g) (n : ℤ) : (fun x => f x ^ n) =Θ[l] fun x => g x ^ n := by @@ -229,59 +459,155 @@ theorem IsTheta.zpow {f : α → 𝕜} {g : α → 𝕜'} (h : f =Θ[l] g) (n : · simpa only [zpow_negSucc] using (h.pow _).inv #align asymptotics.is_Theta.zpow Asymptotics.IsTheta.zpow +/- warning: asymptotics.is_Theta_const_const -> Asymptotics.isTheta_const_const is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E'' : Type.{u2}} {F'' : Type.{u3}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u3} F''] {l : Filter.{u1} α} {c₁ : E''} {c₂ : F''}, (Ne.{succ u2} E'' c₁ (OfNat.ofNat.{u2} E'' 0 (OfNat.mk.{u2} E'' 0 (Zero.zero.{u2} E'' (AddZeroClass.toHasZero.{u2} E'' (AddMonoid.toAddZeroClass.{u2} E'' (SubNegMonoid.toAddMonoid.{u2} E'' (AddGroup.toSubNegMonoid.{u2} E'' (NormedAddGroup.toAddGroup.{u2} E'' (NormedAddCommGroup.toNormedAddGroup.{u2} E'' _inst_7)))))))))) -> (Ne.{succ u3} F'' c₂ (OfNat.ofNat.{u3} F'' 0 (OfNat.mk.{u3} F'' 0 (Zero.zero.{u3} F'' (AddZeroClass.toHasZero.{u3} F'' (AddMonoid.toAddZeroClass.{u3} F'' (SubNegMonoid.toAddMonoid.{u3} F'' (AddGroup.toSubNegMonoid.{u3} F'' (NormedAddGroup.toAddGroup.{u3} F'' (NormedAddCommGroup.toNormedAddGroup.{u3} F'' _inst_8)))))))))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E'' F'' (NormedAddCommGroup.toHasNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toHasNorm.{u3} F'' _inst_8) l (fun (x : α) => c₁) (fun (x : α) => c₂)) +but is expected to have type + forall {α : Type.{u1}} {E'' : Type.{u3}} {F'' : Type.{u2}} [_inst_7 : NormedAddCommGroup.{u3} E''] [_inst_8 : NormedAddCommGroup.{u2} F''] {l : Filter.{u1} α} {c₁ : E''} {c₂ : F''}, (Ne.{succ u3} E'' c₁ (OfNat.ofNat.{u3} E'' 0 (Zero.toOfNat0.{u3} E'' (NegZeroClass.toZero.{u3} E'' (SubNegZeroMonoid.toNegZeroClass.{u3} E'' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E'' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E'' (AddCommGroup.toDivisionAddCommMonoid.{u3} E'' (NormedAddCommGroup.toAddCommGroup.{u3} E'' _inst_7))))))))) -> (Ne.{succ u2} F'' c₂ (OfNat.ofNat.{u2} F'' 0 (Zero.toOfNat0.{u2} F'' (NegZeroClass.toZero.{u2} F'' (SubNegZeroMonoid.toNegZeroClass.{u2} F'' (SubtractionMonoid.toSubNegZeroMonoid.{u2} F'' (SubtractionCommMonoid.toSubtractionMonoid.{u2} F'' (AddCommGroup.toDivisionAddCommMonoid.{u2} F'' (NormedAddCommGroup.toAddCommGroup.{u2} F'' _inst_8))))))))) -> (Asymptotics.IsTheta.{u1, u3, u2} α E'' F'' (NormedAddCommGroup.toNorm.{u3} E'' _inst_7) (NormedAddCommGroup.toNorm.{u2} F'' _inst_8) l (fun (x : α) => c₁) (fun (x : α) => c₂)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_const Asymptotics.isTheta_const_constₓ'. -/ theorem isTheta_const_const {c₁ : E''} {c₂ : F''} (h₁ : c₁ ≠ 0) (h₂ : c₂ ≠ 0) : (fun x : α => c₁) =Θ[l] fun x => c₂ := ⟨isBigO_const_const _ h₂ _, isBigO_const_const _ h₁ _⟩ #align asymptotics.is_Theta_const_const Asymptotics.isTheta_const_const +/- warning: asymptotics.is_Theta_const_const_iff -> Asymptotics.isTheta_const_const_iff is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E'' : Type.{u2}} {F'' : Type.{u3}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u3} F''] {l : Filter.{u1} α} [_inst_14 : Filter.NeBot.{u1} α l] {c₁ : E''} {c₂ : F''}, Iff (Asymptotics.IsTheta.{u1, u2, u3} α E'' F'' (NormedAddCommGroup.toHasNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toHasNorm.{u3} F'' _inst_8) l (fun (x : α) => c₁) (fun (x : α) => c₂)) (Iff (Eq.{succ u2} E'' c₁ (OfNat.ofNat.{u2} E'' 0 (OfNat.mk.{u2} E'' 0 (Zero.zero.{u2} E'' (AddZeroClass.toHasZero.{u2} E'' (AddMonoid.toAddZeroClass.{u2} E'' (SubNegMonoid.toAddMonoid.{u2} E'' (AddGroup.toSubNegMonoid.{u2} E'' (NormedAddGroup.toAddGroup.{u2} E'' (NormedAddCommGroup.toNormedAddGroup.{u2} E'' _inst_7)))))))))) (Eq.{succ u3} F'' c₂ (OfNat.ofNat.{u3} F'' 0 (OfNat.mk.{u3} F'' 0 (Zero.zero.{u3} F'' (AddZeroClass.toHasZero.{u3} F'' (AddMonoid.toAddZeroClass.{u3} F'' (SubNegMonoid.toAddMonoid.{u3} F'' (AddGroup.toSubNegMonoid.{u3} F'' (NormedAddGroup.toAddGroup.{u3} F'' (NormedAddCommGroup.toNormedAddGroup.{u3} F'' _inst_8))))))))))) +but is expected to have type + forall {α : Type.{u3}} {E'' : Type.{u2}} {F'' : Type.{u1}} [_inst_7 : NormedAddCommGroup.{u2} E''] [_inst_8 : NormedAddCommGroup.{u1} F''] {l : Filter.{u3} α} [_inst_14 : Filter.NeBot.{u3} α l] {c₁ : E''} {c₂ : F''}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α E'' F'' (NormedAddCommGroup.toNorm.{u2} E'' _inst_7) (NormedAddCommGroup.toNorm.{u1} F'' _inst_8) l (fun (x : α) => c₁) (fun (x : α) => c₂)) (Iff (Eq.{succ u2} E'' c₁ (OfNat.ofNat.{u2} E'' 0 (Zero.toOfNat0.{u2} E'' (NegZeroClass.toZero.{u2} E'' (SubNegZeroMonoid.toNegZeroClass.{u2} E'' (SubtractionMonoid.toSubNegZeroMonoid.{u2} E'' (SubtractionCommMonoid.toSubtractionMonoid.{u2} E'' (AddCommGroup.toDivisionAddCommMonoid.{u2} E'' (NormedAddCommGroup.toAddCommGroup.{u2} E'' _inst_7))))))))) (Eq.{succ u1} F'' c₂ (OfNat.ofNat.{u1} F'' 0 (Zero.toOfNat0.{u1} F'' (NegZeroClass.toZero.{u1} F'' (SubNegZeroMonoid.toNegZeroClass.{u1} F'' (SubtractionMonoid.toSubNegZeroMonoid.{u1} F'' (SubtractionCommMonoid.toSubtractionMonoid.{u1} F'' (AddCommGroup.toDivisionAddCommMonoid.{u1} F'' (NormedAddCommGroup.toAddCommGroup.{u1} F'' _inst_8)))))))))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_const_iff Asymptotics.isTheta_const_const_iffₓ'. -/ @[simp] theorem isTheta_const_const_iff [NeBot l] {c₁ : E''} {c₂ : F''} : ((fun x : α => c₁) =Θ[l] fun x => c₂) ↔ (c₁ = 0 ↔ c₂ = 0) := by simpa only [is_Theta, is_O_const_const_iff, ← iff_def] using Iff.comm #align asymptotics.is_Theta_const_const_iff Asymptotics.isTheta_const_const_iff +/- warning: asymptotics.is_Theta_zero_left -> Asymptotics.isTheta_zero_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E' : Type.{u2}} {F'' : Type.{u3}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_8 : NormedAddCommGroup.{u3} F''] {g'' : α -> F''} {l : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, u2, u3} α E' F'' (SeminormedAddCommGroup.toHasNorm.{u2} E' _inst_4) (NormedAddCommGroup.toHasNorm.{u3} F'' _inst_8) l (fun (x : α) => OfNat.ofNat.{u2} E' 0 (OfNat.mk.{u2} E' 0 (Zero.zero.{u2} E' (AddZeroClass.toHasZero.{u2} E' (AddMonoid.toAddZeroClass.{u2} E' (SubNegMonoid.toAddMonoid.{u2} E' (AddGroup.toSubNegMonoid.{u2} E' (SeminormedAddGroup.toAddGroup.{u2} E' (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} E' _inst_4))))))))) g'') (Filter.EventuallyEq.{u1, u3} α F'' l g'' (OfNat.ofNat.{max u1 u3} (α -> F'') 0 (OfNat.mk.{max u1 u3} (α -> F'') 0 (Zero.zero.{max u1 u3} (α -> F'') (Pi.instZero.{u1, u3} α (fun (ᾰ : α) => F'') (fun (i : α) => AddZeroClass.toHasZero.{u3} F'' (AddMonoid.toAddZeroClass.{u3} F'' (SubNegMonoid.toAddMonoid.{u3} F'' (AddGroup.toSubNegMonoid.{u3} F'' (NormedAddGroup.toAddGroup.{u3} F'' (NormedAddCommGroup.toNormedAddGroup.{u3} F'' _inst_8))))))))))) +but is expected to have type + forall {α : Type.{u3}} {E' : Type.{u2}} {F'' : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u2} E'] [_inst_8 : NormedAddCommGroup.{u1} F''] {g'' : α -> F''} {l : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α E' F'' (SeminormedAddCommGroup.toNorm.{u2} E' _inst_4) (NormedAddCommGroup.toNorm.{u1} F'' _inst_8) l (fun (x : α) => OfNat.ofNat.{u2} E' 0 (Zero.toOfNat0.{u2} E' (NegZeroClass.toZero.{u2} E' (SubNegZeroMonoid.toNegZeroClass.{u2} E' (SubtractionMonoid.toSubNegZeroMonoid.{u2} E' (SubtractionCommMonoid.toSubtractionMonoid.{u2} E' (AddCommGroup.toDivisionAddCommMonoid.{u2} E' (SeminormedAddCommGroup.toAddCommGroup.{u2} E' _inst_4)))))))) g'') (Filter.EventuallyEq.{u3, u1} α F'' l g'' (OfNat.ofNat.{max u3 u1} (α -> F'') 0 (Zero.toOfNat0.{max u3 u1} (α -> F'') (Pi.instZero.{u3, u1} α (fun (a._@.Mathlib.Order.Filter.Basic._hyg.19139 : α) => F'') (fun (i : α) => NegZeroClass.toZero.{u1} F'' (SubNegZeroMonoid.toNegZeroClass.{u1} F'' (SubtractionMonoid.toSubNegZeroMonoid.{u1} F'' (SubtractionCommMonoid.toSubtractionMonoid.{u1} F'' (AddCommGroup.toDivisionAddCommMonoid.{u1} F'' (NormedAddCommGroup.toAddCommGroup.{u1} F'' _inst_8)))))))))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_zero_left Asymptotics.isTheta_zero_leftₓ'. -/ @[simp] theorem isTheta_zero_left : (fun x => (0 : E')) =Θ[l] g'' ↔ g'' =ᶠ[l] 0 := by simp only [is_Theta, is_O_zero, is_O_zero_right_iff, true_and_iff] #align asymptotics.is_Theta_zero_left Asymptotics.isTheta_zero_left +/- warning: asymptotics.is_Theta_zero_right -> Asymptotics.isTheta_zero_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F' : Type.{u2}} {E'' : Type.{u3}} [_inst_5 : SeminormedAddCommGroup.{u2} F'] [_inst_7 : NormedAddCommGroup.{u3} E''] {f'' : α -> E''} {l : Filter.{u1} α}, Iff (Asymptotics.IsTheta.{u1, u3, u2} α E'' F' (NormedAddCommGroup.toHasNorm.{u3} E'' _inst_7) (SeminormedAddCommGroup.toHasNorm.{u2} F' _inst_5) l f'' (fun (x : α) => OfNat.ofNat.{u2} F' 0 (OfNat.mk.{u2} F' 0 (Zero.zero.{u2} F' (AddZeroClass.toHasZero.{u2} F' (AddMonoid.toAddZeroClass.{u2} F' (SubNegMonoid.toAddMonoid.{u2} F' (AddGroup.toSubNegMonoid.{u2} F' (SeminormedAddGroup.toAddGroup.{u2} F' (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} F' _inst_5)))))))))) (Filter.EventuallyEq.{u1, u3} α E'' l f'' (OfNat.ofNat.{max u1 u3} (α -> E'') 0 (OfNat.mk.{max u1 u3} (α -> E'') 0 (Zero.zero.{max u1 u3} (α -> E'') (Pi.instZero.{u1, u3} α (fun (ᾰ : α) => E'') (fun (i : α) => AddZeroClass.toHasZero.{u3} E'' (AddMonoid.toAddZeroClass.{u3} E'' (SubNegMonoid.toAddMonoid.{u3} E'' (AddGroup.toSubNegMonoid.{u3} E'' (NormedAddGroup.toAddGroup.{u3} E'' (NormedAddCommGroup.toNormedAddGroup.{u3} E'' _inst_7))))))))))) +but is expected to have type + forall {α : Type.{u3}} {F' : Type.{u1}} {E'' : Type.{u2}} [_inst_5 : SeminormedAddCommGroup.{u1} F'] [_inst_7 : NormedAddCommGroup.{u2} E''] {f'' : α -> E''} {l : Filter.{u3} α}, Iff (Asymptotics.IsTheta.{u3, u2, u1} α E'' F' (NormedAddCommGroup.toNorm.{u2} E'' _inst_7) (SeminormedAddCommGroup.toNorm.{u1} F' _inst_5) l f'' (fun (x : α) => OfNat.ofNat.{u1} F' 0 (Zero.toOfNat0.{u1} F' (NegZeroClass.toZero.{u1} F' (SubNegZeroMonoid.toNegZeroClass.{u1} F' (SubtractionMonoid.toSubNegZeroMonoid.{u1} F' (SubtractionCommMonoid.toSubtractionMonoid.{u1} F' (AddCommGroup.toDivisionAddCommMonoid.{u1} F' (SeminormedAddCommGroup.toAddCommGroup.{u1} F' _inst_5))))))))) (Filter.EventuallyEq.{u3, u2} α E'' l f'' (OfNat.ofNat.{max u3 u2} (α -> E'') 0 (Zero.toOfNat0.{max u3 u2} (α -> E'') (Pi.instZero.{u3, u2} α (fun (a._@.Mathlib.Order.Filter.Basic._hyg.19139 : α) => E'') (fun (i : α) => NegZeroClass.toZero.{u2} E'' (SubNegZeroMonoid.toNegZeroClass.{u2} E'' (SubtractionMonoid.toSubNegZeroMonoid.{u2} E'' (SubtractionCommMonoid.toSubtractionMonoid.{u2} E'' (AddCommGroup.toDivisionAddCommMonoid.{u2} E'' (NormedAddCommGroup.toAddCommGroup.{u2} E'' _inst_7)))))))))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_zero_right Asymptotics.isTheta_zero_rightₓ'. -/ @[simp] theorem isTheta_zero_right : (f'' =Θ[l] fun x => (0 : F')) ↔ f'' =ᶠ[l] 0 := isTheta_comm.trans isTheta_zero_left #align asymptotics.is_Theta_zero_right Asymptotics.isTheta_zero_right +/- warning: asymptotics.is_Theta_const_smul_left -> Asymptotics.isTheta_const_smul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Iff (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => SMul.smul.{u4, u3} 𝕜 E' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 E' (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 E' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14))))) c (f' x)) g) (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g)) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u1} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Iff (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 E' E' (instHSMul.{u4, u3} 𝕜 E' (SMulZeroClass.toSMul.{u4, u3} 𝕜 E' (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 E' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14)))))) c (f' x)) g) (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l f' g)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_smul_left Asymptotics.isTheta_const_smul_leftₓ'. -/ theorem isTheta_const_smul_left [NormedSpace 𝕜 E'] {c : 𝕜} (hc : c ≠ 0) : (fun x => c • f' x) =Θ[l] g ↔ f' =Θ[l] g := and_congr (isBigO_const_smul_left hc) (isBigO_const_smul_right hc) #align asymptotics.is_Theta_const_smul_left Asymptotics.isTheta_const_smul_left +/- warning: asymptotics.is_Theta.of_const_smul_left -> Asymptotics.IsTheta.of_const_smul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => SMul.smul.{u4, u3} 𝕜 E' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 E' (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 E' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14))))) c (f' x)) g) -> (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u1} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 E' E' (instHSMul.{u4, u3} 𝕜 E' (SMulZeroClass.toSMul.{u4, u3} 𝕜 E' (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 E' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14)))))) c (f' x)) g) -> (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l f' g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_const_smul_left Asymptotics.IsTheta.of_const_smul_leftₓ'. -/ +/- warning: asymptotics.is_Theta.const_smul_left -> Asymptotics.IsTheta.const_smul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u2} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l f' g) -> (Asymptotics.IsTheta.{u1, u3, u2} α E' F (SeminormedAddCommGroup.toHasNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => SMul.smul.{u4, u3} 𝕜 E' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 E' (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 E' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} E' (AddMonoid.toAddZeroClass.{u3} E' (AddCommMonoid.toAddMonoid.{u3} E' (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14))))) c (f' x)) g) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {E' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_2 : Norm.{u1} F] [_inst_4 : SeminormedAddCommGroup.{u3} E'] [_inst_12 : NormedField.{u4} 𝕜] {g : α -> F} {f' : α -> E'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 E' _inst_12 _inst_4] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l f' g) -> (Asymptotics.IsTheta.{u2, u3, u1} α E' F (SeminormedAddCommGroup.toNorm.{u3} E' _inst_4) _inst_2 l (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 E' E' (instHSMul.{u4, u3} 𝕜 E' (SMulZeroClass.toSMul.{u4, u3} 𝕜 E' (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 E' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 E' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} E' (SubNegZeroMonoid.toNegZeroClass.{u3} E' (SubtractionMonoid.toSubNegZeroMonoid.{u3} E' (SubtractionCommMonoid.toSubtractionMonoid.{u3} E' (AddCommGroup.toDivisionAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 E' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} E' (SeminormedAddCommGroup.toAddCommGroup.{u3} E' _inst_4)) (NormedSpace.toModule.{u4, u3} 𝕜 E' _inst_12 _inst_4 _inst_14)))))) c (f' x)) g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.const_smul_left Asymptotics.IsTheta.const_smul_leftₓ'. -/ alias is_Theta_const_smul_left ↔ is_Theta.of_const_smul_left is_Theta.const_smul_left #align asymptotics.is_Theta.of_const_smul_left Asymptotics.IsTheta.of_const_smul_left #align asymptotics.is_Theta.const_smul_left Asymptotics.IsTheta.const_smul_left +/- warning: asymptotics.is_Theta_const_smul_right -> Asymptotics.isTheta_const_smul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Iff (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f (fun (x : α) => SMul.smul.{u4, u3} 𝕜 F' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 F' (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 F' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14))))) c (g' x))) (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g')) +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u1} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Iff (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 F' F' (instHSMul.{u4, u3} 𝕜 F' (SMulZeroClass.toSMul.{u4, u3} 𝕜 F' (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 F' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14)))))) c (g' x))) (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f g')) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_smul_right Asymptotics.isTheta_const_smul_rightₓ'. -/ theorem isTheta_const_smul_right [NormedSpace 𝕜 F'] {c : 𝕜} (hc : c ≠ 0) : (f =Θ[l] fun x => c • g' x) ↔ f =Θ[l] g' := and_congr (isBigO_const_smul_right hc) (isBigO_const_smul_left hc) #align asymptotics.is_Theta_const_smul_right Asymptotics.isTheta_const_smul_right +/- warning: asymptotics.is_Theta.of_const_smul_right -> Asymptotics.IsTheta.of_const_smul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f (fun (x : α) => SMul.smul.{u4, u3} 𝕜 F' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 F' (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 F' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14))))) c (g' x))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u1} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 F' F' (instHSMul.{u4, u3} 𝕜 F' (SMulZeroClass.toSMul.{u4, u3} 𝕜 F' (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 F' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14)))))) c (g' x))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f g') +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_const_smul_right Asymptotics.IsTheta.of_const_smul_rightₓ'. -/ +/- warning: asymptotics.is_Theta.const_smul_right -> Asymptotics.IsTheta.const_smul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u2} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u1} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (OfNat.mk.{u4} 𝕜 0 (Zero.zero.{u4} 𝕜 (MulZeroClass.toHasZero.{u4} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u4} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u4} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u4} 𝕜 (Ring.toNonAssocRing.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f g') -> (Asymptotics.IsTheta.{u1, u2, u3} α E F' _inst_1 (SeminormedAddCommGroup.toHasNorm.{u3} F' _inst_5) l f (fun (x : α) => SMul.smul.{u4, u3} 𝕜 F' (SMulZeroClass.toHasSmul.{u4, u3} 𝕜 F' (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (SMulWithZero.toSmulZeroClass.{u4, u3} 𝕜 F' (MulZeroClass.toHasZero.{u4} 𝕜 (MulZeroOneClass.toMulZeroClass.{u4} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u4} 𝕜 (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12))))) (AddZeroClass.toHasZero.{u3} F' (AddMonoid.toAddZeroClass.{u3} F' (AddCommMonoid.toAddMonoid.{u3} F' (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (Ring.toSemiring.{u4} 𝕜 (NormedRing.toRing.{u4} 𝕜 (NormedCommRing.toNormedRing.{u4} 𝕜 (NormedField.toNormedCommRing.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14))))) c (g' x))) +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {F' : Type.{u3}} {𝕜 : Type.{u4}} [_inst_1 : Norm.{u1} E] [_inst_5 : SeminormedAddCommGroup.{u3} F'] [_inst_12 : NormedField.{u4} 𝕜] {f : α -> E} {g' : α -> F'} {l : Filter.{u2} α} [_inst_14 : NormedSpace.{u4, u3} 𝕜 F' _inst_12 _inst_5] {c : 𝕜}, (Ne.{succ u4} 𝕜 c (OfNat.ofNat.{u4} 𝕜 0 (Zero.toOfNat0.{u4} 𝕜 (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f g') -> (Asymptotics.IsTheta.{u2, u1, u3} α E F' _inst_1 (SeminormedAddCommGroup.toNorm.{u3} F' _inst_5) l f (fun (x : α) => HSMul.hSMul.{u4, u3, u3} 𝕜 F' F' (instHSMul.{u4, u3} 𝕜 F' (SMulZeroClass.toSMul.{u4, u3} 𝕜 F' (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (SMulWithZero.toSMulZeroClass.{u4, u3} 𝕜 F' (CommMonoidWithZero.toZero.{u4} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u4} 𝕜 (Semifield.toCommGroupWithZero.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (MulActionWithZero.toSMulWithZero.{u4, u3} 𝕜 F' (Semiring.toMonoidWithZero.{u4} 𝕜 (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12))))) (NegZeroClass.toZero.{u3} F' (SubNegZeroMonoid.toNegZeroClass.{u3} F' (SubtractionMonoid.toSubNegZeroMonoid.{u3} F' (SubtractionCommMonoid.toSubtractionMonoid.{u3} F' (AddCommGroup.toDivisionAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)))))) (Module.toMulActionWithZero.{u4, u3} 𝕜 F' (DivisionSemiring.toSemiring.{u4} 𝕜 (Semifield.toDivisionSemiring.{u4} 𝕜 (Field.toSemifield.{u4} 𝕜 (NormedField.toField.{u4} 𝕜 _inst_12)))) (AddCommGroup.toAddCommMonoid.{u3} F' (SeminormedAddCommGroup.toAddCommGroup.{u3} F' _inst_5)) (NormedSpace.toModule.{u4, u3} 𝕜 F' _inst_12 _inst_5 _inst_14)))))) c (g' x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.const_smul_right Asymptotics.IsTheta.const_smul_rightₓ'. -/ alias is_Theta_const_smul_right ↔ is_Theta.of_const_smul_right is_Theta.const_smul_right #align asymptotics.is_Theta.of_const_smul_right Asymptotics.IsTheta.of_const_smul_right #align asymptotics.is_Theta.const_smul_right Asymptotics.IsTheta.const_smul_right +/- warning: asymptotics.is_Theta_const_mul_left -> Asymptotics.isTheta_const_mul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u1} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Iff (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (f x)) g) (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l f g)) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u1} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u2} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Iff (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (f x)) g) (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l f g)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_mul_left Asymptotics.isTheta_const_mul_leftₓ'. -/ theorem isTheta_const_mul_left {c : 𝕜} {f : α → 𝕜} (hc : c ≠ 0) : (fun x => c * f x) =Θ[l] g ↔ f =Θ[l] g := by simpa only [← smul_eq_mul] using is_Theta_const_smul_left hc #align asymptotics.is_Theta_const_mul_left Asymptotics.isTheta_const_mul_left +/- warning: asymptotics.is_Theta.of_const_mul_left -> Asymptotics.IsTheta.of_const_mul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u1} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (f x)) g) -> (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l f g) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u1} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u2} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (f x)) g) -> (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_const_mul_left Asymptotics.IsTheta.of_const_mul_leftₓ'. -/ +/- warning: asymptotics.is_Theta.const_mul_left -> Asymptotics.IsTheta.const_mul_left is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {F : Type.{u2}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u2} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u1} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l f g) -> (Asymptotics.IsTheta.{u1, u3, u2} α 𝕜 F (NormedField.toHasNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (f x)) g) +but is expected to have type + forall {α : Type.{u2}} {F : Type.{u1}} {𝕜 : Type.{u3}} [_inst_2 : Norm.{u1} F] [_inst_12 : NormedField.{u3} 𝕜] {g : α -> F} {l : Filter.{u2} α} {c : 𝕜} {f : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l f g) -> (Asymptotics.IsTheta.{u2, u3, u1} α 𝕜 F (NormedField.toNorm.{u3} 𝕜 _inst_12) _inst_2 l (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (f x)) g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.const_mul_left Asymptotics.IsTheta.const_mul_leftₓ'. -/ alias is_Theta_const_mul_left ↔ is_Theta.of_const_mul_left is_Theta.const_mul_left #align asymptotics.is_Theta.of_const_mul_left Asymptotics.IsTheta.of_const_mul_left #align asymptotics.is_Theta.const_mul_left Asymptotics.IsTheta.const_mul_left +/- warning: asymptotics.is_Theta_const_mul_right -> Asymptotics.isTheta_const_mul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u1} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Iff (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (g x))) (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f g)) +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u1} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u2} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Iff (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (g x))) (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f g)) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta_const_mul_right Asymptotics.isTheta_const_mul_rightₓ'. -/ theorem isTheta_const_mul_right {c : 𝕜} {g : α → 𝕜} (hc : c ≠ 0) : (f =Θ[l] fun x => c * g x) ↔ f =Θ[l] g := by simpa only [← smul_eq_mul] using is_Theta_const_smul_right hc #align asymptotics.is_Theta_const_mul_right Asymptotics.isTheta_const_mul_right +/- warning: asymptotics.is_Theta.of_const_mul_right -> Asymptotics.IsTheta.of_const_mul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u1} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (g x))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f g) +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u1} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u2} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (g x))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f g) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.of_const_mul_right Asymptotics.IsTheta.of_const_mul_rightₓ'. -/ +/- warning: asymptotics.is_Theta.const_mul_right -> Asymptotics.IsTheta.const_mul_right is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} {E : Type.{u2}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u2} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u1} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (OfNat.mk.{u3} 𝕜 0 (Zero.zero.{u3} 𝕜 (MulZeroClass.toHasZero.{u3} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))))))))) -> (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f g) -> (Asymptotics.IsTheta.{u1, u2, u3} α E 𝕜 _inst_1 (NormedField.toHasNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (Distrib.toHasMul.{u3} 𝕜 (Ring.toDistrib.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12)))))) c (g x))) +but is expected to have type + forall {α : Type.{u2}} {E : Type.{u1}} {𝕜 : Type.{u3}} [_inst_1 : Norm.{u1} E] [_inst_12 : NormedField.{u3} 𝕜] {f : α -> E} {l : Filter.{u2} α} {c : 𝕜} {g : α -> 𝕜}, (Ne.{succ u3} 𝕜 c (OfNat.ofNat.{u3} 𝕜 0 (Zero.toOfNat0.{u3} 𝕜 (CommMonoidWithZero.toZero.{u3} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u3} 𝕜 (Semifield.toCommGroupWithZero.{u3} 𝕜 (Field.toSemifield.{u3} 𝕜 (NormedField.toField.{u3} 𝕜 _inst_12)))))))) -> (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f g) -> (Asymptotics.IsTheta.{u2, u1, u3} α E 𝕜 _inst_1 (NormedField.toNorm.{u3} 𝕜 _inst_12) l f (fun (x : α) => HMul.hMul.{u3, u3, u3} 𝕜 𝕜 𝕜 (instHMul.{u3} 𝕜 (NonUnitalNonAssocRing.toMul.{u3} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u3} 𝕜 (Ring.toNonAssocRing.{u3} 𝕜 (NormedRing.toRing.{u3} 𝕜 (NormedCommRing.toNormedRing.{u3} 𝕜 (NormedField.toNormedCommRing.{u3} 𝕜 _inst_12))))))) c (g x))) +Case conversion may be inaccurate. Consider using '#align asymptotics.is_Theta.const_mul_right Asymptotics.IsTheta.const_mul_rightₓ'. -/ alias is_Theta_const_mul_right ↔ is_Theta.of_const_mul_right is_Theta.const_mul_right #align asymptotics.is_Theta.of_const_mul_right Asymptotics.IsTheta.of_const_mul_right #align asymptotics.is_Theta.const_mul_right Asymptotics.IsTheta.const_mul_right diff --git a/Mathbin/Analysis/LocallyConvex/BalancedCoreHull.lean b/Mathbin/Analysis/LocallyConvex/BalancedCoreHull.lean index d0c1c3b323..19f82d3fe9 100644 --- a/Mathbin/Analysis/LocallyConvex/BalancedCoreHull.lean +++ b/Mathbin/Analysis/LocallyConvex/BalancedCoreHull.lean @@ -58,35 +58,53 @@ section SMul variable (𝕜) [SMul 𝕜 E] {s t : Set E} {x : E} +#print balancedCore /- /-- The largest balanced subset of `s`.-/ def balancedCore (s : Set E) := ⋃₀ { t : Set E | Balanced 𝕜 t ∧ t ⊆ s } #align balanced_core balancedCore +-/ +#print balancedCoreAux /- /-- Helper definition to prove `balanced_core_eq_Inter`-/ def balancedCoreAux (s : Set E) := ⋂ (r : 𝕜) (hr : 1 ≤ ‖r‖), r • s #align balanced_core_aux balancedCoreAux +-/ +#print balancedHull /- /-- The smallest balanced superset of `s`.-/ def balancedHull (s : Set E) := ⋃ (r : 𝕜) (hr : ‖r‖ ≤ 1), r • s #align balanced_hull balancedHull +-/ variable {𝕜} +#print balancedCore_subset /- theorem balancedCore_subset (s : Set E) : balancedCore 𝕜 s ⊆ s := unionₛ_subset fun t ht => ht.2 #align balanced_core_subset balancedCore_subset +-/ +#print balancedCore_empty /- theorem balancedCore_empty : balancedCore 𝕜 (∅ : Set E) = ∅ := eq_empty_of_subset_empty (balancedCore_subset _) #align balanced_core_empty balancedCore_empty +-/ +#print mem_balancedCore_iff /- theorem mem_balancedCore_iff : x ∈ balancedCore 𝕜 s ↔ ∃ t, Balanced 𝕜 t ∧ t ⊆ s ∧ x ∈ t := by simp_rw [balancedCore, mem_sUnion, mem_set_of_eq, exists_prop, and_assoc'] #align mem_balanced_core_iff mem_balancedCore_iff +-/ +/- warning: smul_balanced_core_subset -> smul_balancedCore_subset is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] (s : Set.{u2} E) {a : 𝕜}, (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} 𝕜 (SeminormedRing.toHasNorm.{u1} 𝕜 _inst_1) a) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) (SMul.smul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2) a (balancedCore.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (balancedCore.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] (s : Set.{u2} E) {a : 𝕜}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} 𝕜 (SeminormedRing.toNorm.{u1} 𝕜 _inst_1) a) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (HSMul.hSMul.{u1, u2, u2} 𝕜 (Set.{u2} E) (Set.{u2} E) (instHSMul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2)) a (balancedCore.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (balancedCore.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) +Case conversion may be inaccurate. Consider using '#align smul_balanced_core_subset smul_balancedCore_subsetₓ'. -/ theorem smul_balancedCore_subset (s : Set E) {a : 𝕜} (ha : ‖a‖ ≤ 1) : a • balancedCore 𝕜 s ⊆ balancedCore 𝕜 s := by @@ -96,31 +114,59 @@ theorem smul_balancedCore_subset (s : Set E) {a : 𝕜} (ha : ‖a‖ ≤ 1) : exact ⟨t, ⟨ht1, ht2⟩, ht1 a ha (smul_mem_smul_set hy)⟩ #align smul_balanced_core_subset smul_balancedCore_subset +#print balancedCore_balanced /- theorem balancedCore_balanced (s : Set E) : Balanced 𝕜 (balancedCore 𝕜 s) := fun _ => smul_balancedCore_subset s #align balanced_core_balanced balancedCore_balanced +-/ +/- warning: balanced.subset_core_of_subset -> Balanced.subset_balancedCore_of_subset is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {t : Set.{u2} E}, (Balanced.{u1, u2} 𝕜 E _inst_1 _inst_2 s) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s t) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s (balancedCore.{u1, u2} 𝕜 E _inst_1 _inst_2 t)) +but is expected to have type + forall {𝕜 : Type.{u2}} {E : Type.{u1}} [_inst_1 : SeminormedRing.{u2} 𝕜] [_inst_2 : SMul.{u2, u1} 𝕜 E] {s : Set.{u1} E} {t : Set.{u1} E}, (Balanced.{u2, u1} 𝕜 E _inst_1 _inst_2 s) -> (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s t) -> (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s (balancedCore.{u2, u1} 𝕜 E _inst_1 _inst_2 t)) +Case conversion may be inaccurate. Consider using '#align balanced.subset_core_of_subset Balanced.subset_balancedCore_of_subsetₓ'. -/ /-- The balanced core of `t` is maximal in the sense that it contains any balanced subset `s` of `t`.-/ -theorem Balanced.subset_core_of_subset (hs : Balanced 𝕜 s) (h : s ⊆ t) : s ⊆ balancedCore 𝕜 t := +theorem Balanced.subset_balancedCore_of_subset (hs : Balanced 𝕜 s) (h : s ⊆ t) : + s ⊆ balancedCore 𝕜 t := subset_unionₛ_of_mem ⟨hs, h⟩ -#align balanced.subset_core_of_subset Balanced.subset_core_of_subset - +#align balanced.subset_core_of_subset Balanced.subset_balancedCore_of_subset + +/- warning: mem_balanced_core_aux_iff -> mem_balancedCoreAux_iff is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {x : E}, Iff (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (balancedCoreAux.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (forall (r : 𝕜), (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} 𝕜 (SeminormedRing.toHasNorm.{u1} 𝕜 _inst_1) r)) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (SMul.smul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2) r s))) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {x : E}, Iff (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (balancedCoreAux.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (forall (r : 𝕜), (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} 𝕜 (SeminormedRing.toNorm.{u1} 𝕜 _inst_1) r)) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (HSMul.hSMul.{u1, u2, u2} 𝕜 (Set.{u2} E) (Set.{u2} E) (instHSMul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2)) r s))) +Case conversion may be inaccurate. Consider using '#align mem_balanced_core_aux_iff mem_balancedCoreAux_iffₓ'. -/ theorem mem_balancedCoreAux_iff : x ∈ balancedCoreAux 𝕜 s ↔ ∀ r : 𝕜, 1 ≤ ‖r‖ → x ∈ r • s := mem_interᵢ₂ #align mem_balanced_core_aux_iff mem_balancedCoreAux_iff +/- warning: mem_balanced_hull_iff -> mem_balancedHull_iff is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {x : E}, Iff (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (balancedHull.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (Exists.{succ u1} 𝕜 (fun (r : 𝕜) => Exists.{0} (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} 𝕜 (SeminormedRing.toHasNorm.{u1} 𝕜 _inst_1) r) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (fun (hr : LE.le.{0} Real Real.hasLe (Norm.norm.{u1} 𝕜 (SeminormedRing.toHasNorm.{u1} 𝕜 _inst_1) r) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) => Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (SMul.smul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2) r s)))) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {x : E}, Iff (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (balancedHull.{u1, u2} 𝕜 E _inst_1 _inst_2 s)) (Exists.{succ u1} 𝕜 (fun (r : 𝕜) => Exists.{0} (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} 𝕜 (SeminormedRing.toNorm.{u1} 𝕜 _inst_1) r) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (fun (hr : LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} 𝕜 (SeminormedRing.toNorm.{u1} 𝕜 _inst_1) r) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) => Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (HSMul.hSMul.{u1, u2, u2} 𝕜 (Set.{u2} E) (Set.{u2} E) (instHSMul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E _inst_2)) r s)))) +Case conversion may be inaccurate. Consider using '#align mem_balanced_hull_iff mem_balancedHull_iffₓ'. -/ theorem mem_balancedHull_iff : x ∈ balancedHull 𝕜 s ↔ ∃ (r : 𝕜)(hr : ‖r‖ ≤ 1), x ∈ r • s := mem_unionᵢ₂ #align mem_balanced_hull_iff mem_balancedHull_iff +/- warning: balanced.hull_subset_of_subset -> Balanced.balancedHull_subset_of_subset is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : SMul.{u1, u2} 𝕜 E] {s : Set.{u2} E} {t : Set.{u2} E}, (Balanced.{u1, u2} 𝕜 E _inst_1 _inst_2 t) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s t) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) (balancedHull.{u1, u2} 𝕜 E _inst_1 _inst_2 s) t) +but is expected to have type + forall {𝕜 : Type.{u2}} {E : Type.{u1}} [_inst_1 : SeminormedRing.{u2} 𝕜] [_inst_2 : SMul.{u2, u1} 𝕜 E] {s : Set.{u1} E} {t : Set.{u1} E}, (Balanced.{u2, u1} 𝕜 E _inst_1 _inst_2 t) -> (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s t) -> (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) (balancedHull.{u2, u1} 𝕜 E _inst_1 _inst_2 s) t) +Case conversion may be inaccurate. Consider using '#align balanced.hull_subset_of_subset Balanced.balancedHull_subset_of_subsetₓ'. -/ /-- The balanced hull of `s` is minimal in the sense that it is contained in any balanced superset `t` of `s`. -/ -theorem Balanced.hull_subset_of_subset (ht : Balanced 𝕜 t) (h : s ⊆ t) : balancedHull 𝕜 s ⊆ t := - fun x hx => by +theorem Balanced.balancedHull_subset_of_subset (ht : Balanced 𝕜 t) (h : s ⊆ t) : + balancedHull 𝕜 s ⊆ t := fun x hx => + by obtain ⟨r, hr, y, hy, rfl⟩ := mem_balancedHull_iff.1 hx exact ht.smul_mem hr (h hy) -#align balanced.hull_subset_of_subset Balanced.hull_subset_of_subset +#align balanced.hull_subset_of_subset Balanced.balancedHull_subset_of_subset end SMul @@ -128,10 +174,22 @@ section Module variable [AddCommGroup E] [Module 𝕜 E] {s : Set E} +/- warning: balanced_core_zero_mem -> balancedCore_zero_mem is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) s) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) (balancedCore.{u1, u2} 𝕜 E _inst_1 (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) s) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) (balancedCore.{u1, u2} 𝕜 E _inst_1 (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (MonoidWithZero.toZero.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) +Case conversion may be inaccurate. Consider using '#align balanced_core_zero_mem balancedCore_zero_memₓ'. -/ theorem balancedCore_zero_mem (hs : (0 : E) ∈ s) : (0 : E) ∈ balancedCore 𝕜 s := mem_balancedCore_iff.2 ⟨0, balanced_zero, zero_subset.2 hs, zero_mem_zero⟩ #align balanced_core_zero_mem balancedCore_zero_mem +/- warning: balanced_core_nonempty_iff -> balancedCore_nonempty_iff is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, Iff (Set.Nonempty.{u2} E (balancedCore.{u1, u2} 𝕜 E _inst_1 (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) s) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, Iff (Set.Nonempty.{u2} E (balancedCore.{u1, u2} 𝕜 E _inst_1 (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (MonoidWithZero.toZero.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) s) +Case conversion may be inaccurate. Consider using '#align balanced_core_nonempty_iff balancedCore_nonempty_iffₓ'. -/ theorem balancedCore_nonempty_iff : (balancedCore 𝕜 s).Nonempty ↔ (0 : E) ∈ s := ⟨fun h => zero_subset.1 <| @@ -143,12 +201,19 @@ theorem balancedCore_nonempty_iff : (balancedCore 𝕜 s).Nonempty ↔ (0 : E) variable (𝕜) +/- warning: subset_balanced_hull -> subset_balancedHull is a dubious translation: +lean 3 declaration is + forall (𝕜 : Type.{u1}) {E : Type.{u2}} [_inst_1 : SeminormedRing.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : NormOneClass.{u1} 𝕜 (SeminormedRing.toHasNorm.{u1} 𝕜 _inst_1) (AddMonoidWithOne.toOne.{u1} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u1} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u1} 𝕜 (Ring.toAddCommGroupWithOne.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))))] {s : Set.{u2} E}, HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s (balancedHull.{u1, u2} 𝕜 E _inst_1 (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (SeminormedRing.toRing.{u1} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) +but is expected to have type + forall (𝕜 : Type.{u2}) {E : Type.{u1}} [_inst_1 : SeminormedRing.{u2} 𝕜] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} 𝕜 E (Ring.toSemiring.{u2} 𝕜 (SeminormedRing.toRing.{u2} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] [_inst_4 : NormOneClass.{u2} 𝕜 (SeminormedRing.toNorm.{u2} 𝕜 _inst_1) (NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (SeminormedRing.toRing.{u2} 𝕜 _inst_1)))] {s : Set.{u1} E}, HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s (balancedHull.{u2, u1} 𝕜 E _inst_1 (SMulZeroClass.toSMul.{u2, u1} 𝕜 E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} 𝕜 E (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 (SeminormedRing.toRing.{u2} 𝕜 _inst_1)))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} 𝕜 E (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 (SeminormedRing.toRing.{u2} 𝕜 _inst_1))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} 𝕜 E (Ring.toSemiring.{u2} 𝕜 (SeminormedRing.toRing.{u2} 𝕜 _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) +Case conversion may be inaccurate. Consider using '#align subset_balanced_hull subset_balancedHullₓ'. -/ theorem subset_balancedHull [NormOneClass 𝕜] {s : Set E} : s ⊆ balancedHull 𝕜 s := fun _ hx => mem_balancedHull_iff.2 ⟨1, norm_one.le, _, hx, one_smul _ _⟩ #align subset_balanced_hull subset_balancedHull variable {𝕜} +#print balancedHull.balanced /- theorem balancedHull.balanced (s : Set E) : Balanced 𝕜 (balancedHull 𝕜 s) := by intro a ha @@ -157,6 +222,7 @@ theorem balancedHull.balanced (s : Set E) : Balanced 𝕜 (balancedHull 𝕜 s) rw [← smul_assoc] at hx exact ⟨a • r, (SeminormedRing.norm_mul _ _).trans (mul_le_one ha (norm_nonneg r) hr), hx⟩ #align balanced_hull.balanced balancedHull.balanced +-/ end Module @@ -166,17 +232,27 @@ section NormedField variable [NormedField 𝕜] [AddCommGroup E] [Module 𝕜 E] {s t : Set E} +#print balancedCoreAux_empty /- @[simp] theorem balancedCoreAux_empty : balancedCoreAux 𝕜 (∅ : Set E) = ∅ := by simp_rw [balancedCoreAux, Inter₂_eq_empty_iff, smul_set_empty] exact fun _ => ⟨1, norm_one.ge, not_mem_empty _⟩ #align balanced_core_aux_empty balancedCoreAux_empty +-/ +#print balancedCoreAux_subset /- theorem balancedCoreAux_subset (s : Set E) : balancedCoreAux 𝕜 s ⊆ s := fun x hx => by simpa only [one_smul] using mem_balancedCoreAux_iff.1 hx 1 norm_one.ge #align balanced_core_aux_subset balancedCoreAux_subset +-/ +/- warning: balanced_core_aux_balanced -> balancedCoreAux_balanced is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) (balancedCoreAux.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) -> (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (balancedCoreAux.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) (balancedCoreAux.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) -> (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (balancedCoreAux.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) +Case conversion may be inaccurate. Consider using '#align balanced_core_aux_balanced balancedCoreAux_balancedₓ'. -/ theorem balancedCoreAux_balanced (h0 : (0 : E) ∈ balancedCoreAux 𝕜 s) : Balanced 𝕜 (balancedCoreAux 𝕜 s) := by @@ -192,6 +268,7 @@ theorem balancedCoreAux_balanced (h0 : (0 : E) ∈ balancedCoreAux 𝕜 s) : rwa [smul_assoc, mem_inv_smul_set_iff₀ h] at h' #align balanced_core_aux_balanced balancedCoreAux_balanced +#print balancedCoreAux_maximal /- theorem balancedCoreAux_maximal (h : t ⊆ s) (ht : Balanced 𝕜 t) : t ⊆ balancedCoreAux 𝕜 s := by refine' fun x hx => mem_balancedCoreAux_iff.2 fun r hr => _ @@ -200,19 +277,34 @@ theorem balancedCoreAux_maximal (h : t ⊆ s) (ht : Balanced 𝕜 t) : t ⊆ bal rw [norm_inv] exact inv_le_one hr #align balanced_core_aux_maximal balancedCoreAux_maximal +-/ +#print balancedCore_subset_balancedCoreAux /- theorem balancedCore_subset_balancedCoreAux : balancedCore 𝕜 s ⊆ balancedCoreAux 𝕜 s := balancedCoreAux_maximal (balancedCore_subset s) (balancedCore_balanced s) #align balanced_core_subset_balanced_core_aux balancedCore_subset_balancedCoreAux +-/ +/- warning: balanced_core_eq_Inter -> balancedCore_eq_interᵢ is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) s) -> (Eq.{succ u2} (Set.{u2} E) (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) (Set.interᵢ.{u2, succ u1} E 𝕜 (fun (r : 𝕜) => Set.interᵢ.{u2, 0} E (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} 𝕜 (NormedField.toHasNorm.{u1} 𝕜 _inst_1) r)) (fun (hr : LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} 𝕜 (NormedField.toHasNorm.{u1} 𝕜 _inst_1) r)) => SMul.smul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3))))) r s)))) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) s) -> (Eq.{succ u2} (Set.{u2} E) (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) (Set.interᵢ.{u2, succ u1} E 𝕜 (fun (r : 𝕜) => Set.interᵢ.{u2, 0} E (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} 𝕜 (NormedField.toNorm.{u1} 𝕜 _inst_1) r)) (fun (hr : LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} 𝕜 (NormedField.toNorm.{u1} 𝕜 _inst_1) r)) => HSMul.hSMul.{u1, u2, u2} 𝕜 (Set.{u2} E) (Set.{u2} E) (instHSMul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))))) r s)))) +Case conversion may be inaccurate. Consider using '#align balanced_core_eq_Inter balancedCore_eq_interᵢₓ'. -/ theorem balancedCore_eq_interᵢ (hs : (0 : E) ∈ s) : balancedCore 𝕜 s = ⋂ (r : 𝕜) (hr : 1 ≤ ‖r‖), r • s := by refine' balanced_core_subset_balanced_core_aux.antisymm _ - refine' (balancedCoreAux_balanced _).subset_core_of_subset (balancedCoreAux_subset s) + refine' (balancedCoreAux_balanced _).subset_balancedCore_of_subset (balancedCoreAux_subset s) exact balancedCore_subset_balancedCoreAux (balancedCore_zero_mem hs) #align balanced_core_eq_Inter balancedCore_eq_interᵢ +/- warning: subset_balanced_core -> subset_balancedCore is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))) t) -> (forall (a : 𝕜), (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} 𝕜 (NormedField.toHasNorm.{u1} 𝕜 _inst_1) a) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) (SMul.smul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3))))) a s) t)) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t)) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))) t) -> (forall (a : 𝕜), (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} 𝕜 (NormedField.toNorm.{u1} 𝕜 _inst_1) a) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (HSMul.hSMul.{u1, u2, u2} 𝕜 (Set.{u2} E) (Set.{u2} E) (instHSMul.{u1, u2} 𝕜 (Set.{u2} E) (Set.smulSet.{u1, u2} 𝕜 E (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))))) a s) t)) -> (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) s (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 _inst_1))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t)) +Case conversion may be inaccurate. Consider using '#align subset_balanced_core subset_balancedCoreₓ'. -/ theorem subset_balancedCore (ht : (0 : E) ∈ t) (hst : ∀ (a : 𝕜) (ha : ‖a‖ ≤ 1), a • s ⊆ t) : s ⊆ balancedCore 𝕜 t := by rw [balancedCore_eq_interᵢ ht] @@ -235,6 +327,7 @@ section Topology variable [NontriviallyNormedField 𝕜] [AddCommGroup E] [Module 𝕜 E] [TopologicalSpace E] [ContinuousSMul 𝕜 E] {U : Set E} +#print IsClosed.balancedCore /- protected theorem IsClosed.balancedCore (hU : IsClosed U) : IsClosed (balancedCore 𝕜 U) := by by_cases h : (0 : E) ∈ U @@ -248,7 +341,14 @@ protected theorem IsClosed.balancedCore (hU : IsClosed U) : IsClosed (balancedCo contrapose! h exact balanced_core_nonempty_iff.mp (Set.nonempty_iff_ne_empty.2 h) #align is_closed.balanced_core IsClosed.balancedCore +-/ +/- warning: balanced_core_mem_nhds_zero -> balancedCore_mem_nhds_zero is a dubious translation: +lean 3 declaration is + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4] {U : Set.{u2} E}, (Membership.Mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (Filter.hasMem.{u2} E) U (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))))) -> (Membership.Mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (Filter.hasMem.{u2} E) (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) U) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))))) +but is expected to have type + forall {𝕜 : Type.{u1}} {E : Type.{u2}} [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4] {U : Set.{u2} E}, (Membership.mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (instMembershipSetFilter.{u2} E) U (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))))) -> (Membership.mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (instMembershipSetFilter.{u2} E) (balancedCore.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) U) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))))) +Case conversion may be inaccurate. Consider using '#align balanced_core_mem_nhds_zero balancedCore_mem_nhds_zeroₓ'. -/ theorem balancedCore_mem_nhds_zero (hU : U ∈ 𝓝 (0 : E)) : balancedCore 𝕜 U ∈ 𝓝 (0 : E) := by -- Getting neighborhoods of the origin for `0 : 𝕜` and `0 : E` @@ -273,6 +373,12 @@ theorem balancedCore_mem_nhds_zero (hU : U ∈ 𝓝 (0 : E)) : balancedCore 𝕜 variable (𝕜 E) +/- warning: nhds_basis_balanced -> nhds_basis_balanced is a dubious translation: +lean 3 declaration is + forall (𝕜 : Type.{u1}) (E : Type.{u2}) [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4], Filter.HasBasis.{u2, succ u2} E (Set.{u2} E) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2))))))))) (fun (s : Set.{u2} E) => And (Membership.Mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (Filter.hasMem.{u2} E) s (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))))) (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) (id.{succ u2} (Set.{u2} E)) +but is expected to have type + forall (𝕜 : Type.{u1}) (E : Type.{u2}) [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4], Filter.HasBasis.{u2, succ u2} E (Set.{u2} E) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2)))))))) (fun (s : Set.{u2} E) => And (Membership.mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (instMembershipSetFilter.{u2} E) s (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))))) (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s)) (id.{succ u2} (Set.{u2} E)) +Case conversion may be inaccurate. Consider using '#align nhds_basis_balanced nhds_basis_balancedₓ'. -/ theorem nhds_basis_balanced : (𝓝 (0 : E)).HasBasis (fun s : Set E => s ∈ 𝓝 (0 : E) ∧ Balanced 𝕜 s) id := Filter.hasBasis_self.mpr fun s hs => @@ -280,6 +386,12 @@ theorem nhds_basis_balanced : balancedCore_subset s⟩ #align nhds_basis_balanced nhds_basis_balanced +/- warning: nhds_basis_closed_balanced -> nhds_basis_closed_balanced is a dubious translation: +lean 3 declaration is + forall (𝕜 : Type.{u1}) (E : Type.{u2}) [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4] [_inst_6 : RegularSpace.{u2} E _inst_4], Filter.HasBasis.{u2, succ u2} E (Set.{u2} E) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2))))))))) (fun (s : Set.{u2} E) => And (Membership.Mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (Filter.hasMem.{u2} E) s (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (OfNat.mk.{u2} E 0 (Zero.zero.{u2} E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (SubNegMonoid.toAddMonoid.{u2} E (AddGroup.toSubNegMonoid.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)))))))))) (And (IsClosed.{u2} E _inst_4 s) (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSemiNormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 E (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (Ring.toSemiring.{u1} 𝕜 (NormedRing.toRing.{u1} 𝕜 (NormedCommRing.toNormedRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s))) (id.{succ u2} (Set.{u2} E)) +but is expected to have type + forall (𝕜 : Type.{u1}) (E : Type.{u2}) [_inst_1 : NontriviallyNormedField.{u1} 𝕜] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] [_inst_4 : TopologicalSpace.{u2} E] [_inst_5 : ContinuousSMul.{u1, u2} 𝕜 E (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (UniformSpace.toTopologicalSpace.{u1} 𝕜 (PseudoMetricSpace.toUniformSpace.{u1} 𝕜 (SeminormedRing.toPseudoMetricSpace.{u1} 𝕜 (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))))) _inst_4] [_inst_6 : RegularSpace.{u2} E _inst_4], Filter.HasBasis.{u2, succ u2} E (Set.{u2} E) (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2)))))))) (fun (s : Set.{u2} E) => And (Membership.mem.{u2, u2} (Set.{u2} E) (Filter.{u2} E) (instMembershipSetFilter.{u2} E) s (nhds.{u2} E _inst_4 (OfNat.ofNat.{u2} E 0 (Zero.toOfNat0.{u2} E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))))))) (And (IsClosed.{u2} E _inst_4 s) (Balanced.{u1, u2} 𝕜 E (SeminormedCommRing.toSeminormedRing.{u1} 𝕜 (NormedCommRing.toSeminormedCommRing.{u1} 𝕜 (NormedField.toNormedCommRing.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))) (SMulZeroClass.toSMul.{u1, u2} 𝕜 E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} 𝕜 E (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 E (Semiring.toMonoidWithZero.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} 𝕜 E (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 (NormedField.toField.{u1} 𝕜 (NontriviallyNormedField.toNormedField.{u1} 𝕜 _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s))) (id.{succ u2} (Set.{u2} E)) +Case conversion may be inaccurate. Consider using '#align nhds_basis_closed_balanced nhds_basis_closed_balancedₓ'. -/ theorem nhds_basis_closed_balanced [RegularSpace E] : (𝓝 (0 : E)).HasBasis (fun s : Set E => s ∈ 𝓝 (0 : E) ∧ IsClosed s ∧ Balanced 𝕜 s) id := by diff --git a/Mathbin/Analysis/Seminorm.lean b/Mathbin/Analysis/Seminorm.lean index 2c3f7a8f55..c4eacf3531 100644 --- a/Mathbin/Analysis/Seminorm.lean +++ b/Mathbin/Analysis/Seminorm.lean @@ -1246,5 +1246,5 @@ theorem balanced_ball_zero : Balanced 𝕜 (Metric.ball (0 : E) r) := end normSeminorm -- Guard against import creep. -assert_not_exists balanced_core +assert_not_exists balancedCore diff --git a/Mathbin/Analysis/SpecialFunctions/Pow.lean b/Mathbin/Analysis/SpecialFunctions/Pow.lean index d1a2b79d50..d4f4ec06eb 100644 --- a/Mathbin/Analysis/SpecialFunctions/Pow.lean +++ b/Mathbin/Analysis/SpecialFunctions/Pow.lean @@ -565,7 +565,7 @@ theorem isTheta_cpow_rpow (hl_im : IsBoundedUnder (· ≤ ·) l fun x => |(g x). (fun x => f x ^ g x) =Θ[l] fun x => abs (f x) ^ (g x).re := calc (fun x => f x ^ g x) =Θ[l] fun x => abs (f x) ^ (g x).re / Real.exp (arg (f x) * im (g x)) := - isTheta_of_norm_eventually_eq' <| hl.mono fun x => abs_cpow_of_imp + isTheta_of_norm_eventuallyEq' <| hl.mono fun x => abs_cpow_of_imp _ =Θ[l] fun x => abs (f x) ^ (g x).re / (1 : ℝ) := ((isTheta_refl _ _).div (isTheta_exp_arg_mul_im hl_im)) _ =ᶠ[l] fun x => abs (f x) ^ (g x).re := by simp only [of_real_one, div_one] diff --git a/Mathbin/CategoryTheory/Sites/Sheafification.lean b/Mathbin/CategoryTheory/Sites/Sheafification.lean index 2bfa4635d4..0f6120c8ea 100644 --- a/Mathbin/CategoryTheory/Sites/Sheafification.lean +++ b/Mathbin/CategoryTheory/Sites/Sheafification.lean @@ -42,12 +42,14 @@ variable [ConcreteCategory.{max v u} D] attribute [local instance] concrete_category.has_coe_to_sort concrete_category.has_coe_to_fun +#print CategoryTheory.Meq /- /-- A concrete version of the multiequalizer, to be used below. -/ @[nolint has_nonempty_instance] def Meq {X : C} (P : Cᵒᵖ ⥤ D) (S : J.cover X) := { x : ∀ I : S.arrow, P.obj (op I.y) // ∀ I : S.Relation, P.map I.g₁.op (x I.fst) = P.map I.g₂.op (x I.snd) } #align category_theory.meq CategoryTheory.Meq +-/ end @@ -61,17 +63,35 @@ instance {X} (P : Cᵒᵖ ⥤ D) (S : J.cover X) : CoeFun (Meq P S) fun x => ∀ I : S.arrow, P.obj (op I.y) := ⟨fun x => x.1⟩ +/- warning: category_theory.meq.ext -> CategoryTheory.Meq.ext is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x I) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) y I)) -> (Eq.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x y) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) x I) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) y I)) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x y) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.ext CategoryTheory.Meq.extₓ'. -/ @[ext] theorem ext {X} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x y : Meq P S) (h : ∀ I : S.arrow, x I = y I) : x = y := Subtype.ext <| funext <| h #align category_theory.meq.ext CategoryTheory.Meq.ext +/- warning: category_theory.meq.condition -> CategoryTheory.Meq.condition is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I)))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x (CategoryTheory.Limits.MulticospanIndex.fstTo.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I)))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x (CategoryTheory.Limits.MulticospanIndex.sndTo.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) x (CategoryTheory.Limits.MulticospanIndex.fstTo.{max u3 u2, max u3 u2, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) x (CategoryTheory.Limits.MulticospanIndex.sndTo.{max u3 u2, max u3 u2, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I))) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.condition CategoryTheory.Meq.conditionₓ'. -/ theorem condition {X} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) (I : S.Relation) : P.map I.g₁.op (x ((S.index P).fstTo I)) = P.map I.g₂.op (x ((S.index P).sndTo I)) := x.2 _ #align category_theory.meq.condition CategoryTheory.Meq.condition +/- warning: category_theory.meq.refine -> CategoryTheory.Meq.refine is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) -> (Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) S T) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) -> (Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) S T) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.refine CategoryTheory.Meq.refineₓ'. -/ /-- Refine a term of `meq P T` with respect to a refinement `S ⟶ T` of covers. -/ def refine {X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (x : Meq P T) (e : S ⟶ T) : Meq P S := ⟨fun I => x ⟨I.y, I.f, (leOfHom e) _ I.hf⟩, fun I => @@ -79,12 +99,24 @@ def refine {X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (x : Meq P T) (e : S ⟨I.y₁, I.y₂, I.z, I.g₁, I.g₂, I.f₁, I.f₂, (leOfHom e) _ I.h₁, (leOfHom e) _ I.h₂, I.w⟩⟩ #align category_theory.meq.refine CategoryTheory.Meq.refine +/- warning: category_theory.meq.refine_apply -> CategoryTheory.Meq.refine_apply is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) (e : Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) S T) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S T x e) I) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J T), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J T I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) x (CategoryTheory.GrothendieckTopology.Cover.Arrow.mk.{u2, u3} C _inst_1 X J T (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I) (CategoryTheory.leOfHom.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X) S T e (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.hf.{u2, u3} C _inst_1 X J S I)))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T) (e : Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) S T) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S T x e) I) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J T), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J T I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J T), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J T I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J T), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J T I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J T I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J T I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J T I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J T I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J T I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J T I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J T I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J T I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J T I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J T I)))) x (CategoryTheory.GrothendieckTopology.Cover.Arrow.mk.{u2, u3} C _inst_1 X J T (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I) (CategoryTheory.leOfHom.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X) S T e (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Arrow.hf.{u2, u3} C _inst_1 X J S I)))) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.refine_apply CategoryTheory.Meq.refine_applyₓ'. -/ @[simp] theorem refine_apply {X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (x : Meq P T) (e : S ⟶ T) (I : S.arrow) : x.refine e I = x ⟨I.y, I.f, (leOfHom e) _ I.hf⟩ := rfl #align category_theory.meq.refine_apply CategoryTheory.Meq.refine_apply +/- warning: category_theory.meq.pullback -> CategoryTheory.Meq.pullback is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) -> (forall (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X), CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) -> (forall (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X), CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.pullback CategoryTheory.Meq.pullbackₓ'. -/ /-- Pull back a term of `meq P S` with respect to a morphism `f : Y ⟶ X` in `C`. -/ def pullback {Y X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) (f : Y ⟶ X) : Meq P ((J.pullback f).obj S) := @@ -93,18 +125,36 @@ def pullback {Y X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) (f : Y ⟨I.y₁, I.y₂, I.z, I.g₁, I.g₂, I.f₁ ≫ f, I.f₂ ≫ f, I.h₁, I.h₂, by simp [reassoc_of I.w]⟩⟩ #align category_theory.meq.pullback CategoryTheory.Meq.pullback +/- warning: category_theory.meq.pullback_apply -> CategoryTheory.Meq.pullback_apply is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S x f) I) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x (CategoryTheory.GrothendieckTopology.Cover.Arrow.mk.{u2, u3} C _inst_1 X J S (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I) Y X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I) f) (CategoryTheory.GrothendieckTopology.Cover.Arrow.hf.{u2, u3} C _inst_1 Y J (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) I))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I)))) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S x f) I) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) x (CategoryTheory.GrothendieckTopology.Cover.Arrow.mk.{u2, u3} C _inst_1 X J S (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) Y X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I) f) (CategoryTheory.GrothendieckTopology.Cover.Arrow.hf.{u2, u3} C _inst_1 Y J (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) I))) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.pullback_apply CategoryTheory.Meq.pullback_applyₓ'. -/ @[simp] theorem pullback_apply {Y X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) (f : Y ⟶ X) (I : ((J.pullback f).obj S).arrow) : x.pullback f I = x ⟨_, I.f ≫ f, I.hf⟩ := rfl #align category_theory.meq.pullback_apply CategoryTheory.Meq.pullback_apply +/- warning: category_theory.meq.pullback_refine -> CategoryTheory.Meq.pullback_refine is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (h : Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) S T) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X) (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T), Eq.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S)) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) T) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P T x f) (CategoryTheory.Functor.map.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S T h)) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S T x h) f) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (h : Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) S T) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X) (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T), Eq.{max (succ u3) (succ u2)} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S)) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y P (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) T) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P T x f) (Prefunctor.map.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S T h)) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S T x h) f) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.pullback_refine CategoryTheory.Meq.pullback_refineₓ'. -/ @[simp] theorem pullback_refine {Y X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (h : S ⟶ T) (f : Y ⟶ X) (x : Meq P T) : (x.pullback f).refine ((J.pullback f).map h) = (refine x h).pullback _ := rfl #align category_theory.meq.pullback_refine CategoryTheory.Meq.pullback_refine +/- warning: category_theory.meq.mk -> CategoryTheory.Meq.mk is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.mk CategoryTheory.Meq.mkₓ'. -/ /-- Make a term of `meq P S`. -/ def mk {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) : Meq P S := ⟨fun I => P.map I.f.op x, fun I => by @@ -112,6 +162,12 @@ def mk {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) : Meq P S simp only [← comp_apply, ← P.map_comp, ← op_comp, I.w]⟩ #align category_theory.meq.mk CategoryTheory.Meq.mk +/- warning: category_theory.meq.mk_apply -> CategoryTheory.Meq.mk_apply is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S x) I) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S x) I) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.mk_apply CategoryTheory.Meq.mk_applyₓ'. -/ theorem mk_apply {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) (I : S.arrow) : mk S x I = P.map I.f.op x := rfl @@ -119,12 +175,20 @@ theorem mk_apply {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) variable [PreservesLimits (forget D)] +#print CategoryTheory.Meq.equiv /- /-- The equivalence between the type associated to `multiequalizer (S.index P)` and `meq P S`. -/ noncomputable def equiv {X : C} (P : Cᵒᵖ ⥤ D) (S : J.cover X) [HasMultiequalizer (S.index P)] : (multiequalizer (S.index P) : D) ≃ Meq P S := Limits.Concrete.multiequalizerEquiv _ #align category_theory.meq.equiv CategoryTheory.Meq.equiv +-/ +/- warning: category_theory.meq.equiv_apply -> CategoryTheory.Meq.equiv_apply is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} [_inst_5 : CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (coeFn.{max 1 (max (succ (max u2 u3)) 1 (max (succ u3) (succ u2)) (succ (max u2 u3))) (max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))) (succ (max u2 u3)), max (succ (max u2 u3)) 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (Equiv.{succ (max u2 u3), max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) (fun (_x : Equiv.{succ (max u2 u3), max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) (Equiv.hasCoeToFun.{succ (max u2 u3), max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) (CategoryTheory.Meq.equiv.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 X P S _inst_5) x) I) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5) (CategoryTheory.Limits.MulticospanIndex.left.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I)) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5) (CategoryTheory.Limits.MulticospanIndex.left.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I)) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Limits.MulticospanIndex.left.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Limits.multiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5) (CategoryTheory.Limits.MulticospanIndex.left.{max u3 u2, max u2 u3, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I)) (CategoryTheory.Limits.Multiequalizer.ι.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5 I) x) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} [_inst_5 : CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) (FunLike.coe.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (succ u3) (succ u2)} (Equiv.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (fun (_x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) => CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5)) (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S)) (CategoryTheory.Meq.equiv.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 X P S _inst_5) x) I) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (CategoryTheory.Limits.multiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5) (CategoryTheory.Limits.MulticospanIndex.left.{max u3 u2, max u3 u2, u1} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) I) (CategoryTheory.Limits.Multiequalizer.ι.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P) _inst_5 I) x) +Case conversion may be inaccurate. Consider using '#align category_theory.meq.equiv_apply CategoryTheory.Meq.equiv_applyₓ'. -/ @[simp] theorem equiv_apply {X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} [HasMultiequalizer (S.index P)] (x : multiequalizer (S.index P)) (I : S.arrow) : @@ -132,6 +196,7 @@ theorem equiv_apply {X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} [HasMultiequaliz rfl #align category_theory.meq.equiv_apply CategoryTheory.Meq.equiv_apply +#print CategoryTheory.Meq.equiv_symm_eq_apply /- @[simp] theorem equiv_symm_eq_apply {X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} [HasMultiequalizer (S.index P)] (x : Meq P S) (I : S.arrow) : Multiequalizer.ι (S.index P) I ((Meq.equiv P S).symm x) = x I := @@ -140,6 +205,7 @@ theorem equiv_symm_eq_apply {X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} [HasMult rw [← equiv_apply] simp #align category_theory.meq.equiv_symm_eq_apply CategoryTheory.Meq.equiv_symm_eq_apply +-/ end Meq @@ -159,11 +225,23 @@ variable [∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.cover X), HasMultiequalizer (S. noncomputable section +/- warning: category_theory.grothendieck_topology.plus.mk -> CategoryTheory.GrothendieckTopology.Plus.mk is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) (Opposite.op.{succ u3} C X))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X}, (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) -> (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.mk CategoryTheory.GrothendieckTopology.Plus.mkₓ'. -/ /-- Make a term of `(J.plus_obj P).obj (op X)` from `x : meq P S`. -/ def mk {X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) : (J.plusObj P).obj (op X) := colimit.ι (J.diagram P X) (op S) ((Meq.equiv P S).symm x) #align category_theory.grothendieck_topology.plus.mk CategoryTheory.GrothendieckTopology.Plus.mk +/- warning: category_theory.grothendieck_topology.plus.res_mk_eq_mk_pullback -> CategoryTheory.GrothendieckTopology.Plus.res_mk_eq_mk_pullback is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y)))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C Y) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X f)) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x)) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) Y P (CategoryTheory.Functor.obj.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f) S) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S x f)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {Y : C} {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C Y)) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C Y) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) Y X f)) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x)) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) Y P (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J Y) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J Y)) (CategoryTheory.GrothendieckTopology.pullback.{u2, u3} C _inst_1 X Y J f)) S) (CategoryTheory.Meq.pullback.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 Y X P S x f)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.res_mk_eq_mk_pullback CategoryTheory.GrothendieckTopology.Plus.res_mk_eq_mk_pullbackₓ'. -/ theorem res_mk_eq_mk_pullback {Y X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : Meq P S) (f : Y ⟶ X) : (J.plusObj P).map f.op (mk x) = mk (x.pullback f) := by @@ -179,6 +257,12 @@ theorem res_mk_eq_mk_pullback {Y X : C} {P : Cᵒᵖ ⥤ D} {S : J.cover X} (x : cases i; rfl #align category_theory.grothendieck_topology.plus.res_mk_eq_mk_pullback CategoryTheory.GrothendieckTopology.Plus.res_mk_eq_mk_pullback +/- warning: category_theory.grothendieck_topology.plus.to_plus_mk -> CategoryTheory.GrothendieckTopology.Plus.toPlus_mk is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (CategoryTheory.NatTrans.app.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S x)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.NatTrans.app.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S x)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.to_plus_mk CategoryTheory.GrothendieckTopology.Plus.toPlus_mkₓ'. -/ theorem toPlus_mk {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) : (J.toPlus P).app _ x = mk (Meq.mk S x) := by @@ -195,6 +279,12 @@ theorem toPlus_mk {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : P.obj (op X)) meq.equiv_symm_eq_apply] #align category_theory.grothendieck_topology.plus.to_plus_mk CategoryTheory.GrothendieckTopology.Plus.toPlus_mk +/- warning: category_theory.grothendieck_topology.plus.to_plus_apply -> CategoryTheory.GrothendieckTopology.Plus.toPlus_apply is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.NatTrans.app.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) x I)) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.NatTrans.app.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) x I)) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.to_plus_apply CategoryTheory.GrothendieckTopology.Plus.toPlus_applyₓ'. -/ theorem toPlus_apply {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : Meq P S) (I : S.arrow) : (J.toPlus P).app _ (x I) = (J.plusObj P).map I.f.op (mk x) := by @@ -220,6 +310,12 @@ theorem toPlus_apply {X : C} {P : Cᵒᵖ ⥤ D} (S : J.cover X) (x : Meq P S) ( simpa [RR] #align category_theory.grothendieck_topology.plus.to_plus_apply CategoryTheory.GrothendieckTopology.Plus.toPlus_apply +/- warning: category_theory.grothendieck_topology.plus.to_plus_eq_mk -> CategoryTheory.GrothendieckTopology.Plus.toPlus_eq_mk is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (CategoryTheory.NatTrans.app.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P (Top.top.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (OrderTop.toHasTop.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.toLE.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.orderTop.{u2, u3} C _inst_1 X J))) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P (Top.top.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (OrderTop.toHasTop.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.toLE.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.orderTop.{u2, u3} C _inst_1 X J))) x)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.NatTrans.app.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P (Top.top.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (OrderTop.toTop.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.toLE.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.instOrderTopCoverToLEInstPreorderCover.{u2, u3} C _inst_1 X J))) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P (Top.top.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (OrderTop.toTop.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.toLE.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)) (CategoryTheory.GrothendieckTopology.Cover.instOrderTopCoverToLEInstPreorderCover.{u2, u3} C _inst_1 X J))) x)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.to_plus_eq_mk CategoryTheory.GrothendieckTopology.Plus.toPlus_eq_mkₓ'. -/ theorem toPlus_eq_mk {X : C} {P : Cᵒᵖ ⥤ D} (x : P.obj (op X)) : (J.toPlus P).app _ x = mk (Meq.mk ⊤ x) := by @@ -234,6 +330,12 @@ theorem toPlus_eq_mk {X : C} {P : Cᵒᵖ ⥤ D} (x : P.obj (op X)) : variable [∀ X : C, PreservesColimitsOfShape (J.cover X)ᵒᵖ (forget D)] +/- warning: category_theory.grothendieck_topology.plus.exists_rep -> CategoryTheory.GrothendieckTopology.Plus.exists_rep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))), Exists.{max 1 (succ u3) (succ u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (fun (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => Exists.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) x (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S y))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))), Exists.{max (succ u3) (succ u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (fun (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => Exists.{max (succ u3) (succ u2)} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (fun (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) => Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) x (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S y))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.exists_rep CategoryTheory.GrothendieckTopology.Plus.exists_repₓ'. -/ theorem exists_rep {X : C} {P : Cᵒᵖ ⥤ D} (x : (J.plusObj P).obj (op X)) : ∃ (S : J.cover X)(y : Meq P S), x = mk y := by @@ -244,6 +346,12 @@ theorem exists_rep {X : C} {P : Cᵒᵖ ⥤ D} (x : (J.plusObj P).obj (op X)) : simp #align category_theory.grothendieck_topology.plus.exists_rep CategoryTheory.GrothendieckTopology.Plus.exists_rep +/- warning: category_theory.grothendieck_topology.plus.eq_mk_iff_exists -> CategoryTheory.GrothendieckTopology.Plus.eq_mk_iff_exists is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T), Iff (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.mk._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.Plus.mk._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P T y)) (Exists.{max 1 (succ u3) (succ u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (fun (W : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => Exists.{succ (max u3 u2)} (Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) W S) (fun (h1 : Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) W S) => Exists.{succ (max u3 u2)} (Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) W T) (fun (h2 : Quiver.Hom.{succ (max u3 u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X)))) W T) => Eq.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W S x h1) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W T y h2))))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {X : C} {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} {T : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X} (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P S) (y : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P T), Iff (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P S x) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) X P T y)) (Exists.{max (succ u3) (succ u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (fun (W : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => Exists.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) W S) (fun (h1 : Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) W S) => Exists.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) W T) (fun (h2 : Quiver.Hom.{max (succ u3) (succ u2), max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X)))) W T) => Eq.{max (succ u3) (succ u2)} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W S x h1) (CategoryTheory.Meq.refine.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P W T y h2))))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.eq_mk_iff_exists CategoryTheory.GrothendieckTopology.Plus.eq_mk_iff_existsₓ'. -/ theorem eq_mk_iff_exists {X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (x : Meq P S) (y : Meq P T) : mk x = mk y ↔ ∃ (W : J.cover X)(h1 : W ⟶ S)(h2 : W ⟶ T), x.refine h1 = y.refine h2 := by @@ -271,6 +379,12 @@ theorem eq_mk_iff_exists {X : C} {P : Cᵒᵖ ⥤ D} {S T : J.cover X} (x : Meq cases i; rfl #align category_theory.grothendieck_topology.plus.eq_mk_iff_exists CategoryTheory.GrothendieckTopology.Plus.eq_mk_iff_exists +/- warning: category_theory.grothendieck_topology.plus.sep -> CategoryTheory.GrothendieckTopology.Plus.sep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {X : C} (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) (y : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) x y) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {X : C} (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (y : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) x y) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.sep CategoryTheory.GrothendieckTopology.Plus.sepₓ'. -/ /-- `P⁺` is always separated. -/ theorem sep {X : C} (P : Cᵒᵖ ⥤ D) (S : J.cover X) (x y : (J.plusObj P).obj (op X)) (h : ∀ I : S.arrow, (J.plusObj P).map I.f.op x = (J.plusObj P).map I.f.op y) : x = y := @@ -327,6 +441,12 @@ theorem sep {X : C} (P : Cᵒᵖ ⥤ D) (S : J.cover X) (x y : (J.plusObj P).obj simpa using this #align category_theory.grothendieck_topology.plus.sep CategoryTheory.GrothendieckTopology.Plus.sep +/- warning: category_theory.grothendieck_topology.plus.inj_of_sep -> CategoryTheory.GrothendieckTopology.Plus.inj_of_sep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (y : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C), Function.Injective.{succ (max u2 u3), succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (CategoryTheory.NatTrans.app.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toPlus._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S)) P (CategoryTheory.GrothendieckTopology.toPlus._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_5 X))) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (y : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C), Function.Injective.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, succ (max u3 u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X)) (CategoryTheory.NatTrans.app.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (CategoryTheory.GrothendieckTopology.toPlus.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X)))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.inj_of_sep CategoryTheory.GrothendieckTopology.Plus.inj_of_sepₓ'. -/ theorem inj_of_sep (P : Cᵒᵖ ⥤ D) (hsep : ∀ (X : C) (S : J.cover X) (x y : P.obj (op X)), @@ -343,6 +463,12 @@ theorem inj_of_sep (P : Cᵒᵖ ⥤ D) exact hh #align category_theory.grothendieck_topology.plus.inj_of_sep CategoryTheory.GrothendieckTopology.Plus.inj_of_sep +/- warning: category_theory.grothendieck_topology.plus.meq_of_sep -> CategoryTheory.GrothendieckTopology.Plus.meqOfSep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (y : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (s : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) S) (T : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (t : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) P (T I)), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3)), max (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) S) (fun (x : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) S) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Meq.hasCoeToFun.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) P (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5)) S) s I) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5) (CategoryTheory.GrothendieckTopology.Plus.meqOfSep._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) P (T I) (t I))) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P (CategoryTheory.GrothendieckTopology.Cover.bind.{u2, u3} C _inst_1 J X S T))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (y : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (s : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S) (T : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (t : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) P (T I)), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Subtype.val.{max (succ u3) (succ u2)} (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (fun (x : forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) => forall (I : CategoryTheory.GrothendieckTopology.Cover.Relation.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₁.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₁.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.fst.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I))) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I)) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Relation.Z.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.Y₂.{u2, u3} C _inst_1 X J S I) (CategoryTheory.GrothendieckTopology.Cover.Relation.g₂.{u2, u3} C _inst_1 X J S I))) (x (CategoryTheory.GrothendieckTopology.Cover.Relation.snd.{u2, u3} C _inst_1 X J S I)))) s I) (CategoryTheory.GrothendieckTopology.Plus.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (X : C) => _inst_5 X) (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) P (T I) (t I))) -> (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X P (CategoryTheory.GrothendieckTopology.Cover.bind.{u2, u3} C _inst_1 J X S T))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.meq_of_sep CategoryTheory.GrothendieckTopology.Plus.meqOfSepₓ'. -/ /-- An auxiliary definition to be used in the proof of `exists_of_sep` below. Given a compatible family of local sections for `P⁺`, and representatives of said sections, construct a compatible family of local sections of `P` over the combination of the covers @@ -374,6 +500,12 @@ def meqOfSep (P : Cᵒᵖ ⥤ D) exact s.condition IR #align category_theory.grothendieck_topology.plus.meq_of_sep CategoryTheory.GrothendieckTopology.Plus.meqOfSep +/- warning: category_theory.grothendieck_topology.plus.exists_of_sep -> CategoryTheory.GrothendieckTopology.Plus.exists_of_sep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (y : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (s : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S), Exists.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) (fun (t : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (Opposite.op.{succ u3} C X))) => Eq.{max 1 (max (succ u3) (succ u2)) (succ (max u2 u3))} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S t) s)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (y : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) x y)) -> (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (s : CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S), Exists.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) (fun (t : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) (Opposite.op.{succ u3} C X))) => Eq.{max (succ u3) (succ u2)} (CategoryTheory.Meq.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S) (CategoryTheory.Meq.mk.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 X (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) S t) s)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.exists_of_sep CategoryTheory.GrothendieckTopology.Plus.exists_of_sepₓ'. -/ theorem exists_of_sep (P : Cᵒᵖ ⥤ D) (hsep : ∀ (X : C) (S : J.cover X) (x y : P.obj (op X)), @@ -435,6 +567,12 @@ theorem exists_of_sep (P : Cᵒᵖ ⥤ D) variable [ReflectsIsomorphisms (forget D)] +/- warning: category_theory.grothendieck_topology.plus.is_sheaf_of_sep -> CategoryTheory.GrothendieckTopology.Plus.isSheaf_of_sep is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) (y : coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (fun (f : Quiver.Hom.{succ (max u2 u3), u1} D (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, u1} D (CategoryTheory.Category.toCategoryStruct.{max u2 u3, u1} D _inst_2)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) => (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) -> (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I))))) (CategoryTheory.ConcreteCategory.hasCoeToFun.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3 (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X)) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)))) (CategoryTheory.Functor.map.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{succ (max u2 u3)} (coeSort.{succ u1, succ (succ (max u2 u3))} D Type.{max u2 u3} (CategoryTheory.ConcreteCategory.hasCoeToSort.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3) (CategoryTheory.Functor.obj.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P (Opposite.op.{succ u3} C X))) x y)) -> (CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), (forall (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (x : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) (y : Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))), (forall (I : CategoryTheory.GrothendieckTopology.Cover.Arrow.{u2, u3} C _inst_1 X J S), Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)))) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) x) (Prefunctor.map.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I))) (Prefunctor.map.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X) (Opposite.op.{succ u3} C (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I)) (Quiver.Hom.op.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.GrothendieckTopology.Cover.Arrow.Y.{u2, u3} C _inst_1 X J S I) X (CategoryTheory.GrothendieckTopology.Cover.Arrow.f.{u2, u3} C _inst_1 X J S I))) y)) -> (Eq.{max (succ u3) (succ u2)} (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), u1, succ (max u3 u2)} D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, succ (max u3 u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, u1, succ (max u3 u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.ConcreteCategory.Forget.{max u3 u2, max u3 u2, u1} D _inst_2 _inst_3)) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) D (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, u1} D (CategoryTheory.Category.toCategoryStruct.{max u3 u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 P) (Opposite.op.{succ u3} C X))) x y)) -> (CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X))) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.is_sheaf_of_sep CategoryTheory.GrothendieckTopology.Plus.isSheaf_of_sepₓ'. -/ /-- If `P` is separated, then `P⁺` is a sheaf. -/ theorem isSheaf_of_sep (P : Cᵒᵖ ⥤ D) (hsep : @@ -470,6 +608,12 @@ theorem isSheaf_of_sep (P : Cᵒᵖ ⥤ D) variable (J) +/- warning: category_theory.grothendieck_topology.plus.is_sheaf_plus_plus -> CategoryTheory.GrothendieckTopology.Plus.isSheaf_plus_plus is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (fun (X : C) => _inst_5 X)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_6 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) (CategoryTheory.GrothendieckTopology.plusObj.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_6 P X S) P (fun (X : C) => _inst_5 X)) (fun (X : C) => _inst_5 X)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.plus.is_sheaf_plus_plus CategoryTheory.GrothendieckTopology.Plus.isSheaf_plus_plusₓ'. -/ /-- `P⁺⁺` is always a sheaf. -/ theorem isSheaf_plus_plus (P : Cᵒᵖ ⥤ D) : Presheaf.IsSheaf J (J.plusObj (J.plusObj P)) := by @@ -485,22 +629,46 @@ variable (J) variable [∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.cover X), HasMultiequalizer (S.index P)] [∀ X : C, HasColimitsOfShape (J.cover X)ᵒᵖ D] +/- warning: category_theory.grothendieck_topology.sheafify -> CategoryTheory.GrothendieckTopology.sheafify is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2], (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) -> (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2], (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) -> (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify CategoryTheory.GrothendieckTopology.sheafifyₓ'. -/ /-- The sheafification of a presheaf `P`. *NOTE:* Additional hypotheses are needed to obtain a proof that this is a sheaf! -/ def sheafify (P : Cᵒᵖ ⥤ D) : Cᵒᵖ ⥤ D := J.plusObj (J.plusObj P) #align category_theory.grothendieck_topology.sheafify CategoryTheory.GrothendieckTopology.sheafify +/- warning: category_theory.grothendieck_topology.to_sheafify -> CategoryTheory.GrothendieckTopology.toSheafify is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.to_sheafify CategoryTheory.GrothendieckTopology.toSheafifyₓ'. -/ /-- The canonical map from `P` to its sheafification. -/ def toSheafify (P : Cᵒᵖ ⥤ D) : P ⟶ J.sheafify P := J.toPlus P ≫ J.plusMap (J.toPlus P) #align category_theory.grothendieck_topology.to_sheafify CategoryTheory.GrothendieckTopology.toSheafify +/- warning: category_theory.grothendieck_topology.sheafify_map -> CategoryTheory.GrothendieckTopology.sheafifyMap is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) -> (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4) Q)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) -> (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_map CategoryTheory.GrothendieckTopology.sheafifyMapₓ'. -/ /-- The canonical map on sheafifications induced by a morphism. -/ def sheafifyMap {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) : J.sheafify P ⟶ J.sheafify Q := J.plusMap <| J.plusMap η #align category_theory.grothendieck_topology.sheafify_map CategoryTheory.GrothendieckTopology.sheafifyMap +/- warning: category_theory.grothendieck_topology.sheafify_map_id -> CategoryTheory.GrothendieckTopology.sheafifyMap_id is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P)) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P P (CategoryTheory.CategoryStruct.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P)) (CategoryTheory.CategoryStruct.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P P (CategoryTheory.CategoryStruct.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P)) (CategoryTheory.CategoryStruct.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_map_id CategoryTheory.GrothendieckTopology.sheafifyMap_idₓ'. -/ @[simp] theorem sheafifyMap_id (P : Cᵒᵖ ⥤ D) : J.sheafifyMap (𝟙 P) = 𝟙 (J.sheafify P) := by @@ -508,6 +676,12 @@ theorem sheafifyMap_id (P : Cᵒᵖ ⥤ D) : J.sheafifyMap (𝟙 P) = 𝟙 (J.sh simp #align category_theory.grothendieck_topology.sheafify_map_id CategoryTheory.GrothendieckTopology.sheafifyMap_id +/- warning: category_theory.grothendieck_topology.sheafify_map_comp -> CategoryTheory.GrothendieckTopology.sheafifyMap_comp is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {R : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (γ : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) Q R), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) R)) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P R (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q R η γ)) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) Q) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) R) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q R γ)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {R : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (γ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) Q R), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) R)) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P R (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q R η γ)) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) R) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q R γ)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_map_comp CategoryTheory.GrothendieckTopology.sheafifyMap_compₓ'. -/ @[simp] theorem sheafifyMap_comp {P Q R : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (γ : Q ⟶ R) : J.sheafifyMap (η ≫ γ) = J.sheafifyMap η ≫ J.sheafifyMap γ := @@ -516,6 +690,12 @@ theorem sheafifyMap_comp {P Q R : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (γ : Q ⟶ R) : simp #align category_theory.grothendieck_topology.sheafify_map_comp CategoryTheory.GrothendieckTopology.sheafifyMap_comp +/- warning: category_theory.grothendieck_topology.to_sheafify_naturality -> CategoryTheory.GrothendieckTopology.toSheafify_naturality is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) Q)) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) Q) η (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q)) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) Q) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q)) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q) η (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q)) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.to_sheafify_naturality CategoryTheory.GrothendieckTopology.toSheafify_naturalityₓ'. -/ @[simp, reassoc.1] theorem toSheafify_naturality {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) : η ≫ J.toSheafify _ = J.toSheafify _ ≫ J.sheafifyMap η := @@ -526,29 +706,59 @@ theorem toSheafify_naturality {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) : variable (D) +/- warning: category_theory.grothendieck_topology.sheafification -> CategoryTheory.GrothendieckTopology.sheafification is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2], CategoryTheory.Functor.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2], CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max (max u1 u3) u3 u2) u2, max (max (max u1 u3) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafification CategoryTheory.GrothendieckTopology.sheafificationₓ'. -/ /-- The sheafification of a presheaf `P`, as a functor. *NOTE:* Additional hypotheses are needed to obtain a proof that this is a sheaf! -/ def sheafification : (Cᵒᵖ ⥤ D) ⥤ Cᵒᵖ ⥤ D := J.plusFunctor D ⋙ J.plusFunctor D #align category_theory.grothendieck_topology.sheafification CategoryTheory.GrothendieckTopology.sheafification +/- warning: category_theory.grothendieck_topology.sheafification_obj -> CategoryTheory.GrothendieckTopology.sheafification_obj is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{succ (max u2 (max u2 u3) u3 u1)} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X))) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafification_obj CategoryTheory.GrothendieckTopology.sheafification_objₓ'. -/ @[simp] theorem sheafification_obj (P : Cᵒᵖ ⥤ D) : (J.sheafification D).obj P = J.sheafify P := rfl #align category_theory.grothendieck_topology.sheafification_obj CategoryTheory.GrothendieckTopology.sheafification_obj +/- warning: category_theory.grothendieck_topology.sheafification_map -> CategoryTheory.GrothendieckTopology.sheafification_map is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) P) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) Q)) (CategoryTheory.Functor.map.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X))) P) (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X))) Q)) (Prefunctor.map.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X))) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafification_map CategoryTheory.GrothendieckTopology.sheafification_mapₓ'. -/ @[simp] theorem sheafification_map {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) : (J.sheafification D).map η = J.sheafifyMap η := rfl #align category_theory.grothendieck_topology.sheafification_map CategoryTheory.GrothendieckTopology.sheafification_map +/- warning: category_theory.grothendieck_topology.to_sheafification -> CategoryTheory.GrothendieckTopology.toSheafification is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2], Quiver.Hom.{succ (max (max u2 (max u2 u3) u3 u1) u2 u3), max (max u2 u3) u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u2 (max u2 u3) u3 u1) u2 u3, max (max u2 u3) u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.Category.toCategoryStruct.{max (max u2 (max u2 u3) u3 u1) u2 u3, max (max u2 u3) u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.Functor.category.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)))) (CategoryTheory.Functor.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafification._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.toSheafification._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2], Quiver.Hom.{max (max (succ u3) (succ u2)) (succ u1), max (max u3 u2) u1} (CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.Functor.category.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)))) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.to_sheafification CategoryTheory.GrothendieckTopology.toSheafificationₓ'. -/ /-- The canonical map from `P` to its sheafification, as a natural transformation. *Note:* We only show this is a sheaf under additional hypotheses on `D`. -/ def toSheafification : 𝟭 _ ⟶ sheafification J D := J.toPlusNatTrans D ≫ whiskerRight (J.toPlusNatTrans D) (J.plusFunctor D) #align category_theory.grothendieck_topology.to_sheafification CategoryTheory.GrothendieckTopology.toSheafification +/- warning: category_theory.grothendieck_topology.to_sheafification_app -> CategoryTheory.GrothendieckTopology.toSheafification_app is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafification._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafification._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X))) P)) (CategoryTheory.NatTrans.app.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafification._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafification._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X))) (CategoryTheory.GrothendieckTopology.toSheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X))) P)) (CategoryTheory.NatTrans.app.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) (CategoryTheory.GrothendieckTopology.toSheafification.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.to_sheafification_app CategoryTheory.GrothendieckTopology.toSheafification_appₓ'. -/ @[simp] theorem toSheafification_app (P : Cᵒᵖ ⥤ D) : (J.toSheafification D).app P = J.toSheafify P := rfl @@ -556,6 +766,12 @@ theorem toSheafification_app (P : Cᵒᵖ ⥤ D) : (J.toSheafification D).app P variable {D} +/- warning: category_theory.grothendieck_topology.is_iso_to_sheafify -> CategoryTheory.GrothendieckTopology.isIso_toSheafify is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J P) -> (CategoryTheory.IsIso.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J P) -> (CategoryTheory.IsIso.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.is_iso_to_sheafify CategoryTheory.GrothendieckTopology.isIso_toSheafifyₓ'. -/ theorem isIso_toSheafify {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : IsIso (J.toSheafify P) := by dsimp [to_sheafify] @@ -564,24 +780,48 @@ theorem isIso_toSheafify {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : IsIso exact @is_iso.comp_is_iso _ _ _ _ _ (J.to_plus P) ((J.plus_functor D).map (J.to_plus P)) _ _ #align category_theory.grothendieck_topology.is_iso_to_sheafify CategoryTheory.GrothendieckTopology.isIso_toSheafify +/- warning: category_theory.grothendieck_topology.iso_sheafify -> CategoryTheory.GrothendieckTopology.isoSheafify is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J P) -> (CategoryTheory.Iso.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.isoSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.isoSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4) P)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J P) -> (CategoryTheory.Iso.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.iso_sheafify CategoryTheory.GrothendieckTopology.isoSheafifyₓ'. -/ /-- If `P` is a sheaf, then `P` is isomorphic to `J.sheafify P`. -/ def isoSheafify {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : P ≅ J.sheafify P := letI := is_iso_to_sheafify J hP as_iso (J.to_sheafify P) #align category_theory.grothendieck_topology.iso_sheafify CategoryTheory.GrothendieckTopology.isoSheafify +/- warning: category_theory.grothendieck_topology.iso_sheafify_hom -> CategoryTheory.GrothendieckTopology.isoSheafify_hom is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (hP : CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J P), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.isoSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.isoSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P)) (CategoryTheory.Iso.hom.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.isoSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.isoSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.isoSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P hP)) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (hP : CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J P), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P)) (CategoryTheory.Iso.hom.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.isoSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P hP)) (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.iso_sheafify_hom CategoryTheory.GrothendieckTopology.isoSheafify_homₓ'. -/ @[simp] theorem isoSheafify_hom {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : (J.isoSheafify hP).Hom = J.toSheafify P := rfl #align category_theory.grothendieck_topology.iso_sheafify_hom CategoryTheory.GrothendieckTopology.isoSheafify_hom +/- warning: category_theory.grothendieck_topology.sheafify_lift -> CategoryTheory.GrothendieckTopology.sheafifyLift is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) -> (CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J Q) -> (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyLift._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_3) (CategoryTheory.GrothendieckTopology.sheafifyLift._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_4) P) Q) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2}, (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) -> (CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J Q) -> (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_lift CategoryTheory.GrothendieckTopology.sheafifyLiftₓ'. -/ /-- Given a sheaf `Q` and a morphism `P ⟶ Q`, construct a morphism from `J.sheafifcation P` to `Q`. -/ def sheafifyLift {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (hQ : Presheaf.IsSheaf J Q) : J.sheafify P ⟶ Q := J.plusLift (J.plusLift η hQ) hQ #align category_theory.grothendieck_topology.sheafify_lift CategoryTheory.GrothendieckTopology.sheafifyLift +/- warning: category_theory.grothendieck_topology.to_sheafify_sheafify_lift -> CategoryTheory.GrothendieckTopology.toSheafify_sheafifyLift is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (hQ : CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J Q), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η hQ)) η +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (hQ : CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J Q), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η hQ)) η +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.to_sheafify_sheafify_lift CategoryTheory.GrothendieckTopology.toSheafify_sheafifyLiftₓ'. -/ @[simp, reassoc.1] theorem toSheafify_sheafifyLift {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (hQ : Presheaf.IsSheaf J Q) : J.toSheafify P ≫ sheafifyLift J η hQ = η := @@ -590,6 +830,12 @@ theorem toSheafify_sheafifyLift {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (hQ : Presh simp #align category_theory.grothendieck_topology.to_sheafify_sheafify_lift CategoryTheory.GrothendieckTopology.toSheafify_sheafifyLift +/- warning: category_theory.grothendieck_topology.sheafify_lift_unique -> CategoryTheory.GrothendieckTopology.sheafifyLift_unique is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (hQ : CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J Q) (γ : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q), (Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) γ) η) -> (Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) γ (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η hQ)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (hQ : CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J Q) (γ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q), (Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) γ) η) -> (Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) γ (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η hQ)) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_lift_unique CategoryTheory.GrothendieckTopology.sheafifyLift_uniqueₓ'. -/ theorem sheafifyLift_unique {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (hQ : Presheaf.IsSheaf J Q) (γ : J.sheafify P ⟶ Q) : J.toSheafify P ≫ γ = η → γ = sheafifyLift J η hQ := by @@ -600,6 +846,12 @@ theorem sheafifyLift_unique {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (hQ : Presheaf. exact h #align category_theory.grothendieck_topology.sheafify_lift_unique CategoryTheory.GrothendieckTopology.sheafifyLift_unique +/- warning: category_theory.grothendieck_topology.iso_sheafify_inv -> CategoryTheory.GrothendieckTopology.isoSheafify_inv is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (hP : CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J P), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.isoSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.isoSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) P) (CategoryTheory.Iso.inv.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.isoSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.isoSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.isoSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P hP)) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P P (CategoryTheory.CategoryStruct.id.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P) hP) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (hP : CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J P), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) P) (CategoryTheory.Iso.inv.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.isoSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P hP)) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P P (CategoryTheory.CategoryStruct.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P) hP) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.iso_sheafify_inv CategoryTheory.GrothendieckTopology.isoSheafify_invₓ'. -/ @[simp] theorem isoSheafify_inv {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : (J.isoSheafify hP).inv = J.sheafifyLift (𝟙 _) hP := @@ -608,6 +860,12 @@ theorem isoSheafify_inv {P : Cᵒᵖ ⥤ D} (hP : Presheaf.IsSheaf J P) : simp [iso.comp_inv_eq] #align category_theory.grothendieck_topology.iso_sheafify_inv CategoryTheory.GrothendieckTopology.isoSheafify_inv +/- warning: category_theory.grothendieck_topology.sheafify_hom_ext -> CategoryTheory.GrothendieckTopology.sheafify_hom_ext is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) (γ : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q), (CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J Q) -> (Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) η) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.toSheafify._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.toSheafify._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) γ)) -> (Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) η γ) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) (γ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q), (CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J Q) -> (Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) η) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q (CategoryTheory.GrothendieckTopology.toSheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) γ)) -> (Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) Q) η γ) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_hom_ext CategoryTheory.GrothendieckTopology.sheafify_hom_extₓ'. -/ theorem sheafify_hom_ext {P Q : Cᵒᵖ ⥤ D} (η γ : J.sheafify P ⟶ Q) (hQ : Presheaf.IsSheaf J Q) (h : J.toSheafify P ≫ η = J.toSheafify P ≫ γ) : η = γ := by @@ -617,6 +875,12 @@ theorem sheafify_hom_ext {P Q : Cᵒᵖ ⥤ D} (η γ : J.sheafify P ⟶ Q) (hQ exact h #align category_theory.grothendieck_topology.sheafify_hom_ext CategoryTheory.GrothendieckTopology.sheafify_hom_ext +/- warning: category_theory.grothendieck_topology.sheafify_map_sheafify_lift -> CategoryTheory.GrothendieckTopology.sheafifyMap_sheafifyLift is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {R : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (γ : Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) Q R) (hR : CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J R), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) R) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_3.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S)) (CategoryTheory.GrothendieckTopology.sheafifyMap._proof_4.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_4 X)) Q) R (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q R γ hR)) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P R (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q R η γ) hR) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_4 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] {P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {Q : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} {R : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2} (η : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) P Q) (γ : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) Q R) (hR : CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J R), Eq.{max (succ u3) (succ u2)} (Quiver.Hom.{succ (max u3 u2), max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) R) (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P) (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q) R (CategoryTheory.GrothendieckTopology.sheafifyMap.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P Q η) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) Q R γ hR)) (CategoryTheory.GrothendieckTopology.sheafifyLift.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_3 P X S) (fun (X : C) => _inst_4 X) P R (CategoryTheory.CategoryStruct.comp.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2)) P Q R η γ) hR) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_map_sheafify_lift CategoryTheory.GrothendieckTopology.sheafifyMap_sheafifyLiftₓ'. -/ @[simp, reassoc.1] theorem sheafifyMap_sheafifyLift {P Q R : Cᵒᵖ ⥤ D} (η : P ⟶ Q) (γ : Q ⟶ R) (hR : Presheaf.IsSheaf J R) : @@ -635,12 +899,24 @@ variable [ConcreteCategory.{max v u} D] [PreservesLimits (forget D)] [∀ X : C, HasColimitsOfShape (J.cover X)ᵒᵖ D] [∀ X : C, PreservesColimitsOfShape (J.cover X)ᵒᵖ (forget D)] [ReflectsIsomorphisms (forget D)] +/- warning: category_theory.grothendieck_topology.sheafify_is_sheaf -> CategoryTheory.GrothendieckTopology.sheafify_isSheaf is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), CategoryTheory.Presheaf.IsSheaf.{u2, max u2 u3, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2), CategoryTheory.Presheaf.IsSheaf.{u2, max u3 u2, u3, u1} C _inst_1 D _inst_2 J (CategoryTheory.GrothendieckTopology.sheafify.{u1, u2, u3} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) P) +Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.sheafify_is_sheaf CategoryTheory.GrothendieckTopology.sheafify_isSheafₓ'. -/ theorem GrothendieckTopology.sheafify_isSheaf (P : Cᵒᵖ ⥤ D) : Presheaf.IsSheaf J (J.sheafify P) := GrothendieckTopology.Plus.isSheaf_plus_plus _ _ #align category_theory.grothendieck_topology.sheafify_is_sheaf CategoryTheory.GrothendieckTopology.sheafify_isSheaf variable (D) +/- warning: category_theory.presheaf_to_Sheaf -> CategoryTheory.presheafToSheaf is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)], CategoryTheory.Functor.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)], CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max (max u1 u3) u3 u2) u2, max (max (max u1 u3) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) +Case conversion may be inaccurate. Consider using '#align category_theory.presheaf_to_Sheaf CategoryTheory.presheafToSheafₓ'. -/ /-- The sheafification functor, as a functor taking values in `Sheaf`. -/ @[simps] def presheafToSheaf : (Cᵒᵖ ⥤ D) ⥤ Sheaf J D @@ -651,6 +927,12 @@ def presheafToSheaf : (Cᵒᵖ ⥤ D) ⥤ Sheaf J D map_comp' P Q R f g := Sheaf.Hom.ext _ _ <| J.sheafifyMap_comp _ _ #align category_theory.presheaf_to_Sheaf CategoryTheory.presheafToSheaf +/- warning: category_theory.presheaf_to_Sheaf_preserves_zero_morphisms -> CategoryTheory.presheafToSheaf_preservesZeroMorphisms is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_9 : CategoryTheory.Preadditive.{max u2 u3, u1} D _inst_2], CategoryTheory.Functor.PreservesZeroMorphisms.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Limits.CategoryTheory.Functor.hasZeroMorphisms.{u2, u3, max u2 u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{max u2 u3, u1} D _inst_2 _inst_9)) (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.preadditive.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 _inst_9)) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_9 : CategoryTheory.Preadditive.{max u3 u2, u1} D _inst_2], CategoryTheory.Functor.PreservesZeroMorphisms.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Limits.instHasZeroMorphismsFunctorCategory.{u2, u3, max u3 u2, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{max u3 u2, u1} D _inst_2 _inst_9)) (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.instPreadditiveSheafInstCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 _inst_9)) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8) +Case conversion may be inaccurate. Consider using '#align category_theory.presheaf_to_Sheaf_preserves_zero_morphisms CategoryTheory.presheafToSheaf_preservesZeroMorphismsₓ'. -/ instance presheafToSheaf_preservesZeroMorphisms [Preadditive D] : (presheafToSheaf J D).PreservesZeroMorphisms where map_zero' F G := by @@ -658,6 +940,12 @@ instance presheafToSheaf_preservesZeroMorphisms [Preadditive D] : erw [colimit.ι_map, comp_zero, J.plus_map_zero, J.diagram_nat_trans_zero, zero_comp] #align category_theory.presheaf_to_Sheaf_preserves_zero_morphisms CategoryTheory.presheafToSheaf_preservesZeroMorphisms +/- warning: category_theory.sheafification_adjunction -> CategoryTheory.sheafificationAdjunction is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)], CategoryTheory.Adjunction.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)], CategoryTheory.Adjunction.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) +Case conversion may be inaccurate. Consider using '#align category_theory.sheafification_adjunction CategoryTheory.sheafificationAdjunctionₓ'. -/ /-- The sheafification functor is left adjoint to the forgetful functor. -/ @[simps unit_app counit_app_val] def sheafificationAdjunction : presheafToSheaf J D ⊣ sheafToPresheaf J D := @@ -676,14 +964,32 @@ def sheafificationAdjunction : presheafToSheaf J D ⊣ sheafToPresheaf J D := rw [category.assoc] } #align category_theory.sheafification_adjunction CategoryTheory.sheafificationAdjunction +/- warning: category_theory.Sheaf_to_presheaf_is_right_adjoint -> CategoryTheory.sheafToPresheafIsRightAdjoint is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)], CategoryTheory.IsRightAdjoint.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)], CategoryTheory.IsRightAdjoint.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) +Case conversion may be inaccurate. Consider using '#align category_theory.Sheaf_to_presheaf_is_right_adjoint CategoryTheory.sheafToPresheafIsRightAdjointₓ'. -/ instance sheafToPresheafIsRightAdjoint : IsRightAdjoint (sheafToPresheaf J D) := ⟨_, sheafificationAdjunction J D⟩ #align category_theory.Sheaf_to_presheaf_is_right_adjoint CategoryTheory.sheafToPresheafIsRightAdjoint +/- warning: category_theory.presheaf_mono_of_mono -> CategoryTheory.presheaf_mono_of_mono is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {F : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2} {G : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2} (f : Quiver.Hom.{succ (max u2 u3), max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2))) F G) [_inst_9 : CategoryTheory.Mono.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) F G f], CategoryTheory.Mono.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 F) (CategoryTheory.Sheaf.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 G) (CategoryTheory.Sheaf.Hom.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 F G f) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {F : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2} {G : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2} (f : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) F G) [_inst_9 : CategoryTheory.Mono.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) F G f], CategoryTheory.Mono.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 F) (CategoryTheory.Sheaf.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 G) (CategoryTheory.Sheaf.Hom.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 F G f) +Case conversion may be inaccurate. Consider using '#align category_theory.presheaf_mono_of_mono CategoryTheory.presheaf_mono_of_monoₓ'. -/ instance presheaf_mono_of_mono {F G : Sheaf J D} (f : F ⟶ G) [Mono f] : Mono f.1 := (sheafToPresheaf J D).map_mono _ #align category_theory.presheaf_mono_of_mono CategoryTheory.presheaf_mono_of_mono +/- warning: category_theory.Sheaf.hom.mono_iff_presheaf_mono -> CategoryTheory.Sheaf.Hom.mono_iff_presheaf_mono is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] {F : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2} {G : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2} (f : Quiver.Hom.{succ (max u2 u3), max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2))) F G), Iff (CategoryTheory.Mono.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) F G f) (CategoryTheory.Mono.{max u2 u3, max u2 (max u2 u3) u3 u1} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 F) (CategoryTheory.Sheaf.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 G) (CategoryTheory.Sheaf.Hom.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 F G f)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (D : Type.{u1}) [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] {F : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2} {G : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2} (f : Quiver.Hom.{max (succ u3) (succ u2), max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) F G), Iff (CategoryTheory.Mono.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) F G f) (CategoryTheory.Mono.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 F) (CategoryTheory.Sheaf.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 G) (CategoryTheory.Sheaf.Hom.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 F G f)) +Case conversion may be inaccurate. Consider using '#align category_theory.Sheaf.hom.mono_iff_presheaf_mono CategoryTheory.Sheaf.Hom.mono_iff_presheaf_monoₓ'. -/ theorem Sheaf.Hom.mono_iff_presheaf_mono {F G : Sheaf J D} (f : F ⟶ G) : Mono f ↔ Mono f.1 := ⟨fun m => by skip @@ -694,6 +1000,12 @@ theorem Sheaf.Hom.mono_iff_presheaf_mono {F G : Sheaf J D} (f : F ⟶ G) : Mono variable {J D} +/- warning: category_theory.sheafification_iso -> CategoryTheory.sheafificationIso is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2), CategoryTheory.Iso.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) P (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationIso._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_5) (CategoryTheory.sheafificationIso._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 _inst_6) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.Sheaf.val.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2 P)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2), CategoryTheory.Iso.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) P (Prefunctor.obj.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2))) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) (CategoryTheory.Sheaf.val.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2 P)) +Case conversion may be inaccurate. Consider using '#align category_theory.sheafification_iso CategoryTheory.sheafificationIsoₓ'. -/ /-- A sheaf `P` is isomorphic to its own sheafification. -/ @[simps] def sheafificationIso (P : Sheaf J D) : P ≅ (presheafToSheaf J D).obj P.val @@ -708,11 +1020,23 @@ def sheafificationIso (P : Sheaf J D) : P ≅ (presheafToSheaf J D).obj P.val apply (J.iso_sheafify P.2).inv_hom_id #align category_theory.sheafification_iso CategoryTheory.sheafificationIso +/- warning: category_theory.is_iso_sheafification_adjunction_counit -> CategoryTheory.isIso_sheafificationAdjunction_counit is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] (P : CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2), CategoryTheory.IsIso.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u3 u1 u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.comp.{max u2 u3, max u2 u3, max u2 u3, max u3 u1 u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S)) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_6 X)) (fun (X : C) => _inst_7 X) _inst_8)) P) (CategoryTheory.Functor.obj.{max u2 u3, max u2 u3, max u3 u1 u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.id.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2)) P) (CategoryTheory.NatTrans.app.{max u2 u3, max u2 u3, max u3 u1 u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.comp.{max u2 u3, max u2 u3, max u2 u3, max u3 u1 u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S)) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_6 X)) (fun (X : C) => _inst_7 X) _inst_8)) (CategoryTheory.Functor.id.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Adjunction.counit.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S)) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_6 X)) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafificationAdjunction.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) P) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] (P : CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2), CategoryTheory.IsIso.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.comp.{max u3 u2, max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8))) P) (Prefunctor.obj.{succ (max u3 u2), succ (max u3 u2), max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2))) P) (CategoryTheory.NatTrans.app.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.comp.{max u3 u2, max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Adjunction.counit.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafificationAdjunction.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) P) +Case conversion may be inaccurate. Consider using '#align category_theory.is_iso_sheafification_adjunction_counit CategoryTheory.isIso_sheafificationAdjunction_counitₓ'. -/ instance isIso_sheafificationAdjunction_counit (P : Sheaf J D) : IsIso ((sheafificationAdjunction J D).counit.app P) := isIso_of_fully_faithful (sheafToPresheaf J D) _ #align category_theory.is_iso_sheafification_adjunction_counit CategoryTheory.isIso_sheafificationAdjunction_counit +/- warning: category_theory.sheafification_reflective -> CategoryTheory.sheafification_reflective is a dubious translation: +lean 3 declaration is + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u2 u3, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u2 u3, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.Cover.preorder.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u2 u3, max u2 u3, u1, succ (max u2 u3)} D _inst_2 Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.forget.{u1, max u2 u3, max u2 u3} D _inst_2 _inst_3)], CategoryTheory.IsIso.{max (max u3 u1 u2 u3) u2 u3, max (max u2 u3) u3 u1 u2 u3} (CategoryTheory.Functor.{max u2 u3, max u2 u3, max u3 u1 u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Functor.category.{max u2 u3, max u2 u3, max u3 u1 u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Functor.comp.{max u2 u3, max u2 u3, max u2 u3, max u3 u1 u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S)) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_6 X)) (fun (X : C) => _inst_7 X) _inst_8)) (CategoryTheory.Functor.id.{max u2 u3, max u3 u1 u2 u3} (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Adjunction.counit.{max u2 u3, max u2 u3, max u2 (max u2 u3) u3 u1, max u3 u1 u2 u3} (CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (CategoryTheory.sheafificationAdjunction._proof_1.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S)) (CategoryTheory.sheafificationAdjunction._proof_2.{u3, u2, u1} C _inst_1 J D _inst_2 (fun (X : C) => _inst_6 X)) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u2 u3, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafificationAdjunction.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u2 u3, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) +but is expected to have type + forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{max u2 u3, u1} D] [_inst_3 : CategoryTheory.ConcreteCategory.{max u2 u3, max u3 u2, u1} D _inst_2] [_inst_4 : CategoryTheory.Limits.PreservesLimits.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_5 : forall (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X), CategoryTheory.Limits.HasMultiequalizer.{max u3 u2, u1, max u3 u2} D _inst_2 (CategoryTheory.GrothendieckTopology.Cover.index.{u1, u2, u3} C _inst_1 X J D _inst_2 S P)] [_inst_6 : forall (X : C), CategoryTheory.Limits.HasColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, u1} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) D _inst_2] [_inst_7 : forall (X : C), CategoryTheory.Limits.PreservesColimitsOfShape.{max u3 u2, max u3 u2, max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (Opposite.{succ (max u3 u2)} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X)) (CategoryTheory.Category.opposite.{max u3 u2, max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) (CategoryTheory.GrothendieckTopology.instPreorderCover.{u2, u3} C _inst_1 J X))) (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)] [_inst_8 : CategoryTheory.ReflectsIsomorphisms.{max u3 u2, max u3 u2, u1, max (succ u3) (succ u2)} D _inst_2 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.forget.{u1, max u3 u2, max u3 u2} D _inst_2 _inst_3)], CategoryTheory.IsIso.{max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Functor.category.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Functor.comp.{max u3 u2, max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) (CategoryTheory.Functor.id.{max u3 u2, max (max u3 u2) u1} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2)) (CategoryTheory.Adjunction.counit.{max u3 u2, max u3 u2, max (max u3 u2) u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Functor.category.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.presheafToSheaf.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8) (CategoryTheory.sheafToPresheaf.{u2, max u3 u2, u3, u1} C _inst_1 J D _inst_2) (CategoryTheory.sheafificationAdjunction.{u1, u2, u3} C _inst_1 J D _inst_2 _inst_3 _inst_4 (fun (P : CategoryTheory.Functor.{u2, max u3 u2, u3, u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) D _inst_2) (X : C) (S : CategoryTheory.GrothendieckTopology.Cover.{u2, u3} C _inst_1 J X) => _inst_5 P X S) (fun (X : C) => _inst_6 X) (fun (X : C) => _inst_7 X) _inst_8)) +Case conversion may be inaccurate. Consider using '#align category_theory.sheafification_reflective CategoryTheory.sheafification_reflectiveₓ'. -/ instance sheafification_reflective : IsIso (sheafificationAdjunction J D).counit := NatIso.isIso_of_isIso_app _ #align category_theory.sheafification_reflective CategoryTheory.sheafification_reflective diff --git a/lake-manifest.json b/lake-manifest.json index fab8f2e7bd..70fe121804 100644 --- a/lake-manifest.json +++ b/lake-manifest.json @@ -4,15 +4,15 @@ [{"git": {"url": "https://github.com/leanprover-community/lean3port.git", "subDir?": null, - "rev": "2863b2711ed6d4f96dee6f513825f52d5db4667a", + "rev": "924c93445ea760290567df9b739c360ea02802dc", "name": "lean3port", - "inputRev?": "2863b2711ed6d4f96dee6f513825f52d5db4667a"}}, + "inputRev?": "924c93445ea760290567df9b739c360ea02802dc"}}, {"git": {"url": "https://github.com/leanprover-community/mathlib4.git", "subDir?": null, - "rev": "4372f6e7d70e9c24feb09ae088b28ddc027b8f49", + "rev": "1f7abb829f7f8aa9fd5bcd2400945f18015006a3", "name": "mathlib", - "inputRev?": "4372f6e7d70e9c24feb09ae088b28ddc027b8f49"}}, + "inputRev?": "1f7abb829f7f8aa9fd5bcd2400945f18015006a3"}}, {"git": {"url": "https://github.com/gebner/quote4", "subDir?": null, diff --git a/lakefile.lean b/lakefile.lean index f1eb7a45c7..3fdf430807 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -4,7 +4,7 @@ open Lake DSL System -- Usually the `tag` will be of the form `nightly-2021-11-22`. -- If you would like to use an artifact from a PR build, -- it will be of the form `pr-branchname-sha`. -def tag : String := "nightly-2023-04-13-12" +def tag : String := "nightly-2023-04-13-14" def releaseRepo : String := "leanprover-community/mathport" def oleanTarName : String := "mathlib3-binport.tar.gz" @@ -38,7 +38,7 @@ target fetchOleans (_pkg : Package) : Unit := do untarReleaseArtifact releaseRepo tag oleanTarName libDir return .nil -require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"2863b2711ed6d4f96dee6f513825f52d5db4667a" +require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"924c93445ea760290567df9b739c360ea02802dc" @[default_target] lean_lib Mathbin where