added notes
This commit is contained in:
parent
35db866a61
commit
5da0c57835
3 changed files with 1929 additions and 0 deletions
781
Notes/macros.tex
Normal file
781
Notes/macros.tex
Normal file
|
@ -0,0 +1,781 @@
|
|||
%%%% MACROS FOR NOTATION %%%%
|
||||
% Use these for any notation where there are multiple options.
|
||||
|
||||
%%% Notes and exercise sections
|
||||
\makeatletter
|
||||
\newcommand{\sectionNotes}{\phantomsection\section*{Notes}\addcontentsline{toc}{section}{Notes}\markright{\textsc{\@chapapp{} \thechapter{} Notes}}}
|
||||
\newcommand{\sectionExercises}[1]{\phantomsection\section*{Exercises}\addcontentsline{toc}{section}{Exercises}\markright{\textsc{\@chapapp{} \thechapter{} Exercises}}}
|
||||
\makeatother
|
||||
|
||||
%%% Definitional equality (used infix) %%%
|
||||
\newcommand{\jdeq}{\equiv} % An equality judgment
|
||||
\let\judgeq\jdeq
|
||||
%\newcommand{\defeq}{\coloneqq} % An equality currently being defined
|
||||
\newcommand{\defeq}{\vcentcolon\equiv} % A judgmental equality currently being defined
|
||||
|
||||
%%% Term being defined
|
||||
\newcommand{\define}[1]{\textbf{#1}}
|
||||
|
||||
%%% Vec (for example)
|
||||
|
||||
\newcommand{\Vect}{\ensuremath{\mathsf{Vec}}}
|
||||
\newcommand{\Fin}{\ensuremath{\mathsf{Fin}}}
|
||||
\newcommand{\fmax}{\ensuremath{\mathsf{fmax}}}
|
||||
\newcommand{\seq}[1]{\langle #1\rangle}
|
||||
|
||||
%%% Dependent products %%%
|
||||
\def\prdsym{\textstyle\prod}
|
||||
%% Call the macro like \prd{x,y:A}{p:x=y} with any number of
|
||||
%% arguments. Make sure that whatever comes *after* the call doesn't
|
||||
%% begin with an open-brace, or it will be parsed as another argument.
|
||||
\makeatletter
|
||||
% Currently the macro is configured to produce
|
||||
% {\textstyle\prod}(x:A) \; {\textstyle\prod}(y:B),\
|
||||
% in display-math mode, and
|
||||
% \prod_{(x:A)} \prod_{y:B}
|
||||
% in text-math mode.
|
||||
\def\prd#1{\@ifnextchar\bgroup{\prd@parens{#1}}{\@ifnextchar\sm{\prd@parens{#1}\@eatsm}{\prd@noparens{#1}}}}
|
||||
\def\prd@parens#1{\@ifnextchar\bgroup%
|
||||
{\mathchoice{\@dprd{#1}}{\@tprd{#1}}{\@tprd{#1}}{\@tprd{#1}}\prd@parens}%
|
||||
{\@ifnextchar\sm%
|
||||
{\mathchoice{\@dprd{#1}}{\@tprd{#1}}{\@tprd{#1}}{\@tprd{#1}}\@eatsm}%
|
||||
{\mathchoice{\@dprd{#1}}{\@tprd{#1}}{\@tprd{#1}}{\@tprd{#1}}}}}
|
||||
\def\@eatsm\sm{\sm@parens}
|
||||
\def\prd@noparens#1{\mathchoice{\@dprd@noparens{#1}}{\@tprd{#1}}{\@tprd{#1}}{\@tprd{#1}}}
|
||||
% Helper macros for three styles
|
||||
\def\lprd#1{\@ifnextchar\bgroup{\@lprd{#1}\lprd}{\@@lprd{#1}}}
|
||||
\def\@lprd#1{\mathchoice{{\textstyle\prod}}{\prod}{\prod}{\prod}({\textstyle #1})\;}
|
||||
\def\@@lprd#1{\mathchoice{{\textstyle\prod}}{\prod}{\prod}{\prod}({\textstyle #1}),\ }
|
||||
\def\tprd#1{\@tprd{#1}\@ifnextchar\bgroup{\tprd}{}}
|
||||
\def\@tprd#1{\mathchoice{{\textstyle\prod_{(#1)}}}{\prod_{(#1)}}{\prod_{(#1)}}{\prod_{(#1)}}}
|
||||
\def\dprd#1{\@dprd{#1}\@ifnextchar\bgroup{\dprd}{}}
|
||||
\def\@dprd#1{\prod_{(#1)}\,}
|
||||
\def\@dprd@noparens#1{\prod_{#1}\,}
|
||||
|
||||
%%% Lambda abstractions.
|
||||
% Each variable being abstracted over is a separate argument. If
|
||||
% there is more than one such argument, they *must* be enclosed in
|
||||
% braces. Arguments can be untyped, as in \lam{x}{y}, or typed with a
|
||||
% colon, as in \lam{x:A}{y:B}. In the latter case, the colons are
|
||||
% automatically noticed and (with current implementation) the space
|
||||
% around the colon is reduced. You can even give more than one variable
|
||||
% the same type, as in \lam{x,y:A}.
|
||||
\def\lam#1{{\lambda}\@lamarg#1:\@endlamarg\@ifnextchar\bgroup{.\,\lam}{.\,}}
|
||||
\def\@lamarg#1:#2\@endlamarg{\if\relax\detokenize{#2}\relax #1\else\@lamvar{\@lameatcolon#2},#1\@endlamvar\fi}
|
||||
\def\@lamvar#1,#2\@endlamvar{(#2\,{:}\,#1)}
|
||||
% \def\@lamvar#1,#2{{#2}^{#1}\@ifnextchar,{.\,{\lambda}\@lamvar{#1}}{\let\@endlamvar\relax}}
|
||||
\def\@lameatcolon#1:{#1}
|
||||
\let\lamt\lam
|
||||
% This version silently eats any typing annotation.
|
||||
\def\lamu#1{{\lambda}\@lamuarg#1:\@endlamuarg\@ifnextchar\bgroup{.\,\lamu}{.\,}}
|
||||
\def\@lamuarg#1:#2\@endlamuarg{#1}
|
||||
|
||||
%%% Dependent products written with \forall, in the same style
|
||||
\def\fall#1{\forall (#1)\@ifnextchar\bgroup{.\,\fall}{.\,}}
|
||||
|
||||
%%% Existential quantifier %%%
|
||||
\def\exis#1{\exists (#1)\@ifnextchar\bgroup{.\,\exis}{.\,}}
|
||||
|
||||
%%% Dependent sums %%%
|
||||
\def\smsym{\textstyle\sum}
|
||||
% Use in the same way as \prd
|
||||
\def\sm#1{\@ifnextchar\bgroup{\sm@parens{#1}}{\@ifnextchar\prd{\sm@parens{#1}\@eatprd}{\sm@noparens{#1}}}}
|
||||
\def\sm@parens#1{\@ifnextchar\bgroup%
|
||||
{\mathchoice{\@dsm{#1}}{\@tsm{#1}}{\@tsm{#1}}{\@tsm{#1}}\sm@parens}%
|
||||
{\@ifnextchar\prd%
|
||||
{\mathchoice{\@dsm{#1}}{\@tsm{#1}}{\@tsm{#1}}{\@tsm{#1}}\@eatprd}%
|
||||
{\mathchoice{\@dsm{#1}}{\@tsm{#1}}{\@tsm{#1}}{\@tsm{#1}}}}}
|
||||
\def\@eatprd\prd{\prd@parens}
|
||||
\def\sm@noparens#1{\mathchoice{\@dsm@noparens{#1}}{\@tsm{#1}}{\@tsm{#1}}{\@tsm{#1}}}
|
||||
\def\lsm#1{\@ifnextchar\bgroup{\@lsm{#1}\lsm}{\@@lsm{#1}}}
|
||||
\def\@lsm#1{\mathchoice{{\textstyle\sum}}{\sum}{\sum}{\sum}({\textstyle #1})\;}
|
||||
\def\@@lsm#1{\mathchoice{{\textstyle\sum}}{\sum}{\sum}{\sum}({\textstyle #1}),\ }
|
||||
\def\tsm#1{\@tsm{#1}\@ifnextchar\bgroup{\tsm}{}}
|
||||
\def\@tsm#1{\mathchoice{{\textstyle\sum_{(#1)}}}{\sum_{(#1)}}{\sum_{(#1)}}{\sum_{(#1)}}}
|
||||
\def\dsm#1{\@dsm{#1}\@ifnextchar\bgroup{\dsm}{}}
|
||||
\def\@dsm#1{\sum_{(#1)}\,}
|
||||
\def\@dsm@noparens#1{\sum_{#1}\,}
|
||||
|
||||
%%% W-types
|
||||
\def\wtypesym{{\mathsf{W}}}
|
||||
\def\wtype#1{\@ifnextchar\bgroup%
|
||||
{\mathchoice{\@twtype{#1}}{\@twtype{#1}}{\@twtype{#1}}{\@twtype{#1}}\wtype}%
|
||||
{\mathchoice{\@twtype{#1}}{\@twtype{#1}}{\@twtype{#1}}{\@twtype{#1}}}}
|
||||
\def\lwtype#1{\@ifnextchar\bgroup{\@lwtype{#1}\lwtype}{\@@lwtype{#1}}}
|
||||
\def\@lwtype#1{\mathchoice{{\textstyle\mathsf{W}}}{\mathsf{W}}{\mathsf{W}}{\mathsf{W}}({\textstyle #1})\;}
|
||||
\def\@@lwtype#1{\mathchoice{{\textstyle\mathsf{W}}}{\mathsf{W}}{\mathsf{W}}{\mathsf{W}}({\textstyle #1}),\ }
|
||||
\def\twtype#1{\@twtype{#1}\@ifnextchar\bgroup{\twtype}{}}
|
||||
\def\@twtype#1{\mathchoice{{\textstyle\mathsf{W}_{(#1)}}}{\mathsf{W}_{(#1)}}{\mathsf{W}_{(#1)}}{\mathsf{W}_{(#1)}}}
|
||||
\def\dwtype#1{\@dwtype{#1}\@ifnextchar\bgroup{\dwtype}{}}
|
||||
\def\@dwtype#1{\mathsf{W}_{(#1)}\,}
|
||||
|
||||
\newcommand{\suppsym}{{\mathsf{sup}}}
|
||||
\newcommand{\supp}{\ensuremath\suppsym\xspace}
|
||||
|
||||
\def\wtypeh#1{\@ifnextchar\bgroup%
|
||||
{\mathchoice{\@lwtypeh{#1}}{\@twtypeh{#1}}{\@twtypeh{#1}}{\@twtypeh{#1}}\wtypeh}%
|
||||
{\mathchoice{\@@lwtypeh{#1}}{\@twtypeh{#1}}{\@twtypeh{#1}}{\@twtypeh{#1}}}}
|
||||
\def\lwtypeh#1{\@ifnextchar\bgroup{\@lwtypeh{#1}\lwtypeh}{\@@lwtypeh{#1}}}
|
||||
\def\@lwtypeh#1{\mathchoice{{\textstyle\mathsf{W}^h}}{\mathsf{W}^h}{\mathsf{W}^h}{\mathsf{W}^h}({\textstyle #1})\;}
|
||||
\def\@@lwtypeh#1{\mathchoice{{\textstyle\mathsf{W}^h}}{\mathsf{W}^h}{\mathsf{W}^h}{\mathsf{W}^h}({\textstyle #1}),\ }
|
||||
\def\twtypeh#1{\@twtypeh{#1}\@ifnextchar\bgroup{\twtypeh}{}}
|
||||
\def\@twtypeh#1{\mathchoice{{\textstyle\mathsf{W}^h_{(#1)}}}{\mathsf{W}^h_{(#1)}}{\mathsf{W}^h_{(#1)}}{\mathsf{W}^h_{(#1)}}}
|
||||
\def\dwtypeh#1{\@dwtypeh{#1}\@ifnextchar\bgroup{\dwtypeh}{}}
|
||||
\def\@dwtypeh#1{\mathsf{W}^h_{(#1)}\,}
|
||||
|
||||
|
||||
\makeatother
|
||||
|
||||
% Other notations related to dependent sums
|
||||
\let\setof\Set % from package 'braket', write \setof{ x:A | P(x) }.
|
||||
\newcommand{\pair}{\ensuremath{\mathsf{pair}}\xspace}
|
||||
\newcommand{\tup}[2]{(#1,#2)}
|
||||
\newcommand{\proj}[1]{\ensuremath{\mathsf{pr}_{#1}}\xspace}
|
||||
\newcommand{\fst}{\ensuremath{\proj1}\xspace}
|
||||
\newcommand{\snd}{\ensuremath{\proj2}\xspace}
|
||||
\newcommand{\ac}{\ensuremath{\mathsf{ac}}\xspace} % not needed in symbol index
|
||||
\newcommand{\un}{\ensuremath{\mathsf{upun}}\xspace} % not needed in symbol index, uniqueness principle for unit type
|
||||
|
||||
%%% recursor and induction
|
||||
\newcommand{\rec}[1]{\mathsf{rec}_{#1}}
|
||||
\newcommand{\ind}[1]{\mathsf{ind}_{#1}}
|
||||
\newcommand{\indid}[1]{\ind{=_{#1}}} % (Martin-Lof) path induction principle for identity types
|
||||
\newcommand{\indidb}[1]{\ind{=_{#1}}'} % (Paulin-Mohring) based path induction principle for identity types
|
||||
|
||||
%%% the uniqueness principle for product types, formerly called surjective pairing and named \spr:
|
||||
\newcommand{\uppt}{\ensuremath{\mathsf{uppt}}\xspace}
|
||||
|
||||
% Paths in pairs
|
||||
\newcommand{\pairpath}{\ensuremath{\mathsf{pair}^{\mathord{=}}}\xspace}
|
||||
% \newcommand{\projpath}[1]{\proj{#1}^{\mathord{=}}}
|
||||
\newcommand{\projpath}[1]{\ensuremath{\apfunc{\proj{#1}}}\xspace}
|
||||
|
||||
%%% For quotients %%%
|
||||
%\newcommand{\pairr}[1]{{\langle #1\rangle}}
|
||||
\newcommand{\pairr}[1]{{\mathopen{}(#1)\mathclose{}}}
|
||||
\newcommand{\Pairr}[1]{{\mathopen{}\left(#1\right)\mathclose{}}}
|
||||
|
||||
% \newcommand{\type}{\ensuremath{\mathsf{Type}}} % this command is overridden below, so it's commented out
|
||||
\newcommand{\im}{\ensuremath{\mathsf{im}}} % the image
|
||||
|
||||
%%% 2D path operations
|
||||
\newcommand{\leftwhisker}{\mathbin{{\ct}_{\ell}}}
|
||||
\newcommand{\rightwhisker}{\mathbin{{\ct}_{r}}}
|
||||
\newcommand{\hct}{\star}
|
||||
|
||||
%%% modalities %%%
|
||||
\newcommand{\modal}{\ensuremath{\ocircle}}
|
||||
\let\reflect\modal
|
||||
\newcommand{\modaltype}{\ensuremath{\type_\modal}}
|
||||
% \newcommand{\ism}[1]{\ensuremath{\mathsf{is}_{#1}}}
|
||||
% \newcommand{\ismodal}{\ism{\modal}}
|
||||
% \newcommand{\existsmodal}{\ensuremath{{\exists}_{\modal}}}
|
||||
% \newcommand{\existsmodalunique}{\ensuremath{{\exists!}_{\modal}}}
|
||||
% \newcommand{\modalfunc}{\textsf{\modal-fun}}
|
||||
% \newcommand{\Ecirc}{\ensuremath{\mathsf{E}_\modal}}
|
||||
% \newcommand{\Mcirc}{\ensuremath{\mathsf{M}_\modal}}
|
||||
\newcommand{\mreturn}{\ensuremath{\eta}}
|
||||
\let\project\mreturn
|
||||
%\newcommand{\mbind}[1]{\ensuremath{\hat{#1}}}
|
||||
\newcommand{\ext}{\mathsf{ext}}
|
||||
%\newcommand{\mmap}[1]{\ensuremath{\bar{#1}}}
|
||||
%\newcommand{\mjoin}{\ensuremath{\mreturn^{-1}}}
|
||||
% Subuniverse
|
||||
\renewcommand{\P}{\ensuremath{\type_{P}}\xspace}
|
||||
|
||||
%%% Localizations
|
||||
% \newcommand{\islocal}[1]{\ensuremath{\mathsf{islocal}_{#1}}\xspace}
|
||||
% \newcommand{\loc}[1]{\ensuremath{\mathcal{L}_{#1}}\xspace}
|
||||
|
||||
%%% Identity types %%%
|
||||
\newcommand{\idsym}{{=}}
|
||||
\newcommand{\id}[3][]{\ensuremath{#2 =_{#1} #3}\xspace}
|
||||
\newcommand{\idtype}[3][]{\ensuremath{\mathsf{Id}_{#1}(#2,#3)}\xspace}
|
||||
\newcommand{\idtypevar}[1]{\ensuremath{\mathsf{Id}_{#1}}\xspace}
|
||||
% A propositional equality currently being defined
|
||||
\newcommand{\defid}{\coloneqq}
|
||||
|
||||
%%% Dependent paths
|
||||
\newcommand{\dpath}[4]{#3 =^{#1}_{#2} #4}
|
||||
|
||||
%%% singleton
|
||||
% \newcommand{\sgl}{\ensuremath{\mathsf{sgl}}\xspace}
|
||||
% \newcommand{\sctr}{\ensuremath{\mathsf{sctr}}\xspace}
|
||||
|
||||
%%% Reflexivity terms %%%
|
||||
% \newcommand{\reflsym}{{\mathsf{refl}}}
|
||||
\newcommand{\refl}[1]{\ensuremath{\mathsf{refl}_{#1}}\xspace}
|
||||
|
||||
%%% Path concatenation (used infix, in diagrammatic order) %%%
|
||||
\newcommand{\ct}{%
|
||||
\mathchoice{\mathbin{\raisebox{0.5ex}{$\displaystyle\centerdot$}}}%
|
||||
{\mathbin{\raisebox{0.5ex}{$\centerdot$}}}%
|
||||
{\mathbin{\raisebox{0.25ex}{$\scriptstyle\,\centerdot\,$}}}%
|
||||
{\mathbin{\raisebox{0.1ex}{$\scriptscriptstyle\,\centerdot\,$}}}
|
||||
}
|
||||
|
||||
%%% Path reversal %%%
|
||||
\newcommand{\opp}[1]{\mathord{{#1}^{-1}}}
|
||||
\let\rev\opp
|
||||
|
||||
%%% Transport (covariant) %%%
|
||||
\newcommand{\trans}[2]{\ensuremath{{#1}_{*}\mathopen{}\left({#2}\right)\mathclose{}}\xspace}
|
||||
\let\Trans\trans
|
||||
%\newcommand{\Trans}[2]{\ensuremath{{#1}_{*}\left({#2}\right)}\xspace}
|
||||
\newcommand{\transf}[1]{\ensuremath{{#1}_{*}}\xspace} % Without argument
|
||||
%\newcommand{\transport}[2]{\ensuremath{\mathsf{transport}_{*} \: {#2}\xspace}}
|
||||
\newcommand{\transfib}[3]{\ensuremath{\mathsf{transport}^{#1}(#2,#3)\xspace}}
|
||||
\newcommand{\Transfib}[3]{\ensuremath{\mathsf{transport}^{#1}\Big(#2,\, #3\Big)\xspace}}
|
||||
\newcommand{\transfibf}[1]{\ensuremath{\mathsf{transport}^{#1}\xspace}}
|
||||
|
||||
%%% 2D transport
|
||||
\newcommand{\transtwo}[2]{\ensuremath{\mathsf{transport}^2\mathopen{}\left({#1},{#2}\right)\mathclose{}}\xspace}
|
||||
|
||||
%%% Constant transport
|
||||
\newcommand{\transconst}[3]{\ensuremath{\mathsf{transportconst}}^{#1}_{#2}(#3)\xspace}
|
||||
\newcommand{\transconstf}{\ensuremath{\mathsf{transportconst}}\xspace}
|
||||
|
||||
%%% Map on paths %%%
|
||||
\newcommand{\mapfunc}[1]{\ensuremath{\mathsf{ap}_{#1}}\xspace} % Without argument
|
||||
\newcommand{\map}[2]{\ensuremath{{#1}\mathopen{}\left({#2}\right)\mathclose{}}\xspace}
|
||||
\let\Ap\map
|
||||
%\newcommand{\Ap}[2]{\ensuremath{{#1}\left({#2}\right)}\xspace}
|
||||
\newcommand{\mapdepfunc}[1]{\ensuremath{\mathsf{apd}_{#1}}\xspace} % Without argument
|
||||
% \newcommand{\mapdep}[2]{\ensuremath{{#1}\llparenthesis{#2}\rrparenthesis}\xspace}
|
||||
\newcommand{\mapdep}[2]{\ensuremath{\mapdepfunc{#1}\mathopen{}\left(#2\right)\mathclose{}}\xspace}
|
||||
\let\apfunc\mapfunc
|
||||
\let\ap\map
|
||||
\let\apdfunc\mapdepfunc
|
||||
\let\apd\mapdep
|
||||
|
||||
%%% 2D map on paths
|
||||
\newcommand{\aptwofunc}[1]{\ensuremath{\mathsf{ap}^2_{#1}}\xspace}
|
||||
\newcommand{\aptwo}[2]{\ensuremath{\aptwofunc{#1}\mathopen{}\left({#2}\right)\mathclose{}}\xspace}
|
||||
\newcommand{\apdtwofunc}[1]{\ensuremath{\mathsf{apd}^2_{#1}}\xspace}
|
||||
\newcommand{\apdtwo}[2]{\ensuremath{\apdtwofunc{#1}\mathopen{}\left(#2\right)\mathclose{}}\xspace}
|
||||
|
||||
%%% Identity functions %%%
|
||||
\newcommand{\idfunc}[1][]{\ensuremath{\mathsf{id}_{#1}}\xspace}
|
||||
|
||||
%%% Homotopies (written infix) %%%
|
||||
\newcommand{\htpy}{\sim}
|
||||
|
||||
%%% Other meanings of \sim
|
||||
\newcommand{\bisim}{\sim} % bisimulation
|
||||
\newcommand{\eqr}{\sim} % an equivalence relation
|
||||
|
||||
%%% Equivalence types %%%
|
||||
\newcommand{\eqv}[2]{\ensuremath{#1 \simeq #2}\xspace}
|
||||
\newcommand{\eqvspaced}[2]{\ensuremath{#1 \;\simeq\; #2}\xspace}
|
||||
\newcommand{\eqvsym}{\simeq} % infix symbol
|
||||
\newcommand{\texteqv}[2]{\ensuremath{\mathsf{Equiv}(#1,#2)}\xspace}
|
||||
\newcommand{\isequiv}{\ensuremath{\mathsf{isequiv}}}
|
||||
\newcommand{\qinv}{\ensuremath{\mathsf{qinv}}}
|
||||
\newcommand{\ishae}{\ensuremath{\mathsf{ishae}}}
|
||||
\newcommand{\linv}{\ensuremath{\mathsf{linv}}}
|
||||
\newcommand{\rinv}{\ensuremath{\mathsf{rinv}}}
|
||||
\newcommand{\biinv}{\ensuremath{\mathsf{biinv}}}
|
||||
\newcommand{\lcoh}[3]{\mathsf{lcoh}_{#1}(#2,#3)}
|
||||
\newcommand{\rcoh}[3]{\mathsf{rcoh}_{#1}(#2,#3)}
|
||||
\newcommand{\hfib}[2]{{\mathsf{fib}}_{#1}(#2)}
|
||||
|
||||
%%% Map on total spaces %%%
|
||||
\newcommand{\total}[1]{\ensuremath{\mathsf{total}(#1)}}
|
||||
|
||||
%%% Universe types %%%
|
||||
%\newcommand{\type}{\ensuremath{\mathsf{Type}}\xspace}
|
||||
\newcommand{\UU}{\ensuremath{\mathcal{U}}\xspace}
|
||||
\let\bbU\UU
|
||||
\let\type\UU
|
||||
% Universes of truncated types
|
||||
\newcommand{\typele}[1]{\ensuremath{{#1}\text-\mathsf{Type}}\xspace}
|
||||
\newcommand{\typeleU}[1]{\ensuremath{{#1}\text-\mathsf{Type}_\UU}\xspace}
|
||||
\newcommand{\typelep}[1]{\ensuremath{{(#1)}\text-\mathsf{Type}}\xspace}
|
||||
\newcommand{\typelepU}[1]{\ensuremath{{(#1)}\text-\mathsf{Type}_\UU}\xspace}
|
||||
\let\ntype\typele
|
||||
\let\ntypeU\typeleU
|
||||
\let\ntypep\typelep
|
||||
\let\ntypepU\typelepU
|
||||
\renewcommand{\set}{\ensuremath{\mathsf{Set}}\xspace}
|
||||
\newcommand{\setU}{\ensuremath{\mathsf{Set}_\UU}\xspace}
|
||||
\newcommand{\prop}{\ensuremath{\mathsf{Prop}}\xspace}
|
||||
\newcommand{\propU}{\ensuremath{\mathsf{Prop}_\UU}\xspace}
|
||||
%Pointed types
|
||||
\newcommand{\pointed}[1]{\ensuremath{#1_\bullet}}
|
||||
|
||||
%%% Ordinals and cardinals
|
||||
\newcommand{\card}{\ensuremath{\mathsf{Card}}\xspace}
|
||||
\newcommand{\ord}{\ensuremath{\mathsf{Ord}}\xspace}
|
||||
\newcommand{\ordsl}[2]{{#1}_{/#2}}
|
||||
|
||||
%%% Univalence
|
||||
\newcommand{\ua}{\ensuremath{\mathsf{ua}}\xspace} % the inverse of idtoeqv
|
||||
\newcommand{\idtoeqv}{\ensuremath{\mathsf{idtoeqv}}\xspace}
|
||||
\newcommand{\univalence}{\ensuremath{\mathsf{univalence}}\xspace} % the full axiom
|
||||
|
||||
%%% Truncation levels
|
||||
\newcommand{\iscontr}{\ensuremath{\mathsf{isContr}}}
|
||||
\newcommand{\contr}{\ensuremath{\mathsf{contr}}} % The path to the center of contraction
|
||||
\newcommand{\isset}{\ensuremath{\mathsf{isSet}}}
|
||||
\newcommand{\isprop}{\ensuremath{\mathsf{isProp}}}
|
||||
% h-propositions
|
||||
% \newcommand{\anhprop}{a mere proposition\xspace}
|
||||
% \newcommand{\hprops}{mere propositions\xspace}
|
||||
|
||||
%%% Homotopy fibers %%%
|
||||
%\newcommand{\hfiber}[2]{\ensuremath{\mathsf{hFiber}(#1,#2)}\xspace}
|
||||
\let\hfiber\hfib
|
||||
|
||||
%%% Bracket/squash/truncation types %%%
|
||||
% \newcommand{\brck}[1]{\textsf{mere}(#1)}
|
||||
% \newcommand{\Brck}[1]{\textsf{mere}\Big(#1\Big)}
|
||||
% \newcommand{\trunc}[2]{\tau_{#1}(#2)}
|
||||
% \newcommand{\Trunc}[2]{\tau_{#1}\Big(#2\Big)}
|
||||
% \newcommand{\truncf}[1]{\tau_{#1}}
|
||||
%\newcommand{\trunc}[2]{\Vert #2\Vert_{#1}}
|
||||
\newcommand{\trunc}[2]{\mathopen{}\left\Vert #2\right\Vert_{#1}\mathclose{}}
|
||||
\newcommand{\ttrunc}[2]{\bigl\Vert #2\bigr\Vert_{#1}}
|
||||
\newcommand{\Trunc}[2]{\Bigl\Vert #2\Bigr\Vert_{#1}}
|
||||
\newcommand{\truncf}[1]{\Vert \blank \Vert_{#1}}
|
||||
\newcommand{\tproj}[3][]{\mathopen{}\left|#3\right|_{#2}^{#1}\mathclose{}}
|
||||
\newcommand{\tprojf}[2][]{|\blank|_{#2}^{#1}}
|
||||
\def\pizero{\trunc0}
|
||||
%\newcommand{\brck}[1]{\trunc{-1}{#1}}
|
||||
%\newcommand{\Brck}[1]{\Trunc{-1}{#1}}
|
||||
%\newcommand{\bproj}[1]{\tproj{-1}{#1}}
|
||||
%\newcommand{\bprojf}{\tprojf{-1}}
|
||||
|
||||
\newcommand{\brck}[1]{\trunc{}{#1}}
|
||||
\newcommand{\bbrck}[1]{\ttrunc{}{#1}}
|
||||
\newcommand{\Brck}[1]{\Trunc{}{#1}}
|
||||
\newcommand{\bproj}[1]{\tproj{}{#1}}
|
||||
\newcommand{\bprojf}{\tprojf{}}
|
||||
|
||||
% Big parentheses
|
||||
\newcommand{\Parens}[1]{\Bigl(#1\Bigr)}
|
||||
|
||||
% Projection and extension for truncations
|
||||
\let\extendsmb\ext
|
||||
\newcommand{\extend}[1]{\extendsmb(#1)}
|
||||
|
||||
%
|
||||
%%% The empty type
|
||||
\newcommand{\emptyt}{\ensuremath{\mathbf{0}}\xspace}
|
||||
|
||||
%%% The unit type
|
||||
\newcommand{\unit}{\ensuremath{\mathbf{1}}\xspace}
|
||||
\newcommand{\ttt}{\ensuremath{\star}\xspace}
|
||||
|
||||
%%% The two-element type
|
||||
\newcommand{\bool}{\ensuremath{\mathbf{2}}\xspace}
|
||||
\newcommand{\btrue}{{1_{\bool}}}
|
||||
\newcommand{\bfalse}{{0_{\bool}}}
|
||||
|
||||
%%% Injections into binary sums and pushouts
|
||||
\newcommand{\inlsym}{{\mathsf{inl}}}
|
||||
\newcommand{\inrsym}{{\mathsf{inr}}}
|
||||
\newcommand{\inl}{\ensuremath\inlsym\xspace}
|
||||
\newcommand{\inr}{\ensuremath\inrsym\xspace}
|
||||
|
||||
%%% The segment of the interval
|
||||
\newcommand{\seg}{\ensuremath{\mathsf{seg}}\xspace}
|
||||
|
||||
%%% Free groups
|
||||
\newcommand{\freegroup}[1]{F(#1)}
|
||||
\newcommand{\freegroupx}[1]{F'(#1)} % the "other" free group
|
||||
|
||||
%%% Glue of a pushout
|
||||
\newcommand{\glue}{\mathsf{glue}}
|
||||
|
||||
%%% Circles and spheres
|
||||
\newcommand{\Sn}{\mathbb{S}}
|
||||
\newcommand{\base}{\ensuremath{\mathsf{base}}\xspace}
|
||||
\newcommand{\lloop}{\ensuremath{\mathsf{loop}}\xspace}
|
||||
\newcommand{\surf}{\ensuremath{\mathsf{surf}}\xspace}
|
||||
|
||||
%%% Suspension
|
||||
\newcommand{\susp}{\Sigma}
|
||||
\newcommand{\north}{\mathsf{N}}
|
||||
\newcommand{\south}{\mathsf{S}}
|
||||
\newcommand{\merid}{\mathsf{merid}}
|
||||
|
||||
%%% Blanks (shorthand for lambda abstractions)
|
||||
\newcommand{\blank}{\mathord{\hspace{1pt}\text{--}\hspace{1pt}}}
|
||||
|
||||
%%% Nameless objects
|
||||
\newcommand{\nameless}{\mathord{\hspace{1pt}\underline{\hspace{1ex}}\hspace{1pt}}}
|
||||
|
||||
%%% Some decorations
|
||||
%\newcommand{\bbU}{\ensuremath{\mathbb{U}}\xspace}
|
||||
% \newcommand{\bbB}{\ensuremath{\mathbb{B}}\xspace}
|
||||
\newcommand{\bbP}{\ensuremath{\mathbb{P}}\xspace}
|
||||
|
||||
%%% Some categories
|
||||
\newcommand{\uset}{\ensuremath{\mathcal{S}et}\xspace}
|
||||
\newcommand{\ucat}{\ensuremath{{\mathcal{C}at}}\xspace}
|
||||
\newcommand{\urel}{\ensuremath{\mathcal{R}el}\xspace}
|
||||
\newcommand{\uhilb}{\ensuremath{\mathcal{H}ilb}\xspace}
|
||||
\newcommand{\utype}{\ensuremath{\mathcal{T}\!ype}\xspace}
|
||||
|
||||
% Pullback corner
|
||||
%\newbox\pbbox
|
||||
%\setbox\pbbox=\hbox{\xy \POS(65,0)\ar@{-} (0,0) \ar@{-} (65,65)\endxy}
|
||||
%\def\pb{\save[]+<3.5mm,-3.5mm>*{\copy\pbbox} \restore}
|
||||
|
||||
% Macros for the categories chapter
|
||||
\newcommand{\inv}[1]{{#1}^{-1}}
|
||||
\newcommand{\idtoiso}{\ensuremath{\mathsf{idtoiso}}\xspace}
|
||||
\newcommand{\isotoid}{\ensuremath{\mathsf{isotoid}}\xspace}
|
||||
\newcommand{\op}{^{\mathrm{op}}}
|
||||
\newcommand{\y}{\ensuremath{\mathbf{y}}\xspace}
|
||||
\newcommand{\dgr}[1]{{#1}^{\dagger}}
|
||||
\newcommand{\unitaryiso}{\mathrel{\cong^\dagger}}
|
||||
\newcommand{\cteqv}[2]{\ensuremath{#1 \simeq #2}\xspace}
|
||||
\newcommand{\cteqvsym}{\simeq} % Symbol for equivalence of categories
|
||||
|
||||
%%% Natural numbers
|
||||
\newcommand{\N}{\ensuremath{\mathbb{N}}\xspace}
|
||||
%\newcommand{\N}{\textbf{N}}
|
||||
\let\nat\N
|
||||
\newcommand{\natp}{\ensuremath{\nat'}\xspace} % alternative nat in induction chapter
|
||||
|
||||
\newcommand{\zerop}{\ensuremath{0'}\xspace} % alternative zero in induction chapter
|
||||
\newcommand{\suc}{\mathsf{succ}}
|
||||
\newcommand{\sucp}{\ensuremath{\suc'}\xspace} % alternative suc in induction chapter
|
||||
\newcommand{\add}{\mathsf{add}}
|
||||
\newcommand{\ack}{\mathsf{ack}}
|
||||
\newcommand{\ite}{\mathsf{iter}}
|
||||
\newcommand{\assoc}{\mathsf{assoc}}
|
||||
\newcommand{\dbl}{\ensuremath{\mathsf{double}}}
|
||||
\newcommand{\dblp}{\ensuremath{\dbl'}\xspace} % alternative double in induction chapter
|
||||
|
||||
|
||||
%%% Lists
|
||||
\newcommand{\lst}[1]{\mathsf{List}(#1)}
|
||||
\newcommand{\nil}{\mathsf{nil}}
|
||||
\newcommand{\cons}{\mathsf{cons}}
|
||||
|
||||
%%% Vectors of given length, used in induction chapter
|
||||
\newcommand{\vect}[2]{\ensuremath{\mathsf{Vec}_{#1}(#2)}\xspace}
|
||||
|
||||
%%% Integers
|
||||
\newcommand{\Z}{\ensuremath{\mathbb{Z}}\xspace}
|
||||
\newcommand{\Zsuc}{\mathsf{succ}}
|
||||
\newcommand{\Zpred}{\mathsf{pred}}
|
||||
|
||||
%%% Rationals
|
||||
\newcommand{\Q}{\ensuremath{\mathbb{Q}}\xspace}
|
||||
|
||||
%%% Function extensionality
|
||||
\newcommand{\funext}{\mathsf{funext}}
|
||||
\newcommand{\happly}{\mathsf{happly}}
|
||||
|
||||
%%% A naturality lemma
|
||||
\newcommand{\com}[3]{\mathsf{swap}_{#1,#2}(#3)}
|
||||
|
||||
%%% Code/encode/decode
|
||||
\newcommand{\code}{\ensuremath{\mathsf{code}}\xspace}
|
||||
\newcommand{\encode}{\ensuremath{\mathsf{encode}}\xspace}
|
||||
\newcommand{\decode}{\ensuremath{\mathsf{decode}}\xspace}
|
||||
|
||||
% Function definition with domain and codomain
|
||||
\newcommand{\function}[4]{\left\{\begin{array}{rcl}#1 &
|
||||
\longrightarrow & #2 \\ #3 & \longmapsto & #4 \end{array}\right.}
|
||||
|
||||
%%% Cones and cocones
|
||||
\newcommand{\cone}[2]{\mathsf{cone}_{#1}(#2)}
|
||||
\newcommand{\cocone}[2]{\mathsf{cocone}_{#1}(#2)}
|
||||
% Apply a function to a cocone
|
||||
\newcommand{\composecocone}[2]{#1\circ#2}
|
||||
\newcommand{\composecone}[2]{#2\circ#1}
|
||||
%%% Diagrams
|
||||
\newcommand{\Ddiag}{\mathscr{D}}
|
||||
|
||||
%%% (pointed) mapping spaces
|
||||
\newcommand{\Map}{\mathsf{Map}}
|
||||
|
||||
%%% The interval
|
||||
\newcommand{\interval}{\ensuremath{I}\xspace}
|
||||
\newcommand{\izero}{\ensuremath{0_{\interval}}\xspace}
|
||||
\newcommand{\ione}{\ensuremath{1_{\interval}}\xspace}
|
||||
|
||||
%%% Arrows
|
||||
\newcommand{\epi}{\ensuremath{\twoheadrightarrow}}
|
||||
\newcommand{\mono}{\ensuremath{\rightarrowtail}}
|
||||
|
||||
%%% Sets
|
||||
\newcommand{\bin}{\ensuremath{\mathrel{\widetilde{\in}}}}
|
||||
|
||||
%%% Semigroup structure
|
||||
\newcommand{\semigroupstrsym}{\ensuremath{\mathsf{SemigroupStr}}}
|
||||
\newcommand{\semigroupstr}[1]{\ensuremath{\mathsf{SemigroupStr}}(#1)}
|
||||
\newcommand{\semigroup}[0]{\ensuremath{\mathsf{Semigroup}}}
|
||||
|
||||
%%% Macros for the formal type theory
|
||||
\newcommand{\emptyctx}{\ensuremath{\cdot}}
|
||||
\newcommand{\production}{\vcentcolon\vcentcolon=}
|
||||
\newcommand{\conv}{\downarrow}
|
||||
\newcommand{\ctx}{\ensuremath{\mathsf{ctx}}}
|
||||
\newcommand{\wfctx}[1]{#1\ \ctx}
|
||||
\newcommand{\oftp}[3]{#1 \vdash #2 : #3}
|
||||
\newcommand{\jdeqtp}[4]{#1 \vdash #2 \jdeq #3 : #4}
|
||||
\newcommand{\judg}[2]{#1 \vdash #2}
|
||||
\newcommand{\tmtp}[2]{#1 \mathord{:} #2}
|
||||
|
||||
% rule names
|
||||
\newcommand{\form}{\textsc{form}}
|
||||
\newcommand{\intro}{\textsc{intro}}
|
||||
\newcommand{\elim}{\textsc{elim}}
|
||||
\newcommand{\comp}{\textsc{comp}}
|
||||
\newcommand{\uniq}{\textsc{uniq}}
|
||||
\newcommand{\Weak}{\mathsf{Wkg}}
|
||||
\newcommand{\Vble}{\mathsf{Vble}}
|
||||
\newcommand{\Exch}{\mathsf{Exch}}
|
||||
\newcommand{\Subst}{\mathsf{Subst}}
|
||||
|
||||
%%% Macros for HITs
|
||||
\newcommand{\cc}{\mathsf{c}}
|
||||
\newcommand{\pp}{\mathsf{p}}
|
||||
\newcommand{\cct}{\widetilde{\mathsf{c}}}
|
||||
\newcommand{\ppt}{\widetilde{\mathsf{p}}}
|
||||
\newcommand{\Wtil}{\ensuremath{\widetilde{W}}\xspace}
|
||||
|
||||
%%% Macros for n-types
|
||||
\newcommand{\istype}[1]{\mathsf{is}\mbox{-}{#1}\mbox{-}\mathsf{type}}
|
||||
\newcommand{\nplusone}{\ensuremath{(n+1)}}
|
||||
\newcommand{\nminusone}{\ensuremath{(n-1)}}
|
||||
\newcommand{\fact}{\mathsf{fact}}
|
||||
|
||||
%%% Macros for homotopy
|
||||
\newcommand{\kbar}{\overline{k}} % Used in van Kampen's theorem
|
||||
|
||||
%%% Macros for induction
|
||||
\newcommand{\natw}{\ensuremath{\mathbf{N^w}}\xspace}
|
||||
\newcommand{\zerow}{\ensuremath{0^\mathbf{w}}\xspace}
|
||||
\newcommand{\sucw}{\ensuremath{\mathbf{s^w}}\xspace}
|
||||
\newcommand{\nalg}{\nat\mathsf{Alg}}
|
||||
\newcommand{\nhom}{\nat\mathsf{Hom}}
|
||||
\newcommand{\ishinitw}{\mathsf{isHinit}_{\mathsf{W}}}
|
||||
\newcommand{\ishinitn}{\mathsf{isHinit}_\nat}
|
||||
\newcommand{\w}{\mathsf{W}}
|
||||
\newcommand{\walg}{\w\mathsf{Alg}}
|
||||
\newcommand{\whom}{\w\mathsf{Hom}}
|
||||
|
||||
%%% Macros for real numbers
|
||||
\newcommand{\RC}{\ensuremath{\mathbb{R}_\mathsf{c}}\xspace} % Cauchy
|
||||
\newcommand{\RD}{\ensuremath{\mathbb{R}_\mathsf{d}}\xspace} % Dedekind
|
||||
\newcommand{\R}{\ensuremath{\mathbb{R}}\xspace} % Either
|
||||
\newcommand{\barRD}{\ensuremath{\bar{\mathbb{R}}_\mathsf{d}}\xspace} % Dedekind completion of Dedekind
|
||||
|
||||
\newcommand{\close}[1]{\sim_{#1}} % Relation of closeness
|
||||
\newcommand{\closesym}{\mathord\sim}
|
||||
\newcommand{\rclim}{\mathsf{lim}} % HIT constructor for Cauchy reals
|
||||
\newcommand{\rcrat}{\mathsf{rat}} % Embedding of rationals into Cauchy reals
|
||||
\newcommand{\rceq}{\mathsf{eq}_{\RC}} % HIT path constructor
|
||||
\newcommand{\CAP}{\mathcal{C}} % The type of Cauchy approximations
|
||||
\newcommand{\Qp}{\Q_{+}}
|
||||
\newcommand{\apart}{\mathrel{\#}} % apartness
|
||||
\newcommand{\dcut}{\mathsf{isCut}} % Dedekind cut
|
||||
\newcommand{\cover}{\triangleleft} % inductive cover
|
||||
\newcommand{\intfam}[3]{(#2, \lam{#1} #3)} % family of rational intervals
|
||||
|
||||
% Macros for the Cauchy reals construction
|
||||
\newcommand{\bsim}{\frown}
|
||||
\newcommand{\bbsim}{\smile}
|
||||
|
||||
\newcommand{\hapx}{\diamondsuit\approx}
|
||||
\newcommand{\hapname}{\diamondsuit}
|
||||
\newcommand{\hapxb}{\heartsuit\approx}
|
||||
\newcommand{\hapbname}{\heartsuit}
|
||||
\newcommand{\tap}[1]{\bullet\approx_{#1}\triangle}
|
||||
\newcommand{\tapname}{\triangle}
|
||||
\newcommand{\tapb}[1]{\bullet\approx_{#1}\square}
|
||||
\newcommand{\tapbname}{\square}
|
||||
|
||||
%%% Macros for surreals
|
||||
\newcommand{\NO}{\ensuremath{\mathsf{No}}\xspace}
|
||||
\newcommand{\surr}[2]{\{\,#1\,\big|\,#2\,\}}
|
||||
\newcommand{\LL}{\mathcal{L}}
|
||||
\newcommand{\RR}{\mathcal{R}}
|
||||
\newcommand{\noeq}{\mathsf{eq}_{\NO}} % HIT path constructor
|
||||
|
||||
\newcommand{\ble}{\trianglelefteqslant}
|
||||
\newcommand{\blt}{\vartriangleleft}
|
||||
\newcommand{\bble}{\sqsubseteq}
|
||||
\newcommand{\bblt}{\sqsubset}
|
||||
|
||||
\newcommand{\hle}{\diamondsuit\preceq}
|
||||
\newcommand{\hlt}{\diamondsuit\prec}
|
||||
\newcommand{\hlname}{\diamondsuit}
|
||||
\newcommand{\hleb}{\heartsuit\preceq}
|
||||
\newcommand{\hltb}{\heartsuit\prec}
|
||||
\newcommand{\hlbname}{\heartsuit}
|
||||
% \newcommand{\tle}{(\bullet\preceq\triangle)}
|
||||
% \newcommand{\tlt}{(\bullet\prec\triangle)}
|
||||
\newcommand{\tle}{\triangle\preceq}
|
||||
\newcommand{\tlt}{\triangle\prec}
|
||||
\newcommand{\tlname}{\triangle}
|
||||
% \newcommand{\tleb}{(\bullet\preceq\square)}
|
||||
% \newcommand{\tltb}{(\bullet\prec\square)}
|
||||
\newcommand{\tleb}{\square\preceq}
|
||||
\newcommand{\tltb}{\square\prec}
|
||||
\newcommand{\tlbname}{\square}
|
||||
|
||||
%%% Macros for set theory
|
||||
\newcommand{\vset}{\mathsf{set}} % point constructor for cummulative hierarchy V
|
||||
\def\cd{\tproj0}
|
||||
\newcommand{\inj}{\ensuremath{\mathsf{inj}}} % type of injections
|
||||
\newcommand{\acc}{\ensuremath{\mathsf{acc}}} % accessibility
|
||||
|
||||
\newcommand{\atMostOne}{\mathsf{atMostOne}}
|
||||
|
||||
\newcommand{\power}[1]{\mathcal{P}(#1)} % power set
|
||||
\newcommand{\powerp}[1]{\mathcal{P}_+(#1)} % inhabited power set
|
||||
|
||||
%%%% THEOREM ENVIRONMENTS %%%%
|
||||
|
||||
% Hyperref includes the command \autoref{...} which is like \ref{...}
|
||||
% except that it automatically inserts the type of the thing you're
|
||||
% referring to, e.g. it produces "Theorem 3.8" instead of just "3.8"
|
||||
% (and makes the whole thing a hyperlink). This saves a slight amount
|
||||
% of typing, but more importantly it means that if you decide later on
|
||||
% that 3.8 should be a Lemma or a Definition instead of a Theorem, you
|
||||
% don't have to change the name in all the places you referred to it.
|
||||
|
||||
% The following hack improves on this by using the same counter for
|
||||
% all theorem-type environments, so that after Theorem 1.1 comes
|
||||
% Corollary 1.2 rather than Corollary 1.1. This makes it much easier
|
||||
% for the reader to find a particular theorem when flipping through
|
||||
% the document.
|
||||
\makeatletter
|
||||
\def\defthm#1#2#3{%
|
||||
%% Ensure all theorem types are numbered with the same counter
|
||||
\newaliascnt{#1}{thm}
|
||||
\newtheorem{#1}[#1]{#2}
|
||||
\aliascntresetthe{#1}
|
||||
%% This command tells cleveref's \cref what to call things
|
||||
\crefname{#1}{#2}{#3}}
|
||||
|
||||
% Now define a bunch of theorem-type environments.
|
||||
\newtheorem{thm}{Theorem}[section]
|
||||
\crefname{thm}{Theorem}{Theorems}
|
||||
%\defthm{prop}{Proposition} % Probably we shouldn't use "Proposition" in this way
|
||||
\defthm{cor}{Corollary}{Corollaries}
|
||||
\defthm{lem}{Lemma}{Lemmas}
|
||||
\defthm{axiom}{Axiom}{Axioms}
|
||||
% Since definitions and theorems in type theory are synonymous, should
|
||||
% we actually use the same theoremstyle for them?
|
||||
\theoremstyle{definition}
|
||||
\defthm{defn}{Definition}{Definitions}
|
||||
\theoremstyle{remark}
|
||||
\defthm{rmk}{Remark}{Remarks}
|
||||
\defthm{eg}{Example}{Examples}
|
||||
\defthm{egs}{Examples}{Examples}
|
||||
\defthm{notes}{Notes}{Notes}
|
||||
% Number exercises within chapters, with their own counter.
|
||||
%\newtheorem{ex}{Exercise}[chapter]
|
||||
%\crefname{ex}{Exercise}{Exercises}
|
||||
|
||||
% Display format for sections
|
||||
\crefformat{section}{\S#2#1#3}
|
||||
\Crefformat{section}{Section~#2#1#3}
|
||||
\crefrangeformat{section}{\S\S#3#1#4--#5#2#6}
|
||||
\Crefrangeformat{section}{Sections~#3#1#4--#5#2#6}
|
||||
\crefmultiformat{section}{\S\S#2#1#3}{ and~#2#1#3}{, #2#1#3}{ and~#2#1#3}
|
||||
\Crefmultiformat{section}{Sections~#2#1#3}{ and~#2#1#3}{, #2#1#3}{ and~#2#1#3}
|
||||
\crefrangemultiformat{section}{\S\S#3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}{, #3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}
|
||||
\Crefrangemultiformat{section}{Sections~#3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}{, #3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}
|
||||
|
||||
% Display format for appendices
|
||||
\crefformat{appendix}{Appendix~#2#1#3}
|
||||
\Crefformat{appendix}{Appendix~#2#1#3}
|
||||
\crefrangeformat{appendix}{Appendices~#3#1#4--#5#2#6}
|
||||
\Crefrangeformat{appendix}{Appendices~#3#1#4--#5#2#6}
|
||||
\crefmultiformat{appendix}{Appendices~#2#1#3}{ and~#2#1#3}{, #2#1#3}{ and~#2#1#3}
|
||||
\Crefmultiformat{appendix}{Appendices~#2#1#3}{ and~#2#1#3}{, #2#1#3}{ and~#2#1#3}
|
||||
\crefrangemultiformat{appendix}{Appendices~#3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}{, #3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}
|
||||
\Crefrangemultiformat{appendix}{Appendices~#3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}{, #3#1#4--#5#2#6}{ and~#3#1#4--#5#2#6}
|
||||
|
||||
\crefname{part}{Part}{Parts}
|
||||
|
||||
% Number subsubsections
|
||||
\setcounter{secnumdepth}{5}
|
||||
|
||||
% Display format for figures
|
||||
\crefname{figure}{Figure}{Figures}
|
||||
|
||||
% Use cleveref instead of hyperref's \autoref
|
||||
\let\autoref\cref
|
||||
|
||||
|
||||
%%%% EQUATION NUMBERING %%%%
|
||||
|
||||
% The following hack uses the single theorem counter to number
|
||||
% equations as well, so that we don't have both Theorem 1.1 and
|
||||
% equation (1.1).
|
||||
\let\c@equation\c@thm
|
||||
\numberwithin{equation}{section}
|
||||
|
||||
|
||||
%%%% ENUMERATE NUMBERING %%%%
|
||||
|
||||
% Number the first level of enumerates as (i), (ii), ...
|
||||
\renewcommand{\theenumi}{(\roman{enumi})}
|
||||
\renewcommand{\labelenumi}{\theenumi}
|
||||
|
||||
|
||||
%%%% MARGINS %%%%
|
||||
|
||||
% This is a matter of personal preference, but I think the left
|
||||
% margins on enumerates and itemizes are too wide.
|
||||
\setitemize[1]{leftmargin=2em}
|
||||
\setenumerate[1]{leftmargin=*}
|
||||
|
||||
% Likewise that they are too spaced out.
|
||||
\setitemize[1]{itemsep=-0.2em}
|
||||
\setenumerate[1]{itemsep=-0.2em}
|
||||
|
||||
%%% Notes %%%
|
||||
\def\noteson{%
|
||||
\gdef\note##1{\mbox{}\marginpar{\color{blue}\textasteriskcentered\ ##1}}}
|
||||
\gdef\notesoff{\gdef\note##1{\null}}
|
||||
\noteson
|
||||
|
||||
\newcommand{\Coq}{\textsc{Coq}\xspace}
|
||||
\newcommand{\Agda}{\textsc{Agda}\xspace}
|
||||
\newcommand{\NuPRL}{\textsc{NuPRL}\xspace}
|
||||
|
||||
%%%% CITATIONS %%%%
|
||||
|
||||
% \let \cite \citep
|
||||
|
||||
%%%% INDEX %%%%
|
||||
|
||||
\newcommand{\footstyle}[1]{{\hyperpage{#1}}n} % If you index something that is in a footnote
|
||||
\newcommand{\defstyle}[1]{\textbf{\hyperpage{#1}}} % Style for pageref to a definition
|
||||
|
||||
\newcommand{\indexdef}[1]{\index{#1|defstyle}} % Index a definition
|
||||
\newcommand{\indexfoot}[1]{\index{#1|footstyle}} % Index a term in a footnote
|
||||
\newcommand{\indexsee}[2]{\index{#1|see{#2}}} % Index "see also"
|
||||
|
||||
|
||||
%%%% Standard phrasing or spelling of common phrases %%%%
|
||||
|
||||
\newcommand{\ZF}{Zermelo--Fraenkel}
|
||||
\newcommand{\CZF}{Constructive \ZF{} Set Theory}
|
||||
|
||||
\newcommand{\LEM}[1]{\ensuremath{\mathsf{LEM}_{#1}}\xspace}
|
||||
\newcommand{\choice}[1]{\ensuremath{\mathsf{AC}_{#1}}\xspace}
|
||||
|
||||
%%%% MISC %%%%
|
||||
|
||||
\newcommand{\mentalpause}{\medskip} % Use for "mental" pause, instead of \smallskip or \medskip
|
||||
|
||||
%% Use \symlabel instead of \label to mark a pageref that you need in the index of symbols
|
||||
\newcounter{symindex}
|
||||
\newcommand{\symlabel}[1]{\refstepcounter{symindex}\label{#1}}
|
||||
|
||||
% Local Variables:
|
||||
% mode: latex
|
||||
% TeX-master: "hott-online"
|
||||
% End:
|
640
Notes/notes.tex
Normal file
640
Notes/notes.tex
Normal file
|
@ -0,0 +1,640 @@
|
|||
\documentclass{article}
|
||||
|
||||
\input{preamble-articles}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% We define a command \@ifnextcharamong accepting an arbitrary number of
|
||||
%%%% arguments. The first is what it should do if a match is found, the second
|
||||
%%%% contains what it should do when no match is found; all the other arguments
|
||||
%%%% are the things it tries to find as the next character.
|
||||
%%%%
|
||||
%%%% For example \@ifnextcharamong{#1}{#2}{*}{\bgroup} expands #1 if the next
|
||||
%%%% character is a * or a \bgroup and it expands #2 otherwise.
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\@ifnextcharamong}[2]
|
||||
{\@ifnextchar\bgroup{\@@ifnextchar{#1}{\@@ifnextcharamong{#1}{#2}}}{#2}}
|
||||
\newcommand{\@@ifnextchar}[3]{\@ifnextchar{#3}{#1}{#2}}
|
||||
\newcommand{\@@ifnextcharamong}[3]{\@ifnextcharamong{#1}{#2}}
|
||||
\makeatother
|
||||
|
||||
\newcommand{\ucomp}[1]{\hat{#1}}
|
||||
\newcommand{\finset}[1]{{[#1]}}
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\higherequifibsf}{\mathcal}
|
||||
\newcommand{\higherequifib}[2]{\higherequifibsf{#1}(#2)}
|
||||
\newcommand{\underlyinggraph}[1]{U(#1)}
|
||||
\newcommand{\theequifib}[1]{{\def\higherequifibsf{}#1}}
|
||||
\makeatother
|
||||
|
||||
\newcommand{\loopspace}[2][]{\typefont{\Omega}^{#1}(#2)}
|
||||
\newcommand{\join}[2]{{#1}*{#2}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\title{Notes on algebraic topology}
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\part{Spectral sequences}
|
||||
\section{Background}
|
||||
\begin{defn}
|
||||
A graded $R$-module $M$ is an $R$-module which decomposes as a direct
|
||||
sum
|
||||
\begin{equation*}
|
||||
\bigoplus_{p\in\Z} F_p M
|
||||
\end{equation*}
|
||||
of $R$-modules. A graded $R$-homomorphism $h:M\to N$ is an $R$-homomorphism which
|
||||
decomposes into $h_p:F_pM\to F_pN$.
|
||||
\end{defn}
|
||||
|
||||
\begin{lem}
|
||||
Suppose $M$ and $N$ are graded $R$-modules. Then $M\otimes N$ is a graded
|
||||
$R$-module by
|
||||
\begin{equation*}
|
||||
(M\otimes_R N)_i\defeq \bigoplus_{p+q=i} F_pM\otimes_R F_qN.
|
||||
\end{equation*}
|
||||
\end{lem}
|
||||
|
||||
\begin{defn}
|
||||
A graded algebra is a graded $R$-module $M$ for which there are linear mappings
|
||||
$\varphi_{p,q}:F_pM\otimes_R F_qM\to F_{p+q}M$, i.e.~a graded $R$-homomorphism
|
||||
$\varphi:M\otimes M\to M$, which is associative in the sense
|
||||
that the diagram
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
M\otimes M\otimes M \arrow[r,"\varphi\otimes 1"] \arrow[d,swap,"1\otimes\varphi"] &
|
||||
M\otimes M \arrow[d,"\varphi"] \\ M\otimes M \arrow[r,swap,"\varphi"] & M
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
commutes.
|
||||
\end{defn}
|
||||
|
||||
\begin{eg}
|
||||
Polynomials with coefficients in $R$ forms a graded algebra. Moreover, in the
|
||||
polynomial ring $R[X]$, we find that $G_pR[X]\defeq F_pR[X]/F_{p-1}R[X]\cong R$.
|
||||
Since those are free modules, we have that $R[X]\cong \bigoplus_p G_pR[X]$.
|
||||
\end{eg}
|
||||
|
||||
\section{Spectral sequences}
|
||||
|
||||
\subsection{Motivation from the long exact sequence of a pair}
|
||||
|
||||
Recall that a pair of spaces $(X,A)$ induces a long exact sequence of homology
|
||||
groups
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
\cdots \arrow[r,"\partial_{n+1}"]
|
||||
& H_n(A) \arrow[r,"i_n"]
|
||||
& H_n(X) \arrow[r,"j_n"]
|
||||
& H_n(X,A) \arrow[r,"\partial_n"]
|
||||
& H_{n-1}(A) \arrow[r,"i_{n-1}"]
|
||||
& \cdots
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
from the short exact sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
0 \arrow[r] & C_\ast(A) \arrow[r] & C_\ast(X) \arrow[r] & C_\ast(X,A) \arrow[r] & 0
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
of chain complexes, by means of the snake lemma. This long exact sequence helps
|
||||
us to compute $H_n(X)$ in terms of $H_n(A)$ and $H_n(X,A)$, which may be easier
|
||||
to determine. For instance, from the long exact sequence we obtain the short
|
||||
exact sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
0 \arrow[r] & \mathrm{coker}(\partial_{n+1}) \arrow[r] & H_n(X) \arrow[r] & \mathrm{ker}(\partial_n) \arrow[r] & 0
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
and hence we have determined that $H_n(X)$ can be obtained as some element of the
|
||||
group $\mathrm{Ext}(\mathrm{coker}(\partial_{n+1}),\mathrm{ker}(\partial_n))$.
|
||||
In other words, $H_n(X)$ is a particular solution to an extension problem.
|
||||
|
||||
Note also that the long exact sequence of relative homology groups can be
|
||||
presented as an exact triangle of graded $R$-homomorphisms:
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}[column sep=0em]
|
||||
\bigoplus_n H_n(C_\ast(A))
|
||||
\arrow[rr,"i"] & & \bigoplus_n H_n(C_\ast(X)) \arrow[dl,"j"] \\
|
||||
& \bigoplus_n H_n(C_\ast(X,A)) \arrow[ul,"\partial"]
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
|
||||
The first idea of spectral sequences is to generalize the long exact sequence
|
||||
of homology obtained from a pair of spaces, to an algebraic gadget obtained from
|
||||
a filtration on a space, and mimic the derivation of determining the homology
|
||||
group as a solution to an extension problem.
|
||||
|
||||
\begin{defn}
|
||||
A filtration of a space X consists of a sequence
|
||||
\begin{equation*}
|
||||
\cdots\subseteq X_p\subseteq X_{p+1}\subseteq\cdots
|
||||
\end{equation*}
|
||||
such that $X=\bigcup_p X_p$ and $\bigcap_p X_p=\varnothing$. A filtration of $X$ is said to be bounded, if
|
||||
$X_p=\varnothing$ for $p$ sufficiently small, and $X_p=X$ for $X$ sufficiently
|
||||
large.
|
||||
\end{defn}
|
||||
|
||||
An important class of filtered spaces is that of CW-complexes, where the filtration
|
||||
$X_p$ of $X$ is given by the $p$-skeleton of $X$. Another case is where
|
||||
$X_p\defeq\varnothing$ for $p<0$, $X_0\defeq A$ and $X_p\defeq X$ for $p>0$; here
|
||||
we recover the old theory of the topological pair.
|
||||
|
||||
\begin{defn}
|
||||
Given a space $X$ with a filtration, we can form the staircase diagram
|
||||
\begin{footnotesize}
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
& \vdots \arrow[d] & & \vdots \arrow[d] \\
|
||||
\cdots \arrow[r]
|
||||
& H_{n+1}(X_p) \arrow[r] \arrow[d]
|
||||
& H_{n+1}(X_p,X_{p-1}) \arrow[r]
|
||||
& H_n(X_{p-1}) \arrow[r] \arrow[d]
|
||||
& H_n(X_{p-1},X_{p-2}) \arrow[r]
|
||||
& \cdots \\
|
||||
\cdots \arrow[r]
|
||||
& H_{n+1}(X_{p+1}) \arrow[r] \arrow[d]
|
||||
& H_{n+1}(X_{p+1},X_{p}) \arrow[r]
|
||||
& H_n(X_{p}) \arrow[r] \arrow[d]
|
||||
& H_n(X_{p},X_{p-1}) \arrow[r]
|
||||
& \cdots \\
|
||||
& \vdots & & \vdots
|
||||
\end{tikzcd}
|
||||
\end{equation*}%
|
||||
\end{footnotesize}%
|
||||
in which the familiar long exact sequence of the pairs $(X_p,X_{p-1})$ run
|
||||
down like a staircase.
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
Let $X$ be a space with a filtration. Then we obtain the exact couple
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
A \arrow[rr,"i"] & & A \arrow[dl,"j"] \\
|
||||
& E \arrow[ul,"\partial"]
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
in which $A\defeq\bigoplus_{p,n} H_n(X_p)$, and $E\defeq\bigoplus_{p,n}H_n(X_p,X_{p-1})$.
|
||||
\end{defn}
|
||||
|
||||
We can come to such an exact couple from any filtered chain complex, which is
|
||||
what we turn our attention to before continuing.
|
||||
|
||||
\subsection{The spectral sequence of a filtered complex}
|
||||
|
||||
\begin{defn}
|
||||
A filtration of an $R$-module $M$ consists of a sequence
|
||||
\begin{equation*}
|
||||
\cdots\subseteq F_pM\subseteq F_{p+1}M\subseteq\cdots
|
||||
\end{equation*}
|
||||
of $R$-submodules of $M$, such that $M=\bigcup_p F_pM$ and $\bigcap_p F_pM=0$.
|
||||
A filtration of $R$ is said to be bounded if $F_pM=0$ for $p$ sufficiently
|
||||
small and $F_pM=M$ for $p$ sufficiently large.
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
Let $\{M,F_pM\}$ be a graded $R$-module. The associated graded module is defined
|
||||
by $G_p M\defeq F_pM/F_{p-1}M$. We obtain a short exact sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
0 \arrow[r] & F_{p-1}M \arrow[r] & F_pM \arrow[r] & G_pM \arrow[r] & 0.
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
\end{defn}
|
||||
|
||||
\begin{rmk}
|
||||
It would be nice if $F_pM\cong F_{p-1}M\oplus G_pM$, so that we can write
|
||||
$M\cong\bigoplus_p G_pM$. Under what condition does this hold? This holds if
|
||||
each $G_pM$ is a projective $R$-module, so under what conditions is this true?
|
||||
\end{rmk}
|
||||
|
||||
\begin{defn}
|
||||
A filtered chain complex is a chain complex $(C_\ast,\partial)$ together with a
|
||||
filtration $\{F_pC_i\}$ of each $C_i$, such that the differential preserves the
|
||||
filtration, i.e.~$\partial(F_pC_i)\subseteq F_p C_{i-1}$.
|
||||
|
||||
A filtration of a chain complex is said to be bounded if it is bounded in each
|
||||
dimension.
|
||||
\end{defn}
|
||||
|
||||
Let $(F_pC_\ast,\partial)$ be a filtered chain complex. We have again our
|
||||
short exact sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
0 \arrow[r] & F_{p-1} C_\ast \arrow[r] & F_p C_\ast \arrow[r] & G_p C_\ast \arrow[r] & 0
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
of chain complexes. This also gives us the long exact sequence on homology,
|
||||
which we may express conveniently as the exact couple
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}[column sep=0em]
|
||||
\bigoplus_{p,q} H_{p+q}(F_pC_\ast) \arrow[rr,"i"] & & \bigoplus_{p,q} H_{p+q}(F_pC_\ast) \arrow[dl,"j"] \\
|
||||
& \bigoplus_{p,q} H_{p+q}(G_p C_\ast) \arrow[ul,"k"]
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
consisting of graded $R$-homomorphisms (of which $k$ shifts in degree).
|
||||
|
||||
\begin{defn}
|
||||
Consider an exact couple, i.e.~a commutative triangle
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
A \arrow[rr,"i"] & & A \arrow[dl,"j"] \\ & E \arrow[ul,"k"]
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
of $R$-modules, which is exact at every vertex. Taking $\partial^0\defeq j\circ k$,
|
||||
we see that $(\partial^0)^2=0$ by exactness. We may now form the derived exact couple
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}[column sep=0]
|
||||
\mathrm{im}(i) \arrow[rr,"i'"] & & \mathrm{im}(i) \arrow[dl,"j'"] \\
|
||||
& \frac{\mathrm{ker}(\partial)}{\mathrm{im}(\partial)} \arrow[ul,"k'"]
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
where
|
||||
\begin{align*}
|
||||
i'(i(a)) & \defeq i(i(a)) \\
|
||||
j'(i(a)) & \defeq [j(a)] \\
|
||||
k'([e]) & \defeq k(e)
|
||||
\end{align*}
|
||||
\end{defn}
|
||||
|
||||
\begin{rmk}
|
||||
Since quotients commute with direct sums (both are colimits), it follows that
|
||||
\begin{equation*}
|
||||
E'\defeq \frac{\mathrm{ker}(\partial)}{\mathrm{im}(\partial)}
|
||||
\cong
|
||||
\bigoplus_{p,q} \frac{\mathrm{ker}(\partial^0_{p,q})}{\mathrm{im}(\partial^0_{p,q+1})}
|
||||
\end{equation*}
|
||||
is a graded $R$-module. In other words, $E'$ is a direct sum of the homology
|
||||
groups of the $p$-indexed family of chain complexes
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
\cdots \arrow[r] & E_{p,q}^0 \arrow[r,"{\partial^0_{p,q}}"] & E_{p,q-1}^0 \arrow[r] & \cdots
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
It follows that $i'$, $j'$ and $k'$ are graded
|
||||
whenever $i$, $j$ and $k$ are, where $k'$ shifts down in dimension the same way
|
||||
$k$ does.
|
||||
\end{rmk}
|
||||
|
||||
\begin{comment}
|
||||
\begin{defn}
|
||||
We define
|
||||
\begin{equation*}
|
||||
E_{p,q}^0\defeq G_pC_{p+q}\defeq F_pC_{p+1}/F_{p-1}C_{p+q},
|
||||
\end{equation*}
|
||||
|
||||
Since the differential preserves the filtration, we obtain from the differentials
|
||||
well-defined $R$-homomorphisms functioning as the boundary maps in the chain complex
|
||||
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
The homology groups
|
||||
\begin{equation*}
|
||||
E^1_{p,q}\defeq \mathrm{ker}(\partial^0_{p,q})/\mathrm{im}(\partial^0_{p,q+1})
|
||||
\end{equation*}
|
||||
form again a chain complex, with boundary maps $\partial^1_{p,q}:E^1_{p,q}\to
|
||||
E^1_{p,q-1}$. Thus, this process may be repeated indefinitely.
|
||||
\end{defn}
|
||||
\end{comment}
|
||||
|
||||
\begin{comment}
|
||||
\begin{lem}
|
||||
Let $(C_\ast,\partial)$ be a filtered chain complex. Then there is a filtration
|
||||
on the homology of $C_\ast$, given by
|
||||
\begin{equation*}
|
||||
F_pH_i(C_\ast)\defeq\{\alpha\in H_i(C_\ast)\mid \exists_{(x\in F_p C_i)}\,\alpha=[x]\}.
|
||||
\end{equation*}
|
||||
\end{lem}
|
||||
\end{comment}
|
||||
|
||||
\subsection{Convergent spectral sequences}
|
||||
|
||||
\begin{defn}
|
||||
A spectral sequence consists of
|
||||
\begin{enumerate}
|
||||
\item An $R$-module $E^r_{p,q}$ for each $p,q\in\Z$ and each $r\geq 0$.
|
||||
\item Differentials $\partial_r:E^r_{p,q}\to E^r_{p-r,q+r-1}$ such that
|
||||
$\partial_r^2=0$ and $E^{r+1}$ is the homology of $(E^r,\partial_r)$
|
||||
\end{enumerate}
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
A spectral sequence $\{E^r,\partial_r\}$ of $R$-modules is said to converge
|
||||
if for every $p,q\in\Z$, one has $\partial_r=0:E^r_{p,q}\to E^r_{p-r,q+r-1}$
|
||||
for $r$ sufficiently large.
|
||||
\end{defn}
|
||||
|
||||
\begin{rmk}
|
||||
If a spectral sequence $\{E^r,\partial_r\}$ converges, then the $R$-module
|
||||
$E^r_{p,q}$ is independent of $r$ for sufficiently large $r$.
|
||||
\end{rmk}
|
||||
|
||||
\begin{thm}
|
||||
Let $(F_pC_\ast,\partial)$ be a filtered complex. Then we obtain a spectral
|
||||
sequence $(E^r_{p,q},\partial^r)$ defined for $r\geq 0$, with
|
||||
\begin{equation*}
|
||||
E^1_{p,q}\defeq H_{p+q}(G_pC_\ast).
|
||||
\end{equation*}
|
||||
This is the spectral sequence of filtered complexes.
|
||||
\end{thm}
|
||||
|
||||
\begin{thm}
|
||||
If $(F_pC_\ast,\partial)$ is a bounded filtered complex, then the spectral
|
||||
sequence converges to
|
||||
\begin{equation*}
|
||||
E^\infty_{p,q}\defeq G_pH_{p+q}(C_\ast).
|
||||
\end{equation*}
|
||||
\end{thm}
|
||||
|
||||
Let $X$ be a filtered space, and let our goal be to compute the $n$-th (co)homology
|
||||
group $H_n(X)$. In general, this might be a complicated task. However, it might
|
||||
be easier to compute the homologies of the subcomplex $C_\ast(X_p)$, and the quotient
|
||||
complex $C_\ast(X)/C_\ast(X_p)$. From this, we obtain a short exact sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
0 \arrow[r]
|
||||
& \mathrm{coker}(\delta) \arrow[r]
|
||||
& H_\ast(X) \arrow[r]
|
||||
& \mathrm{ker}(\delta) \arrow[r]
|
||||
& 0
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
|
||||
\subsection{The Serre spectral sequence}
|
||||
|
||||
The Serre spectral sequence relates the homology of a Serre fibration to the
|
||||
homology of the fibers and the base. Thus, in some cases one can compute the
|
||||
homology of the fibration in terms of the homology of the fibers and the base.
|
||||
|
||||
Let $\pi : X\to B$ be a fibration, with $B$ a path-connected CW-complex, and we
|
||||
filter $X$ by the subspaces $X_p\defeq \pi^{-1}(B_p)$, in which $B_p$ is the
|
||||
$p$-skeleton of $B$.
|
||||
|
||||
\begin{lem}
|
||||
The spectral sequence for homology with coefficients in $G$ associated to this
|
||||
filtration of $X$ converges to $H_\ast(X;G)$.
|
||||
\end{lem}
|
||||
|
||||
\begin{thm}
|
||||
Let $F\to X\to B$ be a fibration with $B$ path-connected. If $\pi_1(B)$ acts
|
||||
trivially on $H_\ast(F;G)$, then there is a spectral sequence $\{E^r_{p,q},\partial_r\}$
|
||||
with:
|
||||
\begin{enumerate}
|
||||
%\item $\partial_r : E^r_{p,q}\to E^r_{p-r,q+r-1}$ and $E^{r+1}_{p,q}=\mathrm{ker}\,d_r/\mathrm{im}\,dr$.
|
||||
\item the stable terms $E^\infty_{p,n-p}$ are isomorphic to $F^p_n/F^{p-1}_n$ in
|
||||
a filtration $0\subseteq F^0_n\subseteq\cdots\subseteq F^n_n=H_n(X;G)$ of ...
|
||||
\item $E^2_{p,q}\cong H_p(B;H_q(F;G))$.
|
||||
\end{enumerate}
|
||||
\end{thm}
|
||||
|
||||
\part{K-theory}
|
||||
|
||||
\section{Vector bundles}
|
||||
|
||||
\subsection{Basic spaces}
|
||||
\begin{defn}
|
||||
The \define{$n$-sphere} $\Sn^n$ is the subspace of $\R^{n+1}$ consisting of unit vectors.
|
||||
The \define{real projective $n$-space} $\R P^n$ is the space of lines in
|
||||
$\R^{n+1}$ through the origin. Equivalently, we may regard $\R P^n$ as the quotient
|
||||
space of $\Sn^n$ in which the antipodal pairs of points are identified. Notice
|
||||
that $\R P^1\approx \Sn^1$.
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
For each $n$, we may include the $n$-sphere $\Sn^n$ into $\Sn^{n+1}$ by mapping
|
||||
it into the equator. These inclusions induce inclusions $\R P^n\to \R P^{n+1}$.
|
||||
We define $\R P^\infty$ to be the sequential colimit of $\R P^n$.
|
||||
\end{defn}
|
||||
|
||||
\subsection{Definition and basic properties}
|
||||
\begin{defn}
|
||||
An \define{$n$-dimensional vector bundle} is a map $p:E\to B$ together with a
|
||||
real vector space structure on $p^{-1}(b)$ for each $b\in B$, satisfying the
|
||||
\define{local triviality condition}, which says that there is an open cover
|
||||
$\mathcal{C}$ of $B$, with homeomorphisms $h_U:p^{-1}(U)\to U\times\mathbb{R}^n$
|
||||
for each $U\in\mathcal{C}$, which maps $p^{-1}(b)$ to $\{b\}\times\mathbb{R}^n$
|
||||
for each $b\in U$.
|
||||
|
||||
The functions $h_U$ are also called \define{local trivializations}. Given a
|
||||
vector bundle $p:E\to B$, the space $B$ is called the \define{base space}, the
|
||||
space $E$ is called the \define{total space}, and the spaces $p^{-1}(b)$ are
|
||||
called the \define{fibers}. A $1$-dimensional
|
||||
vector bundle is also called a \define{line bundle}.
|
||||
\end{defn}
|
||||
|
||||
\begin{defn}
|
||||
An \define{isomorphism of vector bundles} from $p:E\to B$ to $p':E'\to B$
|
||||
consists of a map $h:E\to E'$ satisfying $p'\circ h=p$,
|
||||
which induces a linear isomorphism
|
||||
$p^{-1}(b)\to p'^{-1}(b)$ between each of the fibers.
|
||||
\end{defn}
|
||||
|
||||
\begin{lem}
|
||||
If $h:E\to E'$ is an isomorphism of vector bundles, then the underlying map
|
||||
of type $E\to E'$ is a homeomorphism.
|
||||
\end{lem}
|
||||
|
||||
\begin{proof}
|
||||
Suppose $h:E\to E'$ induces isomorphisms $p^{-1}(b)\to p'^{-1}(b)$ for each
|
||||
$b\in B$. Then, for each $x\in E'$ we have an isomorphism from
|
||||
$p^{-1}(p'(x))$ to $p'^{-1}(p'(x))$. Since $x\in p'^{-1}(p'(x))$, we find
|
||||
an element $y\in p^{-1}(p'(x))\subseteq E$. Thus, $h$ is surjective. Now suppose
|
||||
that $x,x'\in E$ are two elements for which $h(x)=h(x')$. Since $p'\circ h=p$,
|
||||
it follows that $x'\in p^{-1}(x)$. Now, the fact that $h$ induces an isomorphism
|
||||
between fibers implies that $x=x'$.
|
||||
|
||||
Thus, $h$ has an inverse function $k:E'\to E$, and we need to show that this
|
||||
function is continuous. It suffices to show that $k|_U$ is continuous for each
|
||||
$U$ on which $p'$ is trivial. Let $x\in B$, and compose the map
|
||||
$h_U:p^{-1}(U)\to p'^{-1}(U)$ with its local trivializations. Thus, we obtain
|
||||
a map $g_U:U\times\R^n\to U\times \R^n$, mapping $(x,y)$ to $(x,A(y))$, where
|
||||
$A$ is a linear isomorphism.
|
||||
\end{proof}
|
||||
|
||||
In the following definition, we give a vector bundle by a gluing construction.
|
||||
|
||||
\begin{defn}
|
||||
Consider a space $B$, and an open cover $\mathcal{C}$ which is closed under
|
||||
finite intersections. Then $\mathcal{C}$ may be considered a poset ordered by
|
||||
inclusion.
|
||||
|
||||
A \define{collection of gluing functions} consists of a continuous choice of linear
|
||||
isomorphisms $g_{U,V}:U\cap V\to GL_n(\R)$ satisfying the \define{cocycle
|
||||
condition}
|
||||
\begin{equation*}
|
||||
g_{V,W}\circ g_{U,V}=g_{U,W}
|
||||
\end{equation*}
|
||||
on $U\cap V\cap W$, for every
|
||||
$U,V,W\in\mathcal{C}$. Such a collection of gluing functions determines a functor
|
||||
$\mathcal{C}\to\mathbf{Top}$, which is given on points by $U\mapsto U\times\R^n$,
|
||||
and on morphisms by $(x,v)\mapsto(x,A(v))$, for each $U\subseteq V$ determining
|
||||
a linear isomorphism $A$.
|
||||
|
||||
The colimit of this functor is the total space of a vector bundle.
|
||||
\end{defn}
|
||||
|
||||
\begin{eg}
|
||||
There are lots of examples of vector bundles:
|
||||
\begin{enumerate}
|
||||
\item The \define{$n$-dimensional trivial bundle} over $B$ is defined to be
|
||||
$\proj1:B\times\mathbb{R}^n\to B$. So the trivial bundle is the one which is
|
||||
\emph{globally} trivial. We will write the $n$-dimensional trivial bundle over
|
||||
$B$ as $\epsilon^n\to B$.
|
||||
\item The circle may be regarded as the quotient of $[0,1]$ modulo the end points.
|
||||
The \define{Mobius bundle} is the line bundle over $\Sn^1$ to have total space
|
||||
$E\defeq [0,1]\times\R$, with the identifications $(0,t)\sim(1,-t)$.
|
||||
\item The \define{tangent bundle} of the unit sphere $\Sn^n$, viewed as a subspace of
|
||||
$\R^{n+1}$, is defined to be the subspace $E\defeq\{(x,v)\in\Sn^n\times\R^{n+1}
|
||||
\mid x\perp v\}$ of $\R^{2n+2}$, which projects onto $\Sn^n$.
|
||||
|
||||
The $n$-sphere is covered by $2n+2$ open hemispheres, centering at $\pm e_i$,
|
||||
where $e_i\in\R^{n+1}$ is a basis vector.
|
||||
\item The \define{normal bundle} of the unit sphere $\Sn^n$ is the line bundle
|
||||
with $E$ consisting of pairs $(x,v)\in\Sn^n\times\R^{n+1}$ such that $v=tx$ for
|
||||
some $t\in\R$. \emph{The normal bundle on $\Sn^n$ is isomorphic to the trivial line
|
||||
bundle $\Sn^n\times\R\to\Sn^n$.}
|
||||
\item The \define{canonical line bundle} $p:E\to \R P^n$ has as its total space
|
||||
the subspace $E\subseteq \R P^{n+1}\times\R ^{n+1}$ consisting of pairs
|
||||
$(l,v)$ with $v\in l$. \emph{The M\"obius line bundle is isomorphic to the
|
||||
canonical line bundle on $\Sn^1$.}
|
||||
\item The inclusions $\R P^n\subseteq \R P^{n+1}$ induce inclusions of the
|
||||
canonical line bundles. The sequential colimit of the canonical line bundles
|
||||
produces the canonical line bundle on $\R P^\infty$.
|
||||
\end{enumerate}
|
||||
\end{eg}
|
||||
|
||||
\begin{defn}
|
||||
Given two vector bundles $p:E\to B$ and $p':E'\to B$ over the same base space
|
||||
$B$, we obtain a vector bundle $p\oplus p': E\oplus E'\to B$, fitting in the
|
||||
pullback square
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
E\oplus E' \arrow[r] \arrow[d] \arrow[dr,"{p\oplus p'}" description ] & E' \arrow[d,"{p'}"] \\
|
||||
E \arrow[r,swap,"p"] & B
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
\end{defn}
|
||||
|
||||
\begin{eg}
|
||||
\begin{enumerate}
|
||||
\item The direct sum of the tangent and normal bundles on $\Sn^n$ is the trivial
|
||||
bundle $\Sn^n\times\R^{n+1}$.
|
||||
\end{enumerate}
|
||||
\end{eg}
|
||||
|
||||
\begin{defn}
|
||||
Let $p:E\to B$ and $p':E'\to B$ be two vector bundles over the same space $B$,
|
||||
and choose an open cover $\mathcal{C}$ such that both $E$ and $E'$ are locally
|
||||
trivial with respect to $\mathcal{C}$. We define $E\otimes E'$ by gluing.
|
||||
|
||||
Then we can define, for each $U,V\in\mathcal{C}$ satisfying $U\subseteq V$, we
|
||||
have linear isomorphisms $g_{U,V}(x):\R^n\to\R^n$ and $g'_{U,V}(x):\R^m\to\R^m$,
|
||||
induced by the local trivializations of $E$ and $E'$ respectively. These give
|
||||
gluing functions $g_{U,V}(x)\otimes g'_{U,V}(x):\R^n\otimes\R^m\to\R^n\otimes\R^m$
|
||||
for each $x\in U$, and these gluing functions satisfy the cocycle condition.
|
||||
|
||||
Thus, we obtain a vector bundle $E\otimes E'$ from these gluing functions.
|
||||
\end{defn}
|
||||
|
||||
\begin{lem}
|
||||
The tensor product of vector bundles over a fixed base space is commutative,
|
||||
associative, it has an identity element (the trivial bundle), and it is
|
||||
distributive with respect to direct sum.
|
||||
\end{lem}
|
||||
|
||||
Change of base $f:B'\to B$ turns a vector bundle $E$ over $B$ to a vector
|
||||
bundle $f^\ast(E)$ over $B'$.
|
||||
|
||||
\begin{lem}
|
||||
For any two vector bundles $E$ and $E'$ over $B$, and any $f:B'\to B$, we have
|
||||
natural isomorphisms $f^\ast(E\oplus E')\approx f^\ast(E)\oplus f^\ast(E')$, and
|
||||
$f^\ast(E\otimes E')\approx f^\ast(E)\otimes f^\ast(E')$. Moreover, if $f$
|
||||
is homotopic to $g$, then $f^\ast=g^\ast$.
|
||||
\end{lem}
|
||||
|
||||
\subsection{K-theory}
|
||||
|
||||
\begin{defn}
|
||||
Two vector bundles $E\to B$ and $E'\to B$ are callec \define{stably isomorphic},
|
||||
if there is an $n$ for which $E\oplus\epsilon^n\approx E'\oplus\epsilon^n$, and
|
||||
we write $E\approx_s E'$ if $E$ and $E'$ are stably isomorphic. Also,
|
||||
we will define the relation $E\sim E'$ if there are $m$ and $n$ such that
|
||||
$E\oplus\epsilon^m\approx E'\oplus^n$.
|
||||
\end{defn}
|
||||
|
||||
\begin{lem}
|
||||
The direct sum preserves both $\approx_s$ and $\sim$. Moreover, if $B$ is compact,
|
||||
then the set of ${\sim}$-equivalence classes of vector bundles forms an abelian
|
||||
group, called $\tilde{K}(B)$. If $B$ is pointed, then the tensor product turns
|
||||
$\tilde{K}(B)$ into a ring.
|
||||
\end{lem}
|
||||
|
||||
\begin{lem}
|
||||
The direct sum satisfies the cancellation property with respect to $\approx_s$,
|
||||
i.e.~we have that $E\oplus E'\approx_s E\oplus E''$ implies $E'\oplus E''$.
|
||||
Thus, if we define two pairs $(E,F)$ and $(E',F')$ to be equivalent to each
|
||||
other whenever $E\oplus F'=E'\oplus F$, we obtain an abelian group $K(B)$ for
|
||||
any compact space $B$. The tensor product turns $K(B)$ into a ring.
|
||||
\end{lem}
|
||||
|
||||
\begin{lem}
|
||||
We have a ring isomorphism
|
||||
\begin{equation*}
|
||||
K(B)\approx \tilde{K}(B)\oplus\Z.
|
||||
\end{equation*}
|
||||
\end{lem}
|
||||
|
||||
Both $K$ and $\tilde{K}$ are contravariant functors.
|
||||
|
||||
\begin{lem}
|
||||
If $X$ is compact Hausdorff and $A\subseteq X$ is a closed subspace, then the
|
||||
inclusion and quotient maps $A\stackrel{i}{\to}X\stackrel{q}{\to}X/A$ induces
|
||||
an sequence
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}
|
||||
\tilde{K}(X/A) \arrow[r,"q^\ast"] & \tilde{K}(X) \arrow[r,"i^\ast"] & \tilde{K}(A)
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
which is exact at $\tilde{K}(X)$.
|
||||
\end{lem}
|
||||
|
||||
\begin{lem}
|
||||
If $A$ is contractible, the quotient map $q:X\to X/A$ induces a bijection
|
||||
$q^\ast:\mathrm{Vect}^n(X/A)\to\mathrm{Vect}^n(X)$.
|
||||
\end{lem}
|
||||
|
||||
Apparently, this gives a long exact sequence of $\tilde{K}$-groups:
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}[column sep=small]
|
||||
\cdots\arrow[r] & \tilde{K}(\Sn(X)) \arrow[r] & \tilde{K}(\Sn(A)) \arrow[r]
|
||||
& \tilde{K}(X/A) \arrow[r] & \tilde{K}(X) \arrow[r] & \tilde{K}(A).
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
Still considering pointed spaces, we may consider the long exact sequence of the pair $(X\times Y,
|
||||
X\vee Y)$. Recall that $(X\times Y)/(X\vee Y)$ is the smash product
|
||||
$X\wedge Y$, i.e.~the smash product is the pushout of $\unit\leftarrow
|
||||
X\vee Y\rightarrow X\times Y$. The long exact sequence of the pair
|
||||
$(X\times Y,X\vee Y)$ looks as follows:
|
||||
\begin{equation*}
|
||||
\begin{tikzcd}[column sep=.8em]
|
||||
\cdots\arrow[r] & \tilde{K}(\Sn(X\times Y)) \arrow[r] & \tilde{K}(\Sn(X\vee Y)) \arrow[r]
|
||||
& \tilde{K}(X\wedge Y) \arrow[r] & \tilde{K}(X\times Y) \arrow[r] & \tilde{K}(X\vee Y).
|
||||
\end{tikzcd}
|
||||
\end{equation*}
|
||||
|
||||
\subsection{Bott periodicity}
|
||||
|
||||
\begin{defn}
|
||||
We define an \define{external product} $\mu:K(X)\otimes K(Y)\to K(X\times Y)$,
|
||||
by $\mu(a\otimes b)\defeq \proj1^\ast(a)\cdot\proj2^\ast(b)$.
|
||||
\end{defn}
|
||||
|
||||
|
||||
\end{document}
|
508
Notes/preamble-articles.tex
Normal file
508
Notes/preamble-articles.tex
Normal file
|
@ -0,0 +1,508 @@
|
|||
% for type setting urls
|
||||
\usepackage[hyphens]{url} % This package has to be loaded *before* hyperref
|
||||
\usepackage[pagebackref,colorlinks,citecolor=darkgreen,linkcolor=darkgreen,unicode]{hyperref}
|
||||
\usepackage[english]{babel}
|
||||
|
||||
%%% Because Germans have umlauts and Slavs have even stranger ways of mangling letters
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
%%% Multi-Columns for long lists of names
|
||||
\usepackage{multicol}
|
||||
|
||||
%%% Set the fonts
|
||||
\usepackage{mathpazo}
|
||||
\usepackage[scaled=0.95]{helvet}
|
||||
\usepackage{courier}
|
||||
\linespread{1.05} % Palatino looks better with this
|
||||
|
||||
\usepackage{graphicx}
|
||||
\usepackage{comment}
|
||||
|
||||
%\usepackage{wallpaper} % For the background image on the cover page
|
||||
%\usepackage{geometry} % For the cover page
|
||||
\usepackage{fancyhdr} % To set headers and footers
|
||||
|
||||
\usepackage{ifthen}
|
||||
\usepackage{amssymb,amsmath,amsthm,stmaryrd,mathrsfs,wasysym}
|
||||
\usepackage{enumitem,mathtools,xspace,xcolor}
|
||||
\definecolor{darkgreen}{rgb}{0,0.45,0}
|
||||
\usepackage{aliascnt}
|
||||
\usepackage[capitalize]{cleveref}
|
||||
%\usepackage[all,2cell]{xy}
|
||||
%\UseAllTwocells
|
||||
% \usepackage{natbib}
|
||||
\usepackage{braket} % used for \setof{ ... } macro
|
||||
\usepackage{tikz-cd}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{decorations.pathmorphing}
|
||||
\usepackage[inference]{semantic}
|
||||
\usepackage{booktabs}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% To include references in TOC we should use this package rather than a hack.
|
||||
\usepackage{tocbibind}
|
||||
%\usepackage{etoolbox} % get \apptocmd
|
||||
%\apptocmd{\thebibliography}{\addcontentsline{toc}{section}{References}}{}{} % tell bibliography to get itself into the table of contents
|
||||
|
||||
|
||||
\begin{comment}
|
||||
%%%% Header and footers
|
||||
\pagestyle{fancyplain}
|
||||
\setlength{\headheight}{15pt}
|
||||
\renewcommand{\chaptermark}[1]{\markboth{\textsc{Chapter \thechapter. #1}}{}}
|
||||
\renewcommand{\sectionmark}[1]{\markright{\textsc{\thesection\ #1}}}
|
||||
\end{comment}
|
||||
|
||||
% TOC depth
|
||||
\setcounter{tocdepth}{2}
|
||||
|
||||
\lhead[\fancyplain{}{{\thepage}}]%
|
||||
{\fancyplain{}{\nouppercase{\rightmark}}}
|
||||
\rhead[\fancyplain{}{\nouppercase{\leftmark}}]%
|
||||
{\fancyplain{}{\thepage}}
|
||||
\cfoot{\textsc{\footnotesize [Draft of \today]}}
|
||||
\lfoot[]{}
|
||||
\rfoot[]{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% We mostly use the macros of the book, to keep notations
|
||||
%%%% and conventions the same. Recall that when the macros file
|
||||
%%%% is updated, we need to comment the lines containing the
|
||||
%%%% string `[chapter]` since our article is not a book.
|
||||
%%%%
|
||||
%%%% Instructions for updating the macros.tex file:
|
||||
%%%% - fetch the latest macros.tex file from the HoTT/book git repository.
|
||||
%%%% - comment all lines containing "[chapter]" because this is not a book.
|
||||
%%%% - comment the definition of pbcorner because the xypic package is not used.
|
||||
%%%%
|
||||
\input{macros}
|
||||
|
||||
\newcommand{\idsymbin}{=}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% Our commands which are not part of the macros.tex file.
|
||||
%%%% We should keep these commands separate, because we will
|
||||
%%%% update the macros.tex following the updates of the book.
|
||||
|
||||
%%%% First we redefine the \id, \eqv and \ct commands so that they accept an
|
||||
%%%% arbitrary number of arguments. This is useful when writing longer strings
|
||||
%%%% of equalities or equivalences.
|
||||
|
||||
\makeatletter
|
||||
|
||||
\renewcommand{\id}[3][]{
|
||||
\@ifnextchar\bgroup
|
||||
{#2 \mathbin{\idsym_{#1}} \id[#1]{#3}}
|
||||
{#2 \mathbin{\idsym_{#1}} #3}
|
||||
}
|
||||
|
||||
\renewcommand{\eqv}[2]{
|
||||
\@ifnextchar\bgroup
|
||||
{#1 \eqvsym \eqv{#2}}
|
||||
{#1 \eqvsym #2}
|
||||
}
|
||||
|
||||
\newcommand{\ctsym}{%
|
||||
\mathchoice{\mathbin{\raisebox{0.5ex}{$\displaystyle\centerdot$}}}%
|
||||
{\mathbin{\raisebox{0.5ex}{$\centerdot$}}}%
|
||||
{\mathbin{\raisebox{0.25ex}{$\scriptstyle\,\centerdot\,$}}}%
|
||||
{\mathbin{\raisebox{0.1ex}{$\scriptscriptstyle\,\centerdot\,$}}}
|
||||
}
|
||||
|
||||
\renewcommand{\ct}[3][]{
|
||||
\@ifnextchar\bgroup
|
||||
{#2 \mathbin{\ctsym_{#1}} \ct[#1]{#3}}
|
||||
{#2 \mathbin{\ctsym_{#1}} #3}
|
||||
}
|
||||
|
||||
\makeatother
|
||||
|
||||
%%%% We always use textstyle products and sums...
|
||||
%\renewcommand{\prd}{\tprd}
|
||||
%\renewcommand{\sm}{\tsm}
|
||||
\makeatletter
|
||||
\renewcommand{\@dprd}{\@tprd}
|
||||
\renewcommand{\@dsm}{\@tsm}
|
||||
\renewcommand{\@dprd@noparens}{\@tprd}
|
||||
\renewcommand{\@dsm@noparens}{\@tsm}
|
||||
|
||||
%%%% ...with a bit more spacing
|
||||
\renewcommand{\@tprd}[1]{\mathchoice{{\textstyle\prod_{(#1)}\,}}{\prod_{(#1)}\,}{\prod_{(#1)}\,}{\prod_{(#1)}\,}}
|
||||
\renewcommand{\@tsm}[1]{\mathchoice{{\textstyle\sum_{(#1)}\,}}{\sum_{(#1)}\,}{\sum_{(#1)}\,}{\sum_{(#1)}\,}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% We adjust the \prd command so that implicit arguments become possible.
|
||||
%%%%
|
||||
%%%% First, we have the following switch. Set it to true if implicit arguments
|
||||
%%%% are desired, or to false if not. Note turning off implicit arguments
|
||||
%%%% might render some parts of the text harder to comprehend, since in the
|
||||
%%%% text might appear $f(x)$ where we would have $f(i,x)$ without implicit
|
||||
%%%% arguments.
|
||||
|
||||
\newcommand{\implicitargumentson}{\boolean{true}}
|
||||
|
||||
%%%% If one wants to use implicit arguments in the notation for product types,
|
||||
%%%% a * has to be put before the argument that has to be implicit.
|
||||
%%%% For example: in $\prd{x:A}*{y:B}{u:P(y)}Q(x,y,u)$, the argument y is
|
||||
%%%% implicit. Any of the arguments can be made implicit this way.
|
||||
|
||||
%%%% First of all, we should make the command \prd search not only for a
|
||||
%%%% brace, but also for a star. We introduce an auxiliary command that
|
||||
%%%% determines whether the next character is a star or brace.
|
||||
\newcommand{\@ifnextchar@starorbrace}[2]
|
||||
% {\@ifnextcharamong{#1}{#2}{*}{\bgroup};}
|
||||
{\@ifnextchar*{#1}{\@ifnextchar\bgroup{#1}{#2}}}
|
||||
|
||||
%%%% When encountering the \prd command, latex should determine whether it
|
||||
%%%% should print implicit argument brackets or not. So the first branching
|
||||
%%%% happens right here.
|
||||
\renewcommand{\prd}{\@ifnextchar*{\@iprd}{\@prd}}
|
||||
|
||||
\newcommand{\@prd}[1]
|
||||
{\@ifnextchar@starorbrace
|
||||
{\prd@parens{#1}}
|
||||
{\@ifnextchar\sm{\prd@parens{#1}\@eatsm}{\prd@noparens{#1}}}}
|
||||
\newcommand{\@prd@parens}{\@ifnextchar*{\@iprd}{\prd@parens}}
|
||||
\renewcommand{\prd@parens}[1]
|
||||
{\@ifnextchar@starorbrace
|
||||
{\@theprd{#1}\@prd@parens}
|
||||
{\@ifnextchar\sm{\@theprd{#1}\@eatsm}{\@theprd{#1}}}}
|
||||
\newcommand{\@theprd}[1]
|
||||
{\mathchoice{\@dprd{#1}}{\@tprd{#1}}{\@tprd{#1}}{\@tprd{#1}}}
|
||||
\renewcommand{\dprd}[1]{\@dprd{#1}\@ifnextchar@starorbrace{\dprd}{}}
|
||||
\renewcommand{\tprd}[1]{\@tprd{#1}\@ifnextchar@starorbrace{\tprd}{}}
|
||||
|
||||
%%%% Here we tell the actual symbols to be printed.
|
||||
\newcommand{\@theiprd}[1]{\mathchoice{\@diprd{#1}}{\@tiprd{#1}}{\@tiprd{#1}}{\@tiprd{#1}}}
|
||||
\newcommand{\@iprd}[2]{\@ifnextchar@starorbrace%
|
||||
{\@theiprd{#2}\@prd@parens}%
|
||||
{\@ifnextchar\sm%
|
||||
{\@theiprd{#2}\@eatsm}%
|
||||
{\@theiprd{#2}}}}
|
||||
\def\@tiprd#1{
|
||||
\ifthenelse{\implicitargumentson}
|
||||
{\@@tiprd{#1}\@ifnextchar\bgroup{\@tiprd}{}}
|
||||
{\@tprd{#1}}}
|
||||
\def\@@tiprd#1{\mathchoice{{\textstyle\prod_{\{#1\}}\,}}{\prod_{\{#1\}}\,}{\prod_{\{#1\}}\,}{\prod_{\{#1\}}\,}}
|
||||
\def\@diprd{
|
||||
\ifthenelse{\implicitargumentson}
|
||||
{\@tiprd}
|
||||
{\@tprd}}
|
||||
|
||||
|
||||
%%%% And finally we need to redefine \@eatprd so that implicit arguments also
|
||||
%%%% works in the scope of a dependent sum.
|
||||
\def\@eatprd\prd{\@prd@parens}
|
||||
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% Redefining the quantifiers, so that some of the longer
|
||||
%%%% formulas appear one a single line without problems
|
||||
|
||||
%%% Dependent products written with \forall, in the same style
|
||||
\makeatletter
|
||||
\def\tfall#1{\forall_{(#1)}\@ifnextchar\bgroup{\,\tfall}{\,}}
|
||||
\renewcommand{\fall}{\tfall}
|
||||
|
||||
%%% Existential quantifier %%%
|
||||
\def\texis#1{\exists_{(#1)}\@ifnextchar\bgroup{\,\texis}{\,}}
|
||||
\renewcommand{\exis}{\texis}
|
||||
|
||||
%%% Unique existence %%%
|
||||
\def\uexis#1{\exists!_{(#1)}\@ifnextchar\bgroup{\,\uexis}{\,}}
|
||||
\makeatother
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%%%% Introducing logical usage of fonts.
|
||||
\newcommand{\modelfont}{\mathit} % use 'mf' in command to indicate model font
|
||||
\newcommand{\typefont}{\mathsf} % use 'tf' in command to indicate type font
|
||||
\newcommand{\catfont}{\mathrm} % use 'cf' in command to indicate cat font
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% Some macros of the book are redefined.
|
||||
|
||||
\renewcommand{\UU}{\typefont{U}}
|
||||
\renewcommand{\isequiv}{\typefont{isEquiv}}
|
||||
\renewcommand{\happly}{\typefont{hApply}}
|
||||
\renewcommand{\pairr}[1]{{\mathopen{}\langle #1\rangle\mathclose{}}}
|
||||
\renewcommand{\type}{\typefont{Type}}
|
||||
\renewcommand{\op}[1]{{{#1}^\typefont{op}}}
|
||||
\renewcommand{\susp}{\typefont{\Sigma}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% The following is a big unorganized list of new macros that we use in the
|
||||
%%%% notes.
|
||||
|
||||
\newcommand{\mfM}{\modelfont{M}}
|
||||
\newcommand{\mfN}{\modelfont{N}}
|
||||
\newcommand{\tfctx}{\typefont{ctx}}
|
||||
\newcommand{\mftypfunc}[1]{{\modelfont{typ}^{#1}}}
|
||||
\newcommand{\mftyp}[2]{{\mftypfunc{#1}(#2)}}
|
||||
\newcommand{\tftypfunc}[1]{{\typefont{typ}^{#1}}}
|
||||
\newcommand{\tftyp}[2]{{\tftypfunc{#1}(#2)}}
|
||||
\newcommand{\hfibfunc}[1]{\typefont{fib}_{#1}}
|
||||
\newcommand{\mappingcone}[1]{\mathcal{C}_{#1}}
|
||||
\newcommand{\equifib}{\typefont{equiFib}}
|
||||
\newcommand{\tfcolim}{\typefont{colim}}
|
||||
\newcommand{\tflim}{\typefont{lim}}
|
||||
\newcommand{\tfdiag}{\typefont{diag}}
|
||||
\newcommand{\tfGraph}{\typefont{Graph}}
|
||||
\newcommand{\mfGraph}{\modelfont{Graph}}
|
||||
\newcommand{\unitGraph}{\unit^\mfGraph}
|
||||
\newcommand{\UUGraph}{\UU^\mfGraph}
|
||||
\newcommand{\tfrGraph}{\typefont{rGraph}}
|
||||
\newcommand{\mfrGraph}{\modelfont{rGraph}}
|
||||
\newcommand{\isfunction}{\typefont{isFunction}}
|
||||
\newcommand{\tfconst}{\typefont{const}}
|
||||
\newcommand{\conemap}{\typefont{coneMap}}
|
||||
\newcommand{\coconemap}{\typefont{coconeMap}}
|
||||
\newcommand{\tflimits}{\typefont{limits}}
|
||||
\newcommand{\tfcolimits}{\typefont{colimits}}
|
||||
\newcommand{\islimiting}{\typefont{isLimiting}}
|
||||
\newcommand{\iscolimiting}{\typefont{isColimiting}}
|
||||
\newcommand{\islimit}{\typefont{isLimit}}
|
||||
\newcommand{\iscolimit}{\typefont{iscolimit}}
|
||||
\newcommand{\pbcone}{\typefont{cone_{pb}}}
|
||||
\newcommand{\tfinj}{\typefont{inj}}
|
||||
\newcommand{\tfsurj}{\typefont{surj}}
|
||||
\newcommand{\tfepi}{\typefont{epi}}
|
||||
\newcommand{\tftop}{\typefont{top}}
|
||||
\newcommand{\sbrck}[1]{\Vert #1\Vert}
|
||||
\newcommand{\strunc}[2]{\Vert #2\Vert_{#1}}
|
||||
\newcommand{\gobjclass}{{\typefont{U}^\mfGraph}}
|
||||
\newcommand{\gcharmap}{\typefont{fib}}
|
||||
\newcommand{\diagclass}{\typefont{T}}
|
||||
\newcommand{\opdiagclass}{\op{\diagclass}}
|
||||
\newcommand{\equifibclass}{\diagclass^{\eqv{}{}}}
|
||||
\newcommand{\universe}{\typefont{U}}
|
||||
\newcommand{\catid}[1]{{\catfont{id}_{#1}}}
|
||||
\newcommand{\isleftfib}{\typefont{isLeftFib}}
|
||||
\newcommand{\isrightfib}{\typefont{isRightFib}}
|
||||
\newcommand{\leftLiftings}{\typefont{leftLiftings}}
|
||||
\newcommand{\rightLiftings}{\typefont{rightLiftings}}
|
||||
\newcommand{\psh}{\typefont{Psh}}
|
||||
\newcommand{\rgclass}{\typefont{\Omega^{RG}}}
|
||||
\newcommand{\terms}[2][]{\lfloor #2 \rfloor^{#1}}
|
||||
\newcommand{\grconstr}[2]
|
||||
{\mathchoice % max size is textstyle size.
|
||||
{{\textstyle \int_{#1}}#2}%
|
||||
{\int_{#1}#2}%
|
||||
{\int_{#1}#2}%
|
||||
{\int_{#1}#2}}
|
||||
\newcommand{\ctxhom}[3][]{\typefont{hom}_{#1}(#2,#3)}
|
||||
\newcommand{\graphcharmapfunc}[1]{\gcharmap_{#1}}
|
||||
\newcommand{\graphcharmap}[2][]{\graphcharmapfunc{#1}(#2)}
|
||||
\newcommand{\tfexp}[1]{\typefont{exp}_{#1}}
|
||||
\newcommand{\tffamfunc}{\typefont{fam}}
|
||||
\newcommand{\tffam}[1]{\tffamfunc(#1)}
|
||||
\newcommand{\tfev}{\typefont{ev}}
|
||||
\newcommand{\tfcomp}{\typefont{comp}}
|
||||
\newcommand{\isDec}[1]{\typefont{isDecidable}(#1)}
|
||||
\newcommand{\smal}{\mathcal{S}}
|
||||
\renewcommand{\modal}{{\ensuremath{\ocircle}}}
|
||||
\newcommand{\eqrel}{\typefont{EqRel}}
|
||||
\newcommand{\piw}{\ensuremath{\Pi\typefont{W}}} %% to be used in conjunction with -pretopos.
|
||||
\renewcommand{\sslash}{/\!\!/}
|
||||
\newcommand{\mprd}[2]{\Pi(#1,#2)}
|
||||
\newcommand{\msm}[2]{\Sigma(#1,#2)}
|
||||
\newcommand{\midt}[1]{\idvartype_#1}
|
||||
\newcommand{\reflf}[1]{\typefont{refl}^{#1}}
|
||||
\newcommand{\tfJ}{\typefont{J}}
|
||||
\newcommand{\tftrans}{\typefont{trans}}
|
||||
|
||||
\newcommand{\tfT}{\typefont{T}}
|
||||
\newcommand{\reflsym}{{\mathsf{refl}}}
|
||||
\newcommand{\strans}[2]{\ensuremath{{#1}_{*}({#2})}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% JUDGMENTS
|
||||
%%%%
|
||||
%%%% Below we define several commands for the judgments of type theory. There
|
||||
%%%% are commands
|
||||
%%%% * \jctx for the judgment that something is a context.
|
||||
%%%% * \jctxeq for the judgment that two contexts are the same
|
||||
%%%% * \jtype for the judgment that something is a type in a context
|
||||
%%%% * \jtypeeq for the judgment that two types in the same context are the same
|
||||
%%%% * \jterm for the judgment that something is a term of a type in a context
|
||||
%%%% * \jtermeq for the judgment that two terms of the same type are the same
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\jctx}{\@ifnextchar*{\@jctxAlignTrue}{\@jctxAlignFalse}}
|
||||
\newcommand{\@jctxAlignTrue}[2]{& \vdash #2~ctx}
|
||||
\newcommand{\@jctxAlignFalse}[1]{\vdash #1~ctx}
|
||||
|
||||
\newcommand{\jtype}{\@ifnextchar*{\@jtypeAlignTrue}{\@jtypeAlignFalse}}
|
||||
\newcommand{\@jtypeAlignFalse}[2]{#1\vdash #2~type}
|
||||
\newcommand{\@jtypeAlignTrue}[3]{#2 & \vdash #3~type}
|
||||
|
||||
\newcommand{\jtermc}{\@ifnextchar*{\@jtermcAlignTrue}{\@jtermcAlignFalse}}
|
||||
\newcommand{\@jtermcAlignTrue}[3]{ & \vdash #3:#2}
|
||||
\newcommand{\@jtermcAlignFalse}[2]{\vdash #2:#1}
|
||||
|
||||
\newcommand{\jtermt}{\@ifnextchar*{\@jtermtAlignTrue}{\@jtermtAlignFalse}}
|
||||
\newcommand{\@jtermtAlignTrue}[4]{#2 & \vdash #4:#3}
|
||||
\newcommand{\@jtermtAlignFalse}[3]{#1 \vdash #3:#2}
|
||||
|
||||
\newcommand{\jctxeq}{\@ifnextchar*{\@jctxeqAlignTrue}{\@jctxeqAlignFalse}}
|
||||
\newcommand{\@jctxeqAlignTrue}[3]{& \vdash #2\jdeq #3~ctx}
|
||||
\newcommand{\@jctxeqAlignFalse}[2]{\vdash #1\jdeq #2~ctx}
|
||||
|
||||
\newcommand{\jtypeeq}{\@ifnextchar*{\@jtypeeqAlignTrue}{\@jtypeeqAlignFalse}}
|
||||
\newcommand{\@jtypeeqAlignTrue}[4]{#2 & \vdash #3\jdeq #4~type}
|
||||
\newcommand{\@jtypeeqAlignFalse}[3]{#1\vdash #2\jdeq #3~type}
|
||||
|
||||
\newcommand{\jtermceq}{\@ifnextchar*{\@jtermceqAlignTrue}{\@jtermceqAlignFalse}}
|
||||
\newcommand{\@jtermceqAlignTrue}[4]{& \vdash #3\jdeq #4:#2}
|
||||
\newcommand{\@jtermceqAlignFalse}[3]{\vdash #2\jdeq #3:#1}
|
||||
|
||||
\newcommand{\jtermteq}{\@ifnextchar*{\@jtermteqAlignTrue}{\@jtermteqAlignFalse}}
|
||||
\newcommand{\@jtermteqAlignTrue}[5]{#2 & \vdash #4\jdeq #5:#3}
|
||||
\newcommand{\@jtermteqAlignFalse}[4]{#1\vdash #3\jdeq #4:#2}
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% Often we shall need to display lists of inference rules. This environment
|
||||
%%%% adjusts the array environment so that there is enough vertical space
|
||||
%%%% between two inference rules
|
||||
%%%%
|
||||
%%%% bug: there's two much space above the array.
|
||||
|
||||
\newenvironment{infarray}[1]{\begingroup\renewcommand*{\arraystretch}{3}
|
||||
\begin{equation*}
|
||||
\begin{array}{#1}}{
|
||||
\end{array}
|
||||
\end{equation*}
|
||||
\endgroup}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% CONTEXT EXTENSION
|
||||
%%%%
|
||||
%%%% explicit context extension notation which we will use only rarely
|
||||
|
||||
\newcommand{\tfext}{\typefont{ext}}
|
||||
|
||||
%%%% The context extension command.
|
||||
%%%%
|
||||
%%%% To get a feeling of how the command works, here are a few examples.
|
||||
%%%% \ctxext{A}{B} will print A.B
|
||||
%%%% \ctxext{{A}{B}}{C} will print (A.B).C
|
||||
%%%% \ctxext{{{A}{B}}{C}}{{D}{E}} will print ((A.B).C).(D.E)
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\ctxext}[2]{\@ctxext@ctx #1.\@ctxext@type #2}
|
||||
\newcommand{\@ctxext}{\@ifnextchar\bgroup{\@@ctxext}{}}
|
||||
\newcommand{\@ctxext@ctx}{\@ifnextchar\ctxext{\@ctxext@nested}{\@ifnextchar\ctxwk{\@ctxwk@nested}{\@ctxext}}}
|
||||
\newcommand{\@ctxext@type}{\@ifnextchar\ctxext{\@ctxext@nested}{\@ifnextchar\subst{\@subst@nested}{\@ctxext}}}
|
||||
\newcommand{\@@ctxext}[1]{\@ifnextchar\bgroup{\@ctxext@parens{#1}}{#1}}
|
||||
\newcommand{\@ctxext@parens}[2]{(\ctxext{#1}{#2})}
|
||||
\newcommand{\@ctxext@nested}[3]{\@ctxext@parens{#2}{#3}}
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% SUBSTITUTION
|
||||
|
||||
\newcommand{\tfsubst}{\typefont{subst}}
|
||||
|
||||
%%%% The substitution command will act the following way
|
||||
%%%%
|
||||
%%%% \subst{x}{P} will print P[x]
|
||||
%%%% \subst{x}{{f}{Q}} will print Q[f][x]
|
||||
%%%% \subst{{x}{f}}{{x}{Q}} will print Q[x][f[x]]
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\subst}[2]{\@subst@type #2[\@subst@term #1]}
|
||||
\newcommand{\@subst}{\@ifnextchar\bgroup{\@@subst}{}}
|
||||
\newcommand{\@@subst}[1]{\@ifnextchar\bgroup{\subst{#1}}{#1}}
|
||||
\newcommand{\@subst@term}{\@subst}
|
||||
\newcommand{\@subst@type}{\@ifnextchar\ctxext{\@ctxext@nested}{\@ifnextchar\ctxwk{\@ctxwk@nested}{\@subst}}}
|
||||
\newcommand{\@subst@nested}[3]{\@subst@parens{#2}{#3}}
|
||||
\newcommand{\@subst@parens}[2]{(\subst{#1}{#2})}
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% WEAKENING
|
||||
|
||||
\newcommand{\tfwk}{\typefont{wk}}
|
||||
|
||||
%%%% The weakening command is very much like the substitution command.
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\ctxwk}[2]{\langle\@ctxwk@act #1\rangle\@ctxwk@pass #2}
|
||||
\newcommand{\@ctxwk}{\@ifnextchar\bgroup{\@@ctxwk}{}}
|
||||
\newcommand{\@@ctxwk}[1]{\@ifnextchar\bgroup{\ctxwk{#1}}{#1}}
|
||||
\newcommand{\@ctxwk@act}{\@ctxwk}
|
||||
\newcommand{\@ctxwk@pass}{\@ifnextchar\ctxext{\@ctxext@nested}{\@ifnextchar\subst{\@subst@nested}{\@ctxwk}}}
|
||||
\newcommand{\@ctxwk@parens}[2]{(\ctxwk{#1}{#2})}
|
||||
\newcommand{\@ctxwk@nested}[3]{\@ctxwk@parens{#2}{#3}}
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% When investigation pointed structures we use the \pt macro.
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\pt}[1][]{*_{
|
||||
\@ifnextchar\undergraph{\@undergraph@nested}
|
||||
{\@ifnextchar\underovergraph{\@underovergraph@nested}{}}#1}}
|
||||
\makeatother
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% OPERATIONS ON GRAPHS
|
||||
%%%%
|
||||
%%%% First of all, each graph has a type of vertices and a type of edges. The
|
||||
%%%% type of vertices of a graph $\Gamma$ is denoted by $\pts{\Gamma}$;
|
||||
%%%% and likewise for the type of edges.
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\pts}[1]{{\@graphop@nested{#1}}_{0}}
|
||||
\newcommand{\edg}[1]{{\@graphop@nested{#1}}_{1}}
|
||||
\newcommand{\@graphop@nested}[1]
|
||||
{\@ifnextchar\ctxext{\@ctxext@nested}
|
||||
{\@ifnextchar\undergraph{\@undergraph@nested}
|
||||
{\@ifnextchar\underovergraph{\@underovergraph@nested}{}}}
|
||||
#1}
|
||||
\makeatother
|
||||
|
||||
%%%% The following operations of \undergraph and \underovergraph are used to
|
||||
%%%% define the free category and the free groupoid of a graph, respectively
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\@undergraphtest}[2]{\@ifnextchar({#1}{#2}}
|
||||
\newcommand{\undergraph}[2]{\@undergraphtest{\@undergraph@parens{#1}{#2}}{\@undergraph{#1}{#2}}}
|
||||
\newcommand{\@undergraph}[2]{{#2/#1}}
|
||||
\newcommand{\@undergraph@nested}[3]{\@undergraph@parens{#2}{#3}}
|
||||
\newcommand{\@undergraph@parens}[2]{(\@undergraph{#1}{#2})}
|
||||
\makeatother
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\underovergraph}[2]{\@underovergraphtest{\@underovergraph@parens{#1}{#2}}{\@underovergraph{#1}{#2}}}
|
||||
\newcommand{\@underovergraph}[2]{{#2}\,{\parallel}\,{#1}}
|
||||
\newcommand{\@underovergraphtest}{\@undergraphtest}
|
||||
\newcommand{\@underovergraph@parens}[2]{(\@underovergraph{#1}{#2})}
|
||||
\newcommand{\@underovergraph@nested}[3]{\@underovergraph@parens{#2}{#3}}
|
||||
\makeatother
|
||||
|
||||
\newcommand{\graphid}[1]{\mathrm{id}_{#1}}
|
||||
\newcommand{\freecat}[1]{\mathcal{C}(#1)}
|
||||
\newcommand{\freegrpd}[1]{\mathcal{G}(#1)}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Some tikz macros to typeset diagrams uniformly.
|
||||
|
||||
\tikzset{patharrow/.style={double,double equal sign distance,-,font=\scriptsize}}
|
||||
\tikzset{description/.style={fill=white,inner sep=2pt}}
|
||||
|
||||
%% Used for extra wide diagrams, e.g. when the label is too large otherwise.
|
||||
\tikzset{commutative diagrams/column sep/Huge/.initial=18ex}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% New theorem environment for conjectures.
|
||||
|
||||
\defthm{conj}{Conjecture}{Conjectures}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%% The following environment for desiderata should not be there. It is better
|
||||
%%%% to use the issue tracker for desiderata.
|
||||
|
||||
\newenvironment{desiderata}{\begingroup\color{blue}\textbf{Desiderata.}}
|
||||
{\endgroup}
|
Loading…
Reference in a new issue