Skip to content

Commit 64fe3cd

Browse files
committed
wip
1 parent 147eab6 commit 64fe3cd

4 files changed

Lines changed: 233 additions & 44 deletions

File tree

doc/anders.pdf

18 KB
Binary file not shown.

doc/anders.tex

Lines changed: 217 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,32 @@
2626

2727
\newcommand{\tabstyle}[0]{\scriptsize\ttfamily\fontseries{l}\selectfont}
2828

29+
\newcommand{\anders}[0]{\textbf{Anders}}
30+
31+
\usepackage[utf8]{inputenc}
32+
\DeclareUnicodeCharacter{2071}{\textsuperscript{i}}
33+
\DeclareUnicodeCharacter{2080}{\ensuremath{_0}}
34+
\DeclareUnicodeCharacter{2081}{\ensuremath{_1}}
35+
\DeclareUnicodeCharacter{2082}{\ensuremath{_2}}
36+
\DeclareUnicodeCharacter{207B}{\ensuremath{^{-}}}
37+
\DeclareUnicodeCharacter{02B2}{\textsuperscript{j}}
38+
\DeclareUnicodeCharacter{03C6}{\ensuremath{\varphi}}
39+
\DeclareUnicodeCharacter{21A6}{\ensuremath{\mapsto}}
40+
\DeclareUnicodeCharacter{3008}{\ensuremath{\langle}}
41+
\DeclareUnicodeCharacter{3009}{\ensuremath{\rangle}}
42+
\DeclareUnicodeCharacter{266D}{\ensuremath{\flat}}
43+
\DeclareUnicodeCharacter{2111}{\ensuremath{\Im}}
44+
\DeclareUnicodeCharacter{03B9}{\ensuremath{\iota}}
45+
\DeclareUnicodeCharacter{2227}{\ensuremath{\wedge}}
46+
\DeclareUnicodeCharacter{2228}{\ensuremath{\vee}}
47+
\DeclareUnicodeCharacter{03A0}{\ensuremath{\Pi}}
48+
\DeclareUnicodeCharacter{03A3}{\ensuremath{\Sigma}}
49+
\DeclareUnicodeCharacter{2032}{\ensuremath{\prime}}
50+
\DeclareUnicodeCharacter{2212}{\ensuremath{-}}
51+
\DeclareUnicodeCharacter{03BB}{\ensuremath{\lambda}}
52+
\DeclareUnicodeCharacter{03C8}{\ensuremath{\psi}}
53+
\DeclareUnicodeCharacter{2605}{\ensuremath{\star}}
54+
2955
\begin{document}
3056

3157
\maketitle
@@ -101,7 +127,8 @@ \section{Syntax}
101127
kan :=&$\textbf{transp}\ E\ E\ |\ \textbf{hcomp}\ E$ \\
102128
glue :=&$\textbf{Glue}\ E\ |\ \textbf{glue}\ E\ |\ \textbf{unglue}\ E\ E$ \\
103129
Im :=&$\textbf{Im}\ \mathrm{E}\ |\ \textbf{Inf}\ \mathrm{E}\ |\ \textbf{Join}\ \mathrm{E}\ |\ \textbf{ind$_{Im}$}\ \mathrm{E}\ \mathrm{E}$ \\
104-
Flat :=&$\flat\ \mathrm{E}\ |\ \flat-\textrm{unit}\ \mathrm{E}\ |\ \flat-\textrm{counit}\ \mathrm{E}\ |\ \textbf{ind}_{\flat}\ \mathrm{E}\ \mathrm{E}$ \\
130+
Flat :=&$\flat\ \mathrm{E}\ |\ \flat-\textrm{unit}\ \mathrm{E}\ |\ \flat-\textrm{counit}\ \mathrm{E}\ |\ \textbf{ind}_{\flat}\ \mathrm{E}\ \mathrm{E}$ \\
131+
HIT :=&$\textbf{coequ}\ \mathrm{E}\ |\ \iota_2\ |\ \textbf{resp}\ |\ \textbf{ind}_{coequ}\ |\ \textbf{disc}\ \mathrm{E}\ |\ \textbf{base}\ |\ \textbf{hub}\ |\ \textbf{spoke}\ |\ \textbf{ind}_{disc}$ \\
105132
\end{tabular}
106133
\end{table}
107134

@@ -110,9 +137,10 @@ \section{Syntax}
110137
\begin{table}[ht!]
111138
\centering
112139
\begin{tabular}{rl}
113-
E :=&$\textrm{cosmos}\ |\ \textrm{var}\ |\ \textrm{MLTT}\ |\ \textrm{CCHM}\ |\ \textrm{Im}\ |\ \textrm{Flat}$ \\
140+
E :=&$\textrm{cosmos}\ |\ \textrm{var}\ |\ \textrm{MLTT}\ |\ \textrm{CCHM}\ |\ \textrm{Im}\ |\ \textrm{Flat}\ |\ \textrm{HIT}$ \\
114141
CCHM :=&$\textrm{path}\ |\ \textrm{I}\ |\ \textrm{part}\ |\ \textrm{sub}\ |\ \textrm{kan}\ |\ \textrm{glue}$ \\
115142
MLTT :=&$\textrm{pi}\ |\ \textrm{sigma}\ |\ \textrm{id}$ \\
143+
HIT :=&$\textrm{coequ}\ |\ \textrm{disc}$ \\
116144
\end{tabular}
117145
\end{table}
118146

@@ -124,7 +152,7 @@ \section{Syntax}
124152
\texttt{transp}, \texttt{hcomp}, \texttt{zero}, \texttt{one}, \texttt{Partial}, \texttt{inc},
125153
\texttt{$\times$}, \texttt{$\rightarrow$}, \texttt{:}, \texttt{:=}, \texttt{$\mapsto$}, \texttt{U},
126154
\texttt{ouc}, \texttt{interval}, \texttt{inductive}, \texttt{Glue}, \texttt{glue}, \texttt{unglue},
127-
\texttt{$\flat$}, \texttt{$\flat$-unit}, \texttt{$\flat$-counit}, \texttt{ind-$\flat$}.
155+
\texttt{$\flat$}, \texttt{$\flat$-unit}, \texttt{$\flat$-counit}, \texttt{ind-$\flat$}, \texttt{coequ}, \texttt{$\iota_2$}, \texttt{resp}, \texttt{coequ-ind}, \texttt{disc}, \texttt{base}, \texttt{hub}, \texttt{spoke}, \texttt{disc-ind}.
128156

129157
\textbf{Indentifiers}. Identifiers support UTF-8. Indentifiers couldn't
130158
start with $\texttt{:}$, $\texttt{-}$, $\rightarrow$. Sample identifiers:
@@ -653,7 +681,7 @@ \subsection{de Rham Stack}
653681
\textbf{def} T$^\infty$-map (X Y : U) (f : X → Y) ($\tau$ : T$^\infty$ X) : T$^\infty$ Y := (f $\tau$.1, d X Y f $\tau$.1 $\tau$.2) \\
654682
\end{tabular}
655683
\end{table}
656-
\newpage
684+
657685
\subsection{Flat Modality}
658686

659687
The Flat modality $\flat$ (also known as the discrete modality) is a core primitive of Anders,
@@ -669,7 +697,7 @@ \subsection{Flat Modality}
669697
\textbf{def} FlatCounit (A : U) (x : $\flat$ A) := $\flat$-counit x \\
670698
\\
671699
\textbf{def} isDiscrete (A : U) : U := isEquiv A ($\flat$ A) (FlatUnit A) \\
672-
\textbf{def} -$\eta$ (A : U) (x : $\flat$ A) : Path ($\flat$ A) x ($\flat$-unit ($\flat$-counit x)) := <p> x \\
700+
\textbf{def} $\flat$-$\eta$ (A : U) (x : $\flat$ A) : Path ($\flat$ A) x ($\flat$-unit ($\flat$-counit x)) := <p> x \\
673701
\textbf{def} FlatInd (A : U) (B : $\flat$ A $\rightarrow$ U) := ind-$\flat$ A B \\
674702
\end{tabular}
675703
\end{table}
@@ -692,58 +720,162 @@ \subsection{Flat Modality}
692720
that aren't captured by the discrete topology.
693721
\end{definition}
694722

695-
\newpage
696723
\subsection{Inductive Types}
697724

698-
Anders currently don’t support Lean-compatible generic inductive schemes
699-
definition. So instead of generic inductive schemes Anders supports well-founded trees (W-types).
700-
Basic data types like List, Nat, Fin, Vec are implemented as W-types in base library.
725+
The foundational inductive types in \anders\ are based on Martin-L\"{o}f's intuitionistic type theory \cite{ML84}. Instead of a generic inductive definition scheme, \anders\ provides well-founded trees (W-types) as a primitive construction from which other data types can be derived. Basic data types like List, Fin, and Vec are implemented as W-types in the core library.
701726

702-
\begin{itemize}
703-
\item W, 0, 1, 2 basis of MLTT-80 (Martin-L\"{o}f)
704-
\item General Schemes of Inductive Types (Paulin-Mohring)
705-
\end{itemize}
727+
\subsubsection*{Empty Type}
706728

707-
\subsection{Higher Inductive Types}
729+
The empty type $\mathbf{0}$ (also written as \texttt{empty}) is the inductive type with no constructors. It represents logical falsehood. Its induction principle is the principle of explosion (\textit{ex falso quodlibet}).
708730

709-
As for higher inductive types Anders is inspired by Three-HIT foundation (Coequalizer, Path Coequalizer and Colimit)
710-
but contains only modal extensions Flat and Infinitesimal, Hub Spoke Disc for direct truncations encoding, and
711-
Coequalizer for computable $S^1$, $S^n$, $K(G,n)$, Colimits.
731+
\begin{table}[ht!]
732+
\tabstyle
733+
\begin{tabular}{l}
734+
\textbf{def} Empty : U := \textbf{0} \\
735+
\textbf{def} Empty-elim (C : Empty $\rightarrow$ U) (z : Empty) : C z := \textbf{ind-empty} C z
736+
\end{tabular}
737+
\end{table}
712738

713-
Also there are other foundations to consider motivated by typical tasks in homotopy (type) theory:
739+
\subsubsection*{Unit Type}
714740

715-
\begin{itemize}
716-
\item Coequalizer, Path Coequalizer and Colimit (van der Weide)
717-
\item Coequalizer, Hub Spoke Disc, and W, 0, 1, 2 types (Groupoid Infinity)
718-
\item General Schemes of Higher Inductive Types (Cubical Agda, cubicaltt)
719-
\end{itemize}
741+
The unit type $\mathbf{1}$ (also written as \texttt{unit}) is the inductive type with a single constructor ★. It represents logical truth.
742+
743+
\begin{table}[ht!]
744+
\tabstyle
745+
\begin{tabular}{l}
746+
\textbf{def} Unit : U := \textbf{1} \\
747+
\textbf{def} star : Unit := ★ \\
748+
\\
749+
\textbf{def} Unit-ind (C : Unit $\rightarrow$ U) (u : C star) (z : Unit) : C z := \textbf{ind-unit} C u z
750+
\end{tabular}
751+
\end{table}
720752

721-
\subsection{Simplicial Types}
753+
\subsubsection*{Boolean Type}
722754

723-
Modification of Anders with Simplicial types and Hopf Fibrations built intro the core of type checker
724-
is called \textbf{Dan} with following recursive syntax (having $f$ as Simplecies and $coh$ as Path-coherence functions):
755+
The boolean type $\mathbf{2}$ (also written as \texttt{bool}) is the inductive type with two constructors $0_2$ and $1_2$ (or \texttt{false} and \texttt{true}). It is used for case analysis and decision procedures.
725756

726757
\begin{table}[ht!]
727758
\tabstyle
728759
\begin{tabular}{l}
729-
\textbf{simplex} n [v$_0$ .. v$_n$] \{ f$_0$, f$_1$, ..., f$_n$ | coh i$_1$ i$_2$ ... i$_n$ \} : Simplex
760+
\textbf{def} Bool : U := \textbf{2} \\
761+
\textbf{def} false : Bool := $0_2$ \\
762+
\textbf{def} true : Bool := $1_2$ \\
763+
\\
764+
\textbf{def} Bool-ind (C : Bool $\rightarrow$ U) (f : C false) (t : C true) (z : Bool) \\
765+
\ \ : C z := \textbf{ind-bool} C f t z
730766
\end{tabular}
731767
\end{table}
732768

733-
and instantiation example:
769+
\newpage
770+
\subsubsection*{Natural Numbers}
771+
772+
The type of natural numbers $\mathbb{N}$ is a primitive type in \anders, providing efficient normalization for arithmetic operations. Its elimination rule is provided by the \texttt{ind-Nat} primitive.
734773

735774
\begin{table}[ht!]
736775
\tabstyle
737776
\begin{tabular}{l}
777+
\textbf{def} Nat : U := \textbf{Nat} \\
778+
\textbf{def} Zero : Nat := \textbf{0} \\
779+
\textbf{def} Succ (n : Nat) : Nat := \textbf{S} n \\
780+
\\
781+
\textbf{def} Nat-ind (C : Nat $\rightarrow$ U) (z : C Zero) (s : $\Pi$ (n : Nat), C n $\rightarrow$ C (Succ n)) \\
782+
\ \ (n : Nat) : C n := \textbf{ind-Nat} C z s n
783+
\end{tabular}
784+
\end{table}
785+
786+
\subsubsection*{W-Types}
738787

739-
\textbf{def} s$_\infty$ : Simplicial \\
740-
\ := $\Pi$ (v e : Simplex), \\
741-
\ \ \ \ $\delta_{10}$ = v, $\delta_{11}$ = v, s$_0$ < v, \\
742-
\ \ \ \ $\delta_{20}$ = e $\circ$ e, s$_{10}$ < $\delta_{20}$ \\
743-
\ \ \ \ $\vdash$ $\infty$ (v, e, $\delta_{20}$ | $\delta_{10}$ $\delta_{11}$, s$_0$, $\delta_{20}$, s$_{10}$)
788+
Well-founded trees (W-types) are the building blocks for all other inductive types in \anders. A W-type $\mathsf{W}(x : A), B(x)$ is specified by a type $A$ of shapes and a family $B : A \to U$ of positions for each shape.
789+
790+
\begin{table}[ht!]
791+
\tabstyle
792+
\begin{tabular}{l}
793+
\textbf{def} W (A : U) (B : A $\rightarrow$ U) : U := \textbf{W} A B \\
794+
\textbf{def} sup (A : U) (B : A $\rightarrow$ U) (a : A) (f : B a $\rightarrow$ W A B) \\
795+
\ \ : W A B := \textbf{sup} a f \\
796+
\\
797+
\textbf{def} W-ind (A : U) (B : A $\rightarrow$ U) (C : W A B $\rightarrow$ U) \\
798+
\ \ (g : $\Pi$ (a : A) (f : B a $\rightarrow$ W A B), ($\Pi$ (b : B a), C (f b)) $\rightarrow$ C (sup A B a f)) \\
799+
\ \ (w : W A B) : C w := \textbf{ind-W} A B C g w
744800
\end{tabular}
745801
\end{table}
746802

803+
\newpage
804+
\subsection{Higher Inductive Types}
805+
806+
Higher inductive types (HITs) generalize inductive types by allowing constructors that target path types, enabling the representation of cell complexes and other quotient-like structures. \anders\ provides two primitive HIT constructions: coequalizers and hub-and-spoke discs. These primitives, combined with W-types, are sufficient to represent a wide range of HITs, including spheres $S^n$, suspensions, and truncations, following the Three-HIT theorem approach \cite{BauerWeide}.
807+
808+
\subsubsection*{Coequalizers}
809+
810+
The coequalizer $\mathsf{coequ}(f, g)$ of two parallel maps $f, g : A \to B$ is a higher inductive type that identifies the images of $f$ and $g$ in $B$. That is, for every $a : A$, we have a path $f(a) = g(a)$ in $\mathsf{coequ}(f, g)$. This allows for computable representations of the circle $S^1$, the torus, and general colimits.
811+
812+
\begin{table}[ht!]
813+
\tabstyle
814+
\begin{tabular}{l}
815+
\textbf{def} coeq (A B : U) (f g : A $\rightarrow$ B) : U := \textbf{coequ} A B f g \\
816+
\textbf{def} iota (A B : U) (f g : A $\rightarrow$ B) (x : B) : \textbf{coequ} A B f g := $\iota_2$ A B f g x \\
817+
\textbf{def} resp (A B : U) (f g : A $\rightarrow$ B) (x : A) \\
818+
\ \ : Path (\textbf{coequ} A B f g) ($\iota_2$ A B f g (f x)) ($\iota_2$ A B f g (g x)) \\
819+
\ := <i> \textbf{resp} A B f g x @ i \\
820+
\\
821+
\textbf{def} coequ-ind' (A B : U) (f g : A $\rightarrow$ B) (X : \textbf{coequ} A B f g $\rightarrow$ U) \\
822+
\ \ (i : $\Pi$ (b : B), X (iota A B f g b)) \\
823+
\ \ ($\rho$ : $\Pi$ (x : A), PathP (<i> X (resp A B f g x @ i)) (i (f x)) (i (g x))) \\
824+
\ \ (z : \textbf{coequ} A B f g) : X z \\
825+
\ := coequ-ind A B f g X i $\rho$ z
826+
827+
\end{tabular}
828+
\end{table}
829+
830+
\subsubsection*{Hub-and-Spoke Discs}
831+
832+
The hub-and-spoke construction $\mathsf{disc}(S, A)$ attaches a "disc" to a type $A$ for every map $f : S \to \mathsf{disc}(S, A)$. This is achieved by adding a "hub" point for each such $f$ and a "spoke" path connecting the hub to $f(s)$ for every $s : S$. This construction is particularly useful for defining $n$-truncations and other cell complexes where a point must be connected to an entire family of points.
833+
834+
\begin{table}[ht!]
835+
\tabstyle
836+
\begin{tabular}{l}
837+
\textbf{def} hs (S A : U) : U := \textbf{disc} S A \\
838+
\textbf{def} center (S A : U) (a : A) : hs S A := \textbf{base} S A a \\
839+
\textbf{def} hub' (S A : U) (f : S $\rightarrow$ hs S A) : hs S A := \textbf{hub} S A f \\
840+
\textbf{def} spoke' (S A : U) (f : S $\rightarrow$ hs S A) (s : S) \\
841+
\ \ : PathP (<i> hs S A) (hub' S A f) (f s) := \textbf{spoke} S A f s \\
842+
\\
843+
\textbf{def} hs-ind (S A : U) (X : hs S A $\rightarrow$ U) \\
844+
\ \ (nCenter : $\Pi$ (a : A), X (center S A a)) \\
845+
\ \ (nHub : $\Pi$ (f : S $\rightarrow$ hs S A) (nF : $\Pi$ (s : S), X (f s)), X (hub' S A f)) \\
846+
\ \ (nSpoke : $\Pi$ (f : S $\rightarrow$ hs S A) (nF : $\Pi$ (s : S), X (f s)) (s : S), \\
847+
\ \ \ \ PathP (<i> X (spoke' S A f s @ i)) (nHub f nF) (nF s)) \\
848+
\ \ (z : hs S A) : X z := \textbf{disc-ind} S A X nCenter nHub nSpoke z
849+
\end{tabular}
850+
\end{table}
851+
852+
853+
% \subsection{Simplicial Types}
854+
855+
% Modification of Anders with Simplicial types and Hopf Fibrations built intro the core of type checker
856+
% is called \textbf{Dan} with following recursive syntax (having $f$ as Simplecies and $coh$ as Path-coherence functions):
857+
858+
% \begin{table}[ht!]
859+
% \tabstyle
860+
% \begin{tabular}{l}
861+
% \textbf{simplex} n [v$_0$ .. v$_n$] \{ f$_0$, f$_1$, ..., f$_n$ | coh i$_1$ i$_2$ ... i$_n$ \} : Simplex
862+
% \end{tabular}
863+
% \end{table}
864+
%
865+
% and instantiation example:
866+
867+
% \begin{table}[ht!]
868+
% \tabstyle
869+
% \begin{tabular}{l}
870+
%
871+
% \textbf{def} s$_\infty$ : Simplicial \\
872+
% \ := $\Pi$ (v e : Simplex), \\
873+
% \ \ \ \ $\delta_{10}$ = v, $\delta_{11}$ = v, s$_0$ < v, \\
874+
% \ \ \ \ $\delta_{20}$ = e $\circ$ e, s$_{10}$ < $\delta_{20}$ \\
875+
% \ \ \ \ $\vdash$ $\infty$ (v, e, $\delta_{20}$ | $\delta_{10}$ $\delta_{11}$, s$_0$, $\delta_{20}$, s$_{10}$)
876+
% \end{tabular}
877+
% \end{table}
878+
747879
\newpage
748880
\section{Properties}
749881

@@ -785,7 +917,58 @@ \section{Conclusion}
785917

786918
\appendix
787919
\newpage
788-
\section{Application A. HoTT Mathematics}
920+
\section{Annex A. Simon Huber Canonical Equations}
921+
\label{sec:appendix-b}
922+
923+
\begin{table}[ht!]
924+
\tabstyle
925+
\begin{tabular}{l}
926+
transpⁱ N φ u₀ = u₀ \\
927+
transpⁱ U φ A = A \\
928+
transpⁱ (Π (x : A), B) φ u₀ v = transpⁱ B(x/w) φ (u₀ w(i/0)), w = tFill⁻ⁱ A φ v, v : A(i/1) \\
929+
transpⁱ (Σ (x : A), B) φ u₀ = (transpⁱ A φ (u₀.1), transpⁱ B(x/v) φ(u₀.2)), v = tFillⁱ A φ u₀.1 \\
930+
transpⁱ (Pathʲ A v w) φ u₀ = 〈j〉\\
931+
\ compⁱ A [φ ↦ u₀ j, (j=0) ↦ v, (j=1) ↦ w] (u₀ j) \\
932+
transpⁱ G ψ u₀ = glue [φ(i/1) ↦ t′₁] a′₁ : G(i/1), \\
933+
\ G = Glue [φ ↦ (T,w)] A \\
934+
transpⁱ (W (x : A), B) φ (sup a f) = \\
935+
\ sup (transpⁱ A φ a) (transpⁱ (B(v) → W) φ f), v = tFillⁱ A φ a \\
936+
transpⁱ (Coequ A B f g) φ (ι₂ b) = ι₂ (transpⁱ B φ b) \\
937+
transpⁱ (Coequ A B f g) φ (resp a j) = resp (transpⁱ A φ a) j \\
938+
transpⁱ (Disc S A) φ (base a) = base (transpⁱ A φ a) \\
939+
transpⁱ (Disc S A) φ (hub f) = hub (transpⁱ (S → Disc S A) φ f) \\
940+
transpⁱ (Disc S A) φ (spoke f y j) = spoke (transpⁱ (S → Disc S A) φ f) (transpⁱ S φ y) j \\
941+
transpⁱ (ℑ A) φ (ℑ-unit a) = ℑ-unit (transpⁱ A φ a) \\
942+
transpⁱ (♭ A) φ (♭-unit a) = ♭-unit (transpⁱ A φ a) \\
943+
transp⁻ⁱ A φ u = (transpⁱ A(i/1−i) φ u)(i/1−i) : A(i/0) \\
944+
tFillⁱ A φ u₀ = transpʲ A(i/i∧j) (φ∨(i=0)) u₀ : A \\
945+
\\
946+
hcompⁱ N [φ ↦ 0] 0 = 0 \\
947+
hcompⁱ N [φ ↦ S u] (S u₀) = S (hcompⁱ N [φ ↦ u] u₀) \\
948+
hcompⁱ U [φ ↦ E] A = Glue [φ ↦ (E(i/1), equivⁱ E(i/1−i))] A \\
949+
hcompⁱ (Π (x : A), B) [φ ↦ u] u₀ v = hcompⁱ B(x/v) [φ ↦ u v] (u₀ v) \\
950+
hcompⁱ (Σ (x : A), B) [φ ↦ u] u₀ = (v(i/1), compⁱ B(x/v) [φ ↦ u.2] u₀.2), \\
951+
\ v = hFillⁱ A [φ ↦ u.1] u₀.1 \\
952+
hcompⁱ (Pathʲ A v w) [φ ↦ u] u₀ = 〈j〉\\
953+
\ hcompⁱ A [ φ ↦ u j, (j = 0) ↦ v, (j = 1) ↦ w ] (u₀ j) \\
954+
hcompⁱ G [ψ ↦ u] u₀ = glue [φ ↦ t₁] a₁ : G, G = Glue [φ ↦ (T,w)] A, \\
955+
t₁ = u(i/1) : T, a₁ = unglue u(i/1) : A, glue [φ ↦ t₁] a1 = t₁ : T \\
956+
hcompⁱ (W (x : A), B) [φ ↦ sup a f] (sup a₀ f₀) \\
957+
\ = sup (hcompⁱ A [φ ↦ a] a₀) (hcompⁱ (B(v) → W) [φ ↦ f] f₀), v = hFillⁱ A [φ ↦ a] a₀ \\
958+
hcompⁱ (Coequ A B f g) [φ ↦ ι₂ u] (ι₂ u₀) = ι₂ (hcompⁱ B [φ ↦ u] u₀) \\
959+
hcompⁱ (Coequ A B f g) [φ ↦ resp a j] (resp a₀ j) = resp (hcompⁱ A [φ ↦ a] a₀) j \\
960+
hcompⁱ (Disc S A) [φ ↦ base a] (base a₀) = base (hcompⁱ A [φ ↦ a] a₀) \\
961+
hcompⁱ (Disc S A) [φ ↦ hub f] (hub f₀) = hub (hcompⁱ (S → Disc S A) [φ ↦ f] f₀) \\
962+
hcompⁱ (Disc S A) [φ ↦ spoke f y j] (spoke f₀ y₀ j) \\
963+
\ = spoke (hcompⁱ (S → Disc S A) [φ ↦ f] f₀) (hcompⁱ S [φ ↦ y] y₀) j \\
964+
hcompⁱ (ℑ A) [φ ↦ ℑ-unit u] (ℑ-unit u₀) = ℑ-unit (hcompⁱ A [φ ↦ u] u₀) \\
965+
hcompⁱ (♭ A) [φ ↦ ♭-unit u] (♭-unit u₀) = ♭-unit (hcompⁱ A [φ ↦ u] u₀) \\
966+
hFillⁱ A [φ ↦ u] u₀ = hcompʲ A [φ ↦ u(i/i∧j), (i=0) ↦ u₀] u₀ : A \\
967+
\end{tabular}
968+
\end{table}
969+
970+
\newpage
971+
\section{Annex B. HoTT Mathematics}
789972
\label{sec:hott-applications}
790973

791974
Mathematics in Homotopy Type Theory has seen substantial formalization efforts across multiple proof assistants (including Anders, Cubical Agda, Lean, Coq, etc.). Below is a (non-exhaustive) list of notable results that have been mechanized.

doc/anders.vtc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
\contitem\title{Anders: Modal Homotopy Type System for Computable Modal Homotopy Type Theory and Differential Geometry}\author{Maksym Sokhatskyi}\page{:1--:16}
1+
\contitem\title{Anders: Modal Homotopy Type System for Computable Modal Homotopy Type Theory and Differential Geometry}\author{Maksym Sokhatskyi}\page{:1--:19}

library/foundations/modal/flat.anders

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,33 @@ import library/foundations/mltt/proto
33
import library/foundations/univalent/path
44
import library/foundations/univalent/iso
55

6-
-- Flat Modality ♭
7-
-- Synonyms for kernel primitives
6+
--- Flat Modality ♭
7+
--- Synonyms for kernel primitives
88

99
def Flat (A : U) := ♭ A
1010
def FlatUnit (A : U) := λ (a : A), ♭-unit a
1111
def FlatCounit (A : U) := λ (x : Flat A), ♭-counit x
1212

13-
-- Induction Rule (Primitive: ind-♭)
13+
--- Induction Rule (Primitive: ind-♭)
1414
def FlatInd (A : U) := λ (B : Flat A → U), ind-♭ A B
1515

16-
-- Uniqueness Rule (η)
16+
--- Uniqueness Rule (η)
1717
def ♭-η (A : U) := λ (x : Flat A), <p> x
1818

19-
-- Discrete types: A type is discrete if ♭-unit is an equivalence.
19+
--- Discrete types: A type is discrete if ♭-unit is an equivalence.
2020
def isDiscrete (A : U) := isEquiv A (Flat A) (FlatUnit A)
2121

22-
-- Reality Check (Simon Huber Equations)
22+
--- Reality Check (Simon Huber Equations)
2323

24-
def trans-♭ (A : I → U) (a : A 0) : ♭ (A 1) := ♭-unit (transp (<i> A i) 0 a)
25-
def trans-♭′ (A : I → U) (a : A 0) : ♭ (A 1) := transp (<i> ♭ (A i)) 0 (♭-unit a)
26-
def trans-♭-is-correct (A : I → U) (a : A 0) : Path (♭ (A 1)) (trans-♭ A a) (trans-♭′ A a) := <_> trans-♭ A a
24+
def trans-♭ (A : I → U) (a : A 0) : ♭ (A 1)
25+
:= ♭-unit (transp (<i> A i) 0 a)
26+
27+
def trans-♭′ (A : I → U) (a : A 0) : ♭ (A 1)
28+
:= transp (<i> ♭ (A i)) 0 (♭-unit a)
29+
30+
def trans-♭-is-correct (A : I → U) (a : A 0)
31+
: Path (♭ (A 1)) (trans-♭ A a) (trans-♭′ A a)
32+
:= <_> trans-♭ A a
2733

2834
def hcomp-♭ (A : U) (r : I) (u : I → Partial A r) (u₀ : A[r ↦ u 0]) : ♭ A
2935
:= ♭-unit (hcomp A r u (ouc u₀))

0 commit comments

Comments
 (0)