@@ -18,9 +18,7 @@ classes `preserves_biproduct` and `preserves_binary_biproduct`. We then
18
18
* construct the comparison morphisms between the image of a biproduct and the biproduct of the
19
19
images and show that the biproduct is preserved if one of them is an isomorphism,
20
20
* give the canonical isomorphism between the image of a biproduct and the biproduct of the images
21
- in case that the biproduct is preserved,
22
- * show that in a preadditive category, a functor preserves a biproduct if and only if it preserves
23
- the corresponding product if and only if it preserves the corresponding coproduct.
21
+ in case that the biproduct is preserved.
24
22
25
23
-/
26
24
@@ -380,216 +378,4 @@ end limits
380
378
381
379
end has_zero_morphisms
382
380
383
- open category_theory.functor
384
-
385
- section preadditive
386
- variables [preadditive C] [preadditive D] (F : C ⥤ D) [preserves_zero_morphisms F]
387
-
388
- namespace limits
389
-
390
- section fintype
391
- variables {J : Type } [fintype J]
392
-
393
- local attribute [tidy] tactic.discrete_cases
394
-
395
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite biproducts
396
- preserves finite products. -/
397
- def preserves_product_of_preserves_biproduct {f : J → C} [preserves_biproduct f F] :
398
- preserves_limit (discrete.functor f) F :=
399
- { preserves := λ c hc, is_limit.of_iso_limit
400
- ((is_limit.postcompose_inv_equiv (discrete.comp_nat_iso_discrete _ _) _).symm
401
- (is_bilimit_of_preserves F (bicone_is_bilimit_of_limit_cone_of_is_limit hc)).is_limit) $
402
- cones.ext (iso.refl _) (by tidy) }
403
-
404
- section
405
- local attribute [instance] preserves_product_of_preserves_biproduct
406
-
407
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite biproducts
408
- preserves finite products. -/
409
- def preserves_products_of_shape_of_preserves_biproducts_of_shape
410
- [preserves_biproducts_of_shape J F] : preserves_limits_of_shape (discrete J) F :=
411
- { preserves_limit := λ f, preserves_limit_of_iso_diagram _ discrete.nat_iso_functor.symm }
412
-
413
- end
414
-
415
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite products
416
- preserves finite biproducts. -/
417
- def preserves_biproduct_of_preserves_product {f : J → C} [preserves_limit (discrete.functor f) F] :
418
- preserves_biproduct f F :=
419
- { preserves := λ b hb, is_bilimit_of_is_limit _ $
420
- is_limit.of_iso_limit ((is_limit.postcompose_hom_equiv (discrete.comp_nat_iso_discrete _ _)
421
- (F.map_cone b.to_cone)).symm (is_limit_of_preserves F hb.is_limit)) $
422
- cones.ext (iso.refl _) (by tidy) }
423
-
424
- /-- If the (product-like) biproduct comparison for `F` and `f` is a monomorphism, then `F`
425
- preserves the biproduct of `f`. For the converse, see `map_biproduct`. -/
426
- def preserves_biproduct_of_mono_biproduct_comparison {f : J → C} [has_biproduct f]
427
- [has_biproduct (F.obj ∘ f)] [mono (biproduct_comparison F f)] : preserves_biproduct f F :=
428
- begin
429
- have : pi_comparison F f = (F.map_iso (biproduct.iso_product f)).inv ≫
430
- biproduct_comparison F f ≫ (biproduct.iso_product _).hom,
431
- { ext, convert pi_comparison_comp_π F f j.as; simp [← functor.map_comp] },
432
- haveI : is_iso (biproduct_comparison F f) := is_iso_of_mono_of_is_split_epi _,
433
- haveI : is_iso (pi_comparison F f) := by { rw this , apply_instance },
434
- haveI := preserves_product.of_iso_comparison F f,
435
- apply preserves_biproduct_of_preserves_product
436
- end
437
-
438
- /-- If the (coproduct-like) biproduct comparison for `F` and `f` is an epimorphism, then `F`
439
- preserves the biproduct of `F` and `f`. For the converse, see `map_biproduct`. -/
440
- def preserves_biproduct_of_epi_biproduct_comparison' {f : J → C} [has_biproduct f]
441
- [has_biproduct (F.obj ∘ f)] [epi (biproduct_comparison' F f)] : preserves_biproduct f F :=
442
- begin
443
- haveI : epi ((split_epi_biproduct_comparison F f).section_) := by simpa,
444
- haveI : is_iso (biproduct_comparison F f) := is_iso.of_epi_section'
445
- (split_epi_biproduct_comparison F f),
446
- apply preserves_biproduct_of_mono_biproduct_comparison
447
- end
448
-
449
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite products
450
- preserves finite biproducts. -/
451
- def preserves_biproducts_of_shape_of_preserves_products_of_shape
452
- [preserves_limits_of_shape (discrete J) F] : preserves_biproducts_of_shape J F :=
453
- { preserves := λ f, preserves_biproduct_of_preserves_product F }
454
-
455
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite biproducts
456
- preserves finite coproducts. -/
457
- def preserves_coproduct_of_preserves_biproduct {f : J → C} [preserves_biproduct f F] :
458
- preserves_colimit (discrete.functor f) F :=
459
- { preserves := λ c hc, is_colimit.of_iso_colimit
460
- ((is_colimit.precompose_hom_equiv (discrete.comp_nat_iso_discrete _ _) _).symm
461
- (is_bilimit_of_preserves F
462
- (bicone_is_bilimit_of_colimit_cocone_of_is_colimit hc)).is_colimit) $
463
- cocones.ext (iso.refl _) (by tidy) }
464
-
465
- section
466
- local attribute [instance] preserves_coproduct_of_preserves_biproduct
467
-
468
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite biproducts
469
- preserves finite coproducts. -/
470
- def preserves_coproducts_of_shape_of_preserves_biproducts_of_shape
471
- [preserves_biproducts_of_shape J F] : preserves_colimits_of_shape (discrete J) F :=
472
- { preserves_colimit := λ f, preserves_colimit_of_iso_diagram _ discrete.nat_iso_functor.symm }
473
-
474
- end
475
-
476
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite coproducts
477
- preserves finite biproducts. -/
478
- def preserves_biproduct_of_preserves_coproduct {f : J → C}
479
- [preserves_colimit (discrete.functor f) F] : preserves_biproduct f F :=
480
- { preserves := λ b hb, is_bilimit_of_is_colimit _ $
481
- is_colimit.of_iso_colimit ((is_colimit.precompose_inv_equiv (discrete.comp_nat_iso_discrete _ _)
482
- (F.map_cocone b.to_cocone)).symm (is_colimit_of_preserves F hb.is_colimit)) $
483
- cocones.ext (iso.refl _) (by tidy) }
484
-
485
- /-- A functor between preadditive categories that preserves (zero morphisms and) finite coproducts
486
- preserves finite biproducts. -/
487
- def preserves_biproducts_of_shape_of_preserves_coproducts_of_shape
488
- [preserves_colimits_of_shape (discrete J) F] : preserves_biproducts_of_shape J F :=
489
- { preserves := λ f, preserves_biproduct_of_preserves_coproduct F }
490
-
491
- end fintype
492
-
493
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary biproducts
494
- preserves binary products. -/
495
- def preserves_binary_product_of_preserves_binary_biproduct {X Y : C}
496
- [preserves_binary_biproduct X Y F] : preserves_limit (pair X Y) F :=
497
- { preserves := λ c hc, is_limit.of_iso_limit
498
- ((is_limit.postcompose_inv_equiv (by exact diagram_iso_pair _) _).symm
499
- (is_binary_bilimit_of_preserves F
500
- (binary_bicone_is_bilimit_of_limit_cone_of_is_limit hc)).is_limit) $
501
- cones.ext (iso.refl _) (λ j, by { rcases j with ⟨⟨⟩⟩, tidy }) }
502
-
503
- section
504
- local attribute [instance] preserves_binary_product_of_preserves_binary_biproduct
505
-
506
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary biproducts
507
- preserves binary products. -/
508
- def preserves_binary_products_of_preserves_binary_biproducts
509
- [preserves_binary_biproducts F] : preserves_limits_of_shape (discrete walking_pair) F :=
510
- { preserves_limit := λ K, preserves_limit_of_iso_diagram _ (diagram_iso_pair _).symm }
511
-
512
- end
513
-
514
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary products
515
- preserves binary biproducts. -/
516
- def preserves_binary_biproduct_of_preserves_binary_product {X Y : C}
517
- [preserves_limit (pair X Y) F] : preserves_binary_biproduct X Y F :=
518
- { preserves := λ b hb, is_binary_bilimit_of_is_limit _ $
519
- is_limit.of_iso_limit ((is_limit.postcompose_hom_equiv (by exact diagram_iso_pair _)
520
- (F.map_cone b.to_cone)).symm (is_limit_of_preserves F hb.is_limit)) $
521
- cones.ext (iso.refl _) (λ j, by { rcases j with ⟨⟨⟩⟩, tidy }) }
522
-
523
- /-- If the (product-like) biproduct comparison for `F`, `X` and `Y` is a monomorphism, then
524
- `F` preserves the biproduct of `X` and `Y`. For the converse, see `map_biprod`. -/
525
- def preserves_binary_biproduct_of_mono_biprod_comparison {X Y : C} [has_binary_biproduct X Y]
526
- [has_binary_biproduct (F.obj X) (F.obj Y)] [mono (biprod_comparison F X Y)] :
527
- preserves_binary_biproduct X Y F :=
528
- begin
529
- have : prod_comparison F X Y = (F.map_iso (biprod.iso_prod X Y)).inv ≫
530
- biprod_comparison F X Y ≫ (biprod.iso_prod _ _).hom := by { ext; simp [← functor.map_comp] },
531
- haveI : is_iso (biprod_comparison F X Y) := is_iso_of_mono_of_is_split_epi _,
532
- haveI : is_iso (prod_comparison F X Y) := by { rw this , apply_instance },
533
- haveI := preserves_limit_pair.of_iso_prod_comparison F X Y,
534
- apply preserves_binary_biproduct_of_preserves_binary_product
535
- end
536
-
537
- /-- If the (coproduct-like) biproduct comparison for `F`, `X` and `Y` is an epimorphism, then
538
- `F` preserves the biproduct of `X` and `Y`. For the converse, see `map_biprod`. -/
539
- def preserves_binary_biproduct_of_epi_biprod_comparison' {X Y : C} [has_binary_biproduct X Y]
540
- [has_binary_biproduct (F.obj X) (F.obj Y)] [epi (biprod_comparison' F X Y)] :
541
- preserves_binary_biproduct X Y F :=
542
- begin
543
- haveI : epi ((split_epi_biprod_comparison F X Y).section_) := by simpa,
544
- haveI : is_iso (biprod_comparison F X Y) := is_iso.of_epi_section'
545
- (split_epi_biprod_comparison F X Y),
546
- apply preserves_binary_biproduct_of_mono_biprod_comparison
547
- end
548
-
549
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary products
550
- preserves binary biproducts. -/
551
- def preserves_binary_biproducts_of_preserves_binary_products
552
- [preserves_limits_of_shape (discrete walking_pair) F] : preserves_binary_biproducts F :=
553
- { preserves := λ X Y, preserves_binary_biproduct_of_preserves_binary_product F }
554
-
555
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary biproducts
556
- preserves binary coproducts. -/
557
- def preserves_binary_coproduct_of_preserves_binary_biproduct {X Y : C}
558
- [preserves_binary_biproduct X Y F] : preserves_colimit (pair X Y) F :=
559
- { preserves := λ c hc, is_colimit.of_iso_colimit
560
- ((is_colimit.precompose_hom_equiv (by exact diagram_iso_pair _) _).symm
561
- (is_binary_bilimit_of_preserves F
562
- (binary_bicone_is_bilimit_of_colimit_cocone_of_is_colimit hc)).is_colimit) $
563
- cocones.ext (iso.refl _) (λ j, by { rcases j with ⟨⟨⟩⟩, tidy }) }
564
-
565
- section
566
- local attribute [instance] preserves_binary_coproduct_of_preserves_binary_biproduct
567
-
568
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary biproducts
569
- preserves binary coproducts. -/
570
- def preserves_binary_coproducts_of_preserves_binary_biproducts
571
- [preserves_binary_biproducts F] : preserves_colimits_of_shape (discrete walking_pair) F :=
572
- { preserves_colimit := λ K, preserves_colimit_of_iso_diagram _ (diagram_iso_pair _).symm }
573
-
574
- end
575
-
576
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary coproducts
577
- preserves binary biproducts. -/
578
- def preserves_binary_biproduct_of_preserves_binary_coproduct {X Y : C}
579
- [preserves_colimit (pair X Y) F] : preserves_binary_biproduct X Y F :=
580
- { preserves := λ b hb, is_binary_bilimit_of_is_colimit _ $
581
- is_colimit.of_iso_colimit ((is_colimit.precompose_inv_equiv (by exact diagram_iso_pair _)
582
- (F.map_cocone b.to_cocone)).symm (is_colimit_of_preserves F hb.is_colimit)) $
583
- cocones.ext (iso.refl _) (λ j, by { rcases j with ⟨⟨⟩⟩, tidy }) }
584
-
585
- /-- A functor between preadditive categories that preserves (zero morphisms and) binary coproducts
586
- preserves binary biproducts. -/
587
- def preserves_binary_biproducts_of_preserves_binary_coproducts
588
- [preserves_colimits_of_shape (discrete walking_pair) F] : preserves_binary_biproducts F :=
589
- { preserves := λ X Y, preserves_binary_biproduct_of_preserves_binary_coproduct F }
590
-
591
- end limits
592
-
593
- end preadditive
594
-
595
381
end category_theory
0 commit comments