Skip to content

Commit e24b380

Browse files
committed
clean minihott
1 parent 7a991a1 commit e24b380

File tree

1 file changed

+0
-221
lines changed

1 file changed

+0
-221
lines changed

MiniHoTT.v

-221
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,6 @@ Definition paths_ind_beta : forall A a P u, paths _ (paths_ind A a P u a (idpath
1919
reflexivity.
2020
Defined.
2121

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-
3222
Arguments sigT {A}%type P%type.
3323
Arguments existT {A}%type P%type _ _.
3424
Arguments projT1 {A P} _ / .
@@ -3118,22 +3108,6 @@ Proof.
31183108
Defined.
31193109

31203110

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-
31373111
(** And we can simplify when the first equality is [1]. *)
31383112
Lemma ap_path_sigma_1p {A B : Type} {P : A -> Type} (F : forall a, P a -> B)
31393113
(a : A) {x y : P a} (p : x = y)
@@ -3143,22 +3117,6 @@ Proof.
31433117
Defined.
31443118

31453119

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-
31623120

31633121
(** A path between paths in a total space is commonly shown component wise. *)
31643122

@@ -3326,182 +3284,3 @@ Definition equiv_sigma_assoc `(P : A -> Type) (Q : {a : A & P a} -> Type)
33263284
(fun _ => 1)
33273285
(fun _ => 1)
33283286
(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

Comments
 (0)