(* -*- mode: coq; coq-prog-args: ("-nois" "-indices-matter") -*- *) (* File reduced by coq-bug-finder from original input, then from 2553 lines to 1932 lines, then from 1946 lines to 1932 lines, then from 2467 lines to 1002 lines, then from 1016 lines to 1002 lines *) (* coqc version 8.5 (January 2016) compiled on Jan 23 2016 16:15:22 with OCaml 4.01.0
coqtop version 8.5 (January 2016) *) RequireImport Corelib.Init.Ltac. Inductive False := . Axiom proof_admitted : False.
Tactic Notation"admit" := case proof_admitted. Require Corelib.Init.Datatypes.
Inductive sum (A B : Type) : Type :=
| inl : A -> sum A B
| inr : B -> sum A B. Notation nat := Corelib.Init.Datatypes.nat. Notation O := Corelib.Init.Datatypes.O. Notation S := Corelib.Init.Datatypes.S. Notation"x + y" := (sum x y) : type_scope.
Record prod (A B : Type) := pair { fst : A ; snd : B }.
End Specif. ModuleExport HoTT_DOT_Basics_DOT_Overture. ModuleExport HoTT. ModuleExport Basics. ModuleExport Overture.
GlobalSet Keyed Unification.
GlobalUnset Strict Universe Declaration.
Notation Type0 := Set.
Definition Type1@{i} := Eval hnf in let gt := (Set : Type@{i}) in Type@{i}.
Definition Type2@{i j} := Eval hnf in let gt := (Type1@{j} : Type@{i}) in Type@{i}.
Definition Type2le@{i j} := Eval hnf in let gt := (Set : Type@{i}) in let ge := ((fun x => x) : Type1@{j} -> Type@{i}) in Type@{i}.
Notation idmap := (fun x => x). DelimitScope function_scope with function. DelimitScope path_scope with path. DelimitScope fibration_scope with fibration. DelimitScope trunc_scope with trunc.
Definition transport {A : Type} (P : A -> Type) {x y : A} (p : x = y) (u : P x) : P y := match p with idpath => u end.
Notation"p # x" := (transport _ p x) (right associativity, at level 65, only parsing) : path_scope.
Definition ap {A B:Type} (f:A -> B) {x y:A} (p:x = y) : f x = f y
:= match p with idpath => idpath end.
Definition pointwise_paths {A} {P:A->Type} (f g:forall x:A, P x)
:= forall x:A, f x = g x.
Notation"f == g" := (pointwise_paths f g) (at level 70, no associativity) : type_scope.
Definition Sect {A B : Type} (s : A -> B) (r : B -> A) := forall x : A, r (s x) = x.
Class IsEquiv {A B : Type} (f : A -> B) := BuildIsEquiv {
equiv_inv : B -> A ;
eisretr : Sect equiv_inv f;
eissect : Sect f equiv_inv;
eisadj : forall x : A, eisretr (f x) = ap f (eissect x)
}.
Fixpoint IsTrunc_internal (n : trunc_index) (A : Type) : Type := match n with
| -2 => Contr_internal A
| n'.+1 => forall (x y : A), IsTrunc_internal n' (x = y) end.
Class IsTrunc (n : trunc_index) (A : Type) : Type :=
Trunc_is_trunc : IsTrunc_internal n A.
GlobalInstance istrunc_paths (A : Type) n `{H : IsTrunc n.+1 A} (x y : A)
: IsTrunc n (x = y)
:= H x y.
Record pType :=
{ pointed_type : Type ;
ispointed_type : IsPointed pointed_type }.
Coercion pointed_type : pType >-> Sortclass.
Global Existing Instance ispointed_type.
Definition hfiber {A B : Type} (f : A -> B) (y : B) := { x : A & f x = y }.
Ltac revert_opaque x :=
revert x; matchgoalwith
| [ |- forall _, _ ] => idtac
| _ => fail 1 "Reverted constant is not an opaque variable" end.
End Overture.
End Basics.
End HoTT.
End HoTT_DOT_Basics_DOT_Overture. ModuleExport HoTT_DOT_Basics_DOT_PathGroupoids. ModuleExport HoTT. ModuleExport Basics. ModuleExport PathGroupoids.
LocalOpenScope path_scope.
Definition concat_p1 {A : Type} {x y : A} (p : x = y) :
p @ 1 = p
:= match p with idpath => 1 end.
Definition concat_1p {A : Type} {x y : A} (p : x = y) :
1 @ p = p
:= match p with idpath => 1 end.
Definition concat_p_pp {A : Type} {x y z t : A} (p : x = y) (q : y = z) (r : z = t) :
p @ (q @ r) = (p @ q) @ r := match r with idpath => match q with idpath => match p with idpath => 1 endendend.
Definition concat_pp_p {A : Type} {x y z t : A} (p : x = y) (q : y = z) (r : z = t) :
(p @ q) @ r = p @ (q @ r) := match r with idpath => match q with idpath => match p with idpath => 1 endendend.
Definition concat_pV {A : Type} {x y : A} (p : x = y) :
p @ p^ = 1
:= match p with idpath => 1 end.
Definition moveR_Vp {A : Type} {x y z : A} (p : x = z) (q : y = z) (r : x = y) :
p = r @ q -> r^ @ p = q.
admit. Defined.
Definition moveL_Vp {A : Type} {x y z : A} (p : x = z) (q : y = z) (r : x = y) :
r @ q = p -> q = r^ @ p.
admit. Defined.
Definition moveR_M1 {A : Type} {x y : A} (p q : x = y) :
1 = p^ @ q -> p = q.
admit. Defined.
Definition ap_pp {A B : Type} (f : A -> B) {x y z : A} (p : x = y) (q : y = z) :
ap f (p @ q) = (ap f p) @ (ap f q)
:= match q with
idpath => match p with idpath => 1 end end.
Definition ap_V {A B : Type} (f : A -> B) {x y : A} (p : x = y) :
ap f (p^) = (ap f p)^
:= match p with idpath => 1 end.
Definition ap_compose {A B C : Type} (f : A -> B) (g : B -> C) {x y : A} (p : x = y) :
ap (g o f) p = ap g (ap f p)
:= match p with idpath => 1 end.
Definition concat_pA1 {A : Type} {f : A -> A} (p : forall x, x = f x) {x y : A} (q : x = y) :
(p x) @ (ap f q) = q @ (p y)
:= match q as i in (_ = y) return (p x @ ap f i = i @ p y) with
| idpath => concat_p1 _ @ (concat_1p _)^ end.
End PathGroupoids.
End Basics.
End HoTT.
End HoTT_DOT_Basics_DOT_PathGroupoids. ModuleExport HoTT_DOT_Basics_DOT_Equivalences. ModuleExport HoTT. ModuleExport Basics. ModuleExport Equivalences.
Definition isequiv_commsq {A B C D}
(f : A -> B) (g : C -> D) (h : A -> C) (k : B -> D)
(p : k o f == g o h)
`{IsEquiv _ _ f} `{IsEquiv _ _ h} `{IsEquiv _ _ k}
: IsEquiv g.
admit. Defined.
Section Adjointify.
Context {A B : Type} (f : A -> B) (g : B -> A).
Context (isretr : Sect g f) (issect : Sect f g).
Let issect' := fun x =>
ap g (ap f (issect x)^) @ ap g (isretr (f x)) @ issect x.
Let is_adjoint' (a : A) : isretr (f a) = ap f (issect' a). Proof. unfold issect'. apply moveR_M1. repeatrewrite ap_pp, concat_p_pp; rewrite <- ap_compose. rewrite (concat_pA1 (fun b => (isretr b)^) (ap f (issect a)^)). repeatrewrite concat_pp_p; rewrite ap_V; apply moveL_Vp; rewrite concat_p1. rewrite concat_p_pp, <- ap_compose. rewrite (concat_pA1 (fun b => (isretr b)^) (isretr (f a))). rewrite concat_pV, concat_1p; reflexivity. Qed.
Definition isequiv_adjointify : IsEquiv f
:= BuildIsEquiv A B f g isretr issect' is_adjoint'.
End Adjointify.
End Equivalences.
End Basics.
End HoTT.
End HoTT_DOT_Basics_DOT_Equivalences. ModuleExport HoTT_DOT_Basics_DOT_Trunc. ModuleExport HoTT. ModuleExport Basics. ModuleExport Trunc. GeneralizableVariables A B m n f.
Definition trunc_equiv A {B} (f : A -> B)
`{IsTrunc n A} `{IsEquiv A B f}
: IsTrunc n B.
admit. Defined.
Record TruncType (n : trunc_index) := BuildTruncType {
trunctype_type : Type ;
istrunc_trunctype_type : IsTrunc n trunctype_type
}.
Definition path_sigma_uncurried {A : Type} (P : A -> Type) (u v : sigT P)
(pq : {p : u.1 = v.1 & p # u.2 = v.2})
: u = v
:= match pq.2 in (_ = v2) return u = (v.1; v2) with
| 1 => match pq.1 as p in (_ = v1) return u = (v1; p # u.2) with
| 1 => 1 end end.
Definition path_sigma {A : Type} (P : A -> Type) (u v : sigT P)
(p : u.1 = v.1) (q : p # u.2 = v.2)
: u = v
:= path_sigma_uncurried P u v (p;q).
Definition path_sigma' {A : Type} (P : A -> Type) {x x' : A} {y : P x} {y' : P x'}
(p : x = x') (q : p # y = y')
: (x;y) = (x';y')
:= path_sigma P (x;y) (x';y') p q.
GlobalInstance isequiv_pr1_contr {A} {P : A -> Type}
`{forall a, Contr (P a)}
: IsEquiv (@pr1 A P) | 100. Proof.
refine (isequiv_adjointify (@pr1 A P)
(fun a => (a ; center (P a))) _ _).
- intros a; reflexivity.
- intros [a p].
refine (path_sigma' P 1 (contr _)). Defined.
Definition path_sigma_hprop {A : Type} {P : A -> Type}
`{forall x, IsHProp (P x)}
(u v : sigT P)
: u.1 = v.1 -> u = v
:= path_sigma_uncurried P u v o pr1^-1.
End Sigma.
End Types.
End HoTT.
End HoTT_DOT_Types_DOT_Sigma. ModuleExport HoTT_DOT_Extensions. ModuleExport HoTT. ModuleExport Extensions.
Section Extensions.
Definition ExtensionAlong {A B : Type} (f : A -> B)
(P : B -> Type) (d : forall x:A, P (f x))
:= { s : forall y:B, P y & forall x:A, s (f x) = d x }.
Fixpoint ExtendableAlong@{i j k l}
(n : nat) {A : Type@{i}} {B : Type@{j}}
(f : A -> B) (C : B -> Type@{k}) : Type@{l}
:= match n with
| O => Unit@{l}
| S n => (forall (g : forall a, C (f a)),
ExtensionAlong@{i j k l l} f C g) * forall (h k : forall b, C b),
ExtendableAlong n f (fun b => h b = k b) end.
Definition ooExtendableAlong@{i j k l}
{A : Type@{i}} {B : Type@{j}}
(f : A -> B) (C : B -> Type@{k}) : Type@{l}
:= forall n, ExtendableAlong@{i j k l} n f C.
End Extensions.
End Extensions.
End HoTT.
End HoTT_DOT_Extensions. ModuleExport HoTT. ModuleExport Modalities. ModuleExport ReflectiveSubuniverse.
Parameter O_reflector@{u a i} : forall (O : ReflectiveSubuniverse@{u a}),
Type2le@{i a} -> Type2le@{i a}.
Parameter In@{u a i} : forall (O : ReflectiveSubuniverse@{u a}),
Type2le@{i a} -> Type2le@{i a}.
Parameter O_inO@{u a i} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
In@{u a i} O (O_reflector@{u a i} O T).
Parameter to@{u a i} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
T -> O_reflector@{u a i} O T.
Parameter inO_equiv_inO@{u a i j k} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}) (U : Type@{j})
(T_inO : In@{u a i} O T) (f : T -> U) (feq : IsEquiv f),
let gei := ((fun x => x) : Type@{i} -> Type@{k}) in let gej := ((fun x => x) : Type@{j} -> Type@{k}) in
In@{u a j} O U.
Parameter hprop_inO@{u a i}
: Funext -> forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
IsHProp (In@{u a i} O T).
Parameter extendable_to_O@{u a i j k}
: forall (O : ReflectiveSubuniverse@{u a}) {P : Type2le@{i a}} {Q : Type2le@{j a}} {Q_inO : In@{u a j} O Q},
ooExtendableAlong@{i i j k} (to O P) (fun _ => Q).
Definition O_reflector@{u a i} (O : ReflectiveSubuniverse@{u a})
:= Os.O_reflector@{u a i} (Res.ReflectiveSubuniverses_restriction O). Definition In@{u a i} (O : ReflectiveSubuniverse@{u a})
:= Os.In@{u a i} (Res.ReflectiveSubuniverses_restriction O). Definition O_inO@{u a i} (O : ReflectiveSubuniverse@{u a})
:= Os.O_inO@{u a i} (Res.ReflectiveSubuniverses_restriction O). Definition to@{u a i} (O : ReflectiveSubuniverse@{u a})
:= Os.to@{u a i} (Res.ReflectiveSubuniverses_restriction O). Definition inO_equiv_inO@{u a i j k} (O : ReflectiveSubuniverse@{u a})
:= Os.inO_equiv_inO@{u a i j k} (Res.ReflectiveSubuniverses_restriction O). Definition hprop_inO@{u a i} (H : Funext) (O : ReflectiveSubuniverse@{u a})
:= Os.hprop_inO@{u a i} H (Res.ReflectiveSubuniverses_restriction O). Definition extendable_to_O@{u a i j k} (O : ReflectiveSubuniverse@{u a})
:= @Os.extendable_to_O@{u a i j k} (Res.ReflectiveSubuniverses_restriction@{u a} O).
Definition O_reflector@{u a i} : forall (O : ReflectiveSubuniverse@{u a}),
Type2le@{i a} -> Type2le@{i a}.
admit. Defined.
Definition In@{u a i} : forall (O : ReflectiveSubuniverse@{u a}),
Type2le@{i a} -> Type2le@{i a}. Proof. intros [O|O]; [ exact (Os1.In@{u a i} O)
| exact (Os2.In@{u a i} O) ]. Defined.
Definition O_inO@{u a i}
: forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
In@{u a i} O (O_reflector@{u a i} O T).
admit. Defined.
Definition to@{u a i} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
T -> O_reflector@{u a i} O T.
admit. Defined.
Definition inO_equiv_inO@{u a i j k} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}) (U : Type@{j})
(T_inO : In@{u a i} O T) (f : T -> U) (feq : IsEquiv f),
In@{u a j} O U. Proof. intros [O|O]; [ exact (Os1.inO_equiv_inO@{u a i j k} O)
| exact (Os2.inO_equiv_inO@{u a i j k} O) ]. Defined.
Definition hprop_inO@{u a i}
: Funext -> forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
IsHProp (In@{u a i} O T).
admit. Defined.
Definition extendable_to_O@{u a i j k}
: forall (O : ReflectiveSubuniverse@{u a}) {P : Type2le@{i a}} {Q : Type2le@{j a}} {Q_inO : In@{u a j} O Q},
ooExtendableAlong@{i i j k} (to O P) (fun _ => Q).
admit. Defined.
End ReflectiveSubuniverses_FamUnion.
End ReflectiveSubuniverse.
End Modalities.
End HoTT.
ModuleType Modalities.
Parameter Modality@{u a} : Type2@{u a}.
Parameter O_reflector@{u a i} : forall (O : Modality@{u a}),
Type2le@{i a} -> Type2le@{i a}.
Parameter In@{u a i} : forall (O : Modality@{u a}),
Type2le@{i a} -> Type2le@{i a}.
Parameter O_inO@{u a i} : forall (O : Modality@{u a}) (T : Type@{i}),
In@{u a i} O (O_reflector@{u a i} O T).
Parameter to@{u a i} : forall (O : Modality@{u a}) (T : Type@{i}),
T -> O_reflector@{u a i} O T.
Parameter inO_equiv_inO@{u a i j k} : forall (O : Modality@{u a}) (T : Type@{i}) (U : Type@{j})
(T_inO : In@{u a i} O T) (f : T -> U) (feq : IsEquiv f),
let gei := ((fun x => x) : Type@{i} -> Type@{k}) in let gej := ((fun x => x) : Type@{j} -> Type@{k}) in
In@{u a j} O U.
Parameter hprop_inO@{u a i}
: Funext -> forall (O : Modality@{u a}) (T : Type@{i}),
IsHProp (In@{u a i} O T).
Fixpoint O_extendable@{u a i j k} (O : Modality@{u a})
(A : Type@{i}) (B : O_reflector O A -> Type@{j})
(B_inO : forall a, In@{u a j} O (B a)) (n : nat)
: ExtendableAlong@{i i j k} n (to O A) B.
admit. Defined.
Definition ReflectiveSubuniverse := Modality.
Definition O_reflector@{u a i} := O_reflector@{u a i}.
Definition In@{u a i} : forall (O : ReflectiveSubuniverse@{u a}),
Type2le@{i a} -> Type2le@{i a}
:= In@{u a i}. Definition O_inO@{u a i} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
In@{u a i} O (O_reflector@{u a i} O T)
:= O_inO@{u a i}. Definition to@{u a i} := to@{u a i}. Definition inO_equiv_inO@{u a i j k} : forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}) (U : Type@{j})
(T_inO : In@{u a i} O T) (f : T -> U) (feq : IsEquiv f),
In@{u a j} O U
:= inO_equiv_inO@{u a i j k}. Definition hprop_inO@{u a i}
: Funext -> forall (O : ReflectiveSubuniverse@{u a}) (T : Type@{i}),
IsHProp (In@{u a i} O T)
:= hprop_inO@{u a i}.
Definition extendable_to_O@{u a i j k} (O : ReflectiveSubuniverse@{u a})
{P : Type2le@{i a}} {Q : Type2le@{j a}} {Q_inO : In@{u a j} O Q}
: ooExtendableAlong@{i i j k} (to O P) (fun _ => Q)
:= fun n => O_extendable O P (fun _ => Q) (fun _ => Q_inO) n.
End Modalities_to_ReflectiveSubuniverses.
ModuleType EasyModalities.
Parameter Modality@{u a} : Type2@{u a}.
Parameter O_reflector@{u a i} : forall (O : Modality@{u a}),
Type2le@{i a} -> Type2le@{i a}.
Parameter to@{u a i} : forall (O : Modality@{u a}) (T : Type@{i}),
T -> O_reflector@{u a i} O T.
Parameter minO_pathsO@{u a i}
: forall (O : Modality@{u a}) (A : Type@{i})
(z z' : O_reflector@{u a i} O A),
IsEquiv (to@{u a i} O (z = z')).
Definition O_reflector@{u a i} := O_reflector@{u a i}. Definition to@{u a i} := to@{u a i}.
Definition In@{u a i}
: forall (O : Modality@{u a}), Type@{i} -> Type@{i}
:= fun O A => IsEquiv@{i i} (to O A).
Definition hprop_inO@{u a i} `{Funext} (O : Modality@{u a})
(T : Type@{i})
: IsHProp (In@{u a i} O T).
admit. Defined.
Definition O_ind_internal@{u a i j k} (O : Modality@{u a})
(A : Type@{i}) (B : O_reflector@{u a i} O A -> Type@{j})
(B_inO : forall oa, In@{u a j} O (B oa))
: let gei := ((fun x => x) : Type@{i} -> Type@{k}) in let gej := ((fun x => x) : Type@{j} -> Type@{k}) in
(forall a, B (to O A a)) -> forall oa, B oa.
admit. Defined.
Definition O_ind_beta_internal@{u a i j k} (O : Modality@{u a})
(A : Type@{i}) (B : O_reflector@{u a i} O A -> Type@{j})
(B_inO : forall oa, In@{u a j} O (B oa))
(f : forall a : A, B (to O A a)) (a:A)
: O_ind_internal@{u a i j k} O A B B_inO f (to O A a) = f a.
admit. Defined.
Definition O_inO@{u a i} (O : Modality@{u a}) (A : Type@{i})
: In@{u a i} O (O_reflector@{u a i} O A).
admit. Defined.
Definition inO_equiv_inO@{u a i j k} (O : Modality@{u a}) (A : Type@{i}) (B : Type@{j})
(A_inO : In@{u a i} O A) (f : A -> B) (feq : IsEquiv f)
: In@{u a j} O B. Proof. simple refine (isequiv_commsq (to O A) (to O B) f
(O_ind_internal O A (fun _ => O_reflector O B) _ (fun a => to O B (f a))) _).
- intros; apply O_inO.
- intros a; refine (O_ind_beta_internal@{u a i j k} O A (fun _ => O_reflector O B) _ _ a).
- apply A_inO.
- simple refine (isequiv_adjointify _
(O_ind_internal O B (fun _ => O_reflector O A) _ (fun b => to O A (f^-1 b))) _ _); intros x.
+ apply O_inO.
+ pattern x; refine (O_ind_internal O B _ _ _ x); intros.
* apply minO_pathsO.
* simpl; admit.
+ pattern x; refine (O_ind_internal O A _ _ _ x); intros.
* apply minO_pathsO.
* simpl; admit. Defined.
Class IsConnected (O : Modality@{u a}) (A : Type@{i})
:= isconnected_contr_O : IsTrunc@{i} -2 (O A).
Class IsConnMap (O : Modality@{u a})
{A : Type@{i}} {B : Type@{j}} (f : A -> B)
:= isconnected_hfiber_conn_map
: forall b:B, IsConnected@{u a k} O (hfiber@{i j} f b).
End Modalities_Theory.
Private Inductive Trunc (n : trunc_index) (A :Type) : Type :=
tr : A -> Trunc n A. Arguments tr {n A} a.
GlobalInstance istrunc_truncation (n : trunc_index) (A : Type@{i})
: IsTrunc@{j} n (Trunc@{i} n A). Admitted.
Definition Trunc_ind {n A}
(P : Trunc n A -> Type) {Pt : forall aa, IsTrunc n (P aa)}
: (forall a, P (tr a)) -> (forall aa, P aa)
:= (fun f aa => match aa with tr a => fun _ => f a end Pt).
Definition O_reflector (n : Modality@{u u'}) A := Trunc n A.
Definition In (n : Modality@{u u'}) A := IsTrunc n A.
Definition O_inO (n : Modality@{u u'}) A : In n (O_reflector n A).
admit. Defined.
Definition to (n : Modality@{u u'}) A := @tr n A.
Definition inO_equiv_inO (n : Modality@{u u'})
(A : Type@{i}) (B : Type@{j}) Atr f feq
: let gei := ((fun x => x) : Type@{i} -> Type@{k}) in let gej := ((fun x => x) : Type@{j} -> Type@{k}) in
In n B
:= @trunc_equiv A B f n Atr feq.
Definition hprop_inO `{Funext} (n : Modality@{u u'}) A
: IsHProp (In n A).
admit. Defined.
Definition pmap_compose {A B C : pType}
(g : B ->* C) (f : A ->* B)
: A ->* C
:= Build_pMap A C (g o f)
(ap g (point_eq f) @ point_eq g).
Record pHomotopy {A B : pType} (f g : pMap A B) :=
{ pointed_htpy : f == g ;
point_htpy : pointed_htpy (point A) @ point_eq g = point_eq f }. Arguments pointed_htpy {A B f g} p x.
Infix"==*" := pHomotopy (at level 70, no associativity) : pointed_scope.
Definition loops_functor {A B : pType} (f : A ->* B)
: (loops A) ->* (loops B). Proof.
refine (Build_pMap (loops A) (loops B)
(fun p => (point_eq f)^ @ (ap f p @ point_eq f)) _). apply moveR_Vp; simpl.
refine (concat_1p _ @ (concat_p1 _)^). Defined.
Definition loops_functor_compose {A B C : pType}
(g : B ->* C) (f : A ->* B)
: (loops_functor (pmap_compose g f))
==* (pmap_compose (loops_functor g) (loops_functor f)).
admit. Defined.
LocalOpenScope path_scope.
Record ooGroup :=
{ classifying_space : pType@{i} ;
isconn_classifying_space : IsConnected@{u a i} 0 classifying_space
}.
LocalNotation B := classifying_space.
Definition group_type (G : ooGroup) : Type
:= point (B G) = point (B G).
Definition grouphom_fun {G H} (phi : ooGroupHom G H) : G -> H
:= loops_functor phi.
Coercion grouphom_fun : ooGroupHom >-> Funclass.
Definition group_loops_functor
{X Y : pType} (f : pMap X Y)
: ooGroupHom (group_loops X) (group_loops Y). Proof. simple refine (Build_pMap _ _ _ _); simpl.
- intros [x p]. exists (f x).
strip_truncations; apply tr. exact (ap f p @ point_eq f).
- apply path_sigma_hprop; simpl. apply point_eq. Defined.
Definition loops_functor_group
{X Y : pType} (f : pMap X Y)
: loops_functor (group_loops_functor f) o loops_group X
== loops_group Y o loops_functor f.
admit. Defined.
Definition grouphom_compose {G H K : ooGroup}
(psi : ooGroupHom H K) (phi : ooGroupHom G H)
: ooGroupHom G K
:= pmap_compose psi phi.
Definition group_loops_functor_compose
{X Y Z : pType}
(psi : pMap Y Z) (phi : pMap X Y)
: grouphom_compose (group_loops_functor psi) (group_loops_functor phi)
== group_loops_functor (pmap_compose psi phi). Proof. intros g. unfold grouphom_fun, grouphom_compose.
refine (pointed_htpy (loops_functor_compose _ _) g @ _). pose (p := eisretr (loops_group X) g). change (loops_functor (group_loops_functor psi)
(loops_functor (group_loops_functor phi) g)
= loops_functor (group_loops_functor
(pmap_compose psi phi)) g). rewrite <- p.
Timeout 1 Timerewrite !loops_functor_group.
Undo. (* 0.004 s in 8.5rc1, 8.677 s in 8.5 *)
Timeout 1 do 3 rewrite loops_functor_group. Abort.
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.