|
1 | 1 | Require Import Basics.Overture Basics.PathGroupoids Basics.Tactics Basics.Equivalences. |
2 | | -Require Import Types.Sum Types.Bool Types.Paths. |
3 | | -Require Import WildCat.Core WildCat.Bifunctor. |
| 2 | +Require Import Types.Sum Types.Bool Types.Paths Types.Forall. |
| 3 | +Require Import WildCat.Core WildCat.Bifunctor WildCat.Equiv. |
4 | 4 | Require Import Colimits.Pushout. |
5 | 5 | Require Import Cubical.DPath. |
6 | 6 | Require Import Pointed.Core. |
@@ -411,3 +411,77 @@ Proof. |
411 | 411 | + intros X A C f g. |
412 | 412 | exact (functor_smash_compose f (Id _) g (Id _)). |
413 | 413 | Defined. |
| 414 | + |
| 415 | +(** ** Symmetry of the smash product *) |
| 416 | + |
| 417 | +Definition pswap (X Y : pType) : Smash X Y $-> Smash Y X |
| 418 | + := Build_pMap _ _ (Smash_rec (flip sm) auxr auxl gluer gluel) 1. |
| 419 | + |
| 420 | +Definition pswap_pswap {X Y : pType} |
| 421 | + : pswap X Y $o pswap Y X $== pmap_idmap. |
| 422 | +Proof. |
| 423 | + snrapply Build_pHomotopy. |
| 424 | + - snrapply Smash_ind. |
| 425 | + 1-3: reflexivity. |
| 426 | + + intros y. |
| 427 | + rapply (transport_paths_FFlr' (f := pswap _ _)). |
| 428 | + apply equiv_p1_1q. |
| 429 | + lhs nrapply ap. |
| 430 | + 1: apply Smash_rec_beta_gluel. |
| 431 | + apply Smash_rec_beta_gluer. |
| 432 | + + intros x. |
| 433 | + rapply (transport_paths_FFlr' (f := pswap _ _)). |
| 434 | + apply equiv_p1_1q. |
| 435 | + lhs nrapply ap. |
| 436 | + 1: apply Smash_rec_beta_gluer. |
| 437 | + apply Smash_rec_beta_gluel. |
| 438 | + - reflexivity. |
| 439 | +Defined. |
| 440 | + |
| 441 | +Definition pequiv_pswap {X Y : pType} : Smash X Y $<~> Smash Y X. |
| 442 | +Proof. |
| 443 | + snrapply cate_adjointify. |
| 444 | + 1,2: exact (pswap _ _). |
| 445 | + 1,2: exact pswap_pswap. |
| 446 | +Defined. |
| 447 | + |
| 448 | +Definition pswap_natural {A B X Y : pType} (f : A $-> X) (g : B $-> Y) |
| 449 | + : pswap X Y $o functor_smash f g $== functor_smash g f $o pswap A B. |
| 450 | +Proof. |
| 451 | + snrapply Build_pHomotopy. |
| 452 | + - snrapply Smash_ind. |
| 453 | + 1-3: reflexivity. |
| 454 | + + intros a. |
| 455 | + nrapply transport_paths_FlFr'. |
| 456 | + apply equiv_p1_1q. |
| 457 | + rhs nrapply (ap_compose (pswap A B) _ (gluel a)). |
| 458 | + rhs nrapply ap. |
| 459 | + 2: apply Smash_rec_beta_gluel. |
| 460 | + rhs nrapply Smash_rec_beta_gluer. |
| 461 | + lhs nrapply (ap_compose (functor_smash f g) (pswap X Y) (gluel a)). |
| 462 | + lhs nrapply ap. |
| 463 | + 1: apply Smash_rec_beta_gluel. |
| 464 | + lhs nrapply (ap_pp (pswap X Y) (ap011 sm 1 (point_eq g)) (gluel (f a))). |
| 465 | + lhs nrapply whiskerL. |
| 466 | + 1: apply Smash_rec_beta_gluel. |
| 467 | + apply whiskerR. |
| 468 | + symmetry. |
| 469 | + exact (ap_compose _ _ _). |
| 470 | + + intros b. |
| 471 | + nrapply transport_paths_FlFr'. |
| 472 | + apply equiv_p1_1q. |
| 473 | + rhs nrapply (ap_compose (pswap A B) _ (gluer b)). |
| 474 | + rhs nrapply ap. |
| 475 | + 2: apply Smash_rec_beta_gluer. |
| 476 | + rhs nrapply Smash_rec_beta_gluel. |
| 477 | + lhs nrapply (ap_compose (functor_smash f g) (pswap X Y) (gluer b)). |
| 478 | + lhs nrapply ap. |
| 479 | + 1: apply Smash_rec_beta_gluer. |
| 480 | + lhs nrapply (ap_pp (pswap X Y) (ap011 sm (point_eq f) 1) (gluer (g b))). |
| 481 | + lhs nrapply whiskerL. |
| 482 | + 1: apply Smash_rec_beta_gluer. |
| 483 | + apply whiskerR. |
| 484 | + symmetry. |
| 485 | + exact (ap011_compose _ _ (point_eq f) 1). |
| 486 | + - by simpl; pelim f g. |
| 487 | +Defined. |
0 commit comments