summaryrefslogtreecommitdiffstats
path: root/proof.tex
diff options
context:
space:
mode:
authorJohn Wickerson <j.wickerson@imperial.ac.uk>2020-11-18 16:19:20 +0000
committeroverleaf <overleaf@localhost>2020-11-18 16:19:49 +0000
commitb5fafbdc36a7768002a05278308dc48cfca716e0 (patch)
treebc7f6e1877e86797bcec1de07c8425d2548ee635 /proof.tex
parenta72d9e55c66d3d44b8a6c31e0941773600bd0fe5 (diff)
downloadoopsla21_fvhls-b5fafbdc36a7768002a05278308dc48cfca716e0.tar.gz
oopsla21_fvhls-b5fafbdc36a7768002a05278308dc48cfca716e0.zip
Update on Overleaf.
Diffstat (limited to 'proof.tex')
-rw-r--r--proof.tex4
1 files changed, 3 insertions, 1 deletions
diff --git a/proof.tex b/proof.tex
index 128377b..5d0a7c6 100644
--- a/proof.tex
+++ b/proof.tex
@@ -1,8 +1,10 @@
\section{Proof}
+\label{sec:proof}
+\NR{Now that we have adapted the Verilog semantics to the CompCert model, we are in a position to formally prove the correctness of our C to Verilog compilation.}
This section describes the main correctness theorem that was proven and the main ideas behind the proofs.
-The main correctness theorem is the exact same correctness theorem as stated in \compcert{}~\cite{leroy09_formal_verif_realis_compil} and states that for all Clight source programs $C$, if the translation from the source to the target Verilog code succeeds, assuming that $C$ has correct observable behaviour $B$ when executed, then the target Verilog code will simulate with the same behaviour $B$, where behaviour can either be convergent, divergent or ``going wrong'' and is associated with a trace $t$ of any external function calls. The following backwards simulation theorem describes this property, where $\Downarrow_{s}$ and $\Downarrow$ stand for simulation and execution respectively.
+The main correctness theorem is the exact same correctness theorem as stated in \compcert{}~\cite{leroy09_formal_verif_realis_compil} which states that for all Clight source programs $C$, if the translation from the source to the target Verilog code succeeds, assuming that $C$ has correct observable behaviour $B$ when executed, then the target Verilog code will simulate with the same behaviour $B$, where behaviour can either be convergent, divergent or ``going wrong'' and is associated with a trace $t$ of any external function calls. The following backwards simulation theorem describes this property, where $\Downarrow_{s}$ and $\Downarrow$ stand for simulation and execution respectively.
\begin{equation*}
\forall C, V, B \notin \texttt{Wrong},\, \yhfunction{HLS} (C) = \yhconstant{OK} (V) \land V \Downarrow_{s} B \implies C \Downarrow B.