Compare commits

..

No commits in common. "59e80f556c0d8893e4d7d4e5a8afc6f4bcabd6c4" and "eb2ae1eb344fc287bb1bf9a45aa58bc721f5b605" have entirely different histories.

4 changed files with 25 additions and 1756 deletions

View File

@ -2,9 +2,8 @@
% LLNCS macro package for Springer Computer Science proceedings; % LLNCS macro package for Springer Computer Science proceedings;
% Version 2.21 of 2022/01/12 % Version 2.21 of 2022/01/12
% %
\documentclass[submission]{eptcs} \documentclass[runningheads]{llncs}
\providecommand{\event}{Symposium in honor of Peter Thiemann's 60th birthday} % Name of the event you are submitting to %
\usepackage{underscore}
\usepackage[T1]{fontenc} \usepackage[T1]{fontenc}
% T1 fonts will be used to generate the final print and online PDFs, % T1 fonts will be used to generate the final print and online PDFs,
% so please use T1 fonts in your manuscript whenever possible. % so please use T1 fonts in your manuscript whenever possible.
@ -24,48 +23,39 @@
\usepackage{mathpartir} \usepackage{mathpartir}
\usepackage{amsmath} \usepackage{amsmath}
\usepackage{amssymb} \usepackage{amssymb}
\usepackage{amsthm}
\usepackage{enumitem} \usepackage{enumitem}
%\usepackage{amsthm} %\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\title{Global Type Inference for Java using SAT Solvers}
\author{Andreas Stadelmeier
\institute{DHBW\\ Stuttgart}
\email{a.stadelmeier@hb.dhbw-stuttgart.de}
}
\newcommand{\authorrunning}{Andreas Stadelmeier}
\newcommand{\titlerunning}{Type Unification to SAT}
\hypersetup{
bookmarksnumbered,
pdftitle = {\titlerunning},
pdfauthor = {\authorrunning},
pdfsubject = {Global Type Inference for Java}, % Consider adding a more appropriate subject or description
pdfkeywords = {typeinference, java, sat solving, answer set programming} % Uncomment and enter keywords specific to your paper
}
\begin{document} \begin{document}
% %
\title{Global Type Inference for Java using SAT Solvers}
%
%\titlerunning{Abbreviated paper title}
% If the paper title is too long for the running head, you can set
% an abbreviated paper title here
%
\author{First Author\inst{1}\orcidID{0000-1111-2222-3333} \and
Second Author\inst{2,3}\orcidID{1111-2222-3333-4444} \and
Third Author\inst{3}\orcidID{2222--3333-4444-5555}}
%
\authorrunning{F. Author et al.}
% First names are abbreviated in the running head. % First names are abbreviated in the running head.
% If there are more than two authors, 'et al.' is used. % If there are more than two authors, 'et al.' is used.
% %
\institute{Princeton University, Princeton NJ 08544, USA \and
Springer Heidelberg, Tiergartenstr. 17, 69121 Heidelberg, Germany
\email{lncs@springer.com}\\
\url{http://www.springer.com/gp/computer-science/lncs} \and
ABC Institute, Rupert-Karls-University Heidelberg, Heidelberg, Germany\\
\email{\{abc,lncs\}@uni-heidelberg.de}}
% %
\maketitle % typeset the header of the contribution \maketitle % typeset the header of the contribution
% %
\begin{abstract} \begin{abstract}
Global type inference for Java is able to compute correct types for an input program The abstract should briefly summarize the contents of the paper in
which has no type annotations at all. 150--250 words.
Global type inference for Featherweigt Generic Java is NP-hard.
Former implementations of the algorithm struggled with bad runtime performance.
In this paper we translated the type inference algorithm for Featherweight Generic Java to an
Answer Set Program.
Answer Set Programming (ASP) promises to solve complex computational search problems
as long as they are finite domain.
%TODO: Is this correct? \keywords{First keyword \and Second keyword \and Another keyword.}
\end{abstract} \end{abstract}
% %
% %
@ -127,7 +117,6 @@ The need to have an upper bound to every type placeholder.
We have to formulate the unification algorithm with implication rules. We have to formulate the unification algorithm with implication rules.
Those can be directly translated to ASP. Those can be directly translated to ASP.
\label{sec:implicationRules}
\begin{mathpar} \begin{mathpar}
\inferrule[Subst]{ \inferrule[Subst]{
\tv{a} \doteq \type{N} \tv{a} \doteq \type{N}
@ -308,7 +297,7 @@ Fail:
} }
\and \and
\inferrule[Fail-Sigma]{ \inferrule[Fail-Sigma]{
\tv{a} \mapsto \type{N} \\ \tv{a} \doteq \type{N} \\
\tv{a} \in \type{N} \tv{a} \in \type{N}
}{ }{
\emptyset \emptyset
@ -337,22 +326,10 @@ Fail:
The algorithm terminates if every type placeholder in the input constraint set has an assigned type. The algorithm terminates if every type placeholder in the input constraint set has an assigned type.
\section{ASP Encoding} \section{ASP Encoding}
The implication rules defined in chapter \ref{sec:implicationRules} can be translated to an ASP program.
\begin{tabular}{l | r} \begin{tabular}{l | r}
$\exptype{C}{\ol{X}}$ & \texttt{type("C", paramX)}\\ $\exptype{C}{\ol{X}}$ & \texttt{type("C", paramX)}\\
\end{tabular} \end{tabular}
\section{Termination}
The amount of different constraints is limited by the maximum amount of encapsulated generics.
The only part that is able to add an additional nesting is the Subst-Param rule.
Here a type placeholder inside a type parameter list is replaced by another type which possibly adds
another layer of nesting but it also removes one type placeholder.
There must be one substitution that does not add another type placeholder.
Otherwise there has to be a loop and this woul lead to an incorrect constraint set due to the Fail-Sigma rule.
\section{Completeness} \section{Completeness}
To proof completeness we have to show that every type can be replaced by a placeholder in a correct constraint set. To proof completeness we have to show that every type can be replaced by a placeholder in a correct constraint set.
@ -474,7 +451,4 @@ and every type placeholder has an upper bound $\tv{a} \lessdot \type{N}$.
And more text. And more text.
\end{proof} \end{proof}
\bibliographystyle{eptcs}
\bibliography{martin}
\end{document} \end{document}

1444
eptcs.bst

File diff suppressed because it is too large Load Diff

263
eptcs.cls
View File

@ -1,263 +0,0 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{eptcs}[2022/05/20 v1.7]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% options %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifadraft
\newif\ifsubmission
\newif\ifpreliminary
\newif\ifcopyright
\newif\ifpublicdomain
\newif\ifcreativecommons
\newif\ifnoderivs
\newif\ifsharealike
\newif\ifnoncommercial
\adraftfalse
\submissionfalse
\preliminaryfalse
\copyrightfalse
\publicdomainfalse
\creativecommonsfalse
\noderivsfalse
\sharealikefalse
\noncommercialfalse
\DeclareOption{adraft}{\adrafttrue}
\DeclareOption{submission}{\submissiontrue}
\DeclareOption{preliminary}{\preliminarytrue}
\DeclareOption{copyright}{\copyrighttrue}
\DeclareOption{publicdomain}{\publicdomaintrue}
\DeclareOption{creativecommons}{\creativecommonstrue}
\DeclareOption{noderivs}{\noderivstrue}
\DeclareOption{noncommercial}{\noncommercialtrue}
\DeclareOption{sharealike}{\sharealiketrue}
\ProcessOptions\relax
\LoadClass[letterpaper,11pt,twoside]{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% On US letter paper the margins (left-top-right-bottom) are %%
%% 2.795cm - 1.23cm - 2.795cm - 3.46cm %%
%% Note: When \topmargin would be 0, the real top margin would be %%
%% (72-25-12=35pt) + 1pt (unused portion of head) = .5in = 1.27cm. %%
%% The bottom margin is 11in - 1in + 0.04cm - 623/72in = 3.46cm. %%
%% On the first page the bottom margin contains various footers. %%
%% When translating from US letter to A4 paper, without scaling, by %%
%% leaving the centre of the paper invariant (as is possible when %%
%% printing the paper with acroread), the resulting A4 margins are %%
%% 2.5cm - 2.11cm - 2.5cm - 4.34cm %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textwidth 16cm % A4 width is 21cm %
\textheight 623.01pt % 46 lines exactly = 21.98cm %
\oddsidemargin -0.04cm % +1 inch = 2.5cm %
\evensidemargin -0.04cm % +1 inch = 2.5cm %
\topmargin -0.04cm % +1 inch = 2.5cm %
\advance\topmargin-\headheight % 12pt %
\advance\topmargin-\headsep % 25pt %
\marginparwidth 45pt % leaves 15pt from A4 edge %
\advance\evensidemargin .295cm % centre w.r.t. letter paper %
\advance\oddsidemargin .295cm % centre w.r.t. letter paper %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% load eptcsdata when available %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\IfFileExists{eptcsdata.tex}{\input{eptcsdata}}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Pagestyle and titlepage %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pagestyle{myheadings}
\renewcommand\pagestyle[1]{} % ignore further \pagestyles
\renewcommand\maketitle{\par
\begingroup
\providecommand{\event}{}
\ifadraft
\providecommand{\publicationstatus}{\Large DRAFT\quad\today}
\else\ifsubmission
\providecommand{\publicationstatus}{Submitted to:\\
\event}
\else\ifpreliminary
\providecommand{\publicationstatus}{Preliminary Report. Final version to appear in:\\
\event}
\else
\providecommand{\publicationstatus}{To appear in EPTCS.}
\fi\fi\fi
\providecommand{\titlerunning}{Please define {\ttfamily $\backslash$titlerunning}}
\providecommand{\authorrunning}{Please define {\ttfamily $\backslash$authorrunning}}
\providecommand{\copyrightholders}{\authorrunning}
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@xt@1.8em{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\thispagestyle{empty}\@thanks
\endgroup
\setcounter{footnote}{0}%
\label{FirstPage}
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\def\@maketitle{% adapted from article.cls
\newpage
\noindent
\raisebox{-22.8cm}[0pt][0pt]{\footnotesize
\begin{tabular}{@{}l}
\publicationstatus
\end{tabular}}
\hfill\vspace{-1em}
\raisebox{-22.8cm}[0pt][0pt]{\footnotesize
\makebox[0pt][r]{
\begin{tabular}{l@{}}
\ifpublicdomain
This work is \href{https://creativecommons.org/publicdomain/zero/1.0/}
{dedicated to the public domain}.
\else
\ifcopyright
\copyright~\copyrightholders\\
\fi
\ifcreativecommons
This work is licensed under the
\ifnoncommercial
\href{https://creativecommons.org}{Creative Commons}\\
\ifnoderivs
\href{https://creativecommons.org/licenses/by-nc-nd/4.0/}
{Attribution-Noncommercial-No Derivative Works} License.
\else\ifsharealike
\href{https://creativecommons.org/licenses/by-nc-sa/4.0/}
{Attribution-Noncommercial-Share Alike} License.
\else
\href{https://creativecommons.org/licenses/by-nc/4.0/}
{Attribution-Noncommercial} License.
\fi\fi
\else
\ifnoderivs
\href{https://creativecommons.org}{Creative Commons}\\
\href{https://creativecommons.org/licenses/by-nd/4.0/}
{Attribution-No Derivative Works} License.
\else\ifsharealike
\href{https://creativecommons.org}{Creative Commons}\\
\href{https://creativecommons.org/licenses/by-sa/4.0/}
{Attribution-Share Alike} License.
\else
\\\href{https://creativecommons.org}{Creative Commons}
\href{https://creativecommons.org/licenses/by/4.0/}
{Attribution} License.
\fi\fi
\fi
\fi
\fi
\end{tabular}}}
\null
%\vskip 2em% a bit of space removed (< 2em)
\begin{center}%
\let \footnote \thanks
{\LARGE\bfseries \@title \par}% \bf added
\vskip 2em% was: 1.5em
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em% \date and extra space removed
\end{center}%
\par
\markboth{\hfill\titlerunning}{\authorrunning\hfill}
\vskip .5em}
\AtBeginDocument{
\providecommand{\firstpage}{1}
\setcounter{firstpage}{\firstpage}
\setcounter{page}{\firstpage}
\@ifpackageloaded{array}% Contributed by Wolfgang Jeltsch
{\newcommand{\IfArrayPackageLoaded}[2]{#1}}
{\newcommand{\IfArrayPackageLoaded}[2]{#2}}}
\newcommand{\institute}[1]{\IfArrayPackageLoaded
{\\{\scriptsize\begin{tabular}[t]{@{}>{\footnotesize}c@{}}#1\end{tabular}}}
{\\{\scriptsize\begin{tabular}[t]{@{\footnotesize}c@{}}#1\end{tabular}}}}
\newcommand{\email}[1]{\\{\footnotesize\ttfamily #1}}
\renewenvironment{abstract}{\begin{list}{}% header removed and noindent
{\rightmargin\leftmargin
\listparindent 1.5em
\parsep 0pt plus 1pt}
\small\item}{\end{list}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{hyperref} % add hyperlinks
\RequirePackage{mathptmx} % Pick Times Roman as a base font
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Remember page numbers %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{firstpage}
\setcounter{firstpage}{1}
\AtEndDocument{\clearpage
\addtocounter{page}{-1}
\immediate\write\@auxout{\string
\newlabel{LastPage}{{}{\thepage}{}{page.\thepage}{}}}%
\newwrite\pages
\immediate\openout\pages=\jobname.pag
\immediate\write\pages{\arabic{firstpage}-\arabic{page}}
\addtocounter{page}{1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Less space in lists %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\@listi{\leftmargin\leftmargini
\parsep 2.5\p@ \@plus1.5\p@ \@minus\p@
\topsep 5\p@ \@plus2\p@ \@minus5\p@
\itemsep2.5\p@ \@plus1.5\p@ \@minus\p@}
\let\@listI\@listi
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep 1\p@ \@plus\p@ \@minus\p@
\parsep 1\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep \z@
\parsep \z@
\itemsep \topsep}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% References small and with less space between items %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewenvironment{thebibliography}[1]
{\section*{\refname}\small% small added
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m
\setlength{\parskip}{0pt}%
\setlength{\itemsep}{3pt plus 2pt}% less space between items
}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}

View File

@ -22,6 +22,8 @@
backgroundcolor=\color{red!20} backgroundcolor=\color{red!20}
} }
\newtheorem{recap}[note]{Recap}
\newcommand{\rulenameAfter}[1]{\begin{array}[b]{l}\rulename{#1}\\[-1em] \ \end{array}} \newcommand{\rulenameAfter}[1]{\begin{array}[b]{l}\rulename{#1}\\[-1em] \ \end{array}}
\newcommand{\tifj}{\texttt{TamedFJ}} \newcommand{\tifj}{\texttt{TamedFJ}}