Next, we give the inequational theory for our CBPV language.
%
\subsection{Cast to Contract Translation}
\subsection{Cast to Contract Translation}
\subsection{Graduality Logical Relation}
\subsection{Graduality Logical Relation}
...
@@ -684,38 +778,63 @@ consequences.
...
@@ -684,38 +778,63 @@ consequences.
\begin{figure}
\begin{figure}
\begin{mathpar}
\begin{mathpar}
{\ltlogty{i}{A}}\subseteq\{\cdot\vdash V : A \}^2 \quad\qquad{\ltlogty{i}{\u B}}\subseteq\{\cdot\pipe\u B \vdash S : \u F (1 + 1) \}^2\quad\qquad{\ltlogc{i}}\subseteq\{\cdot\vdash M : \u F (1 + 1) \}^2\\
{\logty{i}{A}}\subseteq\{\cdot\vdash V : A \}^2 \quad\qquad{\logty{i}{\u B}}\subseteq\{\cdot\pipe\u B \vdash S : \u F (1 + 1) \}^2\quad\qquad{\logc{i}}\subseteq\{\cdot\vdash M : \u F (1 + 1) \}^2\\
\Gamma\vDash M_1 \ltdyn M_2 \in\u B &=&\forall i \in\mathbb{N}, \gamma_1 \ltlogty i \Gamma\gamma_2, S_1 \ltlogty i {\u B} S_2.~ S_1[M_1[\gamma_1]] \ltlogc i S_2[M_2[\gamma_2]]\\
\Gamma\vDash M_1 \ltdyn M_2 \in\u B &=&\forall i \in\mathbb{N}, \gamma_1 \logty i \Gamma\gamma_2, S_1 \logty i {\u B} S_2.~ S_1[M_1[\gamma_1]] \logc i S_2[M_2[\gamma_2]]\\
\Gamma\vDash V_1 \ltdyn V_2 \in A &=&\forall i \in\mathbb{N}, \gamma_1 \ltlogty i \Gamma\gamma_2.~ V_1[\gamma_1] \ltlogty i A V_2[\gamma_2]\\
\Gamma\vDash V_1 \ltdyn V_2 \in A &=&\forall i \in\mathbb{N}, \gamma_1 \logty i \Gamma\gamma_2.~ V_1[\gamma_1] \logty i A V_2[\gamma_2]\\
\Gamma\pipe\bullet : \u B \vDash S_1 \ltdyn S_2 \in\u B' &=&\forall i \in\mathbb{N}, \gamma_1 \ltlogty i \Gamma\gamma_2, S_1' \ltlogty i {\u B'} S_2'.~ S_1'[S_1[\gamma_1]] \ltlogc i S_2'[S_2[\gamma_2]]\\
\Gamma\pipe\bullet : \u B \vDash S_1 \ltdyn S_2 \in\u B' &=&\forall i \in\mathbb{N}, \gamma_1 \logty i \Gamma\gamma_2, S_1' \logty i {\u B'} S_2'.~ S_1'[S_1[\gamma_1]] \logc i S_2'[S_2[\gamma_2]]\\
\end{array}\\
\end{array}\\
\begin{array}{rcl}
\begin{array}{rcl}
\cdot\ltlogty i {\cdot}\cdot&=&\top\\
\cdot\logty i {\cdot}\cdot&=&\top\\
\gamma_1,x \mapsto V_1 \ltlogty i {\Gamma,x:A}\gamma_2,x\mapsto V_2 &=&\gamma_1 \ltlogty i \Gamma\gamma_2 \wedge V_1 \ltlogty i A V_2\\
\gamma_1,x \mapsto V_1 \logty i {\Gamma,x:A}\gamma_2,x\mapsto V_2 &=&\gamma_1 \logty i \Gamma\gamma_2 \wedge V_1 \logty i A V_2\\
V_1 \ltlogty i 0 V_2 &=&\bot\\
V_1 \logty i 0 V_2 &=&\bot\\
\inl V_1 \ltlogty i {A + A'}\inl V_2 &= & V_1 \ltlogty i A V_2\\
\inl V_1 \logty i {A + A'}\inl V_2 &= & V_1 \logty i A V_2\\
\inr V_1 \ltlogty i {A + A'}\inr V_2 &= & V_1 \ltlogty i {A'} V_2 \\
\inr V_1 \logty i {A + A'}\inr V_2 &= & V_1 \logty i {A'} V_2 \\
() \ltlogty i 1 () &=&\top\\
() \logty i 1 () &=&\top\\
(V_1,V_1') \ltlogty i {A \times A'} (V_2, V_2') &=& V_1 \ltlogty i A V_2 \wedge V_1' \ltlogty i {A'} V_2'\\
(V_1,V_1') \logty i {A \times A'} (V_2, V_2') &=& V_1 \logty i A V_2 \wedge V_1' \logty i {A'} V_2'\\