(* -*- mode: coq; coq-prog-args: ("-nois" "-indices-matter") -*- *) (* File reduced by coq-bug-finder from original input, then from 1125 lines to 346 lines, then from 360 lines to 346 lines, then from 822 lines to 271 lines,
then from 285 lines to 271 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. Import Corelib.Init.Notations. GlobalSet Universe Polymorphism. GlobalSet Primitive Projections. Notation"A -> B" := (forall (_ : A), B) : type_scope. ModuleExport Datatypes. SetImplicitArguments. Notation nat := Corelib.Init.Datatypes.nat. Notation O := Corelib.Init.Datatypes.O. Notation S := Corelib.Init.Datatypes.S. Notation one := (S O). Notation two := (S one).
Record prod (A B : Type) := pair { fst : A ; snd : B }. Notation"x * y" := (prod x y) : type_scope. DelimitScope nat_scope with nat. OpenScope nat_scope. End Datatypes. ModuleExport Specif. SetImplicitArguments.
Record sig {A} (P : A -> Type) := exist { proj1_sig : A ; proj2_sig : P
proj1_sig }. Notation sigT := sig (only parsing). Notation"{ x : A & P }" := (sigT (fun x:A => P)) : type_scope. Notation projT1 := proj1_sig (only parsing). Notation projT2 := proj2_sig (only parsing). End Specif. GlobalSet Keyed Unification. GlobalUnset Strict Universe Declaration. 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. OpenScope fibration_scope. OpenScope function_scope. Notation pr1 := projT1. Notation pr2 := projT2. Notation"x .1" := (pr1 x) : fibration_scope. Notation"x .2" := (pr2 x) : fibration_scope. Notation compose := (fun g f x => g (f x)). Notation"g 'o' f" := (compose g%function f%function) (at level 40, left
associativity) : function_scope. Inductive paths {A : Type} (a : A) : A -> Type := idpath : paths a a. Arguments idpath {A a} , [A] a. Notation"x = y :> A" := (@paths A x y) : type_scope. Notation"x = y" := (x = y :>_) : type_scope. Definitioninverse {A : Type} {x y : A} (p : x = y) : y = x
:= match p with idpath => idpath end. Definition concat {A : Type} {x y z : A} (p : x = y) (q : y = z) : x = z := match p, q with idpath, idpath => idpath end. Notation"1" := idpath : path_scope. Notation"p @ q" := (concat p%path q%path) (at level 20) : path_scope. Notation"p ^" := (inverse p%path) (at level 3, format "p '^'") : 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)
}. Arguments eissect {A B}%_type_scope f%_function_scope {_} _. Inductive Unit : Type1 := tt : Unit. LocalOpenScope path_scope. 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. 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).
admit. Defined.
Definition isequiv_adjointify : IsEquiv f
:= BuildIsEquiv A B f g isretr issect' is_adjoint'. End Adjointify. 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.
Definition O_rec {P Q : Type} {Q_inO : In O Q}
(f : P -> Q)
: O P -> Q
:= (fst (extendable_to_O O one) f).1.
Definition O_rec_beta {P Q : Type} {Q_inO : In O Q}
(f : P -> Q) (x : P)
: O_rec f (to O P x) = f x
:= (fst (extendable_to_O O one) f).2 x.
Definition O_indpaths {P Q : Type} {Q_inO : In O Q}
(g h : O P -> Q) (p : g o to O P == h o to O P)
: g == h
:= (fst (snd (extendable_to_O O two) g h) p).1.
End ORecursion.
Section Reflective_Subuniverse.
Context (O : ReflectiveSubuniverse@{Ou Oa}).
Definition isequiv_to_O_inO@{u a i} (T : Type@{i}) `{In@{u a i} O T} :
IsEquiv@{i i} (to O T). Proof.
pose (g := O_rec@{u a i i i i i} idmap).
refine (isequiv_adjointify (to O T) g _ _).
-
refine (O_indpaths@{u a i i i i i} (to O T o g) idmap _). intros x. apply ap. apply O_rec_beta.
- intros x. apply O_rec_beta. Defined. Global Existing Instance isequiv_to_O_inO.
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.