(* -*- mode: coq; coq-prog-args: ("-nois" "-indices-matter") -*- *) (* File reduced by coq-bug-finder from original input, then from 1125 lines to 346lines,thenfrom360linesto346lines,thenfrom822linesto271lines,
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 und die Messung sind noch experimentell.