\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{quotient type} \hypertarget{context}{}\subsubsection*{{Context}}\label{context} \hypertarget{type_theory}{}\paragraph*{{Type theory}}\label{type_theory} [[!include type theory - contents]] \hypertarget{contents}{}\section*{{Contents}}\label{contents} \noindent\hyperlink{idea}{Idea}\dotfill \pageref*{idea} \linebreak \noindent\hyperlink{properties}{Properties}\dotfill \pageref*{properties} \linebreak \noindent\hyperlink{from_higher_inductive_types}{From higher inductive types}\dotfill \pageref*{from_higher_inductive_types} \linebreak \noindent\hyperlink{history_and_effectiveness}{History and effectiveness}\dotfill \pageref*{history_and_effectiveness} \linebreak \noindent\hyperlink{FromUnivalence}{From univalence}\dotfill \pageref*{FromUnivalence} \linebreak \noindent\hyperlink{related_concepts}{Related concepts}\dotfill \pageref*{related_concepts} \linebreak \noindent\hyperlink{references}{References}\dotfill \pageref*{references} \linebreak \noindent\hyperlink{as_a_higher_inductive_type}{As a higher inductive type}\dotfill \pageref*{as_a_higher_inductive_type} \linebreak \noindent\hyperlink{FromUnivalenceReferences}{From univalence}\dotfill \pageref*{FromUnivalenceReferences} \linebreak \hypertarget{idea}{}\subsection*{{Idea}}\label{idea} In [[type theory]] the kind of [[type]] corresponding in [[categorical semantics]] to a [[quotient object]] / [[coequalizer]]. \hypertarget{properties}{}\subsection*{{Properties}}\label{properties} \hypertarget{from_higher_inductive_types}{}\subsubsection*{{From higher inductive types}}\label{from_higher_inductive_types} Quotient type may be constructed as [[higher inductive types]]. See \href{higher+inductive+type#QuotientsOfSets}{here}. \hypertarget{history_and_effectiveness}{}\paragraph*{{History and effectiveness}}\label{history_and_effectiveness} This notion of quotient type predates the general notion of higher inductive type, however; it appears already in \hyperlink{HofmannThesis}{Martin Hofmann's thesis}. Hofmann works in a theory that includes a [[type of propositions]] $Prop$ that may be assumed to satisfy [[proof irrelevance]] --- for instance, it might be the universe of [[h-propositions]] --- and considers the \emph{effectiveness} of quotient types only for quotients of Prop-valued [[equivalence relations]]. This corresponds to the correct categorical notion of effectiveness (see [[Barr-exact category]]) and (as Hofmann noted) is provable in the presence of [[propositional extensionality]] (which in turn follows from the [[univalence axiom]]). However, before the introduction of homotopy type theory and the realization of the importance of homotopy levels such as [[h-propositions]], some authors considered also quotients of arbitrary $Type$-valued ``equivalence relations'' (i.e. [[setoids]]). \hyperlink{Maietti99}{Maietti} shows, by adapting \href{/nlab/show/excluded+middle#RelationToTheAxiomOfChoice}{Diaconescu's argument}, that ``effectiveness'' for quotients of this sort of ``equivalence relation'' implies the law of [[excluded middle]]. \hypertarget{FromUnivalence}{}\subsubsection*{{From univalence}}\label{FromUnivalence} Quotient types are implied by adding [[univalence]] to [[Martin-Löf type theory]]. We indicate how this works: A sufficient set of hypothesis that imply the existence of quotient types is this: \begin{itemize}% \item ambient [[dependent product types]] [[dependent sum types]] and [[identity types]]; \item availability of [[propositional truncation]]; \item existence of a univalent family $U$; \item every [[h-prop]] is equivalent to some type in $U$. \end{itemize} In terms of [[categorical semantics]] in [[fibration categories]], this comes about as follows: In [[fibration categories]] where every map is a fibration, ``hprop'' means ``[[subobject]]'', propositional truncation becomes a stable [[image]] factorisation, and from a univalent universe $U$ containing all hprops, we can construct a [[subobject classifier]] as \begin{displaymath} \underset{x \colon U}{\sum} isProp(x) \,. \end{displaymath} (For the subobject classification axioms: existence comes from ``every hprop is equivalent to some type in $U$'', and uniqueness comes from univalence of $U$.) So in this setting, the HoTT argument just becomes the usual construction (due to \hyperlink{Pare}{Par\'e{} 74}, see for instance \hyperlink{MacLaneMoerdijk92}{MacLane-Moerdijk 92, IV.5}) of exact quotients from a [[subobject classifier]] in a [[regular category|regular]] [[locally cartesian closed category]]. For more on this see at \emph{\href{quotient+object#InToposes}{quotient object -- in toposes}}. One thing to be careful about, in the [[fibration category]] setting, is that ``equivalences'' as defined in type theory correspond not generally to the original equivalences, but to the right homotopy equivalences, which of course may be different. This is why e.g. Mike Shulman's def of ``type-theoretic fibration category'' doesn't include a class of equivalences as separate data, but takes them to be the right homot equivs. So for the type-theoretic arguments to apply, ``univalent fibration'' should be defined using right homot equivs. \hypertarget{related_concepts}{}\subsection*{{Related concepts}}\label{related_concepts} \begin{itemize}% \item [[setoid]] \item [[quotient]] \item [[quotient space]] \item [[quotient stack]] \end{itemize} \hypertarget{references}{}\subsection*{{References}}\label{references} \hypertarget{as_a_higher_inductive_type}{}\subsubsection*{{As a higher inductive type}}\label{as_a_higher_inductive_type} \begin{itemize}% \item [[Martin Hofmann]], \emph{Extensional concepts in intensional type theory}, Ph.D. Thesis, University of Edinburgh, 1995 (see page 111). \item [[Maria Emilia Maietti]], \emph{About effective quotients in constructive type theory}, in ``Types for proofs and programs'', 1999 \end{itemize} \hypertarget{FromUnivalenceReferences}{}\subsubsection*{{From univalence}}\label{FromUnivalenceReferences} The argument that adding [[univalence]] (plus universe resizing) to [[Martin-Löf type theory]] implies the existence of quotient types is attributed to Voevodsky in places like here: \href{http://benedikt-ahrens.de/talks/IRIT_slides.pdf}{pdf, slides 41 \& 61}. Voevodsky's own account of this seems to be entirely in his Coq-code repository here: \begin{itemize}% \item [[Vladimir Voevodsky]], \emph{Equivalence classes with respect to a given relation}, \href{https://github.com/vladimirias/Foundations/blob/df19211f602ab71ee44f0ae4de2a19170c5b9e4d/hlevel2/hSet.v#L466}{here}, \emph{Set quotients of types}, \href{https://github.com/vladimirias/Foundations/blob/df19211f602ab71ee44f0ae4de2a19170c5b9e4d/hlevel2/hSet.v#L555}{here} \end{itemize} A more readable version of this is in section 6.10 of \begin{itemize}% \item \emph{[[Homotopy Type Theory -- Univalent Foundations of Mathematics]]} \end{itemize} Def. 6.10.5 there is the definition of the quotients. This uses truncation, for which something like univalence and resizing is necessary and univalence and truncation is sufficient for. Then theorem 6.10.6 right below that definition checks that these quotient do indeed behave like quotients should, and this is where univalence proper comes in. This discussion of quotients from univalence in the HoTT book originally comes from \begin{itemize}% \item [[Egbert Rijke]], [[Bas Spitters]], \emph{Sets in homotopy type theory}, (\href{http://arxiv.org/abs/1305.3835}{arXiv:1305.3835}) \end{itemize} The relevant section there is 2.4 ``Voevodsky's impredicative quotients'', see def. 2.24 and the lines right below. The category theoretic (``semantics'') version of the argument for colimits from a subobject classifier in an elementary topos is due to \begin{itemize}% \item [[Robert Paré]], \emph{Colimits in Topoi}, Bull. AMS 80 (1974) pp.556-661. (\href{http://www.ams.org/journals/bull/1974-80-03/S0002-9904-1974-13497-X/S0002-9904-1974-13497-X.pdf}{pdf}) \end{itemize} reviewed for instance in \begin{itemize}% \item [[Saunders MacLane]], [[Ieke Moerdijk]], section IV.5 of \emph{[[Sheaves in Geometry and Logic]] -- A first introduction to topos theory}, Springer Verlag, 1992 \end{itemize} A more elementary discussion is in \begin{itemize}% \item [[Todd Trimble]], \emph{[[toddtrimble:An elementary approach to elementary topos theory]]} \end{itemize} [[!redirects quotient type]] [[!redirects quotient types]] \end{document}