Skip to content

Commit 42f5a02

Browse files
committed
🚆
1 parent babc4a5 commit 42f5a02

15 files changed

Lines changed: 604 additions & 388 deletions

latex/format.tex

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@
6363
\let\item\@idxitem
6464
\setlength{\columnsep}{30pt}
6565
\setlength{\parindent}{0em}
66-
\begin{multicols*}{2}\raggedcolumns}
66+
\begin{multicols*}{2}\raggedcolumns} %\raggedleft}
6767
{\end{multicols*}}
68-
%\let\item\@idxitem}
68+
%\let\item\@idxitem}\raggedright
6969
{\clearpage}
7070
\renewcommand{\@idxitem}{\par\hangindent 15\p@}
7171
\renewcommand{\subitem}{\par\hangindent 30\p@\hspace*{15pt}}
@@ -75,10 +75,10 @@
7575
headings_flag 1
7676
heading_prefix "\{\\normalsize\\textbf\{"
7777
heading_suffix "\}\}\\hfill\\nopagebreak\n"
78-
delim_0 "\\mydotfill\{\\raggedleft\\footnotesize"
79-
delim_1 "\\mydotfill\{\\raggedleft\\footnotesize"
80-
delim_2 "\\mydotfill\{\\raggedleft\\footnotesize"
81-
delim_t "\\raggedright\} "
78+
delim_0 "\\mydotfill\{\\footnotesize"
79+
delim_1 "\\mydotfill\{\\footnotesize"
80+
delim_2 "\\mydotfill\{\\footnotesize"
81+
delim_t "\} "
8282
\end{filecontents}
8383

8484
%% Glossaries

latex/symbols.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
\newcommand{\iconDONE}{\textnormal{\raisebox{0\height}{\scalebox{.90}{\faCheckSquare}}}} % checkbox
99
\newcommand{\iconPROG}{\textnormal{\raisebox{0\height}{\scalebox{.90}{\faBorderNone}}}} % progress
1010

11-
\newcommand{\types}{\textnormal{\raisebox{0.15\height}{\scalebox{.65}{\faStarOfLife}}}}
11+
\newcommand{\types}{\textnormal{\raisebox{0.15\height}{\scalebox{.65}{\faDiaspora}}}}
1212
\newcommand{\logics}{\textnormal{\raisebox{0.25\height}{\scalebox{.65}{\faChessKing}}}}
1313
\newcommand{\dataflow}{\textnormal{\raisebox{0.15\height}{\scalebox{.65}{\faShare*}}}}
1414
\newcommand{\syntax}{\textnormal{\raisebox{0.15\height}{\scalebox{.65}{\faFont}}}}

references/acronyms.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,6 @@
6969
\newacronym{trs}{TRS}{Term Rewrite System}
7070
\newacronym{url}{URL}{Uniform Resource Locator}
7171
\newacronym{usg}{USG}{University System of Georgia}
72+
\newacronym{utm}{UTM}{Universal Turing Machine}
7273
\newacronym{wcet}{WCET}{Worst-Case Execution Time}
7374
\newacronym{xbc}{XbC}{X-by-Construction}

references/references.bib

