diff --git a/notes/technical-outline/technical-outline.pdf b/notes/technical-outline/technical-outline.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e4b4bec721b910035c854b07aeb1cb938d08c477
Binary files /dev/null and b/notes/technical-outline/technical-outline.pdf differ
diff --git a/notes/technical-outline/technical-outline.tex b/notes/technical-outline/technical-outline.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3bf1848f667c52e96ec5b11971476710cc688bfb
--- /dev/null
+++ b/notes/technical-outline/technical-outline.tex
@@ -0,0 +1,332 @@
+\documentclass{article}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{amsthm}
+\usepackage{tikz-cd}
+\usepackage{mathpartir}
+\usepackage{stmaryrd}
+\usepackage{parskip}
+\usepackage{tikz-cd}
+
+
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{nonnum-theorem}{Theorem}[section]
+\newtheorem{corollary}{Corollary}[section]
+\newtheorem{definition}{Definition}[section]
+\newtheorem{lemma}{Lemma}[section]
+
+\input{../../paper-new/defs}
+
+\begin{document}
+
+\title{Technical Outline}
+\author{Eric Giovannini}
+
+\maketitle
+
+\section{The Overall Plan}
+
+The goal is to show graduality of the extensional gradual lambda calculus.
+The main theorem is the following:
+
+\begin{theorem}[Graduality]
+If $M \ltdyn M'$, then
+
+\begin{itemize}
+    \item $M \Downarrow$ iff $M' \Downarrow$.
+    \item $M \Downarrow v_?$ iff $M' \Downarrow v_?'$, where $v_? = \err$ or $v_? = v_?'$.
+\end{itemize}
+\end{theorem}
+
+
+\section{Syntax}
+
+    % TODO details on admissibility: we can translate equations of the original logic
+    % into the new one and show that they hold there
+
+    We begin with a gradually-typed lambda calculus $(\extlc)$, which is similar to
+    the normal call-by-value gradually-typed lambda calculus, but differs in that it
+    is actually a fragment of call-by-push-value specialized such that there are no
+    non-trivial computation types. We do this for convenience, as either way
+    we would need a distinction between values and effectful terms; the framework of
+    of call-by-push-value gives us a convenient langugae to define what we need.
+
+    We then observe that composition of type precision derivations is admissible, 
+    as is heterogeneous transitivity for term
+    precision (via casts), so it will suffice to consider a new language ($\extlcm$)
+    in which we don't have composition of type precision derivations or transitivity
+    of term precision.
+
+    We further observe that all casts, except those between $\nat$ and $\dyn$
+    and between $\dyn \ra \dyn$ and $\dyn$, are admissible
+    (we can define the cast of a function type
+    functorially using the casts for its domain and codomain).
+
+    This means it is sufficient to consider a new language ($\extlcmm$) in which
+    instead of having arbitrary casts, we have injections from $\nat$ and
+    $\dyn \ra \dyn$ into $\dyn$, and case inspections from $\dyn$ to $\nat$ and
+    $\dyn$ to $\dyn \ra \dyn$.
+
+    From here, we define an intensional GSTLC, so-named because it makes the
+    intensional stepping behavior of programs explicit in the syntax.
+    This is acocmplished by adding a syntactic ``later'' type and a
+    syntactic $\theta$ that maps terms of type later $A$ to terms of type $A$.
+    
+    \subsection{Extensional ($\extlcmm$)}
+
+    \begin{align*}
+        &\text{Value Types } A := \nat \alt \dyn \alt (A \ra B) \\
+        &\text{Computation Types } B := \Ret A \\
+        &\text{Value Contexts } \Gamma := \cdot \alt (\Gamma, x : A) \\
+        &\text{Computation Contexts } \Delta := \cdot \alt \hole B \alt \Delta , x : A \\
+        &\text{Values } V :=  \zro \alt \suc\, V \alt \injnat V \alt \injarr V \\ 
+        &\text{Terms } M, N := \err_B \alt \Ret {V} \alt \bind{x}{M}{N} % \alt \suc\, M, 
+          \alt \lda{x}{M} \alt V_f\, V_x \alt
+          %\\ & \quad\quad \injnat M \alt \injarr M
+          \\ & \quad\quad \casenat{V}{M_{no}}{n}{M_{yes}} 
+          \alt \casearr{V}{M_{no}}{f}{M_{yes}}
+      \end{align*}
+
+    % TODO is err a value? What about injnat and injarr?
+    % TODO should suc be a term and a value? What about injnat and injarr?
+
+    The value typing judgment is written $\hasty{\Gamma}{V}{A}$ and 
+    the computation typing judgment is written $\hasty{\Delta}{M}{B}$.
+
+    We define substitution for computation contexts as follows:
+    \begin{mathpar}
+        \inferrule*
+        { \delta : \Delta' \to \Delta \and 
+          \hasty{\Delta'|_V}{V}{A}}
+        { (\delta , V/x ) \colon \Delta' \to \Delta , x : A }
+
+        \inferrule*
+        {}
+        {\cdot \colon \cdot \to \cdot}
+
+        \inferrule*
+        {\hasty{\Delta'}{M}{B}}
+        {M \colon \Delta' \to \hole{B}}
+    \end{mathpar}
+
+    The typing rules are as follows:
+    \begin{mathpar}
+        % Err
+        \inferrule*{ }{\hasty {\cdot, \Gamma} {\err_B} B} 
+      
+        % Zero and suc
+        \inferrule*{ }{\hasty \Gamma \zro \nat}
+      
+        \inferrule*{\hasty \Gamma M \nat} {\hasty \Gamma {\suc\, M} \nat}
+      
+        % Lambda
+        \inferrule* 
+        {\hasty {\cdot, \Gamma, x : A} M {\Ret A'}} 
+        {\hasty \Gamma {\lda x M} {A \ra A'}}
+      
+        % App
+        \inferrule*
+        {\hasty \Gamma {V_f} {A \ra A'} \and \hasty \Gamma {V_x} A}
+        {\hasty {\cdot , \Gamma} {M \, N} {\Ret A'}}
+
+        % Ret
+        \inferrule*
+        {\hasty \Gamma V A}
+        {\hasty {\cdot , \Gamma} {\ret V} {\Ret A}}
+      
+        % Bind
+        \inferrule*
+        {\hasty \Delta M {\Ret A} \and \hasty{\cdot , \Delta|_V , x : A}{N}{B} } % Need x : A in context
+        {\hasty{\Delta}{\bind{x}{M}{N}}{B}}
+
+        % inj-nat
+        \inferrule*
+        {\hasty \Gamma M \nat}
+        {\hasty \Gamma {\injnat M} \dyn}
+
+        % inj-arr 
+        \inferrule*
+        {\hasty \Gamma M (\dyn \ra \dyn)}
+        {\hasty \Gamma {\injarr M} \dyn}
+
+        % Case nat
+        \inferrule*
+        {\hasty{\Gamma}{V}{\dyn} \and 
+          \hasty{\Delta , x : \nat }{M_{yes}}{B} \and 
+          \hasty{\Delta}{M_{no}}{B}}
+        {\hasty {\Delta} {\casenat{M}{M_{no}}{n}{M_{yes}}} {B}}
+      
+        % Case arr
+        \inferrule*
+        {\hasty{\Gamma}{V}{\dyn} \and 
+          \hasty{\Delta , x : (\dyn \ra \dyn) }{M_{yes}}{B} \and 
+          \hasty{\Delta}{M_{no}}{B}}
+        {\hasty {\Delta} {\casearr{M}{M_{no}}{f}{M_{yes}}} {B}}
+    \end{mathpar}
+
+
+    The equational theory is as follows:
+    \begin{mathpar}
+        % Function Beta and Eta
+        \inferrule*
+        {\hasty {\cdot, \Gamma, x : A} M {\Ret A'} \and \hasty \Gamma V A}
+        {(\lda x M)\, V = M[V/x]}
+
+        \inferrule*
+        {\hasty \Gamma V {A \ra A}}
+        {\Gamma \vdash V = \lda x {V\, x}}
+
+        % Case-nat Beta
+        \inferrule*
+        {\hasty \Gamma V \nat}
+        {\casenat {\injnat {V}} {M_{no}} {n} {M_{yes}} = M_{yes}[V/n]}
+
+        \inferrule*
+        {\hasty \Gamma V {\dyn \ra \dyn} }
+        {\casenat {\injarr {V}} {M_{no}} {n} {M_{yes}} = M_{no}}
+
+        % Case-nat Eta
+        \inferrule*
+        {}
+        {\Gamma , x :\, \dyn \vdash M = \casenat{x}{M}{n}{M[(\injnat{n}) / x]} }
+
+
+        % Case-arr Beta
+
+
+        % Case-arr Eta
+
+
+        % Ret Beta and Eta
+        \inferrule*
+        {}
+        {\bind{x}{\ret\, V}{N} = N[V/x]}
+
+        \inferrule*
+        {\hasty {\hole{\Ret A} , \Gamma} {M} {B}}
+        {\hole{\Ret A}, \Gamma \vdash M = \bind{x}{\bullet}{M[\ret\, x]}}
+
+    \end{mathpar}
+
+    Equivalent terms in the equational theory are considered equal.
+
+    
+    We now discuss type and term precision. In our language, we do not have
+    ``term precision'' but rather arbitrary monotone relations on types,
+    which we denote by $A \rel B$. We have relations on value types, as well
+    as on computation types.
+    %
+    In addition, because we don't have casts in our language, we do not have
+    the usual cast rules specifying that casts are least upper bounds and greatest
+    lower bounds. Instead, we have rules for our injection and case terms.
+
+    \begin{align*}
+        &\text{Value Relations } R := \nat \alt \dyn \alt (R \ra R) \alt \alpha_1 \leq_A \alpha_2 \\
+        &\text{Computation Relations } S := \Lift R \\
+    \end{align*}
+
+    % We define 
+
+    % \begin{mathpar}
+    %     \inferrule*
+    %     {\alpha_1 : A_1 \mid \alpha_2 : A_2 \vdash R \text{ rel} \and 
+    %      \alpha_1' : A_1' \vdash V_1 : A_1 \and
+    %      \alpha_2' : A_2' \vdash V_2 : A_2 }
+    %     {\alpha_1' : A_1' \mid \alpha_2' : A_2' \vdash R (V_1/\alpha_1, V_2/\alpha_2)}
+    % \end{mathpar}
+
+    % TODO term precision
+
+
+    \subsection{Intensional}
+    In the intensional syntax, we add a type constructor for later, as well as a
+    syntactic $\theta$ term and a syntactic $\nxt$ term.
+    We add rules for each of these, and also modify the rules for inj-arr and
+    case-arr, since now
+    the function is not $\Dyn \ra \Dyn$ but rather $\later (\Dyn \ra \Dyn)$.
+
+    % TODO show changes
+
+    We define an erasure function from intensional syntax to extensional syntax
+    by induction on the intensional types and terms.
+    The basic idea is that the syntactic type $\later A$ erases to $A$,
+    and $\nxt$ and $\theta$ erase to the identity.
+
+    
+
+
+\section{Semantics}
+To give a semantics of the extensional, quotiented syntax ($\extlcmm$), we proceed
+in a few steps:
+
+\begin{enumerate}
+    \item We first give a denotational semantics of the intensional syntax $\intlc$
+    using synthetic guarded domain theory, i.e., working internal to the topos of trees.
+    The denotation of a value type $A$ will be a poset $\sem{A}$, and the denotation of a computation
+    type $\Ret A$ will be the lift $\li \sem{A}$, (i.e., the free error domain on $\sem{A}$). % Ret A is our only computation type
+    We refer to this semantics as the \emph{step-indexed semantics}.
+
+    %The denotation of a closed term of type $B$ will be as an element of $\li \sem{B}$.
+
+    \item We then show how to go from the above step-indexed semantics to a set-based
+    semantics which is still intensional in that the denotations of terms that differ only in
+    their number of ``steps'' will not be equal. The denotations here are a type of
+    coinductive ``Machine'' that at each step of computation can either return a result,
+    error, or continue running. We call this the \emph{Machine semantics}.
+    %
+    The passage from step-indexed semantics to the coinductive semantics
+    will make use of clock quantification; see below for details.
+
+    \item Finally, we collapse the above intensional Machine-based semantics to an
+    extensional semantics, so-called because at this point the information about the
+    precise number of steps a Machine has taken has been lost. We care only whether the
+    Machine runs to a value or error, or whether it diverges. Of course, we cannot
+    in general decide whether a given Machine will halt, so the semantic objects here
+    are pairs of a proposition $P$ and a function taking a proof of $P$ to an element of
+    the poset.
+
+\end{enumerate}
+    
+The benefit to working synthetically in step 1 above is that the construction of the logical
+relation that proves canonicity for the intensional syntax can be carried out much like
+any normal, non-step-indexed logical relation.
+
+
+\section{Unary Canonicity}
+
+We first want to show soundness:
+
+\begin{lemma}[Soundness]
+    In the Machine semantics, none of the following are equal: $\mho, \zro, \suc M, \omega$,
+    where $\omega$ represents a diverging program.
+\end{lemma}
+
+Next we use a logical relations argument to establish the following:
+
+\begin{lemma}
+    $M_i \Dwn^n v_?$ iff $M_i = \delta^n(\qte{v_?})$
+\end{lemma}
+
+We will need the following key property relating erasure to the semantics:
+
+\begin{lemma}
+    If $\erase{M_i} = M$ and $\erase{M_i'} = M'$, and $M = M'$, 
+    then $| \sem{M_i} | = | \sem{M_i'} |$.
+\end{lemma}
+
+The idea of the proof is that since $M_i$ and $M_i'$ have equal erasures
+(in the extensional equational theory), we can recover from the proof that their
+erasures are equal a series of equational rules (e.g., $\beta$ equality), and
+apply the intensional analogues of those rules to $M_i$ to ensure that $M_i$ and $M_i'$
+differ syntactically only in their number of $\theta$'s.
+
+    
+
+\section{Graduality}
+
+
+
+
+
+
+\end{document}
\ No newline at end of file
diff --git a/paper-new/defs.tex b/paper-new/defs.tex
index f1a99a9d7dc898e41c2934c804b6cc01bb92949d..7f88a118d4f564054ef8263bf0880b0df7a6fc55 100644
--- a/paper-new/defs.tex
+++ b/paper-new/defs.tex
@@ -1,10 +1,13 @@
 \newcommand{\To}{\Rightarrow}
 \newcommand{\inl}{\mathsf{inl}}
 \newcommand{\inr}{\mathsf{inr}}
+\newcommand{\alt}{\mathrel{\bf \,\mid\,}}
 
 
-\newcommand{\extlc}{\text{Ext-}\lambda C}
-\newcommand{\intlc}{\text{Int-}\lambda C}
+\newcommand{\extlc}{\text{Ext-}\lambda}
+\newcommand{\extlcm}{\text{Ext-}\lambda^{-\text{trans}}}
+\newcommand{\extlcmm}{\text{Ext-}\lambda^{-\text{trans}-\text{cast}}}
+\newcommand{\intlc}{\text{Int-}\lambda}
 \newcommand{\erase}[1]{\lfloor {#1} \rfloor}
 
 
@@ -20,14 +23,28 @@
 \newcommand{\dyn}{?}
 \newcommand{\nat}{\text{Nat}}
 \newcommand{\bool}{\text{Bool}}
+\newcommand{\ra}{\rightharpoonup}
+\newcommand{\Ret}{\mathsf{Ret}}
+\newcommand{\hole}[1]{\bullet \colon {#1}}
 
+
+\newcommand{\up}[2]{\langle{#2}\uarrowl{#1}\rangle}
+\newcommand{\dn}[2]{\langle{#1}\darrowl{#2}\rangle}
+
+\newcommand{\ret}{\mathsf{ret}}
 \newcommand{\err}{\mho}
 \newcommand{\zro}{\textsf{zro}}
 \newcommand{\suc}{\textsf{suc}}
 \newcommand{\lda}[2]{\lambda {#1} . {#2}}
-\newcommand{\up}[2]{\langle{#2}\uarrowl{#1}\rangle}
-\newcommand{\dn}[2]{\langle{#1}\darrowl{#2}\rangle}
+\newcommand{\injarr}[1]{\textsf{Inj}_\to ({#1})}
+\newcommand{\injnat}[1]{\textsf{Inj}_\text{nat} ({#1})}
+\newcommand{\casenat}[4]{\text{Case}_\text{nat} ({#1}) \{ \text{no} \to {#2} \alt \text{nat}({#3}) \to {#4} \}}
+\newcommand{\casearr}[4]{\text{Case}_\to ({#1}) \{ \text{no} \to {#2} \alt \text{fun}({#3}) \to {#4} \}}
+\newcommand{\bind}[3]{\text{var } {#1} = {#2} \text{ in } {#3}}
 
+\newcommand{\Lift}{\text{Lift}}
+
+\newcommand{\rel}{\circ\hspace{-4px}-\hspace{-4px}\bullet}
 \newcommand{\ltdyn}{\sqsubseteq}
 \newcommand{\gtdyn}{\sqsupseteq}
 \newcommand{\equidyn}{\mathrel{\gtdyn\ltdyn}}
@@ -38,7 +55,8 @@
 \newcommand{\etmequidyn}[4]{{#1} \vdash {#2} \equidyn_e {#3} \colon {#4}}
 \newcommand{\itmequidyn}[4]{{#1} \vdash {#2} \equidyn_i {#3} \colon {#4}}
 
-
+\newcommand{\Dwn}{\Downarrow}
+\newcommand{\qte}[1]{\text{quote}({#1})}
 
 % SGDT and Intensional Stuff
 
@@ -70,8 +88,8 @@
 \newcommand{\ltls}{\lesssim}
 \newcommand{\bisim}{\approx}
 
-\newcommand{\injarr}{\textsf{Inj}_\to}
-\newcommand{\injnat}{\textsf{Inj}_\mathbb{N}}
+%\newcommand{\injarr}{\textsf{Inj}_\to}
+%\newcommand{\injnat}{\textsf{Inj}_\mathbb{N}}
 
 \newcommand{\id}{\mathsf{id}}
 \newcommand{\ep}{\leadsto}