\begin{tikzpicture}[textstyle/.style={black, anchor= south west, align=center, minimum height=0.45cm, text centered, font=\scriptsize}] % adapt line thickness and line width, if needed \path [thick, dashed] (2.5,1) edge +(0,-6.75); \draw (2.5,1) node[anchor=north east] {\sref{sec:Coq-RFC}}; \draw (2.5,1) node[anchor=north west] {\sref{sec:C-Coq}}; \path [thick, dashed] (0,-5.75) edge +(8.5,0); \draw (8.5,-5.75) node[anchor=north east] {\sref{sec:maths}}; % SECTION III % Definition of RFC \begin{scope}[yshift=-3 cm,xshift=0 cm] \draw (0,0) -- (0.4, 0.4) -- (1.75,0.4) -- (1.75,0) -- cycle; \draw (0,0) -- (1.75,0) -- (1.75,-1) -- (0, -1) -- cycle; \draw (0.3,-0.05) node[textstyle] {Definition}; \draw (0.875,-0.5) node[textstyle, anchor=center] {\texttt{RFC}}; \draw (1.75,-1) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; \end{scope} % SECTION IV % C code \begin{scope}[yshift=-0.25 cm,xshift=2.75 cm] \draw (0,0) -- (0.4, 0.4) -- (1.25,0.4) -- (1.25,0) -- cycle; \draw (0,0) -- (1.25,0) -- (1.25,-1.25) -- (0, -1.25) -- cycle; \draw (0.3,-0.05) node[textstyle] {code}; \draw (0.675,-0.5) node[textstyle, anchor=center] {\texttt{Prog}}; \draw (1.25,-1.25) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.C}}; \end{scope} % V code \begin{scope}[yshift=-0.25 cm,xshift=5 cm] \draw (0,0) -- (0.4, 0.4) -- (1.25,0.4) -- (1.25,0) -- cycle; \draw (0,0) -- (1.25,0) -- (1.25,-1.25) -- (0, -1.25) -- cycle; \draw (0.3,-0.05) node[textstyle] {code}; \draw (0.675,-0.5) node[textstyle, anchor=center] {\texttt{Prog}}; \draw (1.25,-1.25) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; % \draw (1.25,0) node[anchor=south east, inner sep=0pt] {\includegraphics[width=.0125\textwidth]{img/coq_logo.png}}; \end{scope} \path [thick, dotted, double, ->] (4,-0.75) edge (5, -0.75); % VST Spec \begin{scope}[yshift=-3 cm,xshift=2.75 cm] \draw (0,0) -- (0.4, 0.4) -- (2.75,0.4) -- (2.75,0) -- cycle; \draw (0,0) -- (2.75,0) -- (2.75,-2) -- (0, -2) -- cycle; \draw (0.3,-0.05) node[textstyle] {Specification}; \draw (1.375,-1) node[textstyle, anchor=center, align=left] { {\color{doc@lstnumbers}\textbf{Pre}}:\\ ~~\texttt{s}$[\!\!\{$\texttt{n}$\}\!\!]\leftarrow n \in \N$,\\ % ~~$n \in$ \TNaCles{u8[32]},\\ ~~\texttt{s}$[\!\!\{$\texttt{p}$\}\!\!]\leftarrow P \in E(\F{p^2})$\\ % ~~$P \in$ \TNaCles{u8[32]}\\ {\color{doc@lstdirective}\textbf{Post}}:\\ ~~\texttt{s}$[\!\!\{$\texttt{q}$\}\!\!]\leftarrow$~\texttt{RFC}$(n,P)$}; \draw (2.75,-2) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; \end{scope} % VST Theorem \begin{scope}[yshift=-3 cm,xshift=6 cm] \draw (0,0) -- (0.4, 0.4) -- (2.5,0.4) -- (2.5,0) -- cycle; \draw (0,0) -- (2.5,0) -- (2.5,-1.25) -- (0, -1.25) -- cycle; \draw (0.3,-0.05) node[textstyle] {Proof}; \draw (1.25,-0.5) node[textstyle, anchor=center] {\{{\color{doc@lstnumbers}\textbf{Pre}}\} \texttt{Prog} \{{\color{doc@lstdirective}\textbf{Post}}\}}; \draw (2.5,0) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{\checkmark}}; \draw (2.5,-1.25) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; \end{scope} \path [thick, double] (5.625,-1.5) edge [out=-90, in=90] (5.625, -2.5); \path [thick, double, ->] (5.625, -2.5) edge [out=-90, in=180] (6, -3.5); \path [thick, double, ->] (5.5,-3.75) edge [out=0, in=180] (6, -3.75); % SECTION V % Spec of Curve nP \begin{scope}[yshift=-7.5 cm,xshift=0 cm] \draw (0,0) -- (0.4, 0.4) -- (1.75,0.4) -- (1.75,0) -- cycle; \draw (0,0) -- (1.75,0) -- (1.75,-1) -- (0, -1) -- cycle; \draw (0.3,-0.05) node[textstyle] {Definition}; \draw (0.875,-0.5) node[textstyle, anchor=center] {$n \cdot P$}; \draw (1.75,-1) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; \end{scope} % Correctness Theorem \begin{scope}[yshift=-7 cm,xshift=6 cm] \draw (0,0) -- (0.4, 0.4) -- (2.5,0.4) -- (2.5,0) -- cycle; \draw (0,0) -- (2.5,0) -- (2.5,-1.5) -- (0, -1.5) -- cycle; \draw (0.3,-0.05) node[textstyle] {Proof}; \draw (1.25,-0.75) node[textstyle, anchor=center] {{\color{doc@lstnumbers}\textbf{Pre}} $\implies$\\$\text{\texttt{RFC}}(n,P) = n \cdot P$}; \draw (2.5,0) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{\checkmark}}; \draw (2.5,-1.5) node[textstyle, anchor = south east] {\color{doc@lstfunctions}{.V}}; \end{scope} \path [thick, double, ->] (1.75,-3.5) edge [out=0, in=-180] (2.75, -3.5); \path [thick, double] (1.75,-3.5) edge [out=0, in=90] (2.25, -4); \path [thick, double] (2.25, -4) edge [out=-90, in=90] (2.25, -7); \path [thick, double] (2.25, -7) edge [out=-90, in=-180] (3, -7.75); \path [thick, double, ->] (3, -7.75) edge [out=0, in=-180] (6, -7.75); \path [thick, double, ->] (1.75,-8) edge [out=0, in=-180] (6, -8); \draw (4.5,-0.75) node[textstyle, anchor=south] {clightgen}; \end{tikzpicture}