Skip to content
Snippets Groups Projects
paper.tex 9.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • Max New's avatar
    Max New committed
    \documentclass[acmsmall,screen]{acmart}
    \usepackage{mathpartir}
    
    Max S. New's avatar
    Max S. New committed
    \usepackage{stmaryrd}
    
    Max New's avatar
    Max New committed
    \usepackage{tikz-cd}
    
    %% Rights management information.  This information is sent to you
    %% when you complete the rights form.  These commands have SAMPLE
    %% values in them; it is your responsibility as an author to replace
    %% the commands and values with those provided to you when you
    %% complete the rights form.
    \setcopyright{acmcopyright}
    \copyrightyear{2018}
    \acmYear{2018}
    \acmDOI{10.1145/1122445.1122456}
    
    %% These commands are for a PROCEEDINGS abstract or paper.
    \acmConference[Woodstock '18]{Woodstock '18: ACM Symposium on Neural
      Gaze Detection}{June 03--05, 2018}{Woodstock, NY}
    \acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection,
      June 03--05, 2018, Woodstock, NY}
    \acmPrice{15.00}
    \acmISBN{978-1-4503-XXXX-X/18/06}
    
    
    \begin{document}
    
    
    Max S. New's avatar
    Max S. New committed
    \newcommand{\sem}[1]{\llbracket{}{#1}\rrbracket{}}
    \newcommand{\opsemGMNV}[4]{#1 \vDash #2 \Downarrow^{#3} #4}
    \newcommand{\opsemMV}[2]{\opsemGMNV \gamma {#1} n {#2}}
    \newcommand{\opsemMNV}[3]{\opsemGMNV \gamma {#1} {#2} {#3}}
    
    \title{Compositional Mechanized Metatheory for Gradual Typing using Synthetic Guarded Domain Theory}
    
    Max New's avatar
    Max New committed
    \author{Eric Giovannini}
    \author{Max S. New}
    
    \begin{abstract}
    
    Max S. New's avatar
    Max S. New committed
      We develop a semantics for a gradually typed lambda calculus with
      effects that and prove the validity of type-based equational
      reasoning as well as the graduality theorem. Improving on prior
      work, we use a compositional denotational semantics in category of
      preordered sets and monotone functions to develop the theory
      modularly. This means that nearly all theorems and constructions
      come from general facts about the category of preordered sets and
      almost no metatheory is specific to gradually typed languages.
    
      The main challenge is in developing a suitable model for the dynamic
      type, which requires solving a domain equation. We avoid the
      complexities of both traditional order-theoretic domain theory and
      explicit step-indexed models by using the recently developed
      technique of synthetic guarded domain theory in a guarded type
      theory. This makes constructing solutions to guarded domain
      equations trivial, and allows us to carry out the equivalent of a
      step-indexed logical relation without using explicit step-indexing
      while still maintaining the full expressivity of dependent type
      theory as our metatheoretic setting.
    
      Finally, the entire semantics has been mechanized in the proof
      assistant Guarded Cubical Agda, with much of the semantics entirely
      in reusable extensions to the standard category theory library. This
      provides a foundation for reusable modular mechanized metatheory of
      gradual typing and other effectful denotational semantics.
    
    Max New's avatar
    Max New committed
    \end{abstract}
    
    \section{Introduction}
    
    
    Max S. New's avatar
    Max S. New committed
    Gradually typed languages provide a unified setting in which dynamic
    and statically typed programming styles can be accommodated along with
    free interoperability between static and dynamically typed components.
    
    The metatheory of gradually typed languages is considered especially
    challenging, as it inherently involves (1) general recursion and at
    least an error effect distinct from non-termination (2) the
    verification of type-based equational reasoning to demonstrate the
    soundness of static typing and (3) proving graduality, a relational
    property of program semantics that establishes that increasing the
    amount of static typing in a program results in a refinement of
    program behavior. Most prior work to this metatheory relies on purely
    operational approaches: an operational semantics for the language is
    developed and a simulation-based argument is given for
    graduality. These have the advantage of being fairly elementary and so
    amenable to direct mechanization in a proof assistant but at the cost
    of lacking reusability. Furthermore, equational aspects of the
    language are for the most part ignored. A second line of prior work is
    to develop generic operational frameworks in which the above can be
    carried out: the gradualizer as well as Abstracting Gradual
    Typing. These are reusable techniques that apply across languages but
    still do not address equational theory and . Finally a third line of
    prior work gives a semantic theory of gradual typing based on the idea
    that casts form embedding-projection pairs in a 2-categorical
    semantics. This approach has been formalized in two ways: one using
    classical denotational semantics based on complete partial orders
    (CPOs) and another based on step-indexed logical relations over an
    untyped operational semantics. This approach has similar benefits of
    abstraction to the AGT framework, but suffers from a lack of
    reusability. First, classical domain theory is believed to be unable
    to model higher-order references, a feature of all practical gradually
    typed languages. Second, the proofs based on step-indexed logical
    relations, while known to scale to higher-order references are
    relatively unstructured and complex. While inspired by the
    embedding-projection pair semantics, several components of the proof
    that work in the CPO-based semantics break down in the step-indexed
    setting for unclear reasons. This work also tends to have a high level
    of tedious proof overhead in practice as evidenced that most papers
    using this approach include tech reports of repetitive paper proofs
    that typically dwarf the size of the paper itself.
    
    In this current work it is our goal to combine the benefits of the
    previous approaches: we desire the compositionality and reusability of
    the domain theoretic semantics, the genericity of abstracting gradual
    typing and the gradualizer, the easy mechanizability of the elementary
    operational techniques as well as the generality of step-indexed
    approaches.
    
    \section{Call-by-value Gradual Cast Calculus: Syntax and Axioms}
    
    \subsection{}
    
    \section{A Compositional ``Operational'' Semantics}
    
    We start by giving a concrete description of the semantics our
    denotational approach provides in the style of a monadic
    interpreter.
    
    The values of a syntactic type $A$ in the GCC are interpreted as
    elements of a set $\sem A$: values of number type are interpreted as
    numbers, values of function type are interpreted as functions with a
    monadic output and value of the dynamic type are interpreted in a complex
    set that contains numbers and functions as subsets.
    
    For now for concreteness we will work with a simple monad that
    supports only errors and divergence with observable computational
    steps. This can be described as the composition of two monads $T X =
    L(X_\mho)$ where $LX$ is Capretta's coinductive delay monad and
    $X_\mho$ is simply the maybe monad where we call the additional
    element $\mho$ to connote that it is intended to represent a runtime
    error.
    %
    Capretta's delay monad is a coinductive set defined as the greatest
    solution to the equation $L X \cong \textrm{Done}(X)+
    \textrm{Running}(LX)$. That is an element is either done with a
    produced $X$ or takes an observable computational step. Taking the
    greatest fixed point rather than least fixed point allows for the
    possibility of a program that runs forever.
    %
    We think of this as a computational process that requires external
    ``fuel'' to execute: either the process is complete and we receive a
    final value or the computation requires an additional fuel to continue
    executing.
    %
    
    For each computation $\Gamma \vdash M : A$ we define a 4-place
    relation $\opsemGMNV \gamma M n V$ where $\gamma \in
    \sem{\Gamma}$, $n \in \mathbb N$ and $V \in \sem{A}$. Further this
    relation is a decidable partial function when considering $M,\gamma,n$
    as inputs and $V$ as an output and is a partial function when
    considering $M,\gamma$ as inputs and $n$ as an output.
    
    \begin{mathpar}
      \opsemMNV {\texttt{zro}} 0 0
    
      \inferrule
          {\opsemMNV M n m}
          {\opsemMNV {\texttt{suc}(M)} n {m+1}}
    
      \inferrule
      {R(V_i,n,V_o) \iff \opsemGMNV {(\gamma, x\mapsto V_i)} M n {V_o}}
      {\opsemMNV {\lambda x. M} 0 R}
    \end{mathpar}
    As well as two 
    
    of values, computations, upcasts and downcasts in GCC mutually recursively 
    
    %% This can be equivalently described without
    %% mention of coinduction as follows. First, let $X_\ohm$ be the maybe
    %% monad but where we call the additional element $\ohm$ to connote that
    %% the extra element represents divergence rather than error. Then an
    %% element of the delay monad $l \in L X$ is a function $l : \mathbb N
    %% \to X_\ohm$ that is defined on at most one input. The intuition is
    %% that an element $l$ represents a computational procedure that when
    %% executed may possibly diverge or run in some finite number of steps to
    %% a value in $X$. Applying $l$ to a number $n$ is asking the question 
    
    %% : an element of $L_\mho X$ is a
    %% function $\mathbb N \to X_{\ohm}$ 
    
    \subsection{Abstracting GCC Semantics}
    
    
    
    
    
    
    Max New's avatar
    Max New committed
    % gradual typing, graduality
    
    % synthetic guarded domain theory, denotational semantics therein
    
    % Difficulties in prior semantics
    
    \section{Discussion}
    
    \subsection{Synthetic Ordering}
    
    While the use of synthetic guarded domain theory allows us to very
    conveniently work with non-well-founded recursive constructions while
    abstracting away the precise details of step-indexing, we do work with
    the error ordering in a mostly analytic fashion in that gradual types
    are interpreted as sets equipped with an ordering relation, and all
    terms must be proven to be monotone.
    %
    It is possible that a combination of synthetic guarded domain theory
    with \emph{directed} type theory would allow for an a synthetic
    treatment of the error ordering as well.
    
    \end{document}