Skip to content

Commit

Permalink
add all the files
Browse files Browse the repository at this point in the history
  • Loading branch information
liesnikov committed Mar 22, 2024
1 parent 7985b7b commit ce94ff3
Show file tree
Hide file tree
Showing 12 changed files with 3,431 additions and 0 deletions.
19 changes: 19 additions & 0 deletions .github/workflows/camera-ready.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: "Build camera-ready paper version"
on:
pull_request:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=https://releases.nixos.org/nixos/23.05-small/nixos-23.05.4461.21443a102b1a/nixexprs.tar.xz
- uses: DeterminateSystems/magic-nix-cache-action@v2
- run: make -C camera-ready-submission/source
- name: Archive paper build
uses: actions/upload-artifact@v3.1.3
with:
name: camera.pdf
path: camera-ready-submission/result/main.pdf
Binary file added camera-ready-submission/pdf/main.pdf
Binary file not shown.
22 changes: 22 additions & 0 deletions camera-ready-submission/source/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
all: pdf

.PHONY: pdf tex nix-build open reset

pdf: main.pdf
tex: main.tex
reset: clean pdf

open: main.pdf
xdg-open main.pdf &

nix-build: main.tex body.tex Makefile bib.bib
nix-build . ""

main.pdf: main.tex body.tex Makefile
latexmk -pdf main.tex

allclean: clean
rm -f main.pdf main.tex

clean:
rm -f *.aux *.log *.nav *.out *.snm *.toc *.vrb *.pk *.bbl *.blg *.bcf *.dvi *.fdb_latexmk *.fls *.run.xml
22 changes: 22 additions & 0 deletions camera-ready-submission/source/acmart-taps.sty
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
% This is a patch file for acmart class file
% Develop by Ranjan
% Dated 2019-03-08
% Below commands and environment is compatible to TAPS system

\newenvironment{imageonly}{}{}
\DeclareOldFontCommand{\bi}{\bfseries\itshape}{\bfseries\itshape}
\makeatletter
\@ifundefined{tabnote}{
\newenvironment{tabnote}{}{}
}{}
\newcounter{sidebartable}
\newcounter{figuresidebar}
\newcounter{floatsidebar}
\let\bm\boldsymbol
\def\aptLtoXcmd#1#2{#2}
\long\def\aptLtoX{\@ifnextchar[{\@aptLtoX}{\@aptLtoX[]}}
\long\def\@aptLtoX[#1]#2#3{#3}
\def\aptLtoXdel#1{}
\makeatother

\endinput
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1,437 changes: 1,437 additions & 0 deletions camera-ready-submission/source/bib.bib

Large diffs are not rendered by default.

1,529 changes: 1,529 additions & 0 deletions camera-ready-submission/source/body.tex

Large diffs are not rendered by default.

141 changes: 141 additions & 0 deletions camera-ready-submission/source/default.csl
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-US">
<info>
<title>ACM SIGGRAPH</title>
<id>http://www.zotero.org/styles/acm-siggraph</id>
<link href="http://www.zotero.org/styles/acm-siggraph" rel="self"/>
<link href="http://www.zotero.org/styles/acm-sigchi-proceedings" rel="template"/>
<link href="http://www.siggraph.org/publications/instructions.pdf" rel="documentation"/>
<author>
<name>Sebastian Karcher</name>
</author>
<category citation-format="author-date"/>
<category field="engineering"/>
<updated>2014-09-06T22:02:33+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<macro name="author">
<names variable="author">
<name initialize-with="." delimiter=", " and="text" name-as-sort-order="all" sort-separator=", "/>
<label form="short" prefix=", "/>
<substitute>
<names variable="editor"/>
<text variable="title"/>
</substitute>
</names>
</macro>
<macro name="author-short">
<group>
<names variable="author">
<name initialize-with="." delimiter=", " and="text" name-as-sort-order="all" sort-separator=", " form="short"/>
<substitute>
<names variable="editor"/>
</substitute>
</names>
</group>
</macro>
<macro name="editor">
<names variable="editor">
<name initialize-with="." delimiter=", " and="text" delimiter-precedes-last="never"/>
<label form="short" prefix=", "/>
</names>
</macro>
<macro name="title">
<choose>
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
<text variable="title" font-style="italic" quotes="false"/>
</if>
<else>
<text variable="title" quotes="false"/>
</else>
</choose>
</macro>
<macro name="year">
<date variable="issued">
<date-part name="year"/>
</date>
</macro>
<macro name="journal">
<group delimiter=" ">
<text variable="container-title" font-style="italic"/>
<group delimiter=", ">
<text variable="volume" font-style="italic"/>
<text variable="issue"/>
</group>
</group>
</macro>
<macro name="conference">
<group delimiter=", ">
<text variable="container-title" font-style="italic"/>
<group delimiter=" ">
<text variable="publisher"/>
</group>
</group>
</macro>
<macro name="book-publisher">
<group delimiter=", ">
<text variable="publisher"/>
<text variable="publisher-place"/>
</group>
</macro>
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true">
<layout prefix="[" suffix="]" delimiter="; ">
<group delimiter=":">
<group delimiter=" ">
<text macro="author-short"/>
<text macro="year"/>
</group>
<text variable="locator"/>
</group>
</layout>
</citation>
<bibliography et-al-min="7" et-al-use-first="3" hanging-indent="true">
<sort>
<key macro="author"/>
<key variable="issued"/>
</sort>
<layout suffix=".">
<group delimiter=". " suffix=". ">
<text macro="author" font-variant="small-caps"/>
<text macro="year"/>
<text macro="title"/>
</group>
<choose>
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
<text macro="book-publisher" suffix="."/>
</if>
<else-if type="paper-conference">
<group suffix="." delimiter=", ">
<text macro="conference"/>
<text variable="page"/>
</group>
</else-if>
<else-if type="chapter paper-conference" match="any">
<text term="in" text-case="capitalize-first" suffix=": "/>
<text macro="editor" suffix=", "/>
<text variable="container-title" font-style="italic" suffix=". "/>
<group suffix="." delimiter=", ">
<text macro="book-publisher"/>
<text variable="page"/>
</group>
</else-if>
<else-if type="article-journal">
<group suffix="." delimiter=", ">
<text macro="journal"/>
<text variable="page"/>
</group>
</else-if>
<else>
<group suffix="." delimiter=", ">
<group delimiter=" " font-style="italic">
<text variable="container-title"/>
<text variable="volume"/>
</group>
<text variable="page"/>
</group>
<text variable="URL" prefix=" "/>
</else>
</choose>
</layout>
</bibliography>
</style>
2 changes: 2 additions & 0 deletions camera-ready-submission/source/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{pkgs ? import (import ./nixpkgs.nix) {} }:
pkgs.callPackage ./paper.nix {}
178 changes: 178 additions & 0 deletions camera-ready-submission/source/main.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
\pdfminorversion=7
% Options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[sigconf, screen]{acmart}

\usepackage{xcolor}
%\usepackage{cleveref}
\usepackage{color}
\usepackage{fancyvrb}
\usepackage{acmart-taps}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\newenvironment{Shaded}{}{}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{5}
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newlength{\cslentryspacingunit} % times entry-spacing
\setlength{\cslentryspacingunit}{\parskip}
\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
\let\oldpar\par
\def\par{\hangindent=\cslhangindent\oldpar}
\fi
% set entry spacing
\setlength{\parskip}{#2\cslentryspacingunit}
}%
{}
\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}

%\ifLuaTeX
% \usepackage{selnolig} % disable illegal ligatures
%\fi
%\usepackage[]{natbib}
%\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
%\urlstyle{same} % disable monospaced font for URLs

\widowpenalty=10000
\clubpenalty=10000
\displaywidowpenalty=10000

\copyrightyear{2023}
\acmYear{2023}
\setcopyright{rightsretained}
\acmConference[IFL 2023]{The 35th Symposium on Implementation and Application of Functional Languages}{August 29--31, 2023}{Braga, Portugal}
\acmBooktitle{The 35th Symposium on Implementation and Application of Functional Languages (IFL 2023), August 29--31, 2023, Braga, Portugal}
\acmDOI{10.1145/3652561.3652565}
\acmISBN{979-8-4007-1631-7/23/08}
\keywords{dependent types, elaborators, elaboration, open datatype, extensible datatype, type-checking}

\begin{CCSXML}
<ccs2012>
<concept>
<concept_id>10011007.10011006.10011008.10011009.10011012</concept_id>
<concept_desc>Software and its engineering~Functional languages</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10011007.10011074.10011075.10011077</concept_id>
<concept_desc>Software and its engineering~Software design engineering</concept_desc>
<concept_significance>300</concept_significance>
</concept>
<concept>
<concept_id>10003752.10003790.10011740</concept_id>
<concept_desc>Theory of computation~Type theory</concept_desc>
<concept_significance>300</concept_significance>
</concept>
<concept>
<concept_id>10002944.10011123.10011673</concept_id>
<concept_desc>General and reference~Design</concept_desc>
<concept_significance>100</concept_significance>
</concept>
</ccs2012>
\end{CCSXML}

\ccsdesc[500]{Software and its engineering~Functional languages}
\ccsdesc[300]{Software and its engineering~Software design engineering}
\ccsdesc[300]{Theory of computation~Type theory}
\ccsdesc[100]{General and reference~Design}


\begin{document}

\title{ExEl: Building an Elaborator Using Extensible Constraints}

\author{Bohdan Liesnikov}
\orcid{0009-0000-2216-8830}
\affiliation{
\institution{Delft University of Technology}
\city{Delft}
\country{The Netherlands}}
\email{B.Liesnikov@tudelft.nl}
\author{Jesper Cockx}
\orcid{0000-0003-3862-4073}
\affiliation{
\institution{Delft University of Technology}
\city{Delft}
\country{The Netherlands}}
\email{J.G.H.Cockx@tudelft.nl}

\hypersetup{
pdftitle={ExEl: Building an Elaborator Using Extensible Constraints},
pdfauthor={Bohdan Liesnikov and Jesper Cockx},
pdfkeywords={dependent types, elaborators, elaboration, open datatype, extensible datatype, type-checking},
pdfcreator={LaTeX via pandoc},
pdfproducer={pdftex},
hidelinks,
}

\begin{abstract}
Proof assistants and dependently typed languages such as Coq, Agda, Lean, and Idris can be used to ascertain the correctness of software with mathematical precision.
While much research has been done on their theoretical foundations, their actual implementations have been studied to a much lesser extent.
As a result, features that are not considered part of the theoretical foundations - such as implicit arguments and type classes - have their own bespoke implementation for each language, making for code bases that are hard to understand and maintain.
To address some of the common problems in the implementations of dependently typed languages, we present a modular architecture for implementing the transformation from user-friendly surface syntax into a small and well-behaved core language, also known as elaboration.
Our architecture is made modular through the use of an open datatype of constraints and a plugin system for solvers that work on these constraints, which means that each new feature is contained in its own module.
We showcase our design with a proof-of-concept elaborator for a language with dependent types, implicit arguments, higher-order unification, and instance arguments.
\end{abstract}


\maketitle


\input{body.tex}

\begin{acks}
Jesper Cockx holds an \grantsponsor{nwoviveni202216}{NWO Veni}{https://www.nwo.nl/en/projects/viveni202216} grant on `A trustworthy and extensible core language for Agda' (\href{https://www.nwo.nl/en/projects/viveni202216}{VI.Veni.202.216}).
\end{acks}

\bibliographystyle{ACM-Reference-Format}

\bibliography{bib.bib}

\end{document}
8 changes: 8 additions & 0 deletions camera-ready-submission/source/nixpkgs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
builtins.fetchTarball {
# Descriptive name to make the store path easier to identify
name = "nixos-23.05.4461.21443a102b1a";
# pull from https://channels.nix.gsc.io/
url = "https://releases.nixos.org/nixos/23.05-small/nixos-23.05.4461.21443a102b1a/nixexprs.tar.xz";
# Hash obtained using `nix-prefetch-url --type sha256 --unpack <url>`
sha256 = "00f1s2vrkn9qa9h3vwsv2hrm0xq3vzvk70nxs2y7x0wayh7zpaqj";
}
Loading

0 comments on commit ce94ff3

Please sign in to comment.