Lines changed: 64 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,19 @@ @article{ernst2007
478478
pages = {35--45},
479479
doi = {10.1016/j.scico.2007.01.015}
480480
}
481+
@article{feiertag1977,
482+
title = {Proving multilevel security of a system design},
483+
author = {Feiertag, R. J. and Levitt, K. N. and Robinson, L.},
484+
year = {1977},
485+
month = {11},
486+
journal = {ACM SIGOPS Operating Systems Review},
487+
publisher = {Association for Computing Machinery (ACM)},
488+
volume = {11},
489+
number = {5},
490+
pages = {57--65},
491+
doi = {10.1145/1067625.806547},
492+
issn = {0163-5980}
493+
}
481494
@article{focardi1997,
482495
title = {{The Compositional Security Checker: a tool for the verification of information flow security properties}},
483496
author = {Focardi, R. and Gorrieri, R.},
@@ -771,6 +784,19 @@ @article{lamport1977
771784
doi = {10.1109/tse.1977.229904},
772785
issn = {2326-3881}
773786
}
787+
@article{lawson2009,
788+
title = {Side-Channel Attacks on Cryptographic Software},
789+
author = {Lawson, Nate},
790+
year = {2009},
791+
month = {11},
792+
journal = {IEEE Security \& Privacy Magazine},
793+
publisher = {Institute of Electrical and Electronics Engineers (IEEE)},
794+
volume = {7},
795+
number = {6},
796+
pages = {65--68},
797+
doi = {10.1109/msp.2009.165},
798+
issn = {1540-7993}
799+
}
774800
@article{leroy2009,
775801
title = {{Formal verification of a realistic compiler}},
776802
author = {Xavier Leroy},
@@ -1014,6 +1040,19 @@ @article{srikanth2017
10141040
doi = {10.1145/3093333.3009864},
10151041
issn = {1558-1160}
10161042
}
1043+
@article{stefan2012,
1044+
title = {Addressing covert termination and timing channels in concurrent information flow systems},
1045+
author = {Stefan, Deian and Russo, Alejandro and Buiras, Pablo and Levy, Amit and Mitchell, John C. and Maziéres, David},
1046+
year = {2012},
1047+
month = {9},
1048+
journal = {ACM SIGPLAN Notices},
1049+
publisher = {Association for Computing Machinery (ACM)},
1050+
volume = {47},
1051+
number = {9},
1052+
pages = {201--214},
1053+
doi = {10.1145/2398856.2364557},
1054+
issn = {1558-1160}
1055+
}
10171056
@article{turing1936,
10181057
title = {{On computable numbers, with an application to the Entscheidungsproblem}},
10191058
author = {Turing, A. M.},
@@ -1392,6 +1431,17 @@ @inbook{avanzini2016
13921431
isbn = {9783662496749},
13931432
issn = {1611-3349}
13941433
}
1434+
@inbook{avanzini2024,
1435+
title = {On the Hardness of Analyzing Quantum Programs Quantitatively},
1436+
author = {Avanzini, Martin and Moser, Georg and Péchoux, Romain and Perdrix, Simon},
1437+
year = {2024},
1438+
booktitle = {Programming Languages and Systems},
1439+
publisher = {Springer Nature Switzerland},
1440+
pages = {31--58},
1441+
doi = {10.1007/978-3-031-57267-8_2},
1442+
isbn = {9783031572678},
1443+
issn = {1611-3349}
1444+
}
13951445
@inbook{baillot2015,
13961446
title = {{Implicit Computational Complexity of Subrecursive Definitions and Applications to Cryptographic Proofs}},
13971447
author = {Baillot, Patrick and Barthe, Gilles and Dal Lago, Ugo},
@@ -1481,6 +1531,17 @@ @inbook{cobham1965
14811531
url = {https://www.cs.toronto.edu/~sacook/homepage/cobham_intrinsic.pdf},
14821532
editor = {Yehoshua Bar{-}Hillel}
14831533
}
1534+
@inbook{colledan2024,
1535+
title = {Circuit Width Estimation via Effect Typing and Linear Dependency},
1536+
author = {Colledan, Andrea and Dal Lago, Ugo},
1537+
year = {2024},
1538+
booktitle = {Programming Languages and Systems},
1539+
publisher = {Springer Nature Switzerland},
1540+
pages = {3--30},
1541+
doi = {10.1007/978-3-031-57267-8_1},
1542+
isbn = {9783031572678},
1543+
issn = {1611-3349}
1544+
}
14841545
@inbook{dallago2011,
14851546
title = {{A Short Introduction to Implicit Computational Complexity}},
14861547
author = {Dal Lago, Ugo},
@@ -1881,13 +1942,13 @@ @inbook{terbeek2018
18811942
@inbook{terbeek2020,
18821943
title = {X-by-Construction: Correctness Meets Probability},
18831944
author = {ter Beek, Maurice H. and Cleophas, Loek and Legay, Axel and Schaefer, Ina and Watson, Bruce W.},
1884-
year = 2020,
1945+
year = {2020},
18851946
booktitle = {Leveraging Applications of Formal Methods, Verification and Validation: Verification Principles},
18861947
publisher = {Springer International Publishing},
18871948
pages = {211--215},
18881949
doi = {10.1007/978-3-030-61362-4_11},
1889-
isbn = 9783030613624,
1890-
issn = {1611-3349},
1950+
isbn = {9783030613624},
1951+
issn = {1611-3349}
18911952
}
18921953
@inbook{vandermeyden2007,
18931954
title = {{A Comparison of Semantic Models for Noninterference}},
@@ -3380,25 +3441,3 @@ @unpublished{rusch20257
33803441
url = {https://nkrusch.github.io/dissertation/abstract.pdf},
33813442
note = {At the ECOOP 2025 Doctoral Symposium}
33823443
}
3383-
@inbook{colledan2024,
3384-
title = {Circuit Width Estimation via Effect Typing and Linear Dependency},
3385-
author = {Colledan, Andrea and Dal Lago, Ugo},
3386-
year = 2024,
3387-
booktitle = {Programming Languages and Systems},
3388-
publisher = {Springer Nature Switzerland},
3389-
pages = {3--30},
3390-
doi = {10.1007/978-3-031-57267-8_1},
3391-
isbn = 9783031572678,
3392-
issn = {1611-3349}
3393-
}
3394-
@inbook{avanzini2024,
3395-
title = {On the Hardness of Analyzing Quantum Programs Quantitatively},
3396-
author = {Avanzini, Martin and Moser, Georg and Péchoux, Romain and Perdrix, Simon},
3397-
year = 2024,
3398-
booktitle = {Programming Languages and Systems},
3399-
publisher = {Springer Nature Switzerland},
3400-
pages = {31--58},
3401-
doi = {10.1007/978-3-031-57267-8_2},
3402-
isbn = 9783031572678,
3403-
issn = {1611-3349}
3404-
}

references/symbols.tex

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
\newglossaryentry{symb:Delta}{name={\(\Delta\)},description={sequence of derivation choices},sort=Delta,text={}}
2-
\newglossaryentry{symb:G}{name={\(\Gamma\)},description={typing context},sort=t,text={}}
2+
\newglossaryentry{symb:G}{name={\(\Gamma\)},description={typing context},sort=G,text={}}
33
\newglossaryentry{symb:PsiProd}{name={\(\bar{\Psi}\)},description={injection over cartesian product},sort=Psi,text={}}
44
\newglossaryentry{symb:Xprime}{name={\texttt{X'}},description={variable referring to its final value},sort=x,text={}}
55
\newglossaryentry{symb:ai}{name={\(A_i\)},description={set of derivation choices},sort=A,text={}}
@@ -67,7 +67,7 @@
6767
\newglossaryentry{symb:mstar}{name={\(M^*\)},description={matrix closure/fixpoint},sort={matrix fixpoint},text={}}
6868
\newglossaryentry{symb:mwpi}{name={\(\mwpsc^\infty\)},description={\mwpsc extended with \(\infty\)-coefficient},sort=mwpinfinity,text={}}
6969
\newglossaryentry{symb:mwpset}{name={\mwpsc},description={set of flow coefficients},sort=mwp,text={}}
70-
\newglossaryentry{symb:mzeroj}{name={\(\{_{i}^{\alpha} \rightarrow j\}\)}, description={matrix \(M\) with \(M_{ij} = \alpha\) and \(0\) elsewhere},sort={mij},text={}}
70+
\newglossaryentry{symb:mzeroj}{name={\(\{_{i}^{\alpha} \rightarrow j\}\)}, description={matrix \(M\) with \(M_{ij} = \alpha\) and \(0\) elsewhere},sort={aij},text={}}
7171
\newglossaryentry{symb:m}{name={\(m\)},description={maximally linear flow coefficient},sort=m,text={}}
7272
\newglossaryentry{symb:nat}{name={\(\mathbb{N}\)},description={natural number},sort=n,text={}}
7373
\newglossaryentry{symb:normx}{name={\(\vec{x}\)},description={normal parameters},sort=xvec,text={},parent={symb:vlist}}
@@ -108,15 +108,15 @@
108108
\newglossaryentry{symb:trieq}{name={\(\triangleq\)},description={defines},sort={=},text={}}
109109
\newglossaryentry{symb:ttrue}{name={\(\top\)},description={true},sort=true,text={}}
110110
\newglossaryentry{symb:upce}{name={\(\upce{}\)},description={up-to equivalence},sort=cup,text={}}
111-
\newglossaryentry{symb:v0a}{name={\(\{_{i}^{\alpha}\}\)},description={vector with \(\alpha\) in \(i^\text{th}\) row and \(0\) otherwise},sort={vector zero},text={}}
112-
\newglossaryentry{symb:vadd}{name={\(\{_{i}^{\alpha} , _{j}^{\beta}\}\)},description={component-wise vector addition},sort={vector addition},text={}}
111+
\newglossaryentry{symb:v0a}{name={\(\{_{i}^{\alpha}\}\)},description={vector with \(\alpha\) in \(i^\text{th}\) row and \(0\) otherwise},sort={ai},text={}}
112+
\newglossaryentry{symb:vadd}{name={\(\{_{i}^{\alpha} , _{j}^{\beta}\}\)},description={component-wise vector addition},sort={aibj},text={}}
113113
\newglossaryentry{symb:vare}{name={\(\var(\_)\)},description={variables in \(\_\)},sort={vare},text={}}
114114
\newglossaryentry{symb:vdash}{name={\(\vdash\)},description={syntactic implication, proves},sort=vdash,text={}}
115-
\newglossaryentry{symb:vec2}{name={\(\mat{\alpha \\ \beta}\)},description={column vector of flow coefficients},sort={vector column},text={}}
115+
\newglossaryentry{symb:vec2}{name={\(\mat{\alpha \\ \beta}\)},description={column vector of flow coefficients},sort={ab},text={}}
116116
\newglossaryentry{symb:vecv}{name={\(\vec{v}\)},description={value list, \ie \(\vec{v} = v_1, \hdots, v_n\), (alternatively \(\vec{w}\))},sort=vectorv,text={}}
117117
\newglossaryentry{symb:vec}{name={\(V\)},description={column vector},sort=V,text={}}
118118
\newglossaryentry{symb:vin}{name={\(\In(\_)\)},description={variables used by \(\_\)},sort={in},text={}}
119-
\newglossaryentry{symb:vi}{name={\vi},description={non-interference violation},sort=droplet,text={}}
119+
\newglossaryentry{symb:vi}{name={\vi},description={non-interference violation},sort={ni},text={}}
120120
\newglossaryentry{symb:vout}{name={\(\Out(\_)\)},description={variables modified by \(\_\)},sort={out},text={}}
121121
\newglossaryentry{symb:vrep}{name={\(M \xleftarrow{j} V\)},description={replace in matrix \(M\) the \(j^\text{th}\) column by \(V\)},sort={matrix replace vector},text={}}
122122
\newglossaryentry{symb:vsem}{name={\(\vDash\)},description={semantic implication},sort=vdash,text={}}
@@ -128,4 +128,5 @@
128128
\newglossaryentry{symb:xprime2}{name={\(x'\)},description={variable final value},sort=x,text={}}
129129
\newglossaryentry{symb:xvar2}{name={\(\text{\texttt{x}}\)},description={variable (alternatively \pr|w|, \pr|y|, \pr|z|, \ldots)},sort=X,text={}}
130130
\newglossaryentry{symb:xvar}{name={\(\text{\texttt{X}}_n\)},description={variable},sort=X,text={}}
131-
\newglossaryentry{symb:zero2}{name={\(0\)},description={reinitialization},sort=0,text={},parent={symb:zero}}
131+
\newglossaryentry{symb:zero2}{name={\(0\)},description={reinitialization},sort=0,text={},parent={symb:zero}}
132+
\newglossaryentry{symb:phi}{name={\phi},description={analyzed property},sort=phi,text={}}

text/bg-formal.tex

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,12 @@ \subsubsection{Foundational Concepts}
170170
related to memory accesses: null-pointer dereferencing, access to unallocated
171171
memory, dangling pointers, out-of-bounds accesses, double-free,
172172
\etc~\cite{muller2024}}, absence of overflows, \ndx{termination}, \ndx{data race
173-
freedom}~\cite{georges2025}, \ndx{deadlock freedom}~\cite{roscoe1987}, secure
174-
\ndx{information flow} (cf~\autoref{if-security}), staying within available
175-
\ndx{resource bounds}, and \ndx{worst-case execution time} (WCET). For example,
176-
showing that a program is free of overflows requires expressing overflow-freedom
177-
as a formal specification, then proving that the implementation satisfies the
173+
freedom}~\cite{georges2025}, deadlock
174+
freedom\index{deadlocking}~\cite{roscoe1987}, secure \ndx{information flow}
175+
(cf~\autoref{if-security}), staying within available \ndx{resource bounds}, and
176+
\ndx{worst-case execution time} (WCET). For example, showing that a program is
177+
free of overflows requires expressing overflow-freedom as a formal
178+
specification, then proving that the implementation satisfies the
178179
specification\index{specifications}.
179180

180181
There are various different ways to categorize families of \ndx{properties}.
@@ -541,7 +542,7 @@ \subsubsection{The Rocq Theorem Prover}
541542
& \textcite{honsell2001}
542543
\\
543544
\href{https://github.com/rocq-community/goedel}%
544-
{\ndx{Gödel-Rosser incompleteness theorem}}
545+
{\ndx{Gödel-Rosser Incompleteness Theorem}}
545546
& \textcite{oconnor2005}
546547
\\
547548
Modal model of impredicative semantics
@@ -766,7 +767,7 @@ \subsubsection{Tool Comparison by Light Examples}
766767

767768
\begin{center}
768769
\captionsetup{type=lstlisting}
769-
\rocqinputlisting[breakable][firstline=176]{equiv.v}
770+
\rocqinputlisting[][firstline=176]{equiv.v}
770771
\captionof{lstlisting}[A Rocq proof of program equivalence]{
771772
A \ndx{Rocq} proof of program equivalence (theorem only).
772773
The full proof with the programming language syntax, semantics, and notations is
@@ -901,11 +902,18 @@ \subsubsection{Tool Comparison by Light Examples}
901902

902903
\begin{center}
903904
\captionsetup{type=lstlisting}
904-
\rocqinputlisting[breakable][firstline=2]{leftpad.v}
905-
\captionof{lstlisting}[Leftpad in Rocq]{Leftpad in Rocq.}
905+
\rocqinputlisting[][firstline=2,lastline=26]{leftpad.v}
906+
\captionof{lstlisting}[Leftpad in Rocq (1)]{Leftpad in Rocq (part 1 of 2).}
906907
\label{lst:rocq-leftpad}
907908
\end{center}
908909

910+
\begin{center}
911+
\captionsetup{type=lstlisting}
912+
\rocqinputlisting[][firstline=28,firstnumber=28]{leftpad.v}
913+
\captionof{lstlisting}[Leftpad in Rocq (2)]{Leftpad in Rocq (part 2 of 2).}
914+
\label{lst:rocq-leftpad2}
915+
\end{center}
916+
909917
\subparagraph*{Leftpad in Rocq.}
910918
The \ndx{Rocq} proof of leftpad is shown in~\autoref{lst:rocq-leftpad}. The
911919
leftpad implementation (at L27--28) works by concatenating \(n -
@@ -917,6 +925,27 @@ \subsubsection{Tool Comparison by Light Examples}
917925
and the concatenated length. Proving the theorem requires introducing the
918926
supporting definitions and the lemmas of L6--25.
919927

928+
\begin{center}
929+
\captionsetup{type=lstlisting}
930+
\begin{minipage}{\linewidth}
931+
\mathcompinputlisting[][firstline=2]{leftpad_ssrefl.v}
932+
\captionof{lstlisting}[Leftpad in SSReflect proof language]{
933+
Leftpad in the \ndx{SSReflect} proof language of the \ndx{Mathematical
934+
Components} library.}
935+
\label{lst:mathcomp-leftpad}
936+
\end{minipage}
937+
\end{center}
938+
939+
\begin{center}
940+
\begin{minipage}{\linewidth}
941+
\captionsetup{type=lstlisting}
942+
\dafnyinputlisting[][]{leftpad.dfy}
943+
\captionof{lstlisting}[Formally verified Leftpad in Dafny]
944+
{Formally verified leftpad in \ndx{Dafny}.}
945+
\label{lst:leftdfy}
946+
\end{minipage}
947+
\end{center}
948+
920949
\subparagraph*{Leftpad in SSReflect.}
921950
The \ndx{Mathematical Components} library does not contain definitions of string
922951
or character types. Therefore,~\autoref{lst:mathcomp-leftpad} is generalized to
@@ -936,27 +965,6 @@ \subsubsection{Tool Comparison by Light Examples}
936965
\ndx{Mathematical Components} library. The naming eases locating existing
937966
theorems, to avoid searching the proofs database.
938967

939-
\begin{center}
940-
\captionsetup{type=lstlisting}
941-
\begin{minipage}{\linewidth}
942-
\mathcompinputlisting[][firstline=2]{leftpad_ssrefl.v}
943-
\captionof{lstlisting}[Leftpad in SSReflect proof language]{
944-
Leftpad in the \ndx{SSReflect} proof language of the \ndx{Mathematical
945-
Components} library.}
946-
\label{lst:mathcomp-leftpad}
947-
\end{minipage}
948-
\end{center}
949-
950-
\begin{center}
951-
\begin{minipage}{\linewidth}
952-
\captionsetup{type=lstlisting}
953-
\dafnyinputlisting[][]{leftpad.dfy}
954-
\captionof{lstlisting}[Leftpad formally verified in Dafny]
955-
{Formally verified leftpad in \ndx{Dafny}.}
956-
\label{lst:leftdfy}
957-
\end{minipage}
958-
\end{center}
959-
960968
\subparagraph*{Leftpad in Dafny.}
961969
In \ndx{Dafny}, the \ndx{specifications} are \enquote{embedded} next to the
962970
implementation. To make the \autoref{lst:leftdfy} free of imports, the \pr|Max|

text/bg-icc.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ \subsubsection{Computational Complexity, \emph{Implicitly}}
4242
\end{quotation}
4343
In other words, complexity classes\index{complexity classes} are described independently of notions of time or space related to a machine's definition.
4444
For example, polynomial time complexity\ccxi{p} has been thoroughly examined under these terms.
45-
The \ndx{CobhamEdmonds's Thesis}~\cite{cobham1965,edmonds1965} relates polynomial time class with the class of feasible functions\footnote{
45+
The \ndx{Cobham-Edmonds's Thesis}~\cite{cobham1965,edmonds1965} relates polynomial time class with the class of feasible functions\footnote{
4646
The Cobham-Edmonds Thesis asserts that the time complexities in any two \enquote{reasonable and general} models of computation are polynomially related;
4747
that is, a problem has time complexity \(t\) in some reasonable and general model of computation
4848
if and only if it has time complexity poly(\(t\)) in the model of single-tape \ndx{Turing Machine}s~\cite[p. 33]{goldreich2008}.}.

0 commit comments

Comments
 (0)