diff --git a/orig.pdf b/orig.pdf deleted file mode 100644 index f5b5bf1f604da4e0b9f7cc0bb48101b53237de5b..0000000000000000000000000000000000000000 Binary files a/orig.pdf and /dev/null differ diff --git a/presentation.tex b/presentation.tex index 009f2fe940c32992893072eba921da5d4b0e5ccd..a5865e5815b8dd7981790186cf831fdda719ff44 100644 --- a/presentation.tex +++ b/presentation.tex @@ -18,7 +18,7 @@ \begin{frame} - \frametitle{Inhaltsverzeichnist} + \frametitle{Inhaltsverzeichnis} \tableofcontents \end{frame} @@ -133,4 +133,15 @@ No frame title, no logo. \end{frame} +\begin{frame}{Bunch of references} + \cite{abrial1996b,ain2019codeclone,allamanis2018survey,alon2019code2vec,% + blanchette2016learning,blanchette2019machine,bobot2011why3} +\end{frame} + + +\begin{frame}[allowframebreaks]{References} + \bibliographystyle{plain} + \bibliography{references} +\end{frame} + \end{document} diff --git a/references.bib b/references.bib index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..211c1b675b0661eaef0bf7196b6d0cb5179e2736 100644 --- a/references.bib +++ b/references.bib @@ -0,0 +1,379 @@ +@Book(abrial1996b, + Author = {Abrial, Jean-Raymond}, + Title = {The {B}-Book: Assigning Programs to Meanings}, + Publisher = {Cambridge University Press}, + Year = 1996, + Address = {New York, NY, USA} +) + +@Article(ain2019codeclone, + Author = {Q. U. {Ain} and W. H. {Butt} and M. W. {Anwar} and F. {Azam} and B. {Maqbool}}, + Title = {A Systematic Review on Code Clone Detection}, + Journal = {IEEE Access}, + Year = 2019, + Volume = 7, + Pages = {86121--86144}, + doi = {10.1109/ACCESS.2019.2918202} +) + +@Article(allamanis2018survey, + Author = {Allamanis, Miltiadis and Barr, Earl T and Devanbu, Premkumar and Sutton, Charles}, + Title = {A Survey of Machine Learning for Big Code and Naturalness}, + Journal = {ACM Computing Surveys (CSUR)}, + Year = 2018, + Volume = 51, + Number = 4, + Pages = {1--37} +) + +@Article(alon2019code2vec, + Author = {Alon, Uri and Zilberstein, Meital and Levy, Omer and Yahav, Eran}, + Title = {code2vec: Learning Distributed Representations of Code}, + Journal = {Proceedings of the ACM on Programming Languages}, + Year = 2019, + Volume = 3, + Number = {POPL}, + Pages = {1--29} +) + +@Article(blanchette2016learning, + Author = {Blanchette, Jasmin Christian and Greenaway, David and Kaliszyk, Cezary and K{\"u}hlwein, Daniel and Urban, Josef}, + Title = {A Learning-Based Fact Selector for {Isabelle}/{HOL}}, + Journal = {Journal of Automated Reasoning}, + Year = 2016, + Volume = 57, + Number = 3, + Pages = {219--244}, + doi = {10.1007/s10817-016-9362-8} +) + +@InProceedings(blanchette2019machine, + Author = {Blanchette, Jasmin Christian and Ouraoui, Daniel El and Fontaine, Pascal and Kaliszyk, Cezary}, + Title = {Machine Learning for Instance Selection in {SMT} Solving}, + Booktitle = {{AITP} 2019 - 4th Conference on Artificial Intelligence and Theorem Proving}, + Year = 2019, + Address = {Obergurgl, Austria}, + Month = apr +) + +@InProceedings(bobot2011why3, + Author = {Fran\c{c}ois Bobot and Jean-Christophe Filli\^atre and Claude March\'e and Andrei Paskevich}, + Title = {{Why3}: Shepherd Your Herd of Provers}, + Booktitle = {Boogie 2011: First International Workshop on Intermediate Verification Languages}, + Year = 2011, + Pages = {53--64}, + Address = {Wroc\l{}aw, Poland}, + Month = aug +) + +@InProceedings(bortolussi2015machine, + Author = {Bortolussi, Luca and Milios, Dimitrios and Sanguinetti, Guido}, + Title = {Machine Learning Methods in Statistical Model Checking and System Design - Tutorial}, + Booktitle = {Runtime Verification}, + Year = 2015, + Series = {LNCS}, + Volume = 9333, + Pages = {323--341}, + Organization = {Springer} +) + +@Article(buccafurri1999enhancing, + Author = {Buccafurri, Francesco and Eiter, Thomas and Gottlob, Georg and Leone, Nicola}, + Title = {Enhancing model checking in verification by {AI} techniques}, + Journal = {Artificial Intelligence}, + Year = 1999, + Volume = 112, + Number = {1-2}, + Pages = {57--104} +) + +@Article(cai2019automatic, + Author = {Cai, Cheng-Hao and Sun, Jing and Dobbie, Gillian}, + Title = {Automatic {B}-model repair using model checking and machine learning}, + Journal = {Automated Software Engineering}, + Year = 2019, + Volume = 26, + Number = 3, + Pages = {653--704} +) + +@Article(chen2019literature, + Author = {Chen, Zimin and Monperrus, Martin}, + Title = {A Literature Study of Embeddings on Source Code}, + Journal = {arXiv preprint arXiv:1904.03061}, + Year = 2019 +) + +@InProceedings(devlin2019bert, + Author = {Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina}, + Title = {{BERT}: Pre-training of Deep Bidirectional Transformers for Language Understanding}, + Booktitle = {Human Language Technologies}, + Year = 2019, + Volume = 1, + Pages = {4171--4186}, + Month = jun, + Publisher = {Association for Computational Linguistics}, + doi = {10.18653/v1/N19-1423} +) + +@InProceedings(dunkelau2019automated, + Author = {Dunkelau, Jannik and Krings, Sebastian and Schmidt, Joshua}, + Title = {Automated Backend Selection for {ProB} Using Deep Learning}, + Booktitle = {{NASA} Formal Methods}, + Year = 2019, + Series = {LNCS}, + Volume = 11460, + Pages = {130--147}, + Month = may, + Publisher = {Springer}, + doi = {10.1007/978-3-030-20652-9\_9} +) + +@InProceedings(dunkelau2020analysing, + Author = {Dunkelau, Jannik and Schmidt, Joshua and Leuschel, Michael}, + Title = {Analysing {ProB}'s Constraint Solving Backends}, + Booktitle = {Rigorous State-Based Methods}, + Year = 2020, + Series = {LNCS}, + Volume = 12071, + Pages = {107--123}, + Month = may, + Publisher = {Springer}, + doi = {10.1007/978-3-030-48077-6\_8} +) + +@InProceedings(farber2015random, + Author = {F{\"a}rber, Michael and Kaliszyk, Cezary}, + Title = {Random Forests for Premise Selection}, + Booktitle = {International Symposium on Frontiers of Combining Systems}, + Year = 2015, + Pages = {325--340}, + Organization = {Springer} +) + +@InProceedings(garg2016inductive, + Author = {Garg, Pranav and Neider, Daniel and Madhusudan, P. and Roth, Dan}, + Title = {Learning Invariants Using Decision Trees and Implication Counterexamples}, + Booktitle = {Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages}, + Year = 2016, + Series = {POPL '16}, + Volume = 51, + Pages = {499–512}, + Month = jan, + Publisher = {Association for Computing Machinery}, + Number = 1, + doi = {10.1145/2837614.2837664} +) + +@Article(goldman2015employing, + Author = {Goldman, Robert P and Boldt, Michael W and Musliner, David J}, + Title = {Employing {AI} Techniques in Probabilistic Model Checking Position Paper}, + Year = 2015 +) + +@Article(healy2017predicting, + Author = {Healy, Andrew and Monahan, Rosemary and Power, James F.}, + Title = {Predicting {SMT} Solver Performance for Software Verification}, + Journal = {Electronic Proceedings in Theoretical Computer Science}, + Year = 2017, + Volume = 240, + Pages = {20–37}, + Month = jan, + doi = {10.4204/eptcs.240.2} +) + +@InProceedings(hindle2012naturalness, + Author = {A. {Hindle} and E. T. {Barr} and Z. {Su} and M. {Gabel} and P. {Devanbu}}, + Title = {On the naturalness of software}, + Booktitle = {34th International Conference on Software Engineering (ICSE)}, + Year = 2012, + Pages = {837--847}, + doi = {10.1109/ICSE.2012.6227135} +) + +@Article(irving2016deepmath, + Author = {Irving, Geoffrey and Szegedy, Christian and Alemi, Alexander A and E{\'e}n, Niklas and Chollet, Fran{\c{c}}ois and Urban, Josef}, + Title = {{DeepMath} - Deep Sequence Models for Premise Selection}, + Journal = {Advances in Neural Information Processing Systems}, + Year = 2016, + Volume = 29, + Pages = {2235--2243} +) + +@InProceedings(kaliszyk2015efficient, + Author = {Kaliszyk, Cezary and Urban, Josef and Vysko\v{c}il, Ji\v{r}\'{\i}}, + Title = {Efficient Semantic Features for Automated Reasoning over Large Theories}, + Booktitle = {Proceedings of the 24th International Conference on Artificial Intelligence}, + Year = 2015, + Series = {IJCAI'15}, + Pages = {3084–3090}, + Publisher = {AAAI Press} +) + +@InProceedings(kaliszyk2018reinforcement, + Author = {Kaliszyk, Cezary and Urban, Josef and Michalewski, Henryk and Ol\v{s}\'{a}k, Miroslav}, + Title = {Reinforcement Learning of Theorem Proving}, + Booktitle = {Advances in Neural Information Processing Systems}, + Year = 2018, + Volume = 31, + Publisher = {Curran Associates, Inc.} +) + +@InProceedings(kanade2020learning, + Author = {Kanade, Aditya and Maniatis, Petros and Balakrishnan, Gogul and Shi, Kensen}, + Title = {Learning and Evaluating Contextual Embedding of Source Code}, + Booktitle = {International Conference on Machine Learning}, + Year = 2020, + Pages = {5110--5121}, + Organization = {PMLR} +) + +@InProceedings(lederman2019learning, + Author = {Lederman, Gil and Rabe, Markus and Seshia, Sanjit and Lee, Edward A}, + Title = {Learning Heuristics for Quantified Boolean Formulas through Reinforcement Learning}, + Booktitle = {International Conference on Learning Representations}, + Year = 2019 +) + +@Article(leuschel2008prob, + Author = {Leuschel, Michael and Butler, Michael}, + Title = {{ProB}: An Automated Analysis Toolset for the {B} Method}, + Journal = {International Journal on Software Tools for Technology Transfer}, + Year = 2008, + Volume = 10, + Number = 2, + Pages = {185--203}, + Month = mar +) + +@InProceedings(meinke2018survey, + Author = {K. {Meinke} and A. {Bennaceur}}, + Title = {Machine Learning for Software Engineering: Models, Methods, and Applications}, + Booktitle = {40th International Conference on Software Engineering: Companion (ICSE-Companion)}, + Year = 2018, + Pages = {548--549}, + Publisher = {IEEE/ACM} +) + +@Article(mikolov2013efficient, + Author = {Mikolov, Tomas and Chen, Kai and Corrado, Greg and Dean, Jeffrey}, + Title = {Efficient Estimation of Word Representations in Vector Space}, + Journal = {arXiv preprint arXiv:1301.3781}, + Year = 2013 +) + +@InProceedings(nagashima2018pamper, + Author = {Nagashima, Yutaka and He, Yilun}, + Title = {PaMpeR}, + Booktitle = {Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering}, + Year = 2018, + Series = {ASE 2018}, + Pages = {362–372}, + Address = {New York, NY, USA}, + Publisher = {Association for Computing Machinery}, + doi = {10.1145/3238147.3238210} +) + +@Article(pira2021using, + Author = {Pira, Einollah}, + Title = {Using knowledge discovery to propose a two-phase model checking for safety analysis of graph transformations}, + Journal = {Software Quality Journal}, + Year = 2021, + Pages = {1--28}, + doi = {10.1007/s11219-020-09542-x} +) + +@Article(pira2018searching, + Author = {Pira, Einollah and Rafe, Vahid and Nikanjam, Amin}, + Title = {Searching for violation of safety and liveness properties using knowledge discovery in complex systems specified through graph transformations}, + Journal = {Information and Software Technology}, + Year = 2018, + Volume = 97, + Pages = {110--134}, + doi = {10.1016/j.infsof.2018.01.004} +) + +@InProceedings(rahman2019classifying, + Author = {Rahman, Md Abdur and Haque, Md Ariful and Tawhid, Md Nurul Ahad and Siddik, Md Saeed}, + Title = {Classifying Non-Functional Requirements using {RNN} Variants for Quality Software Development}, + Booktitle = {Proceedings of the 3rd ACM SIGSOFT International Workshop on Machine Learning Techniques for Software Quality Evaluation}, + Year = 2019, + Pages = {25--30} +) + +@InProceedings(schmidt2018repair, + Author = {Schmidt, Joshua and Krings, Sebastian and Leuschel, Michael}, + Title = {Repair and Generation of Formal Models Using Synthesis}, + Editor = {Furia, Carlo A. and Winter, Kirsten}, + Booktitle = {Integrated Formal Methods}, + Year = 2018, + Series = {LNCS}, + Volume = 11023, + Pages = {346--366}, + Address = {Cham}, + Publisher = {Springer International Publishing} +) + +@InProceedings(sharma2014machine, + Author = {Sharma, Richa and Bhatia, Jaspreet and Biswas, KK}, + Title = {Machine Learning for Constituency Test of Coordinating Conjunctions in Requirements Specifications}, + Booktitle = {Proceedings of the 3rd International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering}, + Year = 2014, + Pages = {25--31} +) + +@InProceedings(sultanov2013application, + Author = {H. {Sultanov} and J. H. {Hayes}}, + Title = {Application of reinforcement learning to requirements engineering: requirements tracing}, + Booktitle = {2013 21st IEEE International Requirements Engineering Conference (RE)}, + Year = 2013, + Pages = {52--61}, + doi = {10.1109/RE.2013.6636705} +) + +@InProceedings(tulsian2014mux, + Author = {Tulsian, Varun and Kanade, Aditya and Kumar, Rahul and Lal, Akash and Nori, Aditya V}, + Title = {{MUX}: Algorithm Selection for Software Model Checkers}, + Booktitle = {Proceedings of the 11th Working Conference on Mining Software Repositories}, + Year = 2014, + Pages = {132--141} +) + +@InProceedings(turian2010word, + Author = {Turian, Joseph and Ratinov, Lev and Bengio, Yoshua}, + Title = {Word representations: A simple and general method for semi-supervised learning}, + Booktitle = {Proceedings of the 48th annual meeting of the association for computational linguistics}, + Year = 2010, + Pages = {384--394} +) + +@InProceedings(white2015deep, + Author = {White, Martin}, + Title = {Deep Representations for Software Engineering}, + Booktitle = {2015 IEEE/ACM 37th IEEE International Conference on Software Engineering}, + Year = 2015, + Volume = 2, + Pages = {781--783}, + Organization = {IEEE} +) + +@Article(yousefian2016greedy, + Author = {Yousefian, Rosa and Aboutorabi, Shahryar and Rafe, Vahid}, + Title = {A greedy algorithm versus metaheuristic solutions to deadlock detection in Graph Transformation Systems}, + Journal = {Journal of Intelligent \& Fuzzy Systems}, + Year = 2016, + Volume = 31, + Number = 1, + Pages = {137--149}, + doi = {10.3233/IFS-162127} +) + +@Article(zhu2019ltl, + Author = {W. {Zhu} and H. {Wu} and M. {Deng}}, + Title = {{LTL} Model Checking Based on Binary Classification of Machine Learning}, + Journal = {IEEE Access}, + Year = 2019, + Volume = 7, + Pages = {135703--135719}, + doi = {10.1109/ACCESS.2019.2942762} +) diff --git a/splncs04.bst b/splncs04.bst deleted file mode 100644 index 3be8de3ac7c33fd679d5fd4f6709a6fcc4d21bc2..0000000000000000000000000000000000000000 --- a/splncs04.bst +++ /dev/null @@ -1,1548 +0,0 @@ -%% BibTeX bibliography style `splncs03' -%% -%% BibTeX bibliography style for use with numbered references in -%% Springer Verlag's "Lecture Notes in Computer Science" series. -%% (See Springer's documentation for llncs.cls for -%% more details of the suggested reference format.) Note that this -%% file will not work for author-year style citations. -%% -%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite -%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. -%% -%% This file comes to you courtesy of Maurizio "Titto" Patrignani of -%% Dipartimento di Informatica e Automazione Universita' Roma Tre -%% -%% ================================================================================================ -%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 -%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) -%% -%% CHANGES (with respect to titto-lncs-01.bst): -%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) -%% ================================================================================================ -%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 -%% Edited by hand by titto based on `titto.bst' (see below) -%% -%% CHANGES (with respect to titto.bst): -%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" -%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") -%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings -%% - Commented all new.block commands before urls and notes (to separate them with a comma) -%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) -%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) -%% - Removed a \newblock to avoid long spaces between title and "In: ..." -%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label -%% - Added doi -%% ================================================================================================ -%% This was file `titto.bst', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') -%% ---------------------------------------- -%% *** Tentative .bst file for Springer LNCS *** -%% -%% Copyright 1994-2007 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated 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}[2007/04/24 4.20 (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 - howpublished - institution - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - 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$ % removed for titto-lncs-01 - " " write$ % to avoid long spaces between title and "In: ..." - } - { 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} -{ duplicate$ empty$ - 'pop$ - 'write$ - if$ - 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 {add.colon} -{ duplicate$ empty$ - 'skip$ - { ":" * add.blank } - if$ -} - -FUNCTION {date.block} -{ - new.block -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} -STRINGS {z} -FUNCTION {remove.dots} -{ 'z := - "" - { z empty$ not } - { z #1 #1 substring$ - z #2 global.max$ substring$ 'z := - duplicate$ "." = 'pop$ - { * } - if$ - } - while$ -} -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} -{ skip$ } - -FUNCTION {embolden} -{ duplicate$ empty$ -{ pop$ "" } -{ "\textbf{" swap$ * "}" * } -if$ -} -FUNCTION {tie.or.space.prefix} -{ duplicate$ text.length$ #5 < - { "~" } - { " " } - if$ - swap$ -} -FUNCTION {titto.space.prefix} % always introduce a space -{ 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} -{ "eds." } - -FUNCTION {bbl.editor} -{ "ed." } - -FUNCTION {bbl.edby} -{ "edited by" } - -FUNCTION {bbl.edition} -{ "edn." } - -FUNCTION {bbl.volume} -{ "vol." } - -FUNCTION {titto.bbl.volume} % for handling journals -{ "" } - -FUNCTION {bbl.of} -{ "of" } - -FUNCTION {bbl.number} -{ "no." } - -FUNCTION {bbl.nr} -{ "no." } - -FUNCTION {bbl.in} -{ "in" } - -FUNCTION {bbl.pages} -{ "pp." } - -FUNCTION {bbl.page} -{ "p." } - -FUNCTION {titto.bbl.pages} % for journals -{ "" } - -FUNCTION {titto.bbl.page} % for journals -{ "" } - -FUNCTION {bbl.chapter} -{ "chap." } - -FUNCTION {bbl.techrep} -{ "Tech. Rep." } - -FUNCTION {bbl.mthesis} -{ "Master's thesis" } - -FUNCTION {bbl.phdthesis} -{ "Ph.D. thesis" } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"Jun."} - -MACRO {jul} {"Jul."} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sep."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Software Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput. Aid. Des."} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Program."} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Graphic."} - -MACRO {toms} {"ACM Trans. Math. Software"} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} - -MACRO {tcs} {"Theor. Comput. Sci."} - -FUNCTION {bibinfo.check} -{ swap$ - duplicate$ missing$ - { - pop$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ pop$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {bibinfo.warn} -{ swap$ - duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {format.url} -{ url empty$ - { "" } -% { "\urlprefix\url{" url * "}" * } - { "\url{" url * "}" * } % changed in titto-lncs-02.bst - if$ -} - -FUNCTION {format.doi} % added in splncs04.bst -{ doi empty$ - { "" } - { after.block 'output.state := - "\doi{" doi * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - - -STRINGS { bibinfo} - -FUNCTION {format.names} -{ 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{vv~}{ll}{, jj}{, f{.}.}" - 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 * - } - { " " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} -FUNCTION {format.names.ed} -{ - 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f{.}.~}{vv~}{ll}{ 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 * - } - { " " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} -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 -% capitalize - "(" 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 - duplicate$ empty$ 'skip$ - { "t" change.case$ } - if$ - "title" bibinfo.check -} -FUNCTION {output.bibitem} -{ 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} -{ - month "month" bibinfo.check - 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$ - * - remove.dots - } - if$ - duplicate$ empty$ - 'skip$ - { - before.all 'output.state := - " (" swap$ * ")" * - } - if$ -} -FUNCTION {format.btitle} -{ title "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - } - if$ -} -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { bbl.volume volume tie.or.space.prefix - "volume" bibinfo.check * * - series "series" bibinfo.check - duplicate$ empty$ 'pop$ - { emphasize ", " * swap$ * } - if$ - "volume and number" number either.or.check - } - if$ -} -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { bbl.number } - { bbl.number capitalize } - if$ - number tie.or.space.prefix "number" bibinfo.check * * - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { bbl.in space.word * - series "series" bibinfo.check * - } - if$ - } - 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 - 'titto.bbl.pages - 'titto.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$ * - } - if$ -} -FUNCTION {format.vol.num.pages} % this function is used only for journal entries -{ volume field.or.null embolden - duplicate$ empty$ 'skip$ - { -% bbl.volume swap$ tie.or.space.prefix - titto.bbl.volume swap$ titto.space.prefix -% rationale for the change above: for journals you don't want "vol." label -% hence it does not make sense to attach the journal number to the label when -% it is short - "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$ * - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { bbl.chapter } - { type "l" change.case$ - "type" bibinfo.check - } - if$ - chapter tie.or.space.prefix - "chapter" bibinfo.check - * * - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.booktitle} -{ - booktitle "booktitle" bibinfo.check -} -FUNCTION {format.in.ed.booktitle} -{ format.booktitle duplicate$ empty$ 'skip$ - { -% editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto - editor "editor" format.names duplicate$ empty$ 'pop$ - { - " " * - get.bbl.editor -% capitalize - "(" swap$ * ") " * - * swap$ - * } - if$ - word.in swap$ * - } - if$ -} -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and 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 emphasize 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$ - "editor" bibinfo.check - " " * bbl.etal - * - } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { - "editor" bibinfo.check - " " * bbl.etal - * - } - { - bbl.and space.word - * 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 emphasize * } - 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 - add.colon - new.block - format.title "title" output.check - new.block - crossref missing$ - { - journal - "journal" bibinfo.check - "journal" output.check - add.blank - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - add.colon - } - { format.authors output.nonnull - add.colon - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - new.sentence - format.number.series output - format.publisher.address output - } - { - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} -FUNCTION {booklet} -{ output.bibitem - format.authors output - add.colon - new.block - format.title "title" output.check - new.block - howpublished "howpublished" bibinfo.check output - address "address" bibinfo.check output - format.date output -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - add.colon - } - { format.authors output.nonnull - add.colon - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { - format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - new.sentence - format.number.series output - format.publisher.address output - } - { - format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - add.colon - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.chapter.pages output - new.sentence - format.number.series output - format.publisher.address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - add.colon - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - new.sentence % added by titto - format.bvolume output - format.pages output - new.sentence - format.number.series output - publisher empty$ - { format.organization.address output } - { organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ -% new.block - format.doi output - 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$ - add.colon - new.block - format.btitle "title" output.check - 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.edition output - format.date output -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - add.colon - new.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.date "year" output.check -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - add.colon - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished "howpublished" bibinfo.check output - format.date output -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry - empty.misc.check -} -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - add.colon - new.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.date "year" output.check -% new.block - format.doi output - 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$ - add.colon - new.block - format.btitle "title" output.check - format.bvolume output - editor empty$ - { publisher empty$ - { format.number.series output } - { - new.sentence - format.number.series output - format.publisher.address output - } - if$ - } - { publisher empty$ - { - new.sentence - format.number.series output - format.organization.address output } - { - new.sentence - format.number.series output - organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - } - if$ - format.date "year" output.check -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - add.colon - new.block - format.title - "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" bibinfo.warn output - address "address" bibinfo.check output - format.date "year" output.check -% new.block - format.doi output - format.url output -% new.block - format.note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - add.colon - new.block - format.title "title" output.check - format.date 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{\url}[1]{\texttt{#1}}" - write$ newline$ - "\providecommand{\urlprefix}{URL }" - write$ newline$ - "\providecommand{\doi}[1]{https://doi.org/#1}" - 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 `titto.bst'.