@@ -19,16 +19,6 @@ Definition paths_ind_beta : forall A a P u, paths _ (paths_ind A a P u a (idpath
19
19
reflexivity.
20
20
Defined .
21
21
22
- (* Definition sigT : forall A, (A -> Type) -> Type := @sigT. *)
23
- (* Definition existT : forall A P x, P x -> sigT A P := @existT. *)
24
- (* Definition sigT_ind : forall A P (Q : sigT A P -> Type), *)
25
- (* (forall x p, Q (existT A P x p)) -> forall s, Q s := sigT_rect. *)
26
-
27
-
28
-
29
-
30
- (* *********************************************** *)
31
-
32
22
Arguments sigT {A}%type P%type.
33
23
Arguments existT {A}%type P%type _ _.
34
24
Arguments projT1 {A P} _ / .
@@ -3118,22 +3108,6 @@ Proof.
3118
3108
Defined .
3119
3109
3120
3110
3121
- (** Applying a two variable function to a [path_sigma]. *)
3122
-
3123
- (* Definition ap_path_sigma {A B} (P : A -> Type) (F : forall a : A, P a -> B) *)
3124
- (* {x x' : A} {y : P x} {y' : P x'} (p : x = x') (q : p # y = y') *)
3125
- (* : ap (fun w => F w.1 w.2) (path_sigma' P p q) *)
3126
- (* = ap _ (moveL_transport_V _ p _ _ q) *)
3127
- (* @ (transport_arrow_toconst _ _ _)^ @ ap10 (apD F p) y'. *)
3128
- (* Proof. *)
3129
- (* destruct p, q; reflexivity. *)
3130
- (* Defined. *)
3131
- (* Remark: this is also equal to: *)
3132
- (* = ap10 (apD F p^)^ y @ transport_arrow_toconst _ _ _ *)
3133
- (* @ ap (F x') (transport2 _ (inv_V p) y @ q). *)
3134
-
3135
-
3136
-
3137
3111
(** And we can simplify when the first equality is [1]. *)
3138
3112
Lemma ap_path_sigma_1p {A B : Type} {P : A -> Type} (F : forall a, P a -> B)
3139
3113
(a : A) {x y : P a} (p : x = y)
@@ -3143,22 +3117,6 @@ Proof.
3143
3117
Defined .
3144
3118
3145
3119
3146
- (** Applying a function constructed with [sigT_ind] to a [path_sigma] can be computed. Technically this computation should probably go by way of a 2-variable [ap], and should be done in the dependently typed case. *)
3147
-
3148
- (* Definition ap_sigT_rec_path_sigma {A : Type} (P : A -> Type) {Q : Type} *)
3149
- (* (x1 x2:A) (p:x1=x2) (y1:P x1) (y2:P x2) (q:p # y1 = y2) *)
3150
- (* (d : forall a, P a -> Q) *)
3151
- (* : ap (sigT_ind (fun _ => Q) d) (path_sigma' P p q) *)
3152
- (* = (transport_const p _)^ *)
3153
- (* @ (ap ((transport (fun _ => Q) p) o (d x1)) (transport_Vp _ p y1))^ *)
3154
-
3155
- (* @ (transport_arrow p _ _)^ *)
3156
- (* @ ap10 (apD d p) (p # y1) *)
3157
- (* @ ap (d x2) q. *)
3158
- (* Proof. *)
3159
- (* destruct p. destruct q. reflexivity. *)
3160
- (* Defined. *)
3161
-
3162
3120
3163
3121
(** A path between paths in a total space is commonly shown component wise. *)
3164
3122
@@ -3326,182 +3284,3 @@ Definition equiv_sigma_assoc `(P : A -> Type) (Q : {a : A & P a} -> Type)
3326
3284
(fun _ => 1)
3327
3285
(fun _ => 1)
3328
3286
(fun _ => 1)).
3329
-
3330
- (* Definition equiv_sigma_prod `(Q : (A * B) -> Type) *)
3331
- (* : {a : A & {b : B & Q (a,b)}} <~> sigT Q *)
3332
- (* := @BuildEquiv *)
3333
- (* _ _ _ *)
3334
- (* (@BuildIsEquiv *)
3335
- (* {a : A & {b : B & Q (a,b)}} (sigT Q) *)
3336
- (* (fun apq => ((apq.1, apq.2.1); apq.2.2)) *)
3337
- (* (fun apq => (fst apq.1; (snd apq.1; apq.2))) *)
3338
- (* (fun _ => 1) *)
3339
- (* (fun _ => 1) *)
3340
- (* (fun _ => 1)). *)
3341
-
3342
- (* Definition equiv_sigma_prod0 A B *)
3343
- (* : {a : A & B} <~> A * B *)
3344
- (* := BuildEquiv _ _ _ *)
3345
- (* (BuildIsEquiv *)
3346
- (* {a : A & B} (A * B) *)
3347
- (* (fun (ab : {a:A & B}) => (ab.1 , ab.2)) *)
3348
- (* (fun (ab : A*B) => (fst ab ; snd ab)) *)
3349
- (* (fun _ => 1) (fun _ => 1) (fun _ => 1)). *)
3350
-
3351
- (* (** ** Symmetry *) *)
3352
-
3353
- (* Definition equiv_sigma_symm `(P : A -> B -> Type) *)
3354
- (* : {a : A & {b : B & P a b}} <~> {b : B & {a : A & P a b}} *)
3355
- (* := ((equiv_sigma_prod (fun x => P (snd x) (fst x)))^-1) *)
3356
- (* oE (equiv_functor_sigma' (equiv_prod_symm A B) *)
3357
- (* (fun x => equiv_idmap (P (fst x) (snd x)))) *)
3358
- (* oE (equiv_sigma_prod (fun x => P (fst x) (snd x))). *)
3359
-
3360
- (* Definition equiv_sigma_symm0 (A B : Type) *)
3361
- (* : {a : A & B} <~> {b : B & A}. *)
3362
- (* Proof. *)
3363
- (* refine (BuildEquiv _ _ (fun (w:{a:A & B}) => (w.2 ; w.1)) _). *)
3364
- (* simple refine (BuildIsEquiv _ _ _ (fun (z:{b:B & A}) => (z.2 ; z.1)) *)
3365
- (* _ _ _); intros [x y]; reflexivity. *)
3366
- (* Defined. *)
3367
-
3368
- (* (** ** Universal mapping properties *) *)
3369
-
3370
- (* (** *** The positive universal property. *) *)
3371
- (* Global Instance isequiv_sigT_ind `{P : A -> Type} *)
3372
- (* (Q : sigT P -> Type) *)
3373
- (* : IsEquiv (sigT_ind Q) | 0 *)
3374
- (* := BuildIsEquiv *)
3375
- (* _ _ *)
3376
- (* (sigT_ind Q) *)
3377
- (* (fun f x y => f (x;y)) *)
3378
- (* (fun _ => 1) *)
3379
- (* (fun _ => 1) *)
3380
- (* (fun _ => 1). *)
3381
-
3382
- (* Definition equiv_sigT_ind `{P : A -> Type} *)
3383
- (* (Q : sigT P -> Type) *)
3384
- (* : (forall (x:A) (y:P x), Q (x;y)) <~> (forall xy, Q xy) *)
3385
- (* := BuildEquiv _ _ (sigT_ind Q) _. *)
3386
-
3387
- (* (** *** The negative universal property. *) *)
3388
-
3389
- (* Definition sigT_coind_uncurried *)
3390
- (* `{A : X -> Type} (P : forall x, A x -> Type) *)
3391
- (* : { f : forall x, A x & forall x, P x (f x) } *)
3392
- (* -> (forall x, sigT (P x)) *)
3393
- (* := fun fg => fun x => (fg.1 x ; fg.2 x). *)
3394
-
3395
- (* Definition sigT_coind *)
3396
- (* `{A : X -> Type} (P : forall x, A x -> Type) *)
3397
- (* (f : forall x, A x) (g : forall x, P x (f x)) *)
3398
- (* : (forall x, sigT (P x)) *)
3399
- (* := sigT_coind_uncurried P (f;g). *)
3400
-
3401
- (* Global Instance isequiv_sigT_coind *)
3402
- (* `{A : X -> Type} {P : forall x, A x -> Type} *)
3403
- (* : IsEquiv (sigT_coind_uncurried P) | 0 *)
3404
- (* := BuildIsEquiv *)
3405
- (* _ _ *)
3406
- (* (sigT_coind_uncurried P) *)
3407
- (* (fun h => existT (fun f => forall x, P x (f x)) *)
3408
- (* (fun x => (h x).1) *)
3409
- (* (fun x => (h x).2)) *)
3410
- (* (fun _ => 1) *)
3411
- (* (fun _ => 1) *)
3412
- (* (fun _ => 1). *)
3413
-
3414
- (* Definition equiv_sigT_coind *)
3415
- (* `(A : X -> Type) (P : forall x, A x -> Type) *)
3416
- (* : { f : forall x, A x & forall x, P x (f x) } *)
3417
- (* <~> (forall x, sigT (P x)) *)
3418
- (* := BuildEquiv _ _ (sigT_coind_uncurried P) _. *)
3419
-
3420
- (* (** ** Sigmas preserve truncation *) *)
3421
-
3422
- (* Global Instance trunc_sigma `{P : A -> Type} *)
3423
- (* `{IsTrunc n A} `{forall a, IsTrunc n (P a)} *)
3424
- (* : IsTrunc n (sigT P) | 100. *)
3425
- (* Proof. *)
3426
- (* generalize dependent A. *)
3427
- (* induction n; simpl; intros A P ac Pc. *)
3428
- (* { exists (center A; center (P (center A))). *)
3429
- (* intros [a ?]. *)
3430
- (* refine (path_sigma' P (contr a) (path_contr _ _)). } *)
3431
- (* { intros u v. *)
3432
- (* refine (trunc_equiv _ (path_sigma_uncurried P u v)). } *)
3433
- (* Defined. *)
3434
-
3435
- (* (** The sigma of an arbitrary family of *disjoint* hprops is an hprop. *) *)
3436
- (* Definition ishprop_sigma_disjoint *)
3437
- (* `{P : A -> Type} `{forall a, IsHProp (P a)} *)
3438
- (* : (forall x y, P x -> P y -> x = y) -> IsHProp { x : A & P x }. *)
3439
- (* Proof. *)
3440
- (* intros dj; apply hprop_allpath; intros [x px] [y py]. *)
3441
- (* refine (path_sigma' P (dj x y px py) _). *)
3442
- (* apply path_ishprop. *)
3443
- (* Defined. *)
3444
-
3445
- (* (** ** Subtypes (sigma types whose second components are hprops) *) *)
3446
-
3447
- (* (** To prove equality in a subtype, we only need equality of the first component. *) *)
3448
- (* Definition path_sigma_hprop {A : Type} {P : A -> Type} *)
3449
- (* `{forall x, IsHProp (P x)} *)
3450
- (* (u v : sigT P) *)
3451
- (* : u.1 = v.1 -> u = v *)
3452
- (* := path_sigma_uncurried P u v o pr1^-1. *)
3453
-
3454
- (* Global Instance isequiv_path_sigma_hprop {A P} `{forall x : A, IsHProp (P x)} {u v : sigT P} *)
3455
- (* : IsEquiv (@path_sigma_hprop A P _ u v) | 100 *)
3456
- (* := isequiv_compose. *)
3457
-
3458
- (* Hint Immediate isequiv_path_sigma_hprop : typeclass_instances. *)
3459
-
3460
- (* Definition equiv_path_sigma_hprop {A : Type} {P : A -> Type} *)
3461
- (* {HP : forall a, IsHProp (P a)} (u v : sigT P) *)
3462
- (* : (u.1 = v.1) <~> (u = v) *)
3463
- (* := BuildEquiv _ _ (path_sigma_hprop _ _) _. *)
3464
-
3465
- (* Definition isequiv_pr1_path_hprop {A} {P : A -> Type} *)
3466
- (* `{forall a, IsHProp (P a)} *)
3467
- (* x y *)
3468
- (* : IsEquiv (@pr1_path A P x y) *)
3469
- (* := _ : IsEquiv (path_sigma_hprop x y)^-1. *)
3470
-
3471
- (* Hint Immediate isequiv_pr1_path_hprop : typeclass_instances. *)
3472
-
3473
- (* (** We define this for ease of [SearchAbout IsEquiv ap pr1] *) *)
3474
- (* Definition isequiv_ap_pr1_hprop {A} {P : A -> Type} *)
3475
- (* `{forall a, IsHProp (P a)} *)
3476
- (* x y *)
3477
- (* : IsEquiv (@ap _ _ (@pr1 A P) x y) *)
3478
- (* := _. *)
3479
-
3480
- (* Definition path_sigma_hprop_1 {A : Type} {P : A -> Type} *)
3481
- (* `{forall x, IsHProp (P x)} (u : sigT P) *)
3482
- (* : path_sigma_hprop u u 1 = 1. *)
3483
- (* Proof. *)
3484
- (* unfold path_sigma_hprop. *)
3485
- (* unfold isequiv_pr1_contr; simpl. *)
3486
- (* (** Ugh *) *)
3487
- (* refine (ap (fun p => match p in (_ = v2) return (u = (u.1; v2)) with 1 => 1 end) *)
3488
- (* (contr (idpath u.2))). *)
3489
- (* Defined. *)
3490
-
3491
- (* (** The inverse of [path_sigma_hprop] has its own name, so we give special names to the section and retraction homotopies to help [rewrite] out. *) *)
3492
- (* Definition path_sigma_hprop_ap_pr1 {A : Type} {P : A -> Type} *)
3493
- (* `{forall x, IsHProp (P x)} (u v : sigT P) (p : u = v) *)
3494
- (* : path_sigma_hprop u v (ap pr1 p) = p *)
3495
- (* := eisretr (path_sigma_hprop u v) p. *)
3496
- (* Definition path_sigma_hprop_pr1_path {A : Type} {P : A -> Type} *)
3497
- (* `{forall x, IsHProp (P x)} (u v : sigT P) (p : u = v) *)
3498
- (* : path_sigma_hprop u v p..1 = p *)
3499
- (* := eisretr (path_sigma_hprop u v) p. *)
3500
- (* Definition ap_pr1_path_sigma_hprop {A : Type} {P : A -> Type} *)
3501
- (* `{forall x, IsHProp (P x)} (u v : sigT P) (p : u.1 = v.1) *)
3502
- (* : ap pr1 (path_sigma_hprop u v p) = p *)
3503
- (* := eissect (path_sigma_hprop u v) p. *)
3504
- (* Definition pr1_path_path_sigma_hprop {A : Type} {P : A -> Type} *)
3505
- (* `{forall x, IsHProp (P x)} (u v : sigT P) (p : u.1 = v.1) *)
3506
- (* : (path_sigma_hprop u v p)..1 = p *)
3507
- (* := eissect (path_sigma_hprop u v) p. *)
0 commit comments