% Options for packages loaded elsewhere \PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} \PassOptionsToPackage{hyphens}{url} $if(colorlinks)$ \PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor} $endif$ $if(dir)$ $if(latex-dir-rtl)$ \PassOptionsToPackage{RTLdocument}{bidi} $endif$ $endif$ $if(CJKmainfont)$ \PassOptionsToPackage{space}{xeCJK} $endif$ % \documentclass[ $if(fontsize)$ $fontsize$, $endif$ $if(lang)$ $babel-lang$, $endif$ $if(papersize)$ $papersize$paper, $endif$ $if(beamer)$ ignorenonframetext, $if(handout)$ handout, $endif$ $if(aspectratio)$ aspectratio=$aspectratio$, $endif$ $endif$ $for(classoption)$ $classoption$$sep$, $endfor$ ]{$documentclass$} $if(beamer)$ $if(background-image)$ \usebackgroundtemplate{% \includegraphics[width=\paperwidth]{$background-image$}% } $endif$ \usepackage{pgfpages} \setbeamertemplate{caption}[numbered] \setbeamertemplate{caption label separator}{: } \setbeamercolor{caption name}{fg=normal text.fg} \beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ $for(beameroption)$ \setbeameroption{$beameroption$} $endfor$ % Prevent slide breaks in the middle of a paragraph \widowpenalties 1 10000 \raggedbottom $if(section-titles)$ \setbeamertemplate{part page}{ \centering \begin{beamercolorbox}[sep=16pt,center]{part title} \usebeamerfont{part title}\insertpart\par \end{beamercolorbox} } \setbeamertemplate{section page}{ \centering \begin{beamercolorbox}[sep=12pt,center]{part title} \usebeamerfont{section title}\insertsection\par \end{beamercolorbox} } \setbeamertemplate{subsection page}{ \centering \begin{beamercolorbox}[sep=8pt,center]{part title} \usebeamerfont{subsection title}\insertsubsection\par \end{beamercolorbox} } \AtBeginPart{ \frame{\partpage} } \AtBeginSection{ \ifbibliography \else \frame{\sectionpage} \fi } \AtBeginSubsection{ \frame{\subsectionpage} } $endif$ $endif$ $if(beamerarticle)$ \usepackage{beamerarticle} % needs to be loaded first $endif$ \usepackage{amsmath,amssymb} $if(fontfamily)$ \usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} $else$ \usepackage{lmodern} $endif$ $if(linestretch)$ \usepackage{setspace} $endif$ \usepackage{iftex} \ifPDFTeX \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} \usepackage[utf8x]{inputenx} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex $if(mathspec)$ \ifXeTeX \usepackage{mathspec} \else \usepackage{unicode-math} \fi $else$ \usepackage{unicode-math} $endif$ \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} $if(mainfont)$ \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} $endif$ $if(sansfont)$ \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} $endif$ $if(monofont)$ \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} $endif$ $for(fontfamilies)$ \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} $endfor$ $if(mathfont)$ $if(mathspec)$ \ifXeTeX \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} \else \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} \fi $else$ \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} $endif$ $endif$ $if(CJKmainfont)$ \ifXeTeX \usepackage{xeCJK} \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} \fi $endif$ $if(luatexjapresetoptions)$ \ifLuaTeX \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} \fi $endif$ $if(CJKmainfont)$ \ifLuaTeX \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} \fi $endif$ \fi $if(beamer)$ $if(theme)$ \usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} $endif$ $if(colortheme)$ \usecolortheme{$colortheme$} $endif$ $if(fonttheme)$ \usefonttheme{$fonttheme$} $endif$ $if(mainfont)$ \usefonttheme{serif} % use mainfont rather than sansfont for slide text $endif$ $if(innertheme)$ \useinnertheme{$innertheme$} $endif$ $if(outertheme)$ \useoutertheme{$outertheme$} $endif$ $endif$ % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} $if(indent)$ $else$ \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother $endif$ $if(verbatim-in-note)$ \usepackage{fancyvrb} $endif$ \usepackage{xcolor} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \hypersetup{ $if(title-meta)$ pdftitle={$title-meta$}, $endif$ $if(author-meta)$ pdfauthor={$author-meta$}, $endif$ $if(lang)$ pdflang={$lang$}, $endif$ $if(subject)$ pdfsubject={$subject$}, $endif$ $if(keywords)$ pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, $endif$ $if(colorlinks)$ colorlinks=true, linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$}, filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$}, citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$}, urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$}, $else$ hidelinks, $endif$ pdfcreator={LaTeX via pandoc}} \urlstyle{same} % disable monospaced font for URLs $if(verbatim-in-note)$ \VerbatimFootnotes % allow verbatim text in footnotes $endif$ $if(geometry)$ $if(beamer)$ \geometry{$for(geometry)$$geometry$$sep$,$endfor$} $else$ \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} $endif$ $endif$ $if(beamer)$ \newif\ifbibliography $endif$ $if(listings)$ \usepackage{listings} \newcommand{\passthrough}[1]{#1} \lstset{defaultdialect=[5.3]Lua} \lstset{defaultdialect=[x86masm]Assembler} $endif$ $if(lhs)$ \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} $endif$ $if(highlighting-macros)$ $highlighting-macros$ $endif$ $if(tables)$ \usepackage{longtable,booktabs,array} $if(multirow)$ \usepackage{multirow} $endif$ \usepackage{calc} % for calculating minipage widths $if(beamer)$ \usepackage{caption} % Make caption package work with longtable \makeatletter \def\fnum@table{\tablename~\thetable} \makeatother $else$ % Correct order of tables after \paragraph or \subparagraph \usepackage{etoolbox} \makeatletter \patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} \makeatother % Allow footnotes in longtable head/foot \IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} \makesavenoteenv{longtable} $endif$ $endif$ $if(graphics)$ \usepackage{graphicx} \makeatletter \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} \makeatother % Scale images if necessary, so that they will not overflow the page % margins by default, and it is still possible to overwrite the defaults % using explicit options in \includegraphics[width, height, ...]{} \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} % Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother $endif$ $if(links-as-notes)$ % Make links footnotes instead of hotlinks: \DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} $endif$ $if(strikeout)$ \usepackage[normalem]{ulem} % Avoid problems with \sout in headers with hyperref \pdfstringdefDisableCommands{\renewcommand{\sout}{}} $endif$ \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} $if(numbersections)$ \setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} $else$ \setcounter{secnumdepth}{-\maxdimen} % remove section numbering $endif$ $if(beamer)$ $else$ $if(block-headings)$ % Make \paragraph and \subparagraph free-standing \ifx\paragraph\undefined\else \let\oldparagraph\paragraph \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} \fi \ifx\subparagraph\undefined\else \let\oldsubparagraph\subparagraph \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi $endif$ $endif$ $if(pagestyle)$ \pagestyle{$pagestyle$} $endif$ \nolinenumbers \author{Anish Tondwalkar}{UC San Diego}{atondwal@eng.ucsd.edu}{}{}{}{}{}{} \author{Matt Kolosick}{UC San Diego}{mkolosick@eng.ucsd.edu}{}{}{}{}{}{} \author{Ranjit Jhala}{UC San Diego}{rjhala@cs.ucsd.edu}{}{}{}{}{}{} \authorrunning{A. Tondwalkar, M. Kolosick, and R. Jhala} \usepackage{tcolorbox} \newtcolorbox{myquote}{colback=lightgray, arc=1mm, boxrule=0mm} \renewenvironment{quote}{\begin{myquote}}{\end{myquote}} \ccsdesc{Theory of computation~Program constructs} \ccsdesc{Theory of computation~Program specifications} \ccsdesc{Theory of computation~Program verification} \keywords{Refinement Types, Implicit Parameters, Verification, Dependent Pairs} %% \keywords is optional \keywords{Refinement Types, Theorem Proving, Verification} %% \keywords is optional \Volume{7} \Issue{2} \Article{20} \Copyright{Tondwalkar, Kolosick, and Jhala} \RelatedConference{35th European Conference on Object-Oriented Programming (ECOOP 2021), July 12-16, 2021, Aarhus, Denmark (Virtual Conference)} \lstset{ literate={~} {\ensuremath{\sim}}{1} } $for(header-includes)$ $header-includes$ $endfor$ $if(lang)$ \ifXeTeX % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic) \usepackage{polyglossia} \setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$} $for(polyglossia-otherlangs)$ \setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$} $endfor$ \else \usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} % get rid of language-specific shorthands (see #6817): \let\LanguageShortHands\languageshorthands \def\languageshorthands#1{} $if(babel-newcommands)$ $babel-newcommands$ $endif$ \fi $endif$ \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi $if(dir)$ \ifXeTeX % Load bidi as late as possible as it modifies e.g. graphicx \usepackage{bidi} \fi \ifPDFTeX \TeXXeTstate=1 \newcommand{\RL}[1]{\beginR #1\endR} \newcommand{\LR}[1]{\beginL #1\endL} \newenvironment{RTL}{\beginR}{\endR} \newenvironment{LTR}{\beginL}{\endL} \fi $endif$ $if(natbib)$ \usepackage[$natbiboptions$]{natbib} \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} $endif$ $if(biblatex)$ \usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} $for(bibliography)$ \addbibresource{$bibliography$} $endfor$ $endif$ $if(nocite-ids)$ \nocite{$for(nocite-ids)$$it$$sep$, $endfor$} $endif$ $if(csl-refs)$ \newlength{\cslhangindent} \setlength{\cslhangindent}{1.5em} \newlength{\csllabelwidth} \setlength{\csllabelwidth}{3em} \newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing {% don't indent paragraphs \setlength{\parindent}{0pt} % turn on hanging indent if param 1 is 1 \ifodd #1 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi % set entry spacing \ifnum #2 > 0 \setlength{\parskip}{#2\baselineskip} \fi }% {} \usepackage{calc} \newcommand{\CSLBlock}[1]{#1\hfill\break} \newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} \newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} \newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} $endif$ $if(csquotes)$ \usepackage{csquotes} $endif$ $if(title)$ \title{$title$$if(thanks)$\thanks{$thanks$}$endif$} $endif$ $if(subtitle)$ $if(beamer)$ $else$ \usepackage{etoolbox} \makeatletter \providecommand{\subtitle}[1]{% add subtitle to \maketitle \apptocmd{\@title}{\par {\large #1 \par}}{}{} } \makeatother $endif$ \subtitle{$subtitle$} $endif$ \date{$date$} $if(beamer)$ $if(institute)$ \institute{$for(institute)$$institute$$sep$ \and $endfor$} $endif$ $if(titlegraphic)$ \titlegraphic{\includegraphics{$titlegraphic$}} $endif$ $if(logo)$ \logo{\includegraphics{$logo$}} $endif$ $endif$ \begin{document} $if(has-frontmatter)$ \frontmatter $endif$ $if(title)$ $if(beamer)$ \frame{\titlepage} $else$ \maketitle $endif$ $if(abstract)$ \begin{abstract} $abstract$ \end{abstract} $endif$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $if(toc-title)$ \renewcommand*\contentsname{$toc-title$} $endif$ $if(beamer)$ \begin{frame}[allowframebreaks] $if(toc-title)$ \frametitle{$toc-title$} $endif$ \tableofcontents[hideallsubsections] \end{frame} $else$ { $if(colorlinks)$ \hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} $endif$ \setcounter{tocdepth}{$toc-depth$} \tableofcontents } $endif$ $endif$ $if(lot)$ \listoftables $endif$ $if(lof)$ \listoffigures $endif$ $if(linestretch)$ \setstretch{$linestretch$} $endif$ $if(has-frontmatter)$ \mainmatter $endif$ $body$ $if(has-frontmatter)$ \backmatter $endif$ $if(natbib)$ $if(bibliography)$ $if(biblio-title)$ $if(has-chapters)$ \renewcommand\bibname{$biblio-title$} $else$ \renewcommand\refname{$biblio-title$} $endif$ $endif$ $if(beamer)$ \begin{frame}[allowframebreaks]{$biblio-title$} \bibliographytrue $endif$ \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} $if(beamer)$ \end{frame} $endif$ $endif$ $endif$ $if(biblatex)$ $if(beamer)$ \begin{frame}[allowframebreaks]{$biblio-title$} \bibliographytrue \printbibliography[heading=none] \end{frame} $else$ \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ $endif$ $endif$ $for(include-after)$ $include-after$ $endfor$ \end{document}