diff --git a/aspUnify.tex b/aspUnify.tex index a984922..207612a 100644 --- a/aspUnify.tex +++ b/aspUnify.tex @@ -2,8 +2,9 @@ % LLNCS macro package for Springer Computer Science proceedings; % Version 2.21 of 2022/01/12 % -\documentclass[runningheads]{llncs} -% +\documentclass[submission]{eptcs} +\providecommand{\event}{Symposium in honor of Peter Thiemann's 60th birthday} % Name of the event you are submitting to +\usepackage{underscore} \usepackage[T1]{fontenc} % T1 fonts will be used to generate the final print and online PDFs, % so please use T1 fonts in your manuscript whenever possible. @@ -23,31 +24,34 @@ \usepackage{mathpartir} \usepackage{amsmath} \usepackage{amssymb} +\usepackage{amsthm} \usepackage{enumitem} %\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} % -\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. % 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 % @@ -55,7 +59,6 @@ ABC Institute, Rupert-Karls-University Heidelberg, Heidelberg, Germany\\ The abstract should briefly summarize the contents of the paper in 150--250 words. -\keywords{First keyword \and Second keyword \and Another keyword.} \end{abstract} % % @@ -451,4 +454,7 @@ and every type placeholder has an upper bound $\tv{a} \lessdot \type{N}$. And more text. \end{proof} +\bibliographystyle{eptcs} +\bibliography{martin} + \end{document} diff --git a/eptcs.bst b/eptcs.bst new file mode 100644 index 0000000..9264780 --- /dev/null +++ b/eptcs.bst @@ -0,0 +1,1444 @@ +%% +%% This is file `eptcs.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `vonx,ed-au,dt-beg,yr-par,xmth,yrp-col,tit-it,atit-u,volp-com,jwdpg,pp-last,num-xser,ser-vol,jnm-x,pre-edn,doi,blknt,pp,xedn,amper,and-xcom,etal-xc,url,url-blk,bibinfo,nfss,') +%% ---------------------------------------- +%% *** Stylefile for EPTCS *** +%% +%% Copyright 1994-2004 Patrick W Daly + % =============================================================== + % NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % Subsequently it has been edited by hand by Rob van Glabbeek + % and Kartik Singhal + % + % This file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is alphabetical by authors. + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + doi + edition + editor + eid + eprint + howpublished + institution + journal + key + note + number + organization + pages + publisher + school + series + title + type + url + ee + volume + year + } + {} + { label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + ":" * + add.blank +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} +FUNCTION {slant} +{ duplicate$ empty$ + { pop$ "" } + { "{\slshape " swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "editors" } + +FUNCTION {bbl.editor} +{ "editor" } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edition" } + +FUNCTION {bbl.volume} +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {bbl.chapter} +{ "chapter" } + +FUNCTION {bbl.techrep} +{ "Technical Report" } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {eptcs} {"Electronic Proceedings in Computer Science"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.eprint} +{ eprint + duplicate$ empty$ 'skip$ + { + "\eprint{" swap$ * "}" * + } + if$ +} +FUNCTION {format.ee} +{ ee empty$ + { "" } + { "\urlprefix\url{" ee * "}" * } + if$ +} +FUNCTION {format.url} +{ eprint empty$ + { url empty$ + { format.ee } + { "\urlprefix\url{" url * "}" * + "ee and url" ee either.or.check + } + if$ + } + { format.eprint + "eprint and url" url either.or.check + "eprint and ee" ee either.or.check + } + if$ +} + +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ff~}\surnamestart {vv~}{ll}\surnameend{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + "\&" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + format.names +} +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + "," * + " " * + get.bbl.editor + * + } + if$ +} +FUNCTION {format.doi} +{ doi + duplicate$ empty$ 'skip$ + { + "\doi{" swap$ * "}" * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + } + if$ +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitemdeclare{" type$ "}{" cite$ "}" * * * * write$ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + " " * } + +FUNCTION {format.date} +{ + "" + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + } + if$ +} +FUNCTION {volume.or.number} +{ volume missing$ + { number } + { volume } + if$ +} +FUNCTION {format.volume.number.series} +{ volume.or.number missing$ + { series "series" bibinfo.check field.or.null } + { series empty$ + { volume.or.number "volume" bibinfo.check } + { volume.or.number tie.or.space.prefix "volume" bibinfo.check * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { slant swap$ * } + if$ + } + if$ + volume missing$ + 'skip$ + { "volume and number" number either.or.check } + if$ + } + if$ +} +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + pages multi.page.check + 'bbl.pages + 'bbl.page + if$ + swap$ tie.or.space.prefix + "pages" bibinfo.check + * * + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ":" * + } + if$ + swap$ * + "eid and pages" pages either.or.check + } + if$ +} +FUNCTION {format.vol.num} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ 'skip$ + { + " " * + } + if$ swap$ + } + if$ * +} + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check + slant +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { bbl.in capitalize + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { + " " swap$ * + ", " * + get.bbl.editor * + * } + if$ + ": " * + swap$ * + } + if$ +} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + year empty$ note empty$ + and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check slant word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal + * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal + * + } + { + " \& " + * editor #2 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series slant * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title "title" output.check + new.block + crossref missing$ + { + journal + "journal" bibinfo.check + slant + "journal" output.check + format.vol.num + } + { format.article.crossref output.nonnull + } + if$ + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { format.edition output + new.block + format.volume.number.series output + format.publisher.address output + } + { + new.block + format.book.crossref output.nonnull + } + if$ + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.date output + date.block + format.title "title" output.check + new.block + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { + format.edition output + format.chapter output + format.pages output + new.block + format.volume.number.series output + format.publisher.address output + } + { + format.chapter output + format.pages output + new.block + format.book.crossref output.nonnull + } + if$ + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.chapter output + format.volume.number.series output + format.publisher.address output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter output + } + if$ + format.pages "pages" output.check + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.volume.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ + format.date output + date.block + format.btitle "title" output.check + format.edition output + author empty$ + { organization empty$ + { + address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { + organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.btitle + "title" output.check + new.block + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.date output + output.state before.all = + 'skip$ + {date.block} + if$ + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished "howpublished" bibinfo.check output + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry + empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.btitle + "title" output.check + new.block + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + editor empty$ + { publisher empty$ + { new.sentence format.volume.number.series output } + { + new.sentence + format.volume.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { + new.sentence + format.volume.number.series output + format.organization.address output } + { + new.sentence + format.volume.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title + "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.block + format.url output + new.block + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.date output + date.block + format.title "title" output.check + format.doi output + new.block + format.url output + new.block + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ ff{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {presort} +SORT +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\bibitemdeclare}[2]{}" + write$ newline$ + "\providecommand{\surnamestart}{}" + write$ newline$ + "\providecommand{\surnameend}{}" + write$ newline$ + "\providecommand{\urlprefix}{Available at }" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\href}[2]{\texttt{#2}}" + write$ newline$ + "\providecommand{\urlalt}[2]{\href{#1}{#2}}" + write$ newline$ + "\providecommand{\doi}[1]{doi:\urlalt{https://doi.org/#1}{#1}}" + write$ newline$ + "\providecommand{\eprint}[1]{arXiv:\urlalt{https://arxiv.org/abs/#1}{#1}}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `eptcs.bst'. diff --git a/eptcs.cls b/eptcs.cls new file mode 100644 index 0000000..c428404 --- /dev/null +++ b/eptcs.cls @@ -0,0 +1,263 @@ +\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} diff --git a/prolog.tex b/prolog.tex index efe0afe..7e30cf9 100755 --- a/prolog.tex +++ b/prolog.tex @@ -22,8 +22,6 @@ backgroundcolor=\color{red!20} } -\newtheorem{recap}[note]{Recap} - \newcommand{\rulenameAfter}[1]{\begin{array}[b]{l}\rulename{#1}\\[-1em] \ \end{array}} \newcommand{\tifj}{\texttt{TamedFJ}}