summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2016-02-29 19:39:56 -0500
committerThibaut Horel <thibaut.horel@gmail.com>2016-02-29 19:39:56 -0500
commit310718cb00370138b8d6f0e8a8222e5ecdda843c (patch)
tree113938bc18de495bc555e146c5ab098a82d5095e
parent49880b3de9e4a4a190e26d03dbe093e3534823de (diff)
downloadrecommendation-310718cb00370138b8d6f0e8a8222e5ecdda843c.tar.gz
Change to ACM style and inlining of the proofsHEADmaster
-rw-r--r--ACM-Reference-Format-Journals.bst3349
-rw-r--r--acmcopyright.sty221
-rw-r--r--acmsmall.cls4186
-rw-r--r--appendix.tex670
-rw-r--r--approximation.tex477
-rw-r--r--conclusion.tex2
-rw-r--r--definitions.tex2
-rw-r--r--intro.tex2
-rw-r--r--main.tex239
-rw-r--r--myerson.tex4
-rwxr-xr-xpaper.tex42
-rw-r--r--problem.tex22
-rw-r--r--related.tex2
13 files changed, 8491 insertions, 727 deletions
diff --git a/ACM-Reference-Format-Journals.bst b/ACM-Reference-Format-Journals.bst
new file mode 100644
index 0000000..54089b5
--- /dev/null
+++ b/ACM-Reference-Format-Journals.bst
@@ -0,0 +1,3349 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
+%%% version = "1.00",
+%%% date = "18 January 2012",
+%%% time = "11:48 EST",
+%%% filename = "ACM-Reference-Format-Journals.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt"
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM Transactions bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20)
+%%% available from http://www.winmd5.com/?rid=winmd5,"
+%%% }
+%%% ====================================================================
+
+% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 17-APRIL-2008 (Nelson)
+% Revised 13-MARCH-2011 (Boris/Gerry)
+% Revised 23-MARCH-2011 (Boris/Gerry)
+% Revised 27-MARCH-2011 (Boris/Gerry)
+% Revised 15-APRIL-2011 (Boris/Gerry)
+% Revised 27-SEPTEMBER-2011 (Boris)
+%
+%
+% History (by Nelson)
+%
+% Based on 'acmtrans' (for ACM Journals)
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% Features of the old acmtrans.bst:
+% =================================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+%
+%
+% Start of ACM-Reference-Format-Journals.bst
+%
+% Note: Many of the new bibentry 'fields' will only work with the
+% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
+% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
+%
+%
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ %% "DEBUG: enter skip.digits " cite$ * warning$
+
+ %% dump.stack.1
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
+ %% "DEBUG: u = [" u * "]" * warning$
+
+ %% dump.stack.2
+
+ %% "DEBUG: leave skip.digits " cite$ * warning$
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+
+ %% dump.stack.1
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown 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 { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown 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 empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+% { "Tech. Rep." }
+ { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+%
+% Change by Gerry: use number-like citations for transactions
+% 2011/03/23
+%
+%FUNCTION {output.bibitem}
+%{ newline$
+% "\bibitem{" write$
+% cite$ write$
+% "}" write$
+% newline$
+% ""
+% before.all 'output.state :=
+%}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ "\bibitem[\protect\citeauthoryear{" write$
+ calc.label write$
+ sort.year write$
+ "}]%" writeln
+ " {" write$
+ cite$ write$
+ "}" writeln
+ ""
+ before.all 'output.state :=
+}
+
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output % BV 2011/09/27 Moved dot to comma
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+% format.tr.number output % jtb: moved month ...
+ format.tr.number output new.sentence % Gerry - need dot 2011/09/28
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+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 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { 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.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "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 }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION { presort }
+{
+ % Presort creates the bibentry's label via a call to calc.label, and then
+ % sorts the entries based on entry type. Chicago.bst adds support for
+ % including organizations as the sort key; the following is stolen from
+ % alpha.bst.
+
+ calc.label sortify % recalculate bibitem label
+ year field.or.null purify$ #-1 #4 substring$ * % add year
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % added for newapa
+ 'sort.label := % added for newapa
+ sort.label % added for newapa
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION { forward.pass }
+{
+ % Pass through all entries, comparing current entry to last one.
+ % Need to concatenate year to the stack (done by calc.label) to determine
+ % if two entries are the same (see presort)
+
+ last.label
+ % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ = % are they equal?
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
+ }
+ if$
+}
+
+FUNCTION { reverse.pass }
+{
+ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label.year extra.label * 'sort.year :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION { bib.sort.order }
+{
+ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { bib.sort.order }
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style" writeln
+ "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{00}" writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
+
+%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
+
diff --git a/acmcopyright.sty b/acmcopyright.sty
new file mode 100644
index 0000000..e8de127
--- /dev/null
+++ b/acmcopyright.sty
@@ -0,0 +1,221 @@
+%%
+%% This is file `acmcopyright.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% acmcopyright.dtx (with options: `style')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from acmcopyright.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file acmcopyright.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{acmcopyright}
+[2014/06/29 v1.2 Copyright statemens for ACM classes]
+\newif\if@printcopyright
+\@printcopyrighttrue
+\newif\if@printpermission
+\@printpermissiontrue
+\newif\if@acmowned
+\@acmownedtrue
+\RequirePackage{xkeyval}
+\define@choicekey*{ACM@}{acmcopyrightmode}[%
+ \acm@copyrightinput\acm@copyrightmode]{none,acmcopyright,acmlicensed,%
+ rightsretained,usgov,usgovmixed,cagov,cagovmixed,%
+ licensedusgovmixed,licensedcagovmixed,othergov,licensedothergov}{%
+ \@printpermissiontrue
+ \@printcopyrighttrue
+ \@acmownedtrue
+ \ifnum\acm@copyrightmode=0\relax % none
+ \@printpermissionfalse
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=2\relax % acmlicensed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=3\relax % rightsretained
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=4\relax % usgov
+ \@printpermissiontrue
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=6\relax % cagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=9\relax % licensedcagovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=10\relax % othergov
+ \@acmownedtrue
+ \fi
+ \ifnum\acm@copyrightmode=11\relax % licensedothergov
+ \@acmownedfalse
+ \@printcopyrightfalse
+ \fi}
+\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
+\setcopyright{acmcopyright}
+\def\@copyrightowner{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ ACM.
+ \or % acmlicensed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM.
+ \or % rightsretained
+ Copyright held by the owner/author(s).
+ \or % usgov
+ \or % usgovmixed
+ ACM.
+ \or % cagov
+ Crown in Right of Canada.
+ \or %cagovmixed
+ ACM.
+ \or %licensedusgovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM.
+ \or %licensedcagovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM.
+ \or % othergov
+ ACM.
+ \or % licensedothergov
+ \fi}
+\def\@copyrightpermission{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than ACM must be honored. Abstracting with credit is
+ permitted. To copy otherwise, or republish, to post on servers or to
+ redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % acmlicensed
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than the author(s) must be honored. Abstracting with credit
+ is permitted. To copy otherwise, or republish, to post on servers
+ or to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % rightsretained
+ Permission to make digital or hard copies of part or all of this work
+ for personal or classroom use is granted without fee provided that
+ copies are not made or distributed for profit or commercial advantage
+ and that copies bear this notice and the full citation on the first
+ page. Copyrights for third-party components of this work must be
+ honored. For all other uses, contact the
+ owner\hspace*{.5pt}/author(s).
+ \or % usgov
+ This paper is authored by an employee(s) of the United States
+ Government and is in the public domain. Non-exclusive copying or
+ redistribution is allowed, provided that the article citation is
+ given and the authors and agency are clearly identified as its
+ source.
+ \or % usgovmixed
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, or contractor of the national government. As such,
+ the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only. Permission to make digital or hard copies
+ for personal or classroom use is granted. Copies must bear this
+ notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be
+ honored. To copy otherwise, distribute, republish, or post,
+ requires prior specific permission and\hspace*{.5pt}/or a
+ fee. Request permissions from permissions@acm.org.
+ \or % cagov
+ This article was authored by employees of the Government of Canada.
+ As such, the Canadian government retains all interest in the
+ copyright to this work and grants to ACM a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to allow
+ others to do so, provided that clear attribution is given both to
+ the authors and the Canadian government agency employing them.
+ Permission to make digital or hard copies for personal or classroom
+ use is granted. Copies must bear this notice and the full citation
+ on the first page. Copyrights for components of this work owned by
+ others than the Canadain Government must be honored. To copy
+ otherwise, distribute, republish, or post, requires prior specific
+ permission and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % cagovmixed
+ ACM acknowledges that this contribution was co-authored by an
+ affiliate of the national government of Canada. As such, the Crown
+ in Right of Canada retains an equal interest in the copyright.
+ Reprints must include clear attribution to ACM and the author's
+ government agency affiliation. Permission to make digital or hard
+ copies for personal or classroom use is granted. Copies must bear
+ this notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be honored.
+ To copy otherwise, distribute, republish, or post, requires prior
+ specific permission and\hspace*{.5pt}/or a fee. Request permissions
+ from permissions@acm.org.
+ \or % licensedusgovmixed
+ Publication rights licensed to ACM. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the United States government. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % licensedcagovmixed
+ Publication rights licensed to ACM. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the national government of Canada. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % othergov
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, contractor or affiliate of a national government. As
+ such, the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only.
+ \or % licensedothergov
+ Publication rights licensed to ACM. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of a national government. As such, the Government
+ retains a nonexclusive, royalty-free right to publish or reproduce
+ this article, or to allow others to do so, for Government purposes
+ only.
+ \fi}
+\endinput
+%%
+%% End of file `acmcopyright.sty'.
diff --git a/acmsmall.cls b/acmsmall.cls
new file mode 100644
index 0000000..580194e
--- /dev/null
+++ b/acmsmall.cls
@@ -0,0 +1,4186 @@
+%% acmsmall.cls - version 1.9 (with ACM Reference Format)
+%% Aptara Inc., dated 9 July 2012 (V1.4)
+%% Boris Veysman, 09 August 2013
+%% (c) 2011-2013 Association for Computing Machinery (ACM)
+%% For small trim journals
+%%
+%% Based on ESUB2ACM.CLS V1.2 - November 10th. 1999
+%%
+%% If you face any problem while working with this class file or have any feedback/suggestion,
+%% please contact ACM Support helpline at: "acmtexsupport@aptaracorp.com".
+%% Users can also go through the FAQs available on the journal's
+%% submission webpage.
+%%
+%% Version 1.10
+%% Put copyright code into a .sty
+%%
+%%
+%% Version 1.9
+%% New code for copyright
+%%
+%% Version 1.8
+%% New Copyright statements
+%%
+%%
+%% Version 1.7
+%% Added support for CCSXML
+%%
+%% Version 1.6
+%% -----------
+%% Redefined concepts
+%%
+%%
+%% Version 1.5
+%% -----------
+%% New command \ccsdesc[significance]{Concept~Concept}
+%%
+%% Version 1.4 (History)
+%% ---------------------
+%% 1) All citation formats are also redefined after
+%% checking the loading condition of natbib.sty
+%% 2) Added an option called 'prodmode', which uses New Century School Book
+%% and Helvetica as base and second font respectively after
+%% feedback from Joanne (Dated 28/06/2010) to simulate print output.
+%% 3) Changed running head style (Joanne 02/07/2010)
+%% 4) Added three new transactions (Jono 14/07/2010)
+%% 5) Added four new transactions/journals (Joanne 04/11/2011)
+%% 6) Added newtheorem definition for 'conjecture'
+%% 7) Trimmed the 'double outputting' of the DOI/URL beneath ACM Reference Format (before 1. INTRODUCTION)
+%% and also beneath the Permission Statement/copyright line. Also inserted the "http://dx.doi.org" stem. (Gerry Murray, March 2012)
+%% 8) Changed the price charged/article information from $10.00 to $15.00 (Gerry 24/05/2012)
+%% 9) Added 'TEAC' - July 9th. 2012
+%% 10) Added 'TOPC' - January 18th. 2013
+%% 11) Added TOMM from acmlarge design on 2014/05/28 (Aptara)
+%% 12) Added new journals (TSAS and TOMPECS) on 2014/09/10 (Aptara)
+%% 13) a. Change the journal name TALLIP (formerly TALIP) 2014/12/09 (Aptara)
+%% b. Added issn numbers for TOMPECS 2014/12/09 (Aptara)
+%% 14) Added new journal TCPS on 2015/08/27 (Aptara)
+%%
+%% Steps to compile: latex, bibtex, latex latex
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%% Bibliographic cite forms needed:
+%%
+%% \cite{key}
+%% which produces citations with author list and year.
+%% eg. [Brown 1978; Jarke, et al. 1985]
+%% \citeA{key}
+%% which produces citations with only the author list.
+%% eg. [Brown; Jarke, et al.]
+%% \citeN{key}
+%% which produces citations with the author list and year, but
+%% can be used as nouns in a sentence; no brackets appear around
+%% the author names, but only around the year.
+%% eg. Shneiderman [1978] states that......
+%% \citeN should only be used for a single citation.
+%% \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
+%% \citeyear{key}
+%% which produces the year information only, within brackets.
+%%
+%% Abbreviated author lists use the ``et al.'' construct.
+%%
+%% The above are examples of required ACM bibliographic cite formats needed.
+%% *******************
+%% Here is the complete list of cite forms from the chicago bibliographic style
+%%
+%% \cite{key}
+%% which produces citations with abbreviated author list and year.
+%% \citeNP{key}
+%% which produces citations with abbreviated author list and year.
+%% \citeA{key}
+%% which produces only the abbreviated author list.
+%% \citeANP{key}
+%% which produces only the abbreviated author list.
+%% \citeN{key}
+%% which produces the abbreviated author list and year, with only the
+%% year in parentheses. Use with only one citation.
+%% \citeyear{key}
+%% which produces the year information only, within parentheses.
+%% \citeyearNP{key}
+%% which produces the year information only.
+%%
+%% Abbreviated author lists use the ``et al.'' construct.
+%%
+%% `NP' means `no parentheses'
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmsmall}[2013/08/09 v1.10 ACM class]
+
+\def\fileversion{v1.10}
+\def\filedate{August 10, 2013}
+
+% Metadata Information
+\def\@acmVolume{V} %the volume
+\def\@acmNumber{N} %the number
+\def\@acmArticle{A} %article number
+\def\@articleSeq{1} %article Sequence
+\def\@acmPrice{15.00} %article price % Changed to 15 - June 2012 - Gerry
+\def\@acmYear{YYYY} %the last two digits of the year,
+\def\@acmMonth{1} %the month
+\def\@journalName{ACM Journal Name} %the name of the ACM journal
+\def\@journalNameShort{ACM} %the acronym of the ACM journal
+\def\@journalCode{jn} %the code of the ACM journal
+\def\@permissionCodeOne{0000-0000} %the permission code of the ACM journal
+\def\@doi{http://dx.doi.org/10.1145/0000000.0000000} % These 'default' '0' values are over-ridden, during production, with 'correct' numbers entered via source .tex file - Gerry March 2012
+
+% ----------------
+% Gerry - April 2011 - To assist in the formatting of the NEW ACM Reference format - 'DOI' in tt font, and url string in default
+\usepackage{url}
+\def\UrlFont{}
+\newcommand{\BIBand}{\&}
+\def\showDOI#1{\mbox{{\tt DOI:}{#1}}} % Gerry April 2011 - forces the DOI: to 'stay' with the 'url-(string)link' (no need for space at end either)
+% ----------------
+
+\if@compatibility\else
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}%
+ \setlength\voffset {-38.2pt}%
+ \setlength\hoffset {-8.25pt}%
+ \def\special@paper{8.5in,11in}
+ % Needed to set PDF page size
+ \special{papersize=8.5in,11in}}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+\fi
+
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+\DeclareOption{10pt}{\def\@ptsize{0}} %needed for amssymbols.sty
+\DeclareOption{11pt}{\ClassError{acmsmall}{11pt style not supported}
+ {ACM transactions/journals documents can be set in 10pt only}}
+\DeclareOption{12pt}{\ClassError{acmtrans}{12pt style not supported}
+ {ACM transactions/journals documents can be set in 10pt only}}
+
+\newif\ifprod@mode\prod@modefalse
+\DeclareOption{prodmode}{\global\prod@modetrue
+\typeout{ACM, Production Font style: 2010/06/28 by Aptara}}
+
+\newif\if@acmtopc
+\newif\if@acmjacm
+\newif\if@acmtissec
+\newif\if@acmtocl
+\newif\if@acmtocs
+\newif\if@acmtochi
+\newif\if@acmtodaes
+\newif\if@acmtods
+\newif\if@acmtois
+\newif\if@acmtomacs
+\newif\if@acmtoms
+\newif\if@acmtoplas
+\newif\if@acmtosem
+\newif\if@acmtoit
+\newif\if@acmtecs
+\newif\if@acmtallip
+\newif\if@acmjeric
+\newif\if@acmtaco
+\newif\if@acmjea
+\newif\if@acmtslp
+\newif\if@acmcie
+\newif\if@acmtos
+\newif\if@acmcsur
+\newif\if@acmjetc
+\newif\if@acmtosn
+\newif\if@acmtalg
+\newif\if@acmtaas
+\newif\if@acmtweb
+\newif\if@acmtkdd
+\newif\if@acmtrets
+\newif\if@acmtmis
+\newif\if@acmtiis
+\newif\if@acmtist
+\newif\if@acmtoct
+\newif\if@acmjdiq
+\newif\if@acmtaccess
+\newif\if@acmtoce
+\newif\if@acmteac
+\newif\if@acmtomm
+\newif\if@acmtsas
+\newif\if@acmtompecs
+\newif\if@acmtcps
+
+% Journal Options
+\DeclareOption{acmtopc}{
+ \typeout{}
+ \typeout{Using ACM, TOPC's option: 2013/01/18 by Aptara}
+ \typeout{}
+ \global\@acmtopctrue
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Parallel Computing}
+ \def\@journalNameShort{ACM Trans. Parallel Comput.}
+ \def\@journalCode{topc}
+ \def\@permissionCodeOne{1539-9087}
+}
+
+\DeclareOption{acmjacm}{
+ \typeout{}
+ \typeout{Using ACM, JACM's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmtrue
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{Journal of the ACM}
+ \def\@journalNameShort{J. ACM}
+ \def\@journalCode{jacm}
+ \def\@permissionCodeOne{0004-5411}
+}
+
+\DeclareOption{acmtissec}{
+ \typeout{}
+ \typeout{Using ACM, TISSEC's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissectrue
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Information and System Security}
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}
+ \def\@journalCode{tissec}
+ \def\@permissionCodeOne{1094-9224}
+}
+
+\DeclareOption{acmtocl}{
+ \typeout{}
+ \typeout{Using ACM, TOCL's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtocltrue
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Computational Logic}
+ \def\@journalNameShort{ACM Trans. Comput. Logic}
+ \def\@journalCode{tocl}
+ \def\@permissionCodeOne{1529-3785}
+}
+
+\DeclareOption{acmtocs}{
+ \typeout{}
+ \typeout{Using ACM, TOCS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocstrue
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Computer Systems}
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}
+ \def\@journalCode{tocs}
+ \def\@permissionCodeOne{0734-2071}
+}
+
+\DeclareOption{acmtochi}{
+ \typeout{}
+ \typeout{Using ACM, TOCHI's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochitrue
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}
+ \def\@journalCode{tochi}
+ \def\@permissionCodeOne{1073-0516}
+}
+
+\DeclareOption{acmtodaes}{
+ \typeout{}
+ \typeout{Using ACM, TODAES option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaestrue
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}
+ \def\@journalCode{todaes}
+ \def\@permissionCodeOne{1084-4309}
+}
+
+\DeclareOption{acmtods}{
+ \typeout{}
+ \typeout{Using ACM, TODS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodstrue
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Database Systems}
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}
+ \def\@journalCode{tods}
+ \def\@permissionCodeOne{0362-5915}
+}
+
+\DeclareOption{acmtois}{
+ \typeout{}
+ \typeout{Using ACM, TOIS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoistrue
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Information Systems}
+ \def\@journalNameShort{ACM Trans. Inf. Syst.}
+ \def\@journalCode{tois}
+ \def\@permissionCodeOne{1046-8188}
+}
+
+\DeclareOption{acmtomacs}{
+ \typeout{}
+ \typeout{Using ACM, TOMACS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacstrue
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}
+ \def\@journalCode{tomacs}
+ \def\@permissionCodeOne{1049-3301}
+}
+
+\DeclareOption{acmtoms}{
+ \typeout{}
+ \typeout{Using ACM, TOMS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomstrue
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Mathematical Software}
+ \def\@journalNameShort{ACM Trans. Math. Softw.}
+ \def\@journalCode{toms}
+ \def\@permissionCodeOne{0098-3500}
+}
+
+\DeclareOption{acmtoplas}{
+ \typeout{}
+ \typeout{Using ACM, TOPLAS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplastrue
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}
+ \def\@journalCode{toplas}
+ \def\@permissionCodeOne{0164-0925}
+}
+
+\DeclareOption{acmtosem}{
+ \typeout{}
+ \typeout{Using ACM, TOSEM option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemtrue
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}
+ \def\@journalCode{tosem}
+ \def\@permissionCodeOne{1049-331X}
+}
+
+\DeclareOption{acmtoit}{
+ \typeout{}
+ \typeout{Using ACM, TOIT option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoittrue
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Internet Technology}
+ \def\@journalNameShort{ACM Trans. Internet Technol.}
+ \def\@journalCode{toit}
+ \def\@permissionCodeOne{1533-5399}
+}
+
+\DeclareOption{acmtecs}{
+ \typeout{}
+ \typeout{Using ACM, TECS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecstrue
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}
+ \def\@journalCode{tecs}
+ \def\@permissionCodeOne{1539-9087}
+}
+
+%% Updaded Talip for change in the journal name to TALLIP (9th Dec. 2014)
+\DeclareOption{acmtallip}{
+ \typeout{}
+% \typeout{Using ACM, TALIP option: 2010/05/04 by Aptara}
+ \typeout{Using ACM, TALLIP option: 2014/12/09 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalliptrue
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+% \def\@journalName{ACM Transactions on Asian Language Information Processing}
+% \def\@journalNameShort{ACM Trans. Asian Lang. Inform. Process.}
+ \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}
+ \def\@journalName{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}
+ \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}
+ \def\@journalCode{tallip}
+% \def\@permissionCodeOne{1530-0226}
+ \def\@permissionCodeOne{2375-4699}
+}
+
+\DeclareOption{acmjeric}{
+ \typeout{}
+ \typeout{Using ACM, JERIC option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjerictrue
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Journal of Educational Resources in Computing}
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}
+ \def\@journalCode{jeric}
+ \def\@permissionCodeOne{1073-0516}
+}
+
+\DeclareOption{acmtaco}{
+ \typeout{}
+ \typeout{Using ACM, TACO option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacotrue
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}
+ \def\@journalNameShort{ACM Trans. Architec. Code Optim.}
+ \def\@journalCode{taco}
+ \def\@permissionCodeOne{1544-3566}
+}
+
+\DeclareOption{acmjea}{
+ \typeout{}
+ \typeout{Using ACM, JEA option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeatrue
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Journal of Experimental Algorithmics}
+ \def\@journalNameShort{ACM J. Exp. Algor.}
+ \def\@journalCode{jea}
+ \def\@permissionCodeOne{1084-6654}
+}
+
+\DeclareOption{acmtslp}{
+ \typeout{}
+ \typeout{Using ACM, TSLP option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslptrue
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Speech and Language Processing}
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}
+ \def\@journalCode{tslp}
+ \def\@permissionCodeOne{1550-4875}
+}
+
+\DeclareOption{acmcie}{
+ \typeout{}
+ \typeout{Using ACM, CIE option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmcietrue
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Computers in Entertainment}
+ \def\@journalNameShort{ACM Comput. Entertain.}
+ \def\@journalCode{cie}
+ \def\@permissionCodeOne{1544-3574}
+}
+
+\DeclareOption{acmtos}{
+ \typeout{}
+ \typeout{Using ACM, TOS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtostrue
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Storage}
+ \def\@journalNameShort{ACM Trans. Storage}
+ \def\@journalCode{tos}
+ \def\@permissionCodeOne{1553-3077}
+}
+
+\DeclareOption{acmcsur}{
+ \typeout{}
+ \typeout{Using ACM, CSUR option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurtrue
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Computing Surveys}
+ \def\@journalNameShort{ACM Comput. Surv.}
+ \def\@journalCode{csur}
+ \def\@permissionCodeOne{0360-0300}
+}
+
+\DeclareOption{acmjetc}{
+ \typeout{}
+ \typeout{Using ACM, JETC option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetctrue
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}
+ \def\@journalCode{jetc}
+ \def\@permissionCodeOne{1550-4832}
+}
+
+\DeclareOption{acmtosn}{
+ \typeout{}
+ \typeout{Using ACM, TOSN option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosntrue
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Sensor Networks}
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}
+ \def\@journalCode{tosn}
+ \def\@permissionCodeOne{1550-4859}
+}
+
+\DeclareOption{acmtalg}{
+ \typeout{}
+ \typeout{Using ACM, TALG option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgtrue
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Algorithms}
+ \def\@journalNameShort{ACM Trans. Algor.}
+ \def\@journalCode{talg}
+ \def\@permissionCodeOne{1549-6325}
+}
+
+\DeclareOption{acmtaas}{
+ \typeout{}
+ \typeout{Using ACM, TAAS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaastrue
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}
+ \def\@journalCode{taas}
+ \def\@permissionCodeOne{1556-4665}
+}
+
+\DeclareOption{acmtweb}{
+ \typeout{}
+ \typeout{Using ACM, TWEB option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebtrue
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on the Web}
+ \def\@journalNameShort{ACM Trans. Web}
+ \def\@journalCode{tweb}
+ \def\@permissionCodeOne{1559-1131}
+}
+
+\DeclareOption{acmtkdd}{
+ \typeout{}
+ \typeout{Using ACM, TKDD option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddtrue
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}
+ \def\@journalCode{tkdd}
+ \def\@permissionCodeOne{1556-4681}
+}
+
+\DeclareOption{acmtrets}{
+ \typeout{}
+ \typeout{Using ACM, TRETS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretstrue
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}
+ \def\@journalCode{trets}
+ \def\@permissionCodeOne{1936-7406}
+}
+
+\DeclareOption{acmtmis}{
+ \typeout{}
+ \typeout{Using ACM, TMIS option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmistrue
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Management Information Systems}
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}
+ \def\@journalCode{tmis}
+ \def\@permissionCodeOne{2158-656X}
+}
+
+\DeclareOption{acmtiis}{
+ \typeout{}
+ \typeout{Using ACM, TIIS option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiistrue
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}
+ \def\@journalCode{tiis}
+ \def\@permissionCodeOne{2160-6455}
+}
+
+\DeclareOption{acmtist}{
+ \typeout{}
+ \typeout{Using ACM, TIST option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtisttrue
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}
+ \def\@journalCode{tist}
+ \def\@permissionCodeOne{2157-6904}
+}
+
+\DeclareOption{acmtoct}{
+ \typeout{}
+ \typeout{Using ACM, TOCT option: 2011/10/31 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtocttrue
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Computation Theory}
+ \def\@journalNameShort{ACM Trans. Comput. Theory}
+ \def\@journalCode{toct}
+ \def\@permissionCodeOne{1942-3454}
+}
+
+\DeclareOption{acmjdiq}{
+ \typeout{}
+ \typeout{Using ACM, JDIQ option: 2011/10/31 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqtrue
+ \global\@acmtaccessfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Journal of Data and Information quality}
+ \def\@journalNameShort{ACM J. Data Inform. Quality}
+ \def\@journalCode{jdiq}
+ \def\@permissionCodeOne{1936-1955}
+}
+
+\DeclareOption{acmtaccess}{
+ \typeout{}
+ \typeout{Using ACM, TACCESS option: 2011/10/31 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccesstrue
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Accessible Computing}
+ \def\@journalNameShort{ACM Trans. Access. Comput.}
+ \def\@journalCode{taccess}
+ \def\@permissionCodeOne{1936-7228}
+}
+
+\DeclareOption{acmtoce}{
+ \typeout{}
+ \typeout{Using ACM, TOCE option: 2011/10/31 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocetrue
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Computing Education}
+ \def\@journalNameShort{ACM Trans. Comput. Educ.}
+ \def\@journalCode{toce}
+ \def\@permissionCodeOne{1946-6226}
+}
+
+\DeclareOption{acmteac}{
+ \typeout{}
+ \typeout{Using ACM, TEAC option: 2012/07/04 by Orna Agmon Ben-Yehuda}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteactrue
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Economics and Computation}
+ \def\@journalNameShort{ACM Trans. Econ. Comp.}
+ \def\@journalCode{teac}
+ \def\@permissionCodeOne{1946-6227}
+}
+%
+%%
+%% TeXSupport: Added TOMM from acmlarge design on 2014/05/28
+%%
+\DeclareOption{acmtomm}{
+ \typeout{}
+ \typeout{Using ACM, TOMM's option: 2014/05/28 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommtrue
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+% \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}
+ \def\@journalName{ACM Trans. Multimedia Comput. Commun. Appl.}
+ \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}
+ \def\@permissionCodeOne{1551-6857}
+ \def\@permissionCodeTwo{0100}
+}
+%
+%%
+%% TeXSupport: Added new journal TSAS on 2014/09/10
+%%
+\DeclareOption{acmtsas}{
+ \typeout{}
+ \typeout{Using ACM, TSAS's option: 2014/09/10 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsastrue
+ \global\@acmtompecsfalse
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}
+ \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}
+ \def\@permissionCodeOne{2374-0353}
+}
+%
+%%
+%% TeXSupport: Added new journal TOMPECS on 2014/09/10
+%%
+\DeclareOption{acmtompecs}{
+ \typeout{}
+ \typeout{Using ACM, TOMPECS's option: 2014/09/10 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecstrue
+ \global\@acmtcpsfalse
+ \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}
+ \def\@journalName{ACM Trans. Model. Perform. Eval. Comput. Syst.}
+ \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}
+ \def\@permissionCodeOne{2376-3639}
+}
+%
+%%
+%% TeXSupport: Added new journal TCPS on 2015/08/27
+%%
+\DeclareOption{acmtcps}{
+ \typeout{}
+ \typeout{Using ACM, TCPS's option: 2015/08/27 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtallipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \global\@acmtoctfalse
+ \global\@acmjdiqfalse
+ \global\@acmtaccessfalse
+ \global\@acmtallipfalse
+ \global\@acmtiisfalse
+ \global\@acmtocefalse
+ \global\@acmteacfalse
+ \global\@acmtommfalse
+ \global\@acmtsasfalse
+ \global\@acmtompecsfalse
+ \global\@acmtcpstrue
+ \def\@journalName{ACM Transactions on Cyber-Physical Systems}
+ \def\@journalNameShort{ACM Trans. Cyber-Phys. Syst.}
+ \def\@permissionCodeOne{2378-962X}
+}
+%
+\ExecuteOptions{twoside,final,10pt,letterpaper}
+\ProcessOptions
+
+\RequirePackage{ifpdf}%
+\ifpdf
+\pdfpagewidth=8.5in
+\pdfpageheight=11in
+\fi
+
+
+% Including fonts for Production Mode
+\ifprod@mode
+% New Century Schoolbook as base font
+\renewcommand\rmdefault{pnc}
+% Helvetica as second font
+\renewcommand\sfdefault{phv}
+\fi
+
+% Packages required
+\RequirePackage{latexsym}
+\RequirePackage{color}
+\usepackage{graphicx}
+
+
+\typeout{Document Class `acmsmall' Electronic Submissions
+\fileversion\space <\filedate> (ACM).}
+
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\def\articleSeq#1{\def\@articleSeq{#1}}
+\def\acmPrice#1{\def\@acmPrice{#1}}
+\def\acmYear#1{\def\@acmYear{#1}}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\def\doi#1{\def\@doi{#1}}
+
+
+%To transform the month number in its name in English
+\newcommand{\monthWord}[1]{\ifcase#1\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\else Month\fi}
+
+\newcommand{\monthInf}[1]{\ifcase#1\or
+ 01\or 02\or 03\or 04\or 05\or 06\or
+ 07\or 08\or 09\or 10\or 11\or 12\else 00\fi}
+
+% First and Last page
+\newcount\@firstpg
+\newcount\@lastpg
+\def\lastpage#1{\global\advance\@lastpg#1\relax}
+\AtEndDocument{\ifelec@app\else\immediate\write\@mainaux{\string\lastpage{\the\c@page}}\fi}
+
+\newdimen\trimheight
+\newdimen\trimwidth
+\newdimen\normaltextheight
+\newdimen\tempdimen
+\newbox\tempbox
+\newbox\tbbox
+\newdimen\tabledim
+
+% Extra symbol
+\DeclareSymbolFont{newlargesymbols}{OMX}{cmex}{m}{n}
+\DeclareMathSymbol{\bigsqcup}{\mathop}{newlargesymbols}{"46}
+
+% Bold Math
+\def\boldmath{\mathversion{bold}}
+\def\bm#1{\mathchoice
+ {\mbox{\boldmath$\displaystyle#1$}}%
+ {\mbox{\boldmath$#1$}}%
+ {\mbox{\boldmath$\scriptstyle#1$}}%
+ {\mbox{\boldmath$\scriptscriptstyle#1$}}}
+
+% Font information
+\lineskip1\p@
+\normallineskip1\p@
+\def\baselinestretch{1}
+\def\@ptsize{0} % needed for amssymbols.sty
+
+\@maxdepth\maxdepth
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
+\newcommand{\mit}{\protect\pmit}
+\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
+\def\cal{\mathcal}
+
+\renewcommand{\@ptsize}{}
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@xpt{11\p@}%
+ \abovedisplayskip .5\baselineskip \@plus2\p@ \@minus\p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 6\p@ \@minus 3\p@
+ \belowdisplayshortskip 6\p@ \@minus 3\p@
+ \let\@listi\@listI
+}
+\newcommand{\small}{%
+ \@setfontsize\small\@ixpt{10\p@}%
+ \abovedisplayskip 5\p@ \@plus 2\p@ \@minus \p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 5\p@ \@minus 2\p@
+ \belowdisplayshortskip 5\p@ \@minus 2\p@
+ \def\@listi{%
+ \leftmargin\leftmargini
+ \topsep 5\p@ \@plus 2\p@ \@minus .2\p@
+ \parsep \z@ \@plus .7\p@
+ \itemsep 1.6\p@ \@plus .8\p@}%
+}%
+
+\newcommand{\footnotesize}{%
+ \@setfontsize\footnotesize\@viiipt{9\p@}%
+ \abovedisplayskip 4\p@ \@plus \p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 4\p@ \@minus \p@
+ \belowdisplayshortskip 4\p@ \@minus \p@
+ \def\@listi{%
+ \leftmargin\leftmargini
+ \topsep 4\p@ \@plus \p@
+ \parsep \z@ \@plus .5\p@
+ \itemsep \p@ \@plus .7\p@}
+}%
+\normalsize
+
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{14}}
+\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+
+\def\rhfont{\fontfamily{\sfdefault}\fontsize{9}{10}\selectfont}
+\def\rfootfont{\fontsize{7}{8}\selectfont}
+\def\foliofont{\fontfamily{\sfdefault}\fontsize{9}{10}\selectfont}
+
+\def\sectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries\raggedright}
+\def\refsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries}
+\def\subsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries\raggedright}
+\def\subsubsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\itshape\raggedright}
+\def\paragraphfont{\fontsize{10}{11}\selectfont\itshape}
+
+\def\figcaptionfont{\fontsize{8}{9}\selectfont}%
+\def\figcaptionnumfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\subcaptionfont{\fontsize{8}{10}\selectfont}%
+\def\subcaption#1{{\centering\subcaptionfont#1\par}}
+
+\def\tablefont{\fontsize{8}{9}\selectfont}%
+\def\intexttablefont{\fontsize{8}{9}\selectfont\centering}%
+\def\tablecaptionfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\tablenumfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\tabnotefont{\fontsize{8}{9}\selectfont}
+\def\ackfont{\fontsize{8}{10}\selectfont}
+
+\setlength\trimheight {10in}
+\setlength\trimwidth {6.75in}
+
+\textheight 48pc
+\advance\textheight-7.3pt
+\setlength\normaltextheight{\textheight}
+
+\textwidth 33pc
+\oddsidemargin .625in
+\evensidemargin\trimwidth
+\advance\evensidemargin-\oddsidemargin
+\advance\evensidemargin-\textwidth
+
+\marginparwidth .5in
+\marginparsep .125in
+\topmargin 36pt
+\headheight 6.5\p@
+\topskip6.2pt
+\headsep 17.5pt
+\parindent10\p@
+\newdimen\normalparindent
+\normalparindent\parindent
+
+\newlength{\footheight}%
+\footheight 10\p@
+\footskip 28\p@
+
+\columnsep 12\p@
+\columnseprule 0\p@
+
+\footnotesep 7\p@
+\skip\footins 15\p@ plus 4\p@ minus 3\p@
+\floatsep 1\baselineskip plus 2\p@ minus 2\p@
+\textfloatsep \floatsep
+\intextsep 1pc plus 1pc
+
+\newlength{\@maxsep}%
+\@maxsep 1pc
+
+\dblfloatsep 1\baselineskip plus 2\p@ minus 2\p@
+\dbltextfloatsep 20\p@ plus 2\p@ minus 4\p@
+
+\newlength{\@dblmaxsep}%
+\@dblmaxsep 20\p@
+
+\@fptop 0\p@ plus 1fil
+\@fpsep 1pc plus 2fil
+\@fpbot 0\p@ plus 1fil
+\@dblfptop 0\p@ plus 1fil
+\@dblfpsep 8\p@ plus 2fil
+\@dblfpbot 0\p@ plus 1fil
+
+\marginparpush 6\p@
+
+\parskip0\p@
+\partopsep 0\p@
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+
+\setcounter{topnumber}{3}
+\def\topfraction{.99}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.5}
+\setcounter{totalnumber}{3}
+\def\textfraction{.01}
+\def\floatpagefraction{.85}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+% ISSN
+%
+\def\issn#1{\gdef\@issn{#1}}
+\issn{}
+
+% Copyright Information
+%
+\RequirePackage{acmcopyright}
+
+% Calculating total pages
+\newcount\@totalpg
+\def\acmPages#1{\def\@acmPages{#1}}
+\acmPages{\@totalpg\@lastpg\global\advance\@totalpg-\@firstpg\global\advance\@totalpg\@ne\ifnum\the\@totalpg<\z@0\else\the\@totalpg\fi\ pages}
+
+% Reference Format
+\gdef\formatline{{\em{\@journalNameShort\ }}\@acmVolume, \@acmNumber, Article~\@acmArticle\ (\monthWord{\@acmMonth}\ \@acmYear), \@acmPages.\\ % Need Journal Name in italics - in 'ACM Reference Format' before 1. INTRODUCTION - Gerry - March 2012
+{\tt DOI:} \@doi} % Gerry March 2012 - on first page in 'ACM Reference Format'
+\gdef\copyrightline{%
+ \if@printcopyright
+ \copyright\ \@acmYear\ \@copyrightowner\
+ \else
+ \@acmYear\
+ \fi
+ \@permissionCodeOne/\@acmYear/\monthInf{\@acmMonth}-ART\@acmArticle\
+ \$\@acmPrice}
+\gdef\doiline{{\tt DOI:} \@doi} % Gerry - March 2012 - beneath copyright line
+
+
+
+% Page Style
+\mark{{}{}}
+
+\def\ps@headings{%
+ \let\@mkboth\@gobbletwo
+ \def\@oddhead{{\rhfont\rightmark}\hfill{\foliofont \@acmArticle:\thepage}}%
+ \def\@evenhead{{\foliofont \@acmArticle:\thepage}\hfill{\rhfont\leftmark}}%
+ \def\@evenfoot{\null\hfill{\rfootfont\@runningfoot}}
+ \def\@oddfoot{{\rfootfont\@runningfoot} \hfill\null}%
+ \let\partmark\@gobble
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+}
+
+\def\ps@appheadings{%
+ \let\@mkboth\@gobbletwo
+ \def\@oddhead{{\rhfont\rightmark}\hfill{\foliofont \thepage}}%
+ \def\@evenhead{{\foliofont \thepage}\hfill{\rhfont\leftmark}}%
+ \def\@evenfoot{\null\hfill{\rfootfont\@runningfoot}}
+ \def\@oddfoot{{\rfootfont\@runningfoot} \hfill\null}%
+ \let\partmark\@gobble
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+}
+
+\def\@runningfoot{}
+\def\runningfoot#1{\gdef\@runningfoot{#1}}
+
+\if@acmtodaes
+ \def\pubphrase{Pub. date}
+\else
+\if@acmtosem
+ \def\pubphrase{Pub. date}
+\else
+\if@acmjetc
+ \def\pubphrase{Pub. date}
+\else
+\if@acmtiis
+ \def\pubphrase{Pub. date}
+\else
+ \def\pubphrase{Publication date}
+\fi\fi\fi\fi
+
+\runningfoot{\@journalName, Vol.~\@acmVolume, No.~\@acmNumber, Article~\@acmArticle,\ \pubphrase:\ \monthWord{\@acmMonth}\ \@acmYear.}
+
+\def\@firstfoot{}
+\gdef\firstfoot{\@journalName, Vol.~\@acmVolume,\ No.~\@acmNumber,\ Article\ \@acmArticle,\ \pubphrase:\ \monthWord{\@acmMonth}\ \@acmYear.}
+
+\def\ps@titlepage{%
+ \let\@mkboth\@gobbletwo
+ \let\@oddhead\@empty
+ \def\@oddfoot{\null\hfill\fontsize{7}{8}\selectfont\firstfoot}
+ \let\@evenhead\@empty
+ \def\@evenfoot{\fontsize{7}{8}\selectfont\firstfoot\hfill\null}%
+}
+
+\def\titlepage{%
+ \@restonecolfalse
+ \if@twocolumn
+ \@restonecoltrue
+ \onecolumn
+ \else
+ \newpage
+ \fi
+ \thispagestyle{empty}%
+ \c@page\z@
+}
+
+\def\endtitlepage{%
+ \if@restonecol
+ \twocolumn
+ \else
+ \newpage
+ \fi
+}
+
+% Author and Affiliation
+\def\author#1{\gdef\@author{#1}}%
+\def\and{{\upshape and }}
+\def\affil#1{\gdef\@affil{#1}\ifx\@affil\@empty\else{\reset@font\affilfont\unskip,\ #1\vphantom{gy}\endgraf}\fi}\affil{}
+
+\def\titlefont{\fontfamily{\sfdefault}\fontsize{12}{12}\selectfont\bfseries}
+\def\authorfont{\fontfamily{\sfdefault}\fontsize{10}{11}\rightskip0pt plus1fill\selectfont}
+\def\affilfont{\fontfamily{\rmdefault}\fontsize{8}{11}\rightskip0pt plus1fill\selectfont}
+\def\abstractfont{\fontsize{8}{10}\selectfont}
+
+% Article Title page
+\def\maketitle{%
+ \newpage
+ \thispagestyle{titlepage}%
+ \global\@topnum\z@
+ \begingroup
+ \lineskip \z@
+ \null
+ \vskip -15.4\p@\relax
+ \parindent\z@
+ \begingroup
+ \raggedright
+ \hyphenpenalty\@M
+ {\titlefont\@title\par}
+ \global\@firstpg\the\c@page
+ \endgroup
+ \vskip 12\p@
+ \begingroup
+
+ {\addtolength{\baselineskip}{2\p@}%
+ {\authorfont\@author\par}
+ \vskip7pt
+ \ifx \@sponsors\@empty
+ \else
+ \hbox{\vrule height .2\p@ width \textwidth}
+ \@sponsors \par
+ \fi
+ }
+\endgroup
+ \par\vskip 22\p@\box\@abstract
+ \par%
+ \ifx\@categories\@empty
+ \else
+ \abstractfont
+ \vskip 4\p@\relax
+ \def\and{\unskip{\rm;} }%
+ \noindent Categories and Subject Descriptors: \@categories\par
+ \fi
+ \ifx\@concepts\@empty % Added 2012/10/09
+ \else
+ \abstractfont
+ \vskip 4\p@\relax
+ \noindent CCS Concepts: \@concepts\par
+ \fi
+ \ifx\@terms\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent General Terms: \ignorespaces
+ \@terms
+ \par
+ \fi
+ \ifx\@keywords\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent Additional Key Words and Phrases: \ignorespaces
+ \@keywords
+ \par
+ \fi
+ \ifx\@acmformat\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent {\bf ACM Reference Format:}\\
+ \@acmformat\vskip 0.5\p@
+ \par
+ \fi
+ \par
+ \endgroup
+ \let\maketitle\relax
+ \global\let\@sponsors\@empty
+ \global\let\@categories\@empty
+ \global\let\@concepts\@empty
+ \global\let\@terms\@empty
+ \global\let\@keywords\@empty
+ }
+
+% Sponsor
+\def\sponsor#1{\@ifnextchar
+ [{\@sponsor{#1}}{\@xsponsor{#1}}}
+\def\@sponsor#1[#2]{\edef\@tempa{\ifx \@sponsors\@empty
+ \else ; \fi}{\def\protect{\noexpand\protect
+ \noexpand}\def\and{\noexpand\and}\xdef\@sponsors{\@sponsors\@tempa #1 }}}
+\def\@xsponsor#1{\edef\@tempa{\ifx \@sponsors\@empty \else ;
+\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
+ \and}\xdef\@sponsors{\@sponsors\@tempa #1}}}
+\def\@sponsors{}
+
+% Abstract
+\newbox\@abstract
+\def\abstract{
+\global\setbox\@abstract=\vbox\bgroup\everypar{}%
+\abstractfont\noindent\ignorespaces}
+\def\endabstract{\egroup}
+
+% Terms
+\def\terms#1{\gdef\@terms{#1}}
+\let\@terms\@empty
+
+% Keywords
+\def\keywords#1{\gdef\@keywords{#1}}
+\let\@keywords\@empty
+
+% Reference Format
+\def\acmformat#1{\gdef\@acmformat{#1 \formatline\vphantom{y}}}
+\let\@acmformat\@empty
+
+% Category
+\def\category#1#2#3{%
+ \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}}
+\def\@category#1#2#3[#4]{%
+ \edef\@tempa{\ifx \@categories\@empty \else ; \fi}%
+ \begingroup
+ \def\protect{\noexpand\protect\noexpand}%
+ \let\and\relax
+ \xdef\@categories{%
+ \@categories
+ \@tempa
+ #1 [{\bf #2}]%
+ \if!#4!%
+ \if!#3!\else : #3\fi
+ \else
+ :\space
+ \if!#3!\else #3\kern\z@---\hskip\z@\fi
+ {\it #4}%
+ \fi
+ }%
+ \endgroup
+}
+
+% Support for CCSXML file
+\RequirePackage{comment}
+\excludecomment{CCSXML}
+
+% New concepts scheme
+\let\@concepts\@empty
+%
+% The first argument is the significance, the
+% second is the concept(s)
+%
+\newcommand\ccsdesc[2][100]{%
+ \ccsdesc@parse#1~#2~}
+%
+% The parser of the expression Significance~General~Specific
+%
+\def\ccsdesc@parse#1~#2~#3~{%
+ \expandafter\ifx\csname CCS@#2\endcsname\relax
+ \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }%
+ \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi
+ \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{%
+ \ifnum#1>499\textbf{#3; }\else
+ \ifnum#1>299\textit{#3; }\else
+ #3; \fi\fi}}
+
+% Permission Information
+\newbox\@permissionbox
+\newenvironment{permission}{%
+ \footnotesize
+ \global\setbox\@permissionbox\vbox\bgroup\par\addvspace{3.1pt}\noindent\ignorespaces
+ }{%
+ \par\egroup}
+%
+\let\@categories\@empty
+\def\bottomstuff{%
+ \global\@topnum\z@
+ \global\@botroom \textheight
+ \@float{figure}[b]
+ \footnotesize
+ \parindent\z@
+ \null
+ \vskip -\textfloatsep
+ \vskip 6\p@ plus2pt minus2pt
+ \hrule \@height .5\p@ \@width \textwidth
+ \vskip 6\p@ %7.5
+ \ignorespaces
+}
+\def\endbottomstuff{\par%
+ \@copyrightpermission
+ \par\box\@permissionbox
+ \copyrightline\par
+ \doiline
+ \vskip-13pt
+ \strut
+\end@float
+}
+
+% Heads
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\def\thepart{\Roman{part}}
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+
+% for checking Uppercase heads
+\newif\if@uchead\@ucheadfalse
+
+\setcounter{secnumdepth}{3}
+\def\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\normalsize\itshape\@ucheadtrue}}
+\def\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\sectionfont\@ucheadtrue}}
+\def\refsection{\@startsection{section}{1}{\z@}%
+ {-1\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.5\baselineskip}%
+ {\refsectionfont\@ucheadtrue}}
+\def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\subsectionfont}}
+\def\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}{\subsubsectionfont}}
+\def\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\paragraphfont}}
+
+\def\@seccntformat#1{\csname the#1\endcsname.\hskip .4em}
+\let\@period=.
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@svsec{\begingroup\csname the#1\endcsname\endgroup\relax .\hskip .4em}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M \if@uchead\MakeUppercase{#8}\else#8\fi\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par
+ \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \global\@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ \clubpenalty\@M
+ \hskip -\parindent
+ \begingroup
+ \@svsechd
+ \@period
+ \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi
+ }%
+ \fi
+ \ignorespaces
+}
+
+% Lists
+\def\@trivlist{%
+ \@topsepadd\topsep
+ \if@noskipsec
+ \global\let\@period\@empty
+ \leavevmode
+ \global\let\@period.%
+ \fi
+ \ifvmode
+ \advance\@topsepadd\partopsep
+ \else
+ \unskip
+ \par
+ \fi
+ \if@inlabel
+ \@noparitemtrue
+ \@noparlisttrue
+ \else
+ \@noparlistfalse
+ \@topsep\@topsepadd
+ \fi
+ \advance\@topsep \parskip
+ \leftskip\z@skip
+ \rightskip\@rightskip
+ \parfillskip\@flushglue
+ \@setpar{\if@newlist\else{\@@par}\fi}
+ \global\@newlisttrue
+ \@outerparskip\parskip
+}
+\labelsep 5\p@
+
+\settowidth{\leftmargini}{9.}
+\addtolength\leftmargini\labelsep
+
+\settowidth{\leftmarginii}{(b)}
+\addtolength\leftmarginii\labelsep
+
+\leftmarginiii \leftmarginii
+\leftmarginiv \leftmarginii
+\leftmarginv \leftmarginii
+\leftmarginvi \leftmarginii
+\leftmargin \leftmargini
+
+\labelwidth\leftmargini
+\advance\labelwidth-\labelsep
+\def\@listI{%
+ \leftmargin\leftmargini
+ \parsep \z@
+ \topsep .5\baselineskip \@plus 2\p@%
+ \itemsep\z@%
+}
+
+\let\@listi\@listI
+
+\@listi
+\def\@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \z@
+ \itemsep \parsep
+}
+\def\@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \z@ \@plus \p@
+ \parsep \z@
+ \itemsep \parsep
+}
+\def\@listiv{%
+ \leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep
+}
+\def\@listv{%
+ \leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep
+}
+\def\@listvi{%
+ \leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep
+}
+\newdimen\enumdim
+\def\enummax#1{%
+ \setbox\tempbox\hbox{#1\hskip\labelsep}%
+ \enumdim\wd\tempbox
+ \expandafter\global\csname leftmargin\romannumeral\the\@enumdepth\endcsname
+ \enumdim}
+
+\enummax{1.}
+\def\enumerate{\@ifnextchar[{\@enumerate}{\@enumerate[\csname label\@enumctr\endcsname]}}%%
+\def\@enumerate[#1]{\par\abovedisplayskip .25\baselineskip \@plus2\p@
+ \belowdisplayskip .25\baselineskip \@plus2\p@
+ \ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \setcounter{\@enumctr}{1}\enummax{#1}%
+ \list
+ {\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}%
+ \def\makelabel##1{\hss\llap{##1}}}\fi}
+\def\endenumerate{\endlist}%%
+\def\longenum{%
+ \leftmargin0pt
+ \ifnum \@enumdepth >3
+ \@toodeep
+ \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \list{\csname label\@enumctr\endcsname}{%
+ \usecounter{\@enumctr}%
+ \labelwidth\z@\leftmargin0pt
+ \itemindent\parindent\advance\itemindent\labelsep
+ }%
+ \fi
+}
+\let\endlongenum\endlist
+
+\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\texthyphen}%
+\newcommand\labelitemii{\texthyphen}%
+\newcommand\labelitemiii{\texthyphen}%
+\newcommand\labelitemiv{\texthyphen}%
+\font\lcir = lcircle10 at 8pt
+\newcommand\bulls{\raise1.5pt\hbox{\lcir\char'162}}
+\def\textbullet{\leavevmode\raise2pt\hbox{\bulls}}
+\def\texthyphen{---}
+\newif\ifhyphen\hyphenfalse
+
+\def\itemize{%
+ \ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\advance\leftmargin-5.7pt\labelsep2pt
+ \def\makelabel##1{\hss\llap{##1}}}\fi}%
+\let\enditemize =\endlist
+
+\newenvironment{hyphenlist}{%
+ \hyphentrue
+ \renewcommand\labelitemi{\texthyphen}%
+ \renewcommand\labelitemii{\texthyphen}%
+ \renewcommand\labelitemiii{\texthyphen}%
+ \renewcommand\labelitemiv{\texthyphen}%
+ \begin{itemize}
+}{%
+ \end{itemize}
+ \hyphenfalse}
+%
+\newenvironment{bulletlist}{%
+\leftmargini20pt
+ \renewcommand\labelitemi{\textbullet}%
+ \renewcommand\labelitemii{\textbullet}%
+ \renewcommand\labelitemiii{\textbullet}%
+ \renewcommand\labelitemiv{\textbullet}%
+ \begin{itemize}
+}{%
+ \end{itemize}}
+
+\def\longitem{%
+ \list{---}{%
+ \labelwidth\z@
+ \leftmargin\z@
+ \itemindent\parindent
+ \advance\itemindent\labelsep
+ }%
+}
+\let\endlongitem\endlist
+\def\verse{%
+ \let\\=\@centercr
+ \list{}{%
+ \leftmargin 2pc
+ \itemindent -1.5em
+ \listparindent \itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin 1.5em
+ }%
+ \item[]
+}
+
+\let\endverse\endlist
+\def\quotation{%
+ \list{}{%
+ \leftmargin 2pc
+ \listparindent .5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep \z@ \@plus \p@
+ }%
+ \item[]
+}
+
+\let\endquotation=\endlist
+\def\quote{%
+ \list{}{%
+ \leftmargin 2pc
+ \rightmargin\leftmargin
+ }%
+ \item[]
+}
+
+\let\endquote=\endlist
+%
+\def\extractfont{\fontsize{8}{10}\selectfont\leftskip8pt\rightskip8pt}
+\newenvironment{extract}{\par\addvspace{7pt plus2pt}
+\parindent8pt
+\extractfont
+\noindent\ignorespaces
+}{%
+\par\addvspace{6pt plus2pt}}
+
+\def\descriptionlabel#1{%
+ \hspace\labelsep \normalfont\itshape #1.%
+}%
+\newenvironment{description}{%
+ \list{}{%
+ \labelwidth\z@
+ \let\makelabel\descriptionlabel
+ }
+}{\endlist}%
+
+\def\describe#1{%
+ \list{}{%
+ \listparindent\parindent
+ \settowidth{\labelwidth}{#1}%
+ \leftmargin\labelwidth
+ \addtolength\leftmargin\labelsep
+ \def\makelabel##1{##1\hfil}%
+ }%
+}
+\let\enddescribe\endlist
+
+\def\program{%
+ \ifx\@currsize\normalsize
+ \small
+ \else
+ \rm
+ \fi
+ \tabbing
+}
+\let\endprogram\endtabbing
+
+% Enunciations
+\newif\ifitalicenv\italicenvtrue
+
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{conjecture}[theorem]{Conjecture}
+\newtheorem{proposition}[theorem]{Proposition}
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{corollary}[theorem]{Corollary}
+%
+\newtheorem{exam}[theorem]{Example}
+\newenvironment{example}{%
+\italicenvfalse
+\begin{exam}}{\end{exam}\italicenvtrue}
+%
+\newtheorem{defi}[theorem]{Definition}
+\newenvironment{definition}{%
+\italicenvfalse
+\begin{defi}}{\end{defi}\italicenvtrue}
+
+\def\@begintheorem#1#2{%
+ \trivlist
+ \item[%
+ \hskip 12\p@
+ \hskip \labelsep
+ {\ifitalicenv\sc\else\itshape\fi #1\hskip 5\p@\relax{\rm #2}.\enspace}]%
+ \ifitalicenv\itshape\else\upshape\fi\hskip-\labelsep%
+}
+\def\@opargbegintheorem#1#2#3{%
+ \trivlist
+ \item[\hskip 12pt
+ \hskip \labelsep
+ {\ifitalicenv{\sc{#1}}\else{\itshape#1}\fi%
+ \savebox\@tempboxa{\ifitalicenv{\scshape#3}\else{\itshape#3}\fi}%
+ \ifdim\wd\@tempboxa>\z@%
+ \ {\rm #2}\unskip\hskip5pt\relax$($\box\@tempboxa$)$%
+ \fi.\unskip\hskip5pt}]
+\ifitalicenv\itshape\else\upshape\fi\hskip-\labelsep}
+
+\newif\if@qeded
+\global\@qededfalse
+\def\proof{%
+ \global\@qededfalse
+ \@ifnextchar[{\@xproof}{\@proof}}
+
+\def\endproof{%
+ \if@qeded\else\qed\fi
+ \endtrivlist
+}
+\def\@proof{%
+ \trivlist
+ \item[%
+ \hskip 12\p@
+ \hskip \labelsep
+ {\sc Proof.\enspace}]\hskip-\labelsep%
+ \ignorespaces
+}
+\def\@xproof[#1]{%
+ \trivlist
+ \item[\hskip 12\p@\hskip \labelsep{\sc Proof #1.}]%
+ \ignorespaces
+}
+\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(5,5){}}
+ \global\@qededtrue
+ }%
+\def\newdef#1#2{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \global\@namedef{#1}{\@defthm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}%
+ }%
+}
+\def\@defthm#1#2{%
+ \refstepcounter{#1}%
+ \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%
+}
+\def\@xdefthm#1#2{%
+ \@begindef{#2}{\csname the#1\endcsname}%
+ \ignorespaces
+}
+\def\@ydefthm#1#2[#3]{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #2%
+ \savebox\@tempboxa{#3}%
+ \ifdim \wd\@tempboxa>\z@
+ \ \box\@tempboxa
+ \fi.%
+ }]%
+ \ignorespaces
+}
+\def\@begindef#1#2{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #1\ \rm #2.}%
+ ]%
+}
+
+% Maths
+\def\theequation{\arabic{equation}}
+
+\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}
+\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil
+ \or \hfil$\relax\displaystyle\@sharp$\fi}}
+\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz
+ \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray}
+\def\endmarray{\crcr\egroup\egroup}
+
+\arraycolsep 2.5\p@
+\tabcolsep 6\p@
+\arrayrulewidth .25\p@
+\doublerulesep 2\p@
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4\p@
+
+% Table of Contents
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+\def\tableofcontents{%
+ \section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}%
+}
+\def\l@part#1#2{%
+ \addpenalty\@secpenalty
+ \addvspace{2.25em \@plus \p@}%
+ \begingroup
+ \@tempdima 3em
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+ \endgroup
+}
+\def\l@section#1#2{%
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus \p@}%
+ \@tempdima 1.5em
+ \begingroup
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+
+% List of figures
+\def\listoffigures{%
+ \section*{List of Figures\@mkboth{LIST OF FIGURES}{LIST OF FIGURES}}
+ \@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+% List of tables
+\def\listoftables{%
+ \section*{List of Tables\@mkboth{LIST OF TABLES}{LIST OF TABLES}}
+ \@starttoc{lot}}
+\let\l@table\l@figure
+
+% Index
+\newif\if@restonecol
+\def\theindex{%
+ \@restonecoltrue
+ \if@twocolumn \@restonecolfalse \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}%
+ \thispagestyle{plain}%
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem
+}
+
+\def\endtheindex{%
+ \if@restonecol
+ \onecolumn
+ \else
+ \clearpage
+ \fi
+}
+\def\@idxitem{\par\hangindent 40\p@}
+\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
+\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+\def\indexspace{\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@\relax}
+
+% Footnote
+\def\footnoterule{%
+ \kern-3\p@
+ \hrule \@width 36\p@ \@height 0.25\p@
+ \kern 3\p@
+}
+\long\def\@makefntext#1{%
+ \parindent 1em
+ \noindent $^{\@thefnmark}$#1%
+}
+
+% Figures and Tables
+\newlength\belowcaptionskip
+\newlength\abovecaptionskip
+\setlength\belowcaptionskip{3.5\p@}
+\setlength\abovecaptionskip{6\p@}
+
+\def\nocaption{\refstepcounter\@captype \par
+ \vskip 1pc \hbox to\hsize{\hfil \figcaptionnumfont Figure \thefigure
+ \hfil}}
+
+\def\FigName{figure}%
+\long\def\@caption#1[#2]#3{\par\begingroup
+ \@parboxrestore
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+\long\def\@makecaption#1#2{%
+ \ifx\FigName\@captype\baselineskip10pt
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{\figcaptionfont{\figcaptionnumfont#1}.\hskip7.3pt\relax #2\par}%
+ \ifdim \wd\@tempboxa >\hsize
+ \figcaptionfont{\figcaptionnumfont#1}.\hskip7.3pt\relax #2\par
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+ \else%
+ \setbox\tbbox=\vbox{\hsize\tempdimen\tablecaptionfont{\tablenumfont #1.\ }{#2\par}}%
+ \setbox\@tempboxa\hbox{\hsize\tempdimen\tablecaptionfont{\tablenumfont #1.}\ {#2\par}}%
+ \ifdim \wd\@tempboxa >\tempdimen
+ \centerline{\box\tbbox}%
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+ \vskip\belowcaptionskip
+ \fi
+}
+%
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%
+\newif\ifcontinued
+\global\continuedfalse
+%
+\def\continued{\global\continuedtrue}
+%
+\def\fnum@figure{\ifcontinued\global\continuedfalse\addtocounter{figure}{-1} Fig.~\thefigure---{\it Continued}\else Fig.~\thefigure\fi}%
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+%
+\newcounter{table}
+\renewcommand\thetable{\Roman{table}}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\tablename{Table}
+\def\fnum@table{\ifcontinued\addtocounter{table}{-1} Table~\thetable---{\it Continued} \else Table~\thetable\fi}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+
+\long\def\tbl#1#2{%
+\setbox\tempbox\hbox{\tablefont #2}%
+\tabledim\hsize\advance\tabledim by -\wd\tempbox
+\tempdimen\wd\tempbox
+\global\divide\tabledim\tw@
+\caption{#1\protect\vphantom{yp}}
+\centerline{\box\tempbox}}%
+
+\newenvironment{intexttable}{\par\addvspace{1.2pt plus2pt}
+\intexttablefont
+}{%
+\par\addvspace{7pt plus2pt}}
+
+\newenvironment{tabnote}{%
+\par\vskip5pt
+\tabnotefont
+\@ifnextchar[{\@tabnote}{\@tabnote[]}}{%
+\par}
+\def\@tabnote[#1]{\def\@Tempa{#1}\leftskip\tabledim\rightskip\leftskip\ifx\@Tempa\@empty\else{\it #1:}\ \fi\ignorespaces}
+
+\def\tabnoteentry#1#2{\parindent0pt\par{#1}{#2}}
+\def\Note#1#2{\parindent0pt\par{\it #1}\ #2}
+
+\newdimen\@narrowfig
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven
+\def\acmtable#1{%
+ \@narrowfig #1\relax
+ \let\caption\@atcap
+ \let\nocaption\@atnocap
+ \@ifnextchar[{\@ntab}{\@ntab[\fps@table]}%
+}
+
+\def\@ntab[#1]{%
+ \expandafter\table\expandafter[#1]%
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig
+ \@parboxrestore
+}
+
+\def\endacmtable{%
+ \hb@xt@\textwidth{%
+ \hfil
+ \vbox{%
+ \hsize \@narrowfig
+ \box\@nfcapbox{%
+ \baselineskip 4\p@
+ \hbox{\vrule \@height .4\p@ \@width \hsize}%
+
+ }%
+ \vskip -\p@
+ \box\@nfigbox
+ \vskip -\p@
+ \begingroup
+ \baselineskip 4\p@
+ \hbox{\vrule \@height .4\p@ \@width \hsize}%
+ \endgroup
+ }%
+ \hfil
+ }%
+ \end@float
+}
+\def\@atmakecap#1#2{%
+ \setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \sloppy #1.\hskip 1em\relax #2 \par
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+}
+\def\@atcap{%
+ \par
+ \egroup
+ \refstepcounter\@captype
+ \@dblarg{\@atcapx\@captype}%
+}
+\long\def\@atcapx#1[#2]#3{%
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \setbox\@nfcapbox\vbox{%
+ \hsize \wd\@nfigbox
+ \@parboxrestore
+ \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+ \par
+ }%
+}
+\def\@atnocap{%
+ \egroup
+ \refstepcounter\@captype
+ \setbox\@nfcapbox\vbox{%
+ \hsize \wd\@nfigbox
+ \centerline{\footnotesize \fnum@table}
+ }%
+}
+\def\narrowfig#1{%
+ \@narrowfig #1\relax
+ \let\caption\@nfcap
+ \let\nocaption\@nfnocap
+ \@ifnextchar[{\@nfig}{\@nfig[\fps@figure]}%
+}
+
+\def\@nfig[#1]{%
+ \expandafter\figure\expandafter[#1]%
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize\@narrowfig
+ \@parboxrestore
+}
+
+\def\endnarrowfig{%
+ \hb@xt@\textwidth{%
+ \if@nfeven
+ \box\@nfcapbox \hfil \box\@nfigbox
+ \else
+ \box\@nfigbox \hfil \box\@nfcapbox
+ \fi
+ }%
+ \endfigure
+}
+\def\@nfcap{%
+ \par
+ \egroup
+ \refstepcounter\@captype
+ \@dblarg{\@nfcapx\@captype}%
+}
+\def\@nfmakecap #1#2{%
+ \setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \sloppy #1.\hskip 1em\relax #2 \par
+ \else
+ \@@line{%
+ \if@nfeven\else\hfil\fi
+ \box\@tempboxa
+ \if@nfeven\hfil\fi
+ }%
+ \fi
+}
+\long\def\@nfcapx#1[#2]#3{%
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
+ \hsize \textwidth
+ \advance\hsize -2pc
+ \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+ \par
+ \vfil
+ }%
+}
+\def\@nfnocap{%
+ \egroup
+ \refstepcounter\@captype
+ \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
+ \hsize \textwidth
+ \advance\hsize -2pc
+ \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \@@line{%
+ \if@nfeven\else\hfil\fi
+ \footnotesize \fnum@figure
+ \if@nfeven\hfil\fi
+ }%
+ \vfil
+ }%
+}
+
+\def\@seteven{%
+ \@nfeventrue
+ \@ifundefined{r@@nf\thefigure}{}{%
+ \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
+ \edef\@tmpnf{\expandafter\@cdr\@tmpnf\@nil}%
+ \ifodd\@tmpnf\relax
+ \@nfevenfalse
+ \fi
+ }%
+ \label{@nf\thefigure}%
+ \edef\@tmpnfx{\if@nfeven e\else o\fi}%
+ \edef\@tmpnf{%
+ \write\@unused{%
+ \noexpand\ifodd \noexpand\c@page
+ \noexpand\if \@tmpnfx e%
+ \noexpand\@nfmsg{\thefigure}
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\if \@tmpnfx o%
+ \noexpand\@nfmsg{\thefigure}%
+ \noexpand\fi
+ \noexpand\fi
+ }%
+ }%
+ \@tmpnf
+}
+
+\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven
+
+% Acknowledgments
+\newenvironment{ack}{%
+\refsection*{ACKNOWLEDGMENT}
+\ackfont
+}{\par}
+
+\newenvironment{acks}{%
+\refsection*{ACKNOWLEDGMENTS}
+\ackfont
+}{\par}
+
+% History Dates
+\def\received#1#2#3{\par\addvspace{14\p@}%
+{\noindent\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont{Received\ #1;\ revised\ #2;\ accepted\ #3}%
+\par}}
+
+% provide both spellings of Acknowledgment(s)
+\let\acknowledgments\acks
+\let\endacknowledgments\endacks
+\let\acknowledgment\ack
+\let\endacknowledgment\endack
+
+\newcommand{\longpage}{\enlargethispage{\baselineskip}}
+\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
+
+% Appendices
+\newfont{\apbf}{cmbx9}
+\def\@withappendix#1{App--\number #1}
+\newcommand{\elecappendix}{
+}
+
+\def\appenheader{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\newfont{\sc}{cmcsc10}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 11pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endappenheader{\end{figure}\gdef\appendixhead{}}
+
+\def\@appsec{}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\@appsec{APPENDIX }
+ \def\thesection{\Alph{section}}
+ \def\theHsection{\Alph{section}}}
+
+% split electronic appendix into two parts:
+
+\def\appendixhead#1{\appendix
+\section*{ELECTRONIC APPENDIX}
+The electronic appendix for this article can be accessed in the ACM Digital Library.}
+
+\newif\ifelec@app\global\elec@appfalse
+\long\def\elecappendix{\immediate\write\@mainaux{\string\lastpage{\the\c@page}}%
+\clearpage
+\makeatletter
+\elec@apptrue
+\pagenumbering{withappendix}
+\pagestyle{appheadings}
+\thispagestyle{titlepage}%
+\makeatother
+\appendix
+{\vbox{\titlefont\parindent0pt\raggedright%
+Online Appendix to:\par\@title\par{}}}\vskip 12\p@
+\vbox{\authorfont\parindent0pt\@author{}}\vskip .5em\noindent
+\vskip 11pt\noindent
+\hrule height .2pt
+\par
+\def\endbottomstuff{%
+\copyrightline\par
+\doiline
+\vskip-13pt
+\strut
+\end@float
+}
+\bottomstuff
+\endbottomstuff
+}
+
+%-----------------------BIBLIOGRAPHY STUFF-------------------------
+% this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
+%
+%%% filename = "chicago.sty",
+%%% version = "4", % MODIFIED!
+%%% date = "31 August 1992",
+%%% time = "09:42:44 199",
+%%% author = "Glenn Paulley",
+%%% address = "Data Structuring Group
+%%% Department of Computer Science
+%%% University of Waterloo
+%%% Waterloo, Ontario, Canada
+%%% N2L 3G1",
+%%% telephone = "(519) 885-1211",
+%%% FAX = "(519) 885-1208",
+%%% email = "gnpaulle@bluebox.uwaterloo.ca",
+
+%%% ====================================================================
+%
+% this file: Modification of chicago.sty for new ACM bibliography
+% style, which is similar (but not identical) to the ``Chicago'' style.
+%
+% chicago.sty: Style file for use with bibtex style chicago.bst, for
+% bibliographies formatted according to the 13th Edition of the Chicago
+% Manual of Style.
+%
+% 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+% newapa.sty formed the basis of this style, chicago.sty. Author-date
+% references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
+% supports annotations.
+%
+% Version 4 (August, 1992):
+% - fixed chicago.bst and chicagoa.bst to handle long author lists in
+% sorting
+% - fixed chicago.bst and chicagoa.bst so that missing page numbers in
+% ``article'' entries are handled correctly
+% - modified chicago.sty to format entries with 2nd and subsequent lines
+% indented.
+%
+% Citation format: (author-last-name year)
+% (author-last-name and author-last-name year)
+% (author-last-name et al. year)
+% (author-last-name)
+% author-last-name
+% author-last-name (year)
+% (author-last-name and author-last-name)
+% (author-last-name et al.)
+% (year) or (year,year)
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+%
+% -------------------------------------------------------------------------
+%
+% Citation macros (compatible with natbib package).
+%
+\AtBeginDocument{%
+\@ifpackageloaded{natbib}{% Natbib loaded
+\renewcommand\bibsection{%
+ \refsection*{{\refname}%
+ \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%
+}}%
+\bibpunct[, ]{[}{]}{;}{a}{}{,}
+\let\citeN\cite
+\let\cite\citep
+\let\citeANP\citeauthor
+\let\citeNN\citeyearpar
+\let\citeyearNP\citeyear
+\let\citeyear\citeyearpar
+\let\citeNP\citealt
+\def\shortcite#1{\citeyear{#1}}
+\DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
+\newcommand\newblock{}
+}{% Natbib not loaded
+\let\@internalcite\cite
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeXNP#1#2{%
+ \def\@cite@label{#2}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{\@cite@label}\@internalcite{#1}}
+\def\citeNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
+ \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
+\def\shortcite#1{\citeyear{#1}}
+\def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
+\def\citeNS#1{\citeANP{#1} \citeyear{#1}}
+\def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
+%testing year,year
+\def\citeNN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+\def\citeA{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+\def\citeANP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+
+\def\citeyear{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+\def\citeyearNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+%
+% \@citedata and \@citedatax:
+%
+% Place commas in-between citations in the same \citeyear, \citeyearNP,
+% or \citeN command.
+% Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
+%
+\def\@citedata{%
+ \@ifnextchar [{\@tempswatrue\@citedatax}%
+ {\@tempswafalse\@citedatax[]}%
+}
+
+\def\@citedatax[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% don't box citations, separate with ; and a space
+% also, make the penalty between citations negative: a good place to break.
+%
+\def\@citex[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% Fix cite so it doesn't repeat author lists in citations:
+
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \let\@lastauthor=\@noauthor
+ \let\citeauthoryear=\citeauthoryear@no@repeats\@internalcite}
+ %\def\citeauthoryear##1##2##3{##2 ##3}\@internalcite
+
+\def\@noauthor={\relax}
+\let\@lastauthor=\@noauthor
+\let\@currauthor=\@noauthor
+
+\def\citeauthoryear@no@repeats#1#2#3{%
+ \def\@currauthor{\csname @author #1\endcsname}%
+ \ifx\@lastauthor\@currauthor{#3}\else{#2 #3}\fi%
+ \let\@lastauthor=\@currauthor}
+}}
+
+% Bibliography
+\let\@biblabel\@gobble
+\newdimen\bibindent
+\bibindent=16pt
+\newcommand\refname{REFERENCES}
+\def\thebibliography#1{%
+ \footnotesize
+ \refsection*{{\refname}
+ \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%
+ }
+ \list{}{
+ \settowidth\labelwidth{}
+ \leftmargin0pt
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \itemsep2pt
+ \parsep \z@
+ \usecounter{enumi}%
+ }%
+ \let\newblock\@empty
+ \sloppy
+ \sfcode`\.=1000\relax
+}
+\let\endthebibliography=\endlist
+
+% Blackboard font
+\DeclareFontFamily{OT1}{ams}{}
+\DeclareFontShape{OT1}{ams}{m}{n}{ <-> msam10 }{}
+\DeclareFontShape{OT1}{ams}{m}{it}{ <-> msam10 }{}
+\DeclareFontShape{OT1}{ams}{bx}{n}{ <-> msbm10 }{}
+\DeclareFontShape{OT1}{ams}{bx}{it}{ <-> msbm10 }{}
+
+\def\bb#1{\mathchoice
+ {\mbox{\fontfamily{ams}\fontsize{\tf@size}{\tf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\tf@size}{\tf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\sf@size}{\sf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\ssf@size}{\ssf@size}\selectfont\bf#1}}}
+
+\DeclareMathAlphabet{\mathbb}{OT1}{ams}{bx}{n}
+\SetMathAlphabet\mathbb{normal}{OT1}{ams}{bx}{n}
+\SetMathAlphabet\mathbb{bold}{OT1}{ams}{bx}{n}
+\def\bb{\mathbb}
+
+\def\text#1{\ifmmode
+ \mathchoice
+ {\hbox{\fontsize{\tf@size}{\tf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\tf@size}{\tf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\sf@size}{\sf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\ssf@size}{\ssf@size}\selectfont#1}}%
+ \else\hbox{\rm#1}\fi}
+%
+% newdef need to take the optional parameters of newtheorem
+\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}}
+\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}}
+\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}}
+\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}}
+\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}}
+%
+\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}}
+%
+\def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm}
+\def\@ystartdef#1{\begin{italic@#1}\rm}
+%
+\newdef{remark}[theorem]{Remark}
+
+% Page number Panel
+\def\openartnum{\vbox to 1.125in{\vskip.125in\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+\def\closeartnum{\vbox to 1.125in{\vskip-.125in\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+\def\artnum{\vbox to 1in{\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+%
+\def\opentab{\hbox{\vrule width45.75pt depth0pt height1.125in\hspace*{-35.5pt}\openartnum}}
+\def\normtab{\hbox{\vrule width45.75pt depth0pt height1in\hspace*{-35.5pt}\artnum}}
+\def\closetab{\hbox{\vrule width45.75pt depth0pt height1.125in\hspace*{-35.5pt}\closeartnum}}
+%
+\newcommand\tab{\ifcase\@articleSeq\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\fi}
+
+% Output Routine
+\def\@outputpage{%
+\begingroup % the \endgroup is put in by \aftergroup
+ \let \protect \noexpand
+ \@resetactivechars
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ % correct? or just restore by ending
+ % the group?
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \ifelec@app\else\ifnum\c@page=1\vbox to 0pt{\hbox to \trimwidth{\hfill\tab}}\fi\fi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }% %% 22 Feb 87
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
+%
+\ps@headings
+\pagenumbering{arabic}
+\onecolumn
+
+\frenchspacing
+\sloppy
+\widowpenalty10000
+\clubpenalty10000
+
+\endinput
+
+% End of file `acmsmall.cls' Version 1.4
+
+
diff --git a/appendix.tex b/appendix.tex
index 63a8dd8..fc32f10 100644
--- a/appendix.tex
+++ b/appendix.tex
@@ -26,156 +26,7 @@ Sylvester's determinant identity~\cite{sylvester}. Monotonicity therefore follow
and submodularity also follows, as a function is submodular if and only if the marginal contributions are non-increasing in $S$. \qed
-\section{Proofs of Statements in Section~\ref{sec:concave}}
-\subsection{Proof of Lemma~\ref{lemma:relaxation-ratio}}\label{proofofrelaxation-ratio}
%\begin{proof}
- The bound $F(\lambda)\leq L(\lambda)$ follows by the concavity of the $\log\det$ function and Jensen's inequality.
- To show the lower bound,
- we first prove that $\frac{1}{2}$ is a lower bound of the ratio $\partial_i
- F(\lambda)/\partial_i L(\lambda)$, where we use
- $\partial_i\, \cdot$ as a shorthand for $\frac{\partial}{\partial \lambda_i}$, the partial derivative with respect to the
- $i$-th variable.
-
- Let us start by computing the partial derivatives of $F$ and
- $L$ with respect to the $i$-th component.
- Observe that
- \begin{displaymath}
- \partial_i P_\mathcal{N}^\lambda(S) = \left\{
- \begin{aligned}
- & P_{\mathcal{N}\setminus\{i\}}^\lambda(S\setminus\{i\})\;\textrm{if}\;
- i\in S, \\
- & - P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\;\textrm{if}\;
- i\in \mathcal{N}\setminus S. \\
- \end{aligned}\right.
- \end{displaymath}
- Hence,
- \begin{displaymath}
- \partial_i F(\lambda) =
- \sum_{\substack{S\subseteq\mathcal{N}\\ i\in S}}
- P_{\mathcal{N}\setminus\{i\}}^\lambda(S\setminus\{i\})V(S)
- - \sum_{\substack{S\subseteq\mathcal{N}\\ i\in \mathcal{N}\setminus S}}
- P_{\mathcal{N}\setminus\{i\}}^\lambda(S)V(S).
- \end{displaymath}
- Now, using that every $S$ such that $i\in S$ can be uniquely written as
- $S'\cup\{i\}$, we can write:
- \begin{displaymath}
- \partial_i F(\lambda) =
- \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
- P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\big(V(S\cup\{i\})
- - V(S)\big).
- \end{displaymath}
-Recall from \eqref{eq:marginal_contrib} that the marginal contribution of $i$ to $S$ is given by
-$$V(S\cup \{i\}) - V(S) =\frac{1}{2}\log(1 + \T{x_i}A(S)^{-1}x_i), $$
-where $A(S) = I_d+ \T{X_S}X_S$.
-% $ V(S\cup\{i\}) - V(S) = \frac{1}{2}\log\left(1 + \T{x_i} A(S)^{-1}x_i\right)$.
-Using this,
- \begin{displaymath}
- \partial_i F(\lambda) = \frac{1}{2}
- \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
- P_{\mathcal{N}\setminus\{i\}}^\lambda(S)
- \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big)
- \end{displaymath}
- The computation of the derivative of $L$ uses standard matrix
- calculus: writing $\tilde{A}(\lambda) \defeq I_d+\sum_{i\in
- \mathcal{N}}\lambda_ix_i\T{x_i}$,
- \begin{displaymath}
- \det \tilde{A}(\lambda + h\cdot e_i) = \det\big(\tilde{A}(\lambda)
- + hx_i\T{x_i}\big)
- =\det \tilde{A}(\lambda)\big(1+
- h\T{x_i}\tilde{A}(\lambda)^{-1}x_i\big).
- \end{displaymath}
- Hence,
- \begin{displaymath}
- \log\det\tilde{A}(\lambda + h\cdot e_i)= \log\det\tilde{A}(\lambda)
- + h\T{x_i}\tilde{A}(\lambda)^{-1}x_i + o(h),
- \end{displaymath}
- which implies
- \begin{displaymath}
- \partial_i L(\lambda)
- =\frac{1}{2} \T{x_i}\tilde{A}(\lambda)^{-1}x_i.
- \end{displaymath}
-Recall from \eqref{eq:inverse} that the monotonicity of the matrix inverse over positive definite matrices implies
-\begin{gather*}
- \forall S\subseteq\mathcal{N},\quad A(S)^{-1} \succeq A(S\cup\{i\})^{-1}
-\end{gather*}
-as $A(S)\preceq A(S\cup\{i\})$. Observe that since $1\leq \lambda_i\leq 1$,
-$P_{\mathcal{N}\setminus\{i\}}^\lambda(S) \geq P_\mathcal{N}^\lambda(S)$ and
-$P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\geq P_{\mathcal{N}}^\lambda(S\cup\{i\})$
-for all $S\subseteq\mathcal{N}\setminus\{i\}$. Hence,
-\begin{align*}
- \partial_i F(\lambda)
- & \geq \frac{1}{4}
- \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
- P_{\mathcal{N}}^\lambda(S)
- \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big)\\
- &+\frac{1}{4}
- \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
- P_{\mathcal{N}}^\lambda(S\cup\{i\})
- \log\Big(1 + \T{x_i}A(S\cup\{i\})^{-1}x_i\Big)\\
- &\geq \frac{1}{4}
- \sum_{S\subseteq\mathcal{N}}
- P_\mathcal{N}^\lambda(S)
- \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big).
-\end{align*}
-Using that $A(S)\succeq I_d$ we get that $\T{x_i}A(S)^{-1}x_i \leq
-\norm{x_i}_2^2 \leq 1$. Moreover, $\log(1+x)\geq x$ for all $x\leq 1$.
-Hence,
-\begin{displaymath}
- \partial_i F(\lambda) \geq
- \frac{1}{4}
- \T{x_i}\bigg(\sum_{S\subseteq\mathcal{N}}P_\mathcal{N}^\lambda(S)A(S)^{-1}\bigg)x_i.
-\end{displaymath}
-Finally, using that the inverse is a matrix convex function over symmetric
-positive definite matrices (see Appendix~\ref{app:properties}):
-\begin{displaymath}
- \partial_i F(\lambda) \geq
- \frac{1}{4}
- \T{x_i}\bigg(\sum_{S\subseteq\mathcal{N}}P_\mathcal{N}^\lambda(S)A(S)\bigg)^{-1}x_i
- = \frac{1}{4}\T{x_i}\tilde{A}(\lambda)^{-1}x_i
- = \frac{1}{2}
- \partial_i L(\lambda).
-\end{displaymath}
-
-Having bound the ratio between the partial derivatives, we now bound the ratio
-$F(\lambda)/L(\lambda)$ from below. Consider the following three cases.
-
-First, if the minimum is attained as $\lambda$ converges to zero in,
-\emph{e.g.}, the $l_2$ norm, by the Taylor approximation, one can write:
-\begin{displaymath}
- \frac{F(\lambda)}{L(\lambda)}
- \sim_{\lambda\rightarrow 0}
- \frac{\sum_{i\in \mathcal{N}}\lambda_i\partial_i F(0)}
- {\sum_{i\in\mathcal{N}}\lambda_i\partial_i L(0)}
- \geq \frac{1}{2},
-\end{displaymath}
-\emph{i.e.}, the ratio $\frac{F(\lambda)}{L(\lambda)}$ is necessarily bounded
-from below by 1/2 for small enough $\lambda$.
-
-Second, if the minimum of the ratio $F(\lambda)/L(\lambda)$ is attained at
-a vertex of the hypercube $[0,1]^n$ different from 0. $F$ and $L$ being
-relaxations of the value function $V$, they are equal to $V$ on the vertices
-which are exactly the binary points. Hence, the minimum is equal to 1 in this
-case; in particular, it is greater than $1/2$.
-
-Finally, if the minimum is attained at a point $\lambda^*$ with at least one
-coordinate belonging to $(0,1)$, let $i$ be one such coordinate and consider
-the function $G_i$:
-\begin{displaymath}
- G_i: x \mapsto \frac{F}{L}(\lambda_1^*,\ldots,\lambda_{i-1}^*, x,
- \lambda_{i+1}^*, \ldots, \lambda_n^*).
-\end{displaymath}
-Then this function attains a minimum at $\lambda^*_i\in(0,1)$ and its
-derivative is zero at this point. Hence:
-\begin{displaymath}
- 0 = G_i'(\lambda^*_i) = \partial_i\left(\frac{F}{L}\right)(\lambda^*).
-\end{displaymath}
-But $\partial_i(F/L)(\lambda^*)=0$ implies that
-\begin{displaymath}
- \frac{F(\lambda^*)}{L(\lambda^*)} = \frac{\partial_i
- F(\lambda^*)}{\partial_i L(\lambda^*)}\geq \frac{1}{2}
-\end{displaymath}
-using the lower bound on the ratio of the partial derivatives. This concludes
-the proof of the lemma. \qed
%\end{proof}
%We now prove that $F$ admits the following exchange property: let $\lambda$ be a feasible element of $[0,1]^n$, it is possible to trade one fractional component of $\lambda$ for another until one of them becomes integral, obtaining a new element $\tilde{\lambda}$ which is both feasible and for which $F(\tilde{\lambda})\geq F(\lambda)$. Here, by feasibility of a point $\lambda$, we mean that it satisfies the budget constraint $\sum_{i=1}^n \lambda_i c_i \leq B$. This rounding property is referred to in the literature as \emph{cross-convexity} (see, \emph{e.g.}, \cite{dughmi}), or $\varepsilon$-convexity by \citeN{pipage}.
@@ -186,74 +37,8 @@ the proof of the lemma. \qed
% fractional %, that is, lies in $(0,1)$ and:
% and $F_{\mathcal{N}}(\lambda)\leq F_{\mathcal{N}}(\bar{\lambda})$.
%\end{lemma}
-\subsection{Proof of Lemma~\ref{lemma:rounding}}\label{proofoflemmarounding}
%\begin{proof}
- We give a rounding procedure which, given a feasible $\lambda$ with at least
- two fractional components, returns some feasible $\lambda'$ with one fewer fractional
- component such that $F(\lambda) \leq F(\lambda')$.
-
- Applying this procedure recursively yields the lemma's result.
- Let us consider such a feasible $\lambda$. Let $i$ and $j$ be two
- fractional components of $\lambda$ and let us define the following
- function:
- \begin{displaymath}
- F_\lambda(\varepsilon) = F(\lambda_\varepsilon)
- \quad\textrm{where} \quad
- \lambda_\varepsilon = \lambda + \varepsilon\left(e_i-\frac{c_i}{c_j}e_j\right)
- \end{displaymath}
- It is easy to see that if $\lambda$ is feasible, then:
- \begin{equation}\label{eq:convex-interval}
- \forall\varepsilon\in\Big[\max\Big(-\lambda_i,(\lambda_j-1)\frac{c_j}{c_i}\Big), \min\Big(1-\lambda_i, \lambda_j
- \frac{c_j}{c_i}\Big)\Big],\;
- \lambda_\varepsilon\;\;\textrm{is feasible}
- \end{equation}
- Furthermore, the function $F_\lambda$ is convex; indeed:
- \begin{align*}
- F_\lambda(\varepsilon)
- & = \mathbb{E}_{S'\sim P_{\mathcal{N}\setminus\{i,j\}}^\lambda(S')}\Big[
- (\lambda_i+\varepsilon)\Big(\lambda_j-\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{i,j\})\\
- & + (\lambda_i+\varepsilon)\Big(1-\lambda_j+\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{i\})\\
- &+ (1-\lambda_i-\varepsilon)\Big(\lambda_j-\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{j\})\\
- & + (1-\lambda_i-\varepsilon)\Big(1-\lambda_j+\varepsilon\frac{c_i}{c_j}\Big)V(S')\Big]
- \end{align*}
- Thus, $F_\lambda$ is a degree 2 polynomial whose dominant coefficient is:
- \begin{displaymath}
- \frac{c_i}{c_j}\mathbb{E}_{S'\sim
- P_{\mathcal{N}\setminus\{i,j\}}^\lambda(S')}\Big[
- V(S'\cup\{i\})+V(S'\cup\{i\})\\
- -V(S'\cup\{i,j\})-V(S')\Big]
- \end{displaymath}
- which is positive by submodularity of $V$. Hence, the maximum of
- $F_\lambda$ over the interval given in \eqref{eq:convex-interval} is
- attained at one of its limits, at which either the $i$-th or $j$-th component of
- $\lambda_\varepsilon$ becomes integral. \qed
%\end{proof}
-\subsection{Proof of Proposition~\ref{prop:relaxation}}\label{proofofproprelaxation}
-The lower bound on $L^*_c$ follows immediately from the fact that $L$ extends $V$ to $[0,1]^n$. For the upper bound, let us consider a feasible point $\lambda^*\in \dom_c$ such that
-$L(\lambda^*) = L^*_c$. By applying Lemma~\ref{lemma:relaxation-ratio} and
-Lemma~\ref{lemma:rounding} we get a feasible point $\bar{\lambda}$ with at most
-one fractional component such that
-\begin{equation}\label{eq:e1}
- L(\lambda^*) \leq 2 F(\bar{\lambda}).
-\end{equation}
- Let $\lambda_i$ denote the fractional component of $\bar{\lambda}$ and $S$
- denote the set whose indicator vector is $\bar{\lambda} - \lambda_i e_i$.
- By definition of the multi-linear extension $F$:
- \begin{displaymath}
- F(\bar{\lambda}) = (1-\lambda_i)V(S) +\lambda_i V(S\cup\{i\}).
- \end{displaymath}
- By submodularity of $V$, $V(S\cup\{i\})\leq V(S) + V(\{i\})$. Hence,
- \begin{displaymath}
- F(\bar{\lambda}) \leq V(S) + V(i).
- \end{displaymath}
- Note that since $\bar{\lambda}$ is feasible, $S$ is also feasible and
- $V(S)\leq OPT$. Hence,
- \begin{equation}\label{eq:e2}
- F(\bar{\lambda}) \leq OPT + \max_{i\in\mathcal{N}} V(i).
- \end{equation}
-Together, \eqref{eq:e1} and \eqref{eq:e2} imply the proposition.\qed
-
-\section{Proof of Proposition~\ref{prop:monotonicity}}\label{proofofpropmonotonicity}
%The $\log\det$ function is concave and self-concordant (see
%\cite{boyd2004convex}), in this case, the analysis of the barrier method in
@@ -264,7 +49,6 @@ Together, \eqref{eq:e1} and \eqref{eq:e2} imply the proposition.\qed
%For any $\varepsilon>0$, the barrier method computes an $\varepsilon$-accurate
%approximation of $L^*_c$ in time $O(poly(n,d,\log\log\varepsilon^{-1})$.
%\end{lemma}
-We begin by a description of Algorithm~\ref{alg:monotone} which computes an approximation of $L^*_c$, which is arbitrarily accurate \emph{and} $\delta$-decreasing.
%Note, that the feasible set in Problem~\eqref{eq:primal} increases (for the
%inclusion) when the cost decreases.
%non-increasing.
@@ -311,243 +95,6 @@ We begin by a description of Algorithm~\ref{alg:monotone} which computes an appr
%an approximation of $L^*_{c,\alpha}$ as in Algorithm~\ref{alg:monotone}, we
%obtain a $\delta$-decreasing approximation of $L^*_c$.
-\begin{algorithm}[t]
- \caption{}\label{alg:monotone}
- \begin{algorithmic}[1]
- \Require{ $B\in \reals_+$, $c\in[0,B]^n$, $\delta\in (0,1]$, $\epsilon\in (0,1]$ }
- \State $\alpha \gets \varepsilon (\delta/B+n^2)^{-1}$
- \State Use the barrier method to solve \eqref{eq:perturbed-primal} with
- accuracy $\varepsilon'=\frac{1}{2^{n+1}B}\alpha\delta b$; denote the output by $\hat{L}^*_{c,\alpha}$
- \State \textbf{return} $\hat{L}^*_{c,\alpha}$
- \end{algorithmic}
-\end{algorithm}
-
-Our construction of a $\delta$-decreasing, $\varepsilon$-accurate approximator of $L_c^*$ proceeds as follows: first, it computes an appropriately selected lower bound $\alpha$; using this bound, it solves the perturbed problem \eqref{eq:perturbed-primal} using the barrier method, also at an appropriately selected accuracy $\varepsilon'$, obtaining thus a $\varepsilon'$-accurate approximation of $L^*_{c,\alpha}\defeq \max_{\lambda\in \dom_{c,\alpha}} L(\lambda)$ . The corresponding output is returned as an approximation of $L^*_c$. A summary of the algorithm and the specific choices of $\alpha$ and $\varepsilon'$ are given in Algorithm~\ref{alg:monotone}. We proceed by showing that the optimal value of \eqref{eq:perturbed-primal} is close to the
-optimal value of \eqref{eq:primal} (Lemma~\ref{lemma:proximity}) while being
-well-behaved with respect to changes of the cost
-(Lemma~\ref{lemma:monotonicity}). These lemmas together imply
-Proposition~\ref{prop:monotonicity}.
-
-We note that the execution of the barrier method on the restricted set $\dom_{c,\alpha}$ is necessary. The algorithm's output when executed over the entire domain may not necessarily be $\delta$-decreasing, even when the approximation accuracy is small. This is because costs become saturated when the optimal $\lambda\in \dom_c$ lies at the boundary: increasing them has no effect on the objective. Forcing the optimization to happen ``off'' the boundary ensures that this does not occur, while taking $\alpha$ to be small ensures that this perturbation does not cost much in terms of approximation accuracy.
-
-Note that the choice of $\alpha$ given in Algorithm~\ref{alg:monotone} implies
-that $\alpha<\frac{1}{n}$. This in turn implies that the feasible set
-$\mathcal{D}_{c, \alpha}$ of \eqref{eq:perturbed-primal} is non-empty: it
-contains the strictly feasible point $\lambda=(\frac{1}{n},\ldots,\frac{1}{n})$.
-
-\begin{lemma}\label{lemma:derivative-bounds}
- Let $\partial_i L(\lambda)$ denote the $i$-th derivative of $L$, for $i\in\{1,\ldots, n\}$, then:
- \begin{displaymath}
- \forall\lambda\in[0, 1]^n,\;\frac{b}{2^n} \leq \partial_i L(\lambda) \leq 1
- \end{displaymath}
-\end{lemma}
-
-\begin{proof}
- Recall that we had defined:
- \begin{displaymath}
- \tilde{A}(\lambda)\defeq I_d + \sum_{i=1}^n \lambda_i x_i\T{x_i}
- \quad\mathrm{and}\quad
- A(S) \defeq I_d + \sum_{i\in S} x_i\T{x_i}
- \end{displaymath}
- Let us also define $A_k\defeq A(\{x_1,\ldots,x_k\})$.
- We have $\partial_i L(\lambda) = \T{x_i}\tilde{A}(\lambda)^{-1}x_i$. Since
- $\tilde{A}(\lambda)\succeq I_d$, $\partial_i L(\lambda)\leq \T{x_i}x_i \leq 1$, which
- is the right-hand side of the lemma.
- For the left-hand side, note that $\tilde{A}(\lambda) \preceq A_n$. Hence
- $\partial_iL(\lambda)\geq \T{x_i}A_n^{-1}x_i$.
- Using the Sherman-Morrison formula \cite{sm}, for all $k\geq 1$:
- \begin{displaymath}
- \T{x_i}A_k^{-1} x_i = \T{x_i}A_{k-1}^{-1}x_i
- - \frac{(\T{x_i}A_{k-1}^{-1}x_k)^2}{1+\T{x_k}A_{k-1}^{-1}x_k}
- \end{displaymath}
- By the Cauchy-Schwarz inequality:
- \begin{displaymath}
- (\T{x_i}A_{k-1}^{-1}x_k)^2 \leq \T{x_i}A_{k-1}^{-1}x_i\;\T{x_k}A_{k-1}^{-1}x_k
- \end{displaymath}
- Hence:
- \begin{displaymath}
- \T{x_i}A_k^{-1} x_i \geq \T{x_i}A_{k-1}^{-1}x_i
- - \T{x_i}A_{k-1}^{-1}x_i\frac{\T{x_k}A_{k-1}^{-1}x_k}{1+\T{x_k}A_{k-1}^{-1}x_k}
- \end{displaymath}
- But $\T{x_k}A_{k-1}^{-1}x_k\leq 1$ and $\frac{a}{1+a}\leq \frac{1}{2}$ if
- $0\leq a\leq 1$, so:
- \begin{displaymath}
- \T{x_i}A_{k}^{-1}x_i \geq \T{x_i}A_{k-1}^{-1}x_i
- - \frac{1}{2}\T{x_i}A_{k-1}^{-1}x_i\geq \frac{\T{x_i}A_{k-1}^{-1}x_i}{2}
- \end{displaymath}
- By induction:
- \begin{displaymath}
- \T{x_i}A_n^{-1} x_i \geq \frac{\T{x_i}x_i}{2^n}
- \end{displaymath}
- Using that $\T{x_i}{x_i}\geq b$ concludes the proof of the left-hand side
- of the lemma's inequality.
-\end{proof}
-Let us introduce the Lagrangian of problem \eqref{eq:perturbed-primal}:
-
-\begin{displaymath}
- \mathcal{L}_{c, \alpha}(\lambda, \mu, \nu, \xi) \defeq L(\lambda)
- + \T{\mu}(\lambda-\alpha\mathbf{1}) + \T{\nu}(\mathbf{1}-\lambda) + \xi(B-\T{c}\lambda)
-\end{displaymath}
-so that:
-\begin{displaymath}
- L^*_{c,\alpha} = \min_{\mu, \nu, \xi\geq 0}\max_\lambda \mathcal{L}_{c, \alpha}(\lambda, \mu, \nu, \xi)
-\end{displaymath}
-Similarly, we define $\mathcal{L}_{c}\defeq\mathcal{L}_{c, 0}$ the lagrangian of \eqref{eq:primal}.
-
-Let $\lambda^*$ be primal optimal for \eqref{eq:perturbed-primal}, and $(\mu^*,
-\nu^*, \xi^*)$ be dual optimal for the same problem. In addition to primal and
-dual feasibility, the Karush-Kuhn-Tucker (KKT) conditions \cite{boyd2004convex} give $\forall i\in\{1, \ldots, n\}$:
-\begin{gather*}
- \partial_i L(\lambda^*) + \mu_i^* - \nu_i^* - \xi^* c_i = 0\\
- \mu_i^*(\lambda_i^* - \alpha) = 0\\
- \nu_i^*(1 - \lambda_i^*) = 0
-\end{gather*}
-
-\begin{lemma}\label{lemma:proximity}
-We have:
-\begin{displaymath}
- L^*_c - \alpha n^2\leq L^*_{c,\alpha} \leq L^*_c
-\end{displaymath}
-In particular, $|L^*_c - L^*_{c,\alpha}| \leq \alpha n^2$.
-\end{lemma}
-
-\begin{proof}
- $\alpha\mapsto L^*_{c,\alpha}$ is a decreasing function as it is the
- maximum value of the $L$ function over a set-decreasing domain, which gives
- the rightmost inequality.
-
- Let $\mu^*, \nu^*, \xi^*$ be dual optimal for $(P_{c, \alpha})$, that is:
- \begin{displaymath}
- L^*_{c,\alpha} = \max_\lambda \mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*)
- \end{displaymath}
-
- Note that $\mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*)
- = \mathcal{L}_{c}(\lambda, \mu^*, \nu^*, \xi^*)
- - \alpha\T{\mathbf{1}}\mu^*$, and that for any $\lambda$ feasible for
- problem \eqref{eq:primal}, $\mathcal{L}_{c}(\lambda, \mu^*, \nu^*, \xi^*)
- \geq L(\lambda)$. Hence,
- \begin{displaymath}
- L^*_{c,\alpha} \geq L(\lambda) - \alpha\T{\mathbf{1}}\mu^*
- \end{displaymath}
- for any $\lambda$ feasible for \eqref{eq:primal}. In particular, for $\lambda$ primal optimal for $\eqref{eq:primal}$:
- \begin{equation}\label{eq:local-1}
- L^*_{c,\alpha} \geq L^*_c - \alpha\T{\mathbf{1}}\mu^*
- \end{equation}
-
- Let us denote by the $M$ the support of $\mu^*$, that is $M\defeq
- \{i|\mu_i^* > 0\}$, and by $\lambda^*$ a primal optimal point for
- $\eqref{eq:perturbed-primal}$. From the KKT conditions we see that:
- \begin{displaymath}
- M \subseteq \{i|\lambda_i^* = \alpha\}
- \end{displaymath}
-
-
- Let us first assume that $|M| = 0$, then $\T{\mathbf{1}}\mu^*=0$ and the lemma follows.
-
- We will now assume that $|M|\geq 1$. In this case $\T{c}\lambda^*
- = B$, otherwise we could increase the coordinates of $\lambda^*$ in $M$,
- which would increase the value of the objective function and contradict the
- optimality of $\lambda^*$. Note also, that $|M|\leq n-1$, otherwise, since
- $\alpha< \frac{1}{n}$, we would have $\T{c}\lambda^*\ < B$, which again
- contradicts the optimality of $\lambda^*$. Let us write:
- \begin{displaymath}
- B = \T{c}\lambda^* = \alpha\sum_{i\in M}c_i + \sum_{i\in \bar{M}}\lambda_i^*c_i
- \leq \alpha |M|B + (n-|M|)\max_{i\in \bar{M}} c_i
- \end{displaymath}
- That is:
- \begin{equation}\label{local-2}
- \max_{i\in\bar{M}} c_i \geq \frac{B - B|M|\alpha}{n-|M|}> \frac{B}{n}
- \end{equation}
- where the last inequality uses again that $\alpha<\frac{1}{n}$. From the
- KKT conditions, we see that for $i\in M$, $\nu_i^* = 0$ and:
- \begin{equation}\label{local-3}
- \mu_i^* = \xi^*c_i - \partial_i L(\lambda^*)\leq \xi^*c_i\leq \xi^*B
- \end{equation}
- since $\partial_i L(\lambda^*)\geq 0$ and $c_i\leq 1$.
-
- Furthermore, using the KKT conditions again, we have that:
- \begin{equation}\label{local-4}
- \xi^* \leq \inf_{i\in \bar{M}}\frac{\partial_i L(\lambda^*)}{c_i}\leq \inf_{i\in \bar{M}} \frac{1}{c_i}
- = \frac{1}{\max_{i\in\bar{M}} c_i}
- \end{equation}
- where the last inequality uses Lemma~\ref{lemma:derivative-bounds}.
- Combining \eqref{local-2}, \eqref{local-3} and \eqref{local-4}, we get that:
- \begin{displaymath}
- \sum_{i\in M}\mu_i^* \leq |M|\xi^*B \leq n\xi^*B\leq \frac{nB}{\max_{i\in\bar{M}} c_i} \leq n^2
- \end{displaymath}
- This implies that:
- \begin{displaymath}
- \T{\mathbf{1}}\mu^* = \sum_{i=1}^n \mu^*_i = \sum_{i\in M}\mu_i^*\leq n^2
- \end{displaymath}
- which along with \eqref{eq:local-1} proves the lemma.
-\end{proof}
-
-\begin{lemma}\label{lemma:monotonicity}
- If $c'$ = $(c_i', c_{-i})$, with $c_i'\leq c_i - \delta$, we have:
- \begin{displaymath}
- L^*_{c',\alpha} \geq L^*_{c,\alpha} + \frac{\alpha\delta b}{2^nB}
- \end{displaymath}
-\end{lemma}
-
-\begin{proof}
- Let $\mu^*, \nu^*, \xi^*$ be dual optimal for $(P_{c', \alpha})$. Noting that:
- \begin{displaymath}
- \mathcal{L}_{c', \alpha}(\lambda, \mu^*, \nu^*, \xi^*) \geq
- \mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*) + \lambda_i\xi^*\delta,
- \end{displaymath}
- we get similarly to Lemma~\ref{lemma:proximity}:
- \begin{displaymath}
- L^*_{c',\alpha} \geq L(\lambda) + \lambda_i\xi^*\delta
- \end{displaymath}
- for any $\lambda$ feasible for \eqref{eq:perturbed-primal}. In particular, for $\lambda^*$ primal optimal for \eqref{eq:perturbed-primal}:
- \begin{displaymath}
- L^*_{c',\alpha} \geq L^*_{c,\alpha} + \alpha\xi^*\delta
- \end{displaymath}
- since $\lambda_i^*\geq \alpha$.
-
- Using the KKT conditions for $(P_{c', \alpha})$, we can write:
- \begin{displaymath}
- \xi^* = \inf_{i:\lambda^{'*}_i>\alpha} \frac{\T{x_i}S(\lambda^{'*})^{-1}x_i}{c_i'}
- \end{displaymath}
- with $\lambda^{'*}$ optimal for $(P_{c', \alpha})$. Since $c_i'\leq B$,
- using Lemma~\ref{lemma:derivative-bounds}, we get that $\xi^*\geq
- \frac{b}{2^nB}$, which concludes the proof.
-\end{proof}
-
-%\subsection*{End of the proof of Proposition~\ref{prop:monotonicity}}
-We are now ready to conclude the proof of Proposition~\ref{prop:monotonicity}.
-Let $\hat{L}^*_{c,\alpha}$ be the approximation computed by
-Algorithm~\ref{alg:monotone}.
-\begin{enumerate}
- \item using Lemma~\ref{lemma:proximity}:
-\begin{displaymath}
- |\hat{L}^*_{c,\alpha} - L^*_c| \leq |\hat{L}^*_{c,\alpha} - L^*_{c,\alpha}| + |L^*_{c,\alpha} - L^*_c|
- \leq \frac{\alpha\delta}{B} + \alpha n^2 = \varepsilon
-\end{displaymath}
-which proves the $\varepsilon$-accuracy.
-
-\item for the $\delta$-decreasingness, let $c' = (c_i', c_{-i})$ with $c_i'\leq
- c_i-\delta$, then:
-\begin{displaymath}
- \hat{L}^*_{c',\alpha} \geq L^*_{c',\alpha} - \frac{\alpha\delta b}{2^{n+1}B}
- \geq L^*_{c,\alpha} + \frac{\alpha\delta b}{2^{n+1}B}
- \geq \hat{L}^*_{c,\alpha}
-\end{displaymath}
-where the first and last inequalities follow from the accuracy of the approximation, and
-the inner inequality follows from Lemma~\ref{lemma:monotonicity}.
-
-\item the accuracy of the approximation $\hat{L}^*_{c,\alpha}$ is:
-\begin{displaymath}
- \varepsilon' =\frac{\varepsilon\delta b}{2^{n+1}(\delta + n^2B)}
-\end{displaymath}
-
-Note that:
-\begin{displaymath}
- \log\log (\varepsilon')^{-1} = O\bigg(\log\log\frac{B}{\varepsilon\delta b} + \log n\bigg)
-\end{displaymath}
-Using Lemma~\ref{lemma:barrier} concludes the proof of the running time.\qed
-\end{enumerate}
-
\section{Budget Feasible Reverse Auction Mechanisms}\label{app:budgetfeasible}
We review in this appendix the formal definition of a budget feasible reverse auction mechanisms, as introduced by \citeN{singer-mechanisms}. We depart from the definitions in \cite{singer-mechanisms} only in considering $\delta$-truthful, rather than truthful, mechanisms.
@@ -582,10 +129,6 @@ Formally, there must exist some $\alpha\geq 1$ and $\beta>0$
should be computable in time polynomial in various parameters.
%time in the number of agents $n$. %\thibaut{Should we say something about the black-box model for $V$? Needed to say something in general, but not in our case where the value function can be computed in polynomial time}.
\end{itemize}
-\section{Proof of Lemma~\ref{thm:myerson-variant}}\label{sec:myerson}
-\input{myerson}
-
-\section{Description of our mechanism for \EDP{} and proof of Theorem~\ref{thm:main}}\label{sec:proofofmainthm}
%
%Instead, \citeN{singer-mechanisms} and \citeN{chen}
@@ -634,216 +177,3 @@ Formally, there must exist some $\alpha\geq 1$ and $\beta>0$
%variant of Myerson's theorem.
-\begin{algorithm}[!t]
- \caption{Mechanism for \SEDP{}}\label{mechanism}
- \begin{algorithmic}[1]
- %\State $\mathcal{N} \gets \mathcal{N}\setminus\{i\in\mathcal{N} : c_i > B\}$
- \Require{ $B\in \reals_+$,$c\in[0,B]^n$, $\delta\in (0,1]$, $\epsilon\in (0,1]$ }
- \State $i^* \gets \argmax_{j\in\mathcal{N}}V(j)$
- \State \label{relaxexec}$OPT'_{-i^*} \gets$ using Proposition~\ref{prop:monotonicity},
- compute a $\varepsilon$-accurate, $\delta$-decreasing
- approximation of $$\textstyle L^*_{c_{-i^*}}\defeq\max_{\lambda\in[0,1]^{n}} \{L(\lambda)
- \mid \lambda_{i^*}=0,\sum_{i \in \mathcal{N}\setminus\{i^*\}}c_i\lambda_i\leq B\}$$
- %\Statex
- \State $C \gets \frac{8e-1 + \sqrt{64e^2-24e + 9}}{2(e-1)}$
-
- \If{$OPT'_{-i^*} < C \cdot V(i^*)$} \label{c}
- \State \textbf{return} $\{i^*\}$
- \Else
- \State $i \gets \argmax_{1\leq j\leq n}\frac{V(j)}{c_j}$
- \State $S_G \gets \emptyset$
- \While{$c_i\leq \frac{B}{2}\frac{V(S_G\cup\{i\})-V(S_G)}{V(S_G\cup\{i\})}$}
- \State $S_G \gets S_G\cup\{i\}$
- \State $i \gets \argmax_{j\in\mathcal{N}\setminus S_G}
- \frac{V(S_G\cup\{j\})-V(S_G)}{c_j}$
- \EndWhile
- \State \textbf{return} $S_G$
- \EndIf
- \end{algorithmic}
-\end{algorithm}
-
-
-We present here the proof of Theorem~\ref{thm:main}.
-Our mechanism for \EDP{} is composed of
-(a) the allocation function presented in Algorithm~\ref{mechanism}, and
-(b) the payment function which pays each allocated agent $i$ her threshold
-payment as described in Myerson's Theorem (see Lemma~\ref{thm:myerson-variant}). In the case where $\{i^*\}$ is the
-allocated set, her threshold payment is $B$. %(she would be have been dropped on
-%line 1 of Algorithm~\ref{mechanism} had she reported a higher cost).
-A closed-form formula for threshold payments when $S_G$ is the allocated set can
-be found in~\cite{singer-mechanisms}.
-
-
-We use the notation $OPT_{-i^*}$ to denote the optimal value of \EDP{} when the maximum value element $i^*$ is excluded. We also use $OPT'_{-i^*}$ to denote the approximation computed by the $\delta$-decreasing, $\epsilon$-accurate approximation of $L^*_{c_{-i^*}}$, as defined in Algorithm~\ref{mechanism}.
-
-
-The properties of $\delta$-truthfulness and
-individual rationality follow from $\delta$-monotonicity and threshold
-payments. $\delta$-monotonicity and budget feasibility follow similar steps as the
-analysis of \citeN{chen}, adapted to account for $\delta$-monotonicity:
-\begin{lemma}\label{lemma:monotone}
-Our mechanism for \EDP{} is $\delta$-monotone and budget feasible.
-\end{lemma}
-
-\begin{proof}
- Consider an agent $i$ with cost $c_i$ that is
- selected by the mechanism, and suppose that she reports
- a cost $c_i'\leq c_i-\delta$ while all other costs stay the same.
- Suppose that when $i$ reports $c_i$, $OPT'_{-i^*} \geq C V(i^*)$; then, as $s_i(c_i,c_{-i})=1$, $i\in S_G$.
- By reporting cost $c_i'$, $i$ may be selected at an earlier iteration of the greedy algorithm.
- %using the submodularity of $V$, we see that $i$ will satisfy the greedy
- %selection rule:
- %\begin{displaymath}
- % i = \argmax_{j\in\mathcal{N}\setminus S} \frac{V(S\cup\{j\})
- % - V(S)}{c_j}
- %\end{displaymath}
- %in an earlier iteration of the greedy heuristic.
- Denote by $S_i$
- (resp. $S_i'$) the set to which $i$ is added when reporting cost $c_i$
- (resp. $c_i'$). We have $S_i'\subseteq S_i$; in addition, $S_i'\subseteq S_G'$, the set selected by the greedy algorithm under $(c_i',c_{-i})$; if not, then greedy selection would terminate prior to selecting $i$ also when she reports $c_i$, a contradiction. Moreover, we have
- \begin{align*}
- c_i' & \leq c_i \leq
- \frac{B}{2}\frac{V(S_i\cup\{i\})-V(S_i)}{V(S_i\cup\{i\})}
- \leq \frac{B}{2}\frac{V(S_i'\cup\{i\})-V(S_i')}{V(S_i'\cup\{i\})}
- \end{align*}
- by the monotonicity and submodularity of $V$. Hence $i\in S_G'$. By
- $\delta$-decreasingness of
- $OPT'_{-i^*}$, under $c'_i\leq c_i-\delta$ the greedy set is still allocated and $s_i(c_i',c_{-i}) =1$.
- Suppose now that when $i$ reports $c_i$, $OPT'_{-i^*} < C V(i^*)$. Then $s_i(c_i,c_{-i})=1$ iff $i = i^*$.
- Reporting $c_{i^*}'\leq c_{i^*}$ does not change $V(i^*)$ nor
- $OPT'_{-i^*} \leq C V(i^*)$; thus $s_{i^*}(c_{i^*}',c_{-i^*})=1$, so the mechanism is monotone.
-
-To show budget feasibility, suppose that $OPT'_{-i^*} < C V(i^*)$. Then the mechanism selects $i^*$. Since the bid of $i^*$ does not affect the above condition, the threshold payment of $i^*$ is $B$ and the mechanism is budget feasible.
-Suppose that $OPT'_{-i^*} \geq C V(i^*)$.
-Denote by $S_G$ the set selected by the greedy algorithm, and for $i\in S_G$, denote by
-$S_i$ the subset of the solution set that was selected by the greedy algorithm just prior to the addition of $i$---both sets determined for the present cost vector $c$.
-%Chen \emph{et al.}~\cite{chen} show that,
-Then for any submodular function $V$, and for all $i\in S_G$:
-%the reported cost of an agent selected by the greedy heuristic, and holds for
-%any submodular function $V$:
-\begin{equation}\label{eq:budget}
- \text{if}~c_i'\geq \frac{V(S_i\cup\{i\}) - V(S)}{V(S_G)} B~\text{then}~s_i(c_i',c_{-i})=0
-\end{equation}
-In other words, if $i$ increases her cost to a value higher than $\frac{V(S_i\cup\{i\}) - V(S)}{V(S_G)}$, she will cease to be in the selected set $S_G$. As a result,
-\eqref{eq:budget}
-implies that the threshold payment of user $i$ is bounded by the above quantity.
-%\begin{displaymath}
-%\frac{V(S_i\cup\{i\}) - V(S_i)}{V(S_G)} = B
-%\end{displaymath}
-Hence, the total payment is bounded by the telescopic sum:
-\begin{displaymath}
- \sum_{i\in S_G} \frac{V(S_i\cup\{i\}) - V(S_i)}{V(S_G)} B = \frac{V(S_G)-V(\emptyset)}{V(S_G)} B=B\qedhere
-\end{displaymath}
-\end{proof}
-
-The complexity of the mechanism is given by the following lemma.
-
-\begin{lemma}[Complexity]\label{lemma:complexity}
- For any $\varepsilon > 0$ and any $\delta>0$, the complexity of the mechanism is
- $O\big(poly(n, d, \log\log\frac{B}{b\varepsilon\delta})\big)$
-\end{lemma}
-
-\begin{proof}
- The value function $V$ in \eqref{modified} can be computed in time
- $O(\text{poly}(n, d))$ and the mechanism only involves a linear
- number of queries to the function $V$.
- By Proposition~\ref{prop:monotonicity}, line \ref{relaxexec} of Algorithm~\ref{mechanism}
- can be computed in time
- $O(\text{poly}(n, d, \log\log \frac{B}{b\varepsilon\delta}))$. Hence the allocation
- function's complexity is as stated.
- %Payments can be easily computed in time $O(\text{poly}(n, d))$ as in prior work.
-\junk{
- Using Singer's characterization of the threshold payments
- \cite{singer-mechanisms}, one can verify that they can be computed in time
- $O(\text{poly}(n, d))$.
- }
-\end{proof}
-
-Finally, we prove the approximation ratio of the mechanism.
-We use the following lemma from \cite{chen} which bounds $OPT$ in terms of
-the value of $S_G$, as computed in Algorithm \ref{mechanism}, and $i^*$, the
-element of maximum value.
-
-\begin{lemma}[\cite{chen}]\label{lemma:greedy-bound}
-Let $S_G$ be the set computed in Algorithm \ref{mechanism} and let
-$i^*=\argmax_{i\in\mathcal{N}} V(\{i\})$. We have:
-\begin{displaymath}
-OPT \leq \frac{e}{e-1}\big( 3 V(S_G) + 2 V(i^*)\big).
-\end{displaymath}
-\end{lemma}
-
-Using Proposition~\ref{prop:relaxation} and Lemma~\ref{lemma:greedy-bound} we
-can complete the proof of the approximation ratio of our mechanism
-Theorem~\ref{thm:main} by showing that, for any $\varepsilon > 0$, if
-$OPT_{-i}'$, the optimal value of $L$ when $i^*$ is excluded from
-$\mathcal{N}$, has been computed to a precision $\varepsilon$, then the set
-$S^*$ allocated by the mechanism is such that:
-\begin{equation} \label{approxbound}
-OPT
-\leq \frac{10e\!-\!3 + \sqrt{64e^2\!-\!24e\!+\!9}}{2(e\!-\!1)} V(S^*)\!
-+ \! \varepsilon .
-\end{equation}
-To see this, let $L^*_{c_{-i^*}}$ be the maximum value of $L$ subject to
-$\lambda_{i^*}=0$, $\sum_{i\in \mathcal{N}\setminus{i^*}}c_i\leq B$. From line
-\ref{relaxexec} of Algorithm~\ref{mechanism}, we have
-$L^*_{c_{-i^*}}-\varepsilon\leq OPT_{-i^*}' \leq L^*_{c_{-i^*}}+\varepsilon$.
-
-If the condition on line \ref{c} of the algorithm holds then, from the lower bound in Proposition~\ref{prop:relaxation},
-\begin{displaymath}
- V(i^*) \geq \frac{1}{C}L^*_{c_{-i^*}}-\frac{\varepsilon}{C} \geq
- \frac{1}{C}OPT_{-i^*} -\frac{\varepsilon}{C}.
-\end{displaymath}
-Also, $OPT \leq OPT_{-i^*} + V(i^*)$,
-hence,
-\begin{equation}\label{eq:bound1}
- OPT\leq (1+C)V(i^*) + \varepsilon.
-\end{equation}
-If the condition on line \ref{c} does not hold, by observing that $L^*_{c_{-i^*}}\leq L^*_c$ and
-the upper bound of Proposition~\ref{prop:relaxation}, we get
-\begin{displaymath}
- V(i^*)\leq \frac{1}{C}L^*_{c_{-i^*}} + \frac{\varepsilon}{C}
- \leq \frac{1}{C} \big(2 OPT + 2 V(i^*)\big) + \frac{\varepsilon}{C}.
-\end{displaymath}
-Applying Lemma~\ref{lemma:greedy-bound},
-\begin{displaymath}
- V(i^*) \leq \frac{1}{C}\left(\frac{2e}{e-1}\big(3 V(S_G)
- + 2 V(i^*)\big) + 2 V(i^*)\right) + \frac{\varepsilon}{C}.
-\end{displaymath}
-Note that $C$ satifies $C(e-1) -6e +2 > 0$, hence
-\begin{align*}
- V(i^*) \leq \frac{6e}{C(e-1)- 6e + 2} V(S_G)
- + \frac{(e-1)\varepsilon}{C(e-1)- 6e + 2}.
-\end{align*}
-Finally, using Lemma~\ref{lemma:greedy-bound} again, we get
-\begin{equation}\label{eq:bound2}
- OPT \leq
- \frac{3e}{e-1}\left( 1 + \frac{4e}{C (e-1) -6e +2}\right) V(S_G)
- + \frac{2e\varepsilon}{C(e-1)- 6e + 2}.
-\end{equation}
-Our choice of $C$, namely,
-\begin{equation}\label{eq:constant}
- C = \frac{8e-1 + \sqrt{64e^2-24e + 9}}{2(e-1)},
-\end{equation}
- is precisely to minimize the maximum among the coefficients of $V_{i^*}$ and $V(S_G)$ in \eqref{eq:bound1}
-and \eqref{eq:bound2}, respectively. Indeed, consider:
-\begin{displaymath}
- \max\left(1+C,\frac{3e}{e-1}\left( 1 + \frac{4e}{C (e-1) -6e +2}
- \right)\right).
-\end{displaymath}
-This function has two minima, only one of those is such that $C(e-1) -6e
-+2 \geq 0$. This minimum is precisely \eqref{eq:constant}.
-For this minimum, $\frac{2e\varepsilon}{C(e-1)- 6e + 2}\leq \varepsilon.$
-Placing the expression of $C$ in \eqref{eq:bound1} and \eqref{eq:bound2}
-gives the approximation ratio in \eqref{approxbound}, and concludes the proof
-of Theorem~\ref{thm:main}.\hspace*{\stretch{1}}\qed
-
-Finally, we prove the lower bound stated in Theorem~\ref{thm:main}.
-Suppose, for contradiction, that such a mechanism exists. From Myerson's Theorem \cite{myerson}, a single parameter auction is truthful if and only if the allocation function is monotone and agents are paid theshold payments. Consider two
-experiments with dimension $d=2$, such that $x_1 = e_1=[1 ,0]$, $x_2=e_2=[0,1]$
-and $c_1=c_2=B/2+\epsilon$. Then, one of the two experiments, say, $x_1$, must
-be in the set selected by the mechanism, otherwise the ratio is unbounded,
-a contradiction. If $x_1$ lowers its value to $B/2-\epsilon$, by monotonicity
-it remains in the solution; by threshold payment, it is paid at least
-$B/2+\epsilon$. So $x_2$ is not included in the solution by budget feasibility
-and individual rationality: hence, the selected set attains a value $\log2$,
-while the optimal value is $2\log 2$.\hspace*{\stretch{1}}\qed
diff --git a/approximation.tex b/approximation.tex
index 3a4376b..65c0e61 100644
--- a/approximation.tex
+++ b/approximation.tex
@@ -1,7 +1,7 @@
Previous approaches towards designing truthful, budget feasible mechanisms for \textsc{Knapsack}~\cite{chen} and \textsc{Coverage}~\cite{singer-influence} build upon polynomial-time algorithms that compute an approximation of $OPT$, the optimal value in the full information case. Crucially, to be used in designing a truthful mechanism, such algorithms need also to be \emph{monotone}, in the sense that decreasing any cost $c_i$ leads to an increase in the estimation of $OPT$; %In the cases of \textsc{Knapsack} and~\textsc{Coverage}, as well as in the case of \EDP{},
the monotonicity property precludes using traditional approximation algorithms.
-In the first part of this section, we address this issue by designing a convex relaxation of \EDP{}, and showing that its solution can be used to approximate $OPT$. The objective of this relaxation is concave and self-concordant \cite{boyd2004convex} and, as such, there exists an algorithm that solves this relaxed problem with arbitrary accuracy in polynomial time. Unfortunately, the output of this algorithm may not necessarily be monotone. Nevertheless, in the second part of this section, we show that a solver of the relaxed problem can be used to construct a solver that is ``almost'' monotone. In Section~\ref{sec:main}, we show that this algorithm can be used to design a $\delta$-truthful mechanism for \EDP.
+In Section~\ref{sec:concave}, we address this issue by designing a convex relaxation of \EDP{}, and showing that its solution can be used to approximate $OPT$ (Proposition~\ref{prop:relaxation}). The objective of this relaxation is concave and self-concordant \cite{boyd2004convex} and, as such, there exists an algorithm that solves this relaxed problem with arbitrary accuracy in polynomial time. Unfortunately, the output of this algorithm may not necessarily be monotone. Nevertheless, in Section~\ref{sec:monotonicity}, we show that a solver of the relaxed problem can be used to construct a solver that is ``almost'' monotone (Proposition~\ref{prop:monotonicity}). In Section~\ref{sec:main}, we show that this algorithm can be used to design a $\delta$-truthful mechanism for \EDP.
%As noted above, \EDP{} is NP-hard. Designing a mechanism for this problem, as
@@ -29,12 +29,13 @@ In the first part of this section, we address this issue by designing a convex r
%(Proposition~\ref{prop:relaxation}) and then showing how to approximately solve
%this problem in a monotone way.
-\subsection{A Convex Relaxation of \EDP}\label{sec:concave}
+\subsection{A Convex Relaxation of \EDP}
+\label{sec:concave}
A classical way of relaxing combinatorial optimization problems is
\emph{relaxing by expectation}, using the so-called \emph{multi-linear}
extension of the objective function $V$ (see, \emph{e.g.}, \cite{calinescu2007maximizing,vondrak2008optimal,dughmi2011convex}).
-This is because this extension can yield approximation guarantees for a wide class of combinatorial problems through \emph{pipage rounding}, a technique by \citeN{pipage}. In general, such relaxations preserve monotonicity which, as discussed, is required in mechanism design.
+This is because this extension can yield approximation guarantees for a wide class of combinatorial problems through \emph{pipage rounding}, a technique introduced by \citeN{pipage}. In general, such relaxations preserve monotonicity which, as discussed, is required in mechanism design.
Formally, let $P_\mathcal{N}^\lambda$ be a probability distribution over $\mathcal{N}$ parametrized by $\lambda\in [0,1]^n$, where a set $S\subseteq \mathcal{N}$ sampled from $P_\mathcal{N}^\lambda$ is constructed as follows: each $i\in \mathcal{N}$ is selected to be in $S$ independently with probability $\lambda_i$, \emph{i.e.},
%\begin{displaymath}
@@ -73,7 +74,158 @@ For all $\lambda\in[0,1]^{n},$
\,L(\lambda)\leq
F(\lambda)\leq L(\lambda)$.
\end{lemma}
+\begin{comment}
The proof of this lemma can be found in \cite{arxiv}. In short, exploiting the concavity of the $\log\det$ function over the set of positive semi-definite matrices, we first bound the ratio of all partial derivatives of $F$ and $L$. We then show that the bound on the ratio of the derivatives also implies a bound on the ratio $F/L$.
+\end{comment}
+\begin{proof}
+ The bound $F(\lambda)\leq L(\lambda)$ follows by the concavity of the $\log\det$ function and Jensen's inequality.
+ To show the lower bound,
+ we first prove that $\frac{1}{2}$ is a lower bound of the ratio $\partial_i
+ F(\lambda)/\partial_i L(\lambda)$, where we use
+ $\partial_i\, \cdot$ as a shorthand for $\frac{\partial}{\partial \lambda_i}$, the partial derivative with respect to the
+ $i$-th variable.
+
+ Let us start by computing the partial derivatives of $F$ and
+ $L$ with respect to the $i$-th component.
+ Observe that
+ \begin{displaymath}
+ \partial_i P_\mathcal{N}^\lambda(S) = \left\{
+ \begin{aligned}
+ & P_{\mathcal{N}\setminus\{i\}}^\lambda(S\setminus\{i\})\;\textrm{if}\;
+ i\in S, \\
+ & - P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\;\textrm{if}\;
+ i\in \mathcal{N}\setminus S. \\
+ \end{aligned}\right.
+ \end{displaymath}
+ Hence,
+ \begin{displaymath}
+ \partial_i F(\lambda) =
+ \sum_{\substack{S\subseteq\mathcal{N}\\ i\in S}}
+ P_{\mathcal{N}\setminus\{i\}}^\lambda(S\setminus\{i\})V(S)
+ - \sum_{\substack{S\subseteq\mathcal{N}\\ i\in \mathcal{N}\setminus S}}
+ P_{\mathcal{N}\setminus\{i\}}^\lambda(S)V(S).
+ \end{displaymath}
+ Now, using that every $S$ such that $i\in S$ can be uniquely written as
+ $S'\cup\{i\}$, we can write:
+ \begin{displaymath}
+ \partial_i F(\lambda) =
+ \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
+ P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\big(V(S\cup\{i\})
+ - V(S)\big).
+ \end{displaymath}
+Recall from \eqref{eq:marginal_contrib} that the marginal contribution of $i$ to $S$ is given by
+$$V(S\cup \{i\}) - V(S) =\frac{1}{2}\log(1 + \T{x_i}A(S)^{-1}x_i), $$
+where $A(S) = I_d+ \T{X_S}X_S$.
+% $ V(S\cup\{i\}) - V(S) = \frac{1}{2}\log\left(1 + \T{x_i} A(S)^{-1}x_i\right)$.
+Using this,
+ \begin{displaymath}
+ \partial_i F(\lambda) = \frac{1}{2}
+ \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
+ P_{\mathcal{N}\setminus\{i\}}^\lambda(S)
+ \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big)
+ \end{displaymath}
+ The computation of the derivative of $L$ uses standard matrix
+ calculus: writing $\tilde{A}(\lambda) \defeq I_d+\sum_{i\in
+ \mathcal{N}}\lambda_ix_i\T{x_i}$,
+ \begin{displaymath}
+ \det \tilde{A}(\lambda + h\cdot e_i) = \det\big(\tilde{A}(\lambda)
+ + hx_i\T{x_i}\big)
+ =\det \tilde{A}(\lambda)\big(1+
+ h\T{x_i}\tilde{A}(\lambda)^{-1}x_i\big).
+ \end{displaymath}
+ Hence,
+ \begin{displaymath}
+ \log\det\tilde{A}(\lambda + h\cdot e_i)= \log\det\tilde{A}(\lambda)
+ + h\T{x_i}\tilde{A}(\lambda)^{-1}x_i + o(h),
+ \end{displaymath}
+ which implies
+ \begin{displaymath}
+ \partial_i L(\lambda)
+ =\frac{1}{2} \T{x_i}\tilde{A}(\lambda)^{-1}x_i.
+ \end{displaymath}
+Recall from \eqref{eq:inverse} that the monotonicity of the matrix inverse over positive definite matrices implies
+\begin{gather*}
+ \forall S\subseteq\mathcal{N},\quad A(S)^{-1} \succeq A(S\cup\{i\})^{-1}
+\end{gather*}
+as $A(S)\preceq A(S\cup\{i\})$. Observe that since $1\leq \lambda_i\leq 1$,
+$P_{\mathcal{N}\setminus\{i\}}^\lambda(S) \geq P_\mathcal{N}^\lambda(S)$ and
+$P_{\mathcal{N}\setminus\{i\}}^\lambda(S)\geq P_{\mathcal{N}}^\lambda(S\cup\{i\})$
+for all $S\subseteq\mathcal{N}\setminus\{i\}$. Hence,
+\begin{align*}
+ \partial_i F(\lambda)
+ & \geq \frac{1}{4}
+ \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
+ P_{\mathcal{N}}^\lambda(S)
+ \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big)\\
+ &+\frac{1}{4}
+ \sum_{\substack{S\subseteq\mathcal{N}\\ i\in\mathcal{N}\setminus S}}
+ P_{\mathcal{N}}^\lambda(S\cup\{i\})
+ \log\Big(1 + \T{x_i}A(S\cup\{i\})^{-1}x_i\Big)\\
+ &\geq \frac{1}{4}
+ \sum_{S\subseteq\mathcal{N}}
+ P_\mathcal{N}^\lambda(S)
+ \log\Big(1 + \T{x_i}A(S)^{-1}x_i\Big).
+\end{align*}
+Using that $A(S)\succeq I_d$ we get that $\T{x_i}A(S)^{-1}x_i \leq
+\norm{x_i}_2^2 \leq 1$. Moreover, $\log(1+x)\geq x$ for all $x\leq 1$.
+Hence,
+\begin{displaymath}
+ \partial_i F(\lambda) \geq
+ \frac{1}{4}
+ \T{x_i}\bigg(\sum_{S\subseteq\mathcal{N}}P_\mathcal{N}^\lambda(S)A(S)^{-1}\bigg)x_i.
+\end{displaymath}
+Finally, using that the inverse is a matrix convex function over symmetric
+positive definite matrices (see Appendix~\ref{app:properties}):
+\begin{displaymath}
+ \partial_i F(\lambda) \geq
+ \frac{1}{4}
+ \T{x_i}\bigg(\sum_{S\subseteq\mathcal{N}}P_\mathcal{N}^\lambda(S)A(S)\bigg)^{-1}x_i
+ = \frac{1}{4}\T{x_i}\tilde{A}(\lambda)^{-1}x_i
+ = \frac{1}{2}
+ \partial_i L(\lambda).
+\end{displaymath}
+
+Having bound the ratio between the partial derivatives, we now bound the ratio
+$F(\lambda)/L(\lambda)$ from below. Consider the following three cases.
+
+First, if the minimum is attained as $\lambda$ converges to zero in,
+\emph{e.g.}, the $l_2$ norm, by the Taylor approximation, one can write:
+\begin{displaymath}
+ \frac{F(\lambda)}{L(\lambda)}
+ \sim_{\lambda\rightarrow 0}
+ \frac{\sum_{i\in \mathcal{N}}\lambda_i\partial_i F(0)}
+ {\sum_{i\in\mathcal{N}}\lambda_i\partial_i L(0)}
+ \geq \frac{1}{2},
+\end{displaymath}
+\emph{i.e.}, the ratio $\frac{F(\lambda)}{L(\lambda)}$ is necessarily bounded
+from below by 1/2 for small enough $\lambda$.
+
+Second, if the minimum of the ratio $F(\lambda)/L(\lambda)$ is attained at
+a vertex of the hypercube $[0,1]^n$ different from 0. $F$ and $L$ being
+relaxations of the value function $V$, they are equal to $V$ on the vertices
+which are exactly the binary points. Hence, the minimum is equal to 1 in this
+case; in particular, it is greater than $1/2$.
+
+Finally, if the minimum is attained at a point $\lambda^*$ with at least one
+coordinate belonging to $(0,1)$, let $i$ be one such coordinate and consider
+the function $G_i$:
+\begin{displaymath}
+ G_i: x \mapsto \frac{F}{L}(\lambda_1^*,\ldots,\lambda_{i-1}^*, x,
+ \lambda_{i+1}^*, \ldots, \lambda_n^*).
+\end{displaymath}
+Then this function attains a minimum at $\lambda^*_i\in(0,1)$ and its
+derivative is zero at this point. Hence:
+\begin{displaymath}
+ 0 = G_i'(\lambda^*_i) = \partial_i\left(\frac{F}{L}\right)(\lambda^*).
+\end{displaymath}
+But $\partial_i(F/L)(\lambda^*)=0$ implies that
+\begin{displaymath}
+ \frac{F(\lambda^*)}{L(\lambda^*)} = \frac{\partial_i
+ F(\lambda^*)}{\partial_i L(\lambda^*)}\geq \frac{1}{2}
+\end{displaymath}
+using the lower bound on the ratio of the partial derivatives. This concludes
+the proof of the lemma.
+\end{proof}
Armed with this result, we subsequently use pipage rounding to show that any $\lambda$ that maximizes the multi-linear extension $F$ can be rounded to an ``almost'' integral solution. More specifically, given a set of costs $c\in \reals^n_+$, we say that a $\lambda\in [0,1]^n$ is feasible if it belongs to the set $\dom_c =\{\lambda \in [0,1]^n: \sum_{i\in \mathcal{N}} c_i\lambda_i\leq B\}$. Then, the following lemma holds:
@@ -82,15 +234,85 @@ Armed with this result, we subsequently use pipage rounding to show that any $\
$\bar{\lambda}\in \dom_c$ such that (a) $F(\lambda)\leq F(\bar{\lambda})$, and (b) at most one of the
coordinates of $\bar{\lambda}$ is fractional. %, that is, lies in $(0,1)$ and:
\end{lemma}
+\begin{comment}
The proof, also in \cite{arxiv}, follows the main steps of the pipage rounding method of \citeN{pipage}. % this rounding property is referred to in the literature as \emph{cross-convexity} (see, \emph{e.g.}, \cite{dughmi}), or $\varepsilon$-convexity by \citeN{pipage}.
+\end{comment}
+\begin{proof}
+ We give a rounding procedure which, given a feasible $\lambda$ with at least
+ two fractional components, returns some feasible $\lambda'$ with one fewer fractional
+ component such that $F(\lambda) \leq F(\lambda')$.
+
+ Applying this procedure recursively yields the lemma's result.
+ Let us consider such a feasible $\lambda$. Let $i$ and $j$ be two
+ fractional components of $\lambda$ and let us define the following
+ function:
+ \begin{displaymath}
+ F_\lambda(\varepsilon) = F(\lambda_\varepsilon)
+ \quad\textrm{where} \quad
+ \lambda_\varepsilon = \lambda + \varepsilon\left(e_i-\frac{c_i}{c_j}e_j\right)
+ \end{displaymath}
+ It is easy to see that if $\lambda$ is feasible, then:
+ \begin{equation}\label{eq:convex-interval}
+ \forall\varepsilon\in\Big[\max\Big(-\lambda_i,(\lambda_j-1)\frac{c_j}{c_i}\Big), \min\Big(1-\lambda_i, \lambda_j
+ \frac{c_j}{c_i}\Big)\Big],\;
+ \lambda_\varepsilon\;\;\textrm{is feasible}
+ \end{equation}
+ Furthermore, the function $F_\lambda$ is convex; indeed:
+ \begin{align*}
+ F_\lambda(\varepsilon)
+ & = \mathbb{E}_{S'\sim P_{\mathcal{N}\setminus\{i,j\}}^\lambda(S')}\Big[
+ (\lambda_i+\varepsilon)\Big(\lambda_j-\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{i,j\})\\
+ & + (\lambda_i+\varepsilon)\Big(1-\lambda_j+\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{i\})\\
+ &+ (1-\lambda_i-\varepsilon)\Big(\lambda_j-\varepsilon\frac{c_i}{c_j}\Big)V(S'\cup\{j\})\\
+ & + (1-\lambda_i-\varepsilon)\Big(1-\lambda_j+\varepsilon\frac{c_i}{c_j}\Big)V(S')\Big]
+ \end{align*}
+ Thus, $F_\lambda$ is a degree 2 polynomial whose dominant coefficient is:
+ \begin{displaymath}
+ \frac{c_i}{c_j}\mathbb{E}_{S'\sim
+ P_{\mathcal{N}\setminus\{i,j\}}^\lambda(S')}\Big[
+ V(S'\cup\{i\})+V(S'\cup\{i\})\\
+ -V(S'\cup\{i,j\})-V(S')\Big]
+ \end{displaymath}
+ which is positive by submodularity of $V$. Hence, the maximum of
+ $F_\lambda$ over the interval given in \eqref{eq:convex-interval} is
+ attained at one of its limits, at which either the $i$-th or $j$-th component of
+ $\lambda_\varepsilon$ becomes integral.
+\end{proof}
+
Together, Lemma~\ref{lemma:relaxation-ratio} and Lemma~\ref{lemma:rounding} imply that $OPT$, the optimal value of \EDP, can be approximated by solving the following convex optimization problem:
\begin{align}\tag{$P_c$}\label{eq:primal}
\text{Maximize:} \quad L(\lambda)\quad \text{subject to:} \quad\lambda \in \dom_c
\end{align}
-In particular, for $L_c^*\defeq \max_{\lambda\in \dom_c} L(\lambda)$, the following holds \cite{arxiv}:
+In particular, for $L_c^*\defeq \max_{\lambda\in \dom_c} L(\lambda)$, the following holds:
\begin{proposition}\label{prop:relaxation}
$OPT\leq L^*_c \leq 2 OPT + 2\max_{i\in\mathcal{N}}V(i)$.
\end{proposition}
+\begin{proof}
+The lower bound on $L^*_c$ follows immediately from the fact that $L$ extends $V$ to $[0,1]^n$. For the upper bound, let us consider a feasible point $\lambda^*\in \dom_c$ such that
+$L(\lambda^*) = L^*_c$. By applying Lemma~\ref{lemma:relaxation-ratio} and
+Lemma~\ref{lemma:rounding} we get a feasible point $\bar{\lambda}$ with at most
+one fractional component such that
+\begin{equation}\label{eq:e1}
+ L(\lambda^*) \leq 2 F(\bar{\lambda}).
+\end{equation}
+ Let $\lambda_i$ denote the fractional component of $\bar{\lambda}$ and $S$
+ denote the set whose indicator vector is $\bar{\lambda} - \lambda_i e_i$.
+ By definition of the multi-linear extension $F$:
+ \begin{displaymath}
+ F(\bar{\lambda}) = (1-\lambda_i)V(S) +\lambda_i V(S\cup\{i\}).
+ \end{displaymath}
+ By submodularity of $V$, $V(S\cup\{i\})\leq V(S) + V(\{i\})$. Hence,
+ \begin{displaymath}
+ F(\bar{\lambda}) \leq V(S) + V(i).
+ \end{displaymath}
+ Note that since $\bar{\lambda}$ is feasible, $S$ is also feasible and
+ $V(S)\leq OPT$. Hence,
+ \begin{equation}\label{eq:e2}
+ F(\bar{\lambda}) \leq OPT + \max_{i\in\mathcal{N}} V(i).
+ \end{equation}
+Together, \eqref{eq:e1} and \eqref{eq:e2} imply the proposition.
+\end{proof}
+
As we discuss in the next section, $L^*_c$ can be computed by a poly-time algorithm at arbitrary accuracy. However, the outcome of this computation may not necessarily be monotone; we address this by converting this poly-time estimator of $L^*_c$ to one that is ``almost'' monotone.%The optimization program \eqref{eq:non-strategic} extends naturally to such
%a relaxation. We define:
%\begin{equation}\tag{$P_c$}\label{eq:primal}
@@ -136,13 +358,256 @@ Note that $\dom_c=\dom_{c,0}.$ Consider the following perturbed problem:
\end{split}
\end{align}
-Restricting the feasible set to $\dom_{c,\alpha}$ ensures that the gradient of the optimal solution with respect to $c$ is bounded from below. This implies that an approximate solution to $P_{c,\alpha}$ given by the barrier method is $\delta$-decreasing with respect to the costs. On the other hand, by taking $\alpha$ small enough, we ensure that the approximate solution to $P_{c,\alpha}$ is still an $\epsilon$-accurate approximation of $L_c^*$. This methodology is summarized in the following proposition, whose proof can be found in \cite{arxiv}.
+Restricting the feasible set to $\dom_{c,\alpha}$ ensures that the gradient of the optimal solution with respect to $c$ is bounded from below. This implies that an approximate solution to $P_{c,\alpha}$ given by the barrier method is $\delta$-decreasing with respect to the costs. On the other hand, by taking $\alpha$ small enough, we ensure that the approximate solution to $P_{c,\alpha}$ is still an $\epsilon$-accurate approximation of $L_c^*$.
+
+We note that the execution of the barrier method on the restricted set $\dom_{c,\alpha}$ is necessary. The algorithm's output when executed over the entire domain may not necessarily be $\delta$-decreasing, even when the approximation accuracy is small. This is because costs become saturated when the optimal $\lambda\in \dom_c$ lies at the boundary: increasing them has no effect on the objective. Forcing the optimization to happen ``off'' the boundary ensures that this does not occur, while taking $\alpha$ to be small ensures that this perturbation does not cost much in terms of approximation accuracy.
\begin{proposition}\label{prop:monotonicity}
- For any $\delta\in(0,1]$ and any $\varepsilon\in(0,1]$, using the barrier
+ For any $\delta\in(0,1]$ and $\varepsilon\in(0,1]$, using the barrier
method to solve \eqref{eq:perturbed-primal} for $\alpha\defeq\varepsilon
(\delta/B+n^2)^{-1}$ with accuracy $\frac{1}{2^{n+1}B}\alpha\delta b$
yields a $\delta$-decreasing, $\varepsilon$-accurate approximation of
$L^*_c$. The running time of the algorithm is $O\big(poly(n, d,
\log\log\frac{B}{b\varepsilon\delta})\big)$.
\end{proposition}
+
+A formal description of the algorithm used in
+Proposition~\ref{prop:monotonicity} is given in Algorithm~\ref{alg:monotone}.
+We then proceed by showing that the optimal value of
+\eqref{eq:perturbed-primal} is close to the optimal value of \eqref{eq:primal}
+(Lemma~\ref{lemma:proximity}) while being well-behaved with respect to changes
+of the cost (Lemma~\ref{lemma:monotonicity}). These lemmas together imply
+Proposition~\ref{prop:monotonicity}.
+
+\begin{algorithm}[t]
+ \caption{}\label{alg:monotone}
+ \begin{algorithmic}[1]
+ \Require{ $B\in \reals_+$, $c\in[0,B]^n$, $\delta\in (0,1]$, $\epsilon\in (0,1]$ }
+ \State $\alpha \gets \varepsilon (\delta/B+n^2)^{-1}$
+ \State Use the barrier method to solve \eqref{eq:perturbed-primal} with
+ accuracy $\varepsilon'=\frac{1}{2^{n+1}B}\alpha\delta b$; denote the output by $\hat{L}^*_{c,\alpha}$
+ \State \textbf{return} $\hat{L}^*_{c,\alpha}$
+ \end{algorithmic}
+\end{algorithm}
+
+
+
+Note that the choice of $\alpha$ given in Algorithm~\ref{alg:monotone} implies
+that $\alpha<\frac{1}{n}$. This in turn implies that the feasible set
+$\mathcal{D}_{c, \alpha}$ of \eqref{eq:perturbed-primal} is non-empty: it
+contains the strictly feasible point $\lambda=(\frac{1}{n},\ldots,\frac{1}{n})$.
+
+\begin{lemma}\label{lemma:derivative-bounds}
+ Let $\partial_i L(\lambda)$ denote the $i$-th derivative of $L$, for $i\in\{1,\ldots, n\}$, then:
+ \begin{displaymath}
+ \forall\lambda\in[0, 1]^n,\;\frac{b}{2^n} \leq \partial_i L(\lambda) \leq 1
+ \end{displaymath}
+\end{lemma}
+
+\begin{proof}
+ Recall that we had defined:
+ \begin{displaymath}
+ \tilde{A}(\lambda)\defeq I_d + \sum_{i=1}^n \lambda_i x_i\T{x_i}
+ \quad\mathrm{and}\quad
+ A(S) \defeq I_d + \sum_{i\in S} x_i\T{x_i}
+ \end{displaymath}
+ Let us also define $A_k\defeq A(\{x_1,\ldots,x_k\})$.
+ We have $\partial_i L(\lambda) = \T{x_i}\tilde{A}(\lambda)^{-1}x_i$. Since
+ $\tilde{A}(\lambda)\succeq I_d$, $\partial_i L(\lambda)\leq \T{x_i}x_i \leq 1$, which
+ is the right-hand side of the lemma.
+ For the left-hand side, note that $\tilde{A}(\lambda) \preceq A_n$. Hence
+ $\partial_iL(\lambda)\geq \T{x_i}A_n^{-1}x_i$.
+ Using the Sherman-Morrison formula \cite{sm}, for all $k\geq 1$:
+ \begin{displaymath}
+ \T{x_i}A_k^{-1} x_i = \T{x_i}A_{k-1}^{-1}x_i
+ - \frac{(\T{x_i}A_{k-1}^{-1}x_k)^2}{1+\T{x_k}A_{k-1}^{-1}x_k}
+ \end{displaymath}
+ By the Cauchy-Schwarz inequality:
+ \begin{displaymath}
+ (\T{x_i}A_{k-1}^{-1}x_k)^2 \leq \T{x_i}A_{k-1}^{-1}x_i\;\T{x_k}A_{k-1}^{-1}x_k
+ \end{displaymath}
+ Hence:
+ \begin{displaymath}
+ \T{x_i}A_k^{-1} x_i \geq \T{x_i}A_{k-1}^{-1}x_i
+ - \T{x_i}A_{k-1}^{-1}x_i\frac{\T{x_k}A_{k-1}^{-1}x_k}{1+\T{x_k}A_{k-1}^{-1}x_k}
+ \end{displaymath}
+ But $\T{x_k}A_{k-1}^{-1}x_k\leq 1$ and $\frac{a}{1+a}\leq \frac{1}{2}$ if
+ $0\leq a\leq 1$, so:
+ \begin{displaymath}
+ \T{x_i}A_{k}^{-1}x_i \geq \T{x_i}A_{k-1}^{-1}x_i
+ - \frac{1}{2}\T{x_i}A_{k-1}^{-1}x_i\geq \frac{\T{x_i}A_{k-1}^{-1}x_i}{2}
+ \end{displaymath}
+ By induction:
+ \begin{displaymath}
+ \T{x_i}A_n^{-1} x_i \geq \frac{\T{x_i}x_i}{2^n}
+ \end{displaymath}
+ Using that $\T{x_i}{x_i}\geq b$ concludes the proof of the left-hand side
+ of the lemma's inequality.
+\end{proof}
+Let us introduce the Lagrangian of problem \eqref{eq:perturbed-primal}:
+
+\begin{displaymath}
+ \mathcal{L}_{c, \alpha}(\lambda, \mu, \nu, \xi) \defeq L(\lambda)
+ + \T{\mu}(\lambda-\alpha\mathbf{1}) + \T{\nu}(\mathbf{1}-\lambda) + \xi(B-\T{c}\lambda)
+\end{displaymath}
+so that:
+\begin{displaymath}
+ L^*_{c,\alpha} = \min_{\mu, \nu, \xi\geq 0}\max_\lambda \mathcal{L}_{c, \alpha}(\lambda, \mu, \nu, \xi)
+\end{displaymath}
+Similarly, we define $\mathcal{L}_{c}\defeq\mathcal{L}_{c, 0}$ the lagrangian of \eqref{eq:primal}.
+
+Let $\lambda^*$ be primal optimal for \eqref{eq:perturbed-primal}, and $(\mu^*,
+\nu^*, \xi^*)$ be dual optimal for the same problem. In addition to primal and
+dual feasibility, the Karush-Kuhn-Tucker (KKT) conditions \cite{boyd2004convex} give $\forall i\in\{1, \ldots, n\}$:
+\begin{gather*}
+ \partial_i L(\lambda^*) + \mu_i^* - \nu_i^* - \xi^* c_i = 0\\
+ \mu_i^*(\lambda_i^* - \alpha) = 0\\
+ \nu_i^*(1 - \lambda_i^*) = 0
+\end{gather*}
+
+\begin{lemma}\label{lemma:proximity}
+We have:
+\begin{displaymath}
+ L^*_c - \alpha n^2\leq L^*_{c,\alpha} \leq L^*_c
+\end{displaymath}
+In particular, $|L^*_c - L^*_{c,\alpha}| \leq \alpha n^2$.
+\end{lemma}
+
+\begin{proof}
+ $\alpha\mapsto L^*_{c,\alpha}$ is a decreasing function as it is the
+ maximum value of the $L$ function over a set-decreasing domain, which gives
+ the rightmost inequality.
+
+ Let $\mu^*, \nu^*, \xi^*$ be dual optimal for $(P_{c, \alpha})$, that is:
+ \begin{displaymath}
+ L^*_{c,\alpha} = \max_\lambda \mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*)
+ \end{displaymath}
+
+ Note that $\mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*)
+ = \mathcal{L}_{c}(\lambda, \mu^*, \nu^*, \xi^*)
+ - \alpha\T{\mathbf{1}}\mu^*$, and that for any $\lambda$ feasible for
+ problem \eqref{eq:primal}, $\mathcal{L}_{c}(\lambda, \mu^*, \nu^*, \xi^*)
+ \geq L(\lambda)$. Hence,
+ \begin{displaymath}
+ L^*_{c,\alpha} \geq L(\lambda) - \alpha\T{\mathbf{1}}\mu^*
+ \end{displaymath}
+ for any $\lambda$ feasible for \eqref{eq:primal}. In particular, for $\lambda$ primal optimal for $\eqref{eq:primal}$:
+ \begin{equation}\label{eq:local-1}
+ L^*_{c,\alpha} \geq L^*_c - \alpha\T{\mathbf{1}}\mu^*
+ \end{equation}
+
+ Let us denote by the $M$ the support of $\mu^*$, that is $M\defeq
+ \{i|\mu_i^* > 0\}$, and by $\lambda^*$ a primal optimal point for
+ $\eqref{eq:perturbed-primal}$. From the KKT conditions we see that:
+ \begin{displaymath}
+ M \subseteq \{i|\lambda_i^* = \alpha\}
+ \end{displaymath}
+
+
+ Let us first assume that $|M| = 0$, then $\T{\mathbf{1}}\mu^*=0$ and the lemma follows.
+
+ We will now assume that $|M|\geq 1$. In this case $\T{c}\lambda^*
+ = B$, otherwise we could increase the coordinates of $\lambda^*$ in $M$,
+ which would increase the value of the objective function and contradict the
+ optimality of $\lambda^*$. Note also, that $|M|\leq n-1$, otherwise, since
+ $\alpha< \frac{1}{n}$, we would have $\T{c}\lambda^*\ < B$, which again
+ contradicts the optimality of $\lambda^*$. Let us write:
+ \begin{displaymath}
+ B = \T{c}\lambda^* = \alpha\sum_{i\in M}c_i + \sum_{i\in \bar{M}}\lambda_i^*c_i
+ \leq \alpha |M|B + (n-|M|)\max_{i\in \bar{M}} c_i
+ \end{displaymath}
+ That is:
+ \begin{equation}\label{local-2}
+ \max_{i\in\bar{M}} c_i \geq \frac{B - B|M|\alpha}{n-|M|}> \frac{B}{n}
+ \end{equation}
+ where the last inequality uses again that $\alpha<\frac{1}{n}$. From the
+ KKT conditions, we see that for $i\in M$, $\nu_i^* = 0$ and:
+ \begin{equation}\label{local-3}
+ \mu_i^* = \xi^*c_i - \partial_i L(\lambda^*)\leq \xi^*c_i\leq \xi^*B
+ \end{equation}
+ since $\partial_i L(\lambda^*)\geq 0$ and $c_i\leq 1$.
+
+ Furthermore, using the KKT conditions again, we have that:
+ \begin{equation}\label{local-4}
+ \xi^* \leq \inf_{i\in \bar{M}}\frac{\partial_i L(\lambda^*)}{c_i}\leq \inf_{i\in \bar{M}} \frac{1}{c_i}
+ = \frac{1}{\max_{i\in\bar{M}} c_i}
+ \end{equation}
+ where the last inequality uses Lemma~\ref{lemma:derivative-bounds}.
+ Combining \eqref{local-2}, \eqref{local-3} and \eqref{local-4}, we get that:
+ \begin{displaymath}
+ \sum_{i\in M}\mu_i^* \leq |M|\xi^*B \leq n\xi^*B\leq \frac{nB}{\max_{i\in\bar{M}} c_i} \leq n^2
+ \end{displaymath}
+ This implies that:
+ \begin{displaymath}
+ \T{\mathbf{1}}\mu^* = \sum_{i=1}^n \mu^*_i = \sum_{i\in M}\mu_i^*\leq n^2
+ \end{displaymath}
+ which along with \eqref{eq:local-1} proves the lemma.
+\end{proof}
+
+\begin{lemma}\label{lemma:monotonicity}
+ If $c'$ = $(c_i', c_{-i})$, with $c_i'\leq c_i - \delta$, we have:
+ \begin{displaymath}
+ L^*_{c',\alpha} \geq L^*_{c,\alpha} + \frac{\alpha\delta b}{2^nB}
+ \end{displaymath}
+\end{lemma}
+
+\begin{proof}
+ Let $\mu^*, \nu^*, \xi^*$ be dual optimal for $(P_{c', \alpha})$. Noting that:
+ \begin{displaymath}
+ \mathcal{L}_{c', \alpha}(\lambda, \mu^*, \nu^*, \xi^*) \geq
+ \mathcal{L}_{c, \alpha}(\lambda, \mu^*, \nu^*, \xi^*) + \lambda_i\xi^*\delta,
+ \end{displaymath}
+ we get similarly to Lemma~\ref{lemma:proximity}:
+ \begin{displaymath}
+ L^*_{c',\alpha} \geq L(\lambda) + \lambda_i\xi^*\delta
+ \end{displaymath}
+ for any $\lambda$ feasible for \eqref{eq:perturbed-primal}. In particular, for $\lambda^*$ primal optimal for \eqref{eq:perturbed-primal}:
+ \begin{displaymath}
+ L^*_{c',\alpha} \geq L^*_{c,\alpha} + \alpha\xi^*\delta
+ \end{displaymath}
+ since $\lambda_i^*\geq \alpha$.
+
+ Using the KKT conditions for $(P_{c', \alpha})$, we can write:
+ \begin{displaymath}
+ \xi^* = \inf_{i:\lambda^{'*}_i>\alpha} \frac{\T{x_i}S(\lambda^{'*})^{-1}x_i}{c_i'}
+ \end{displaymath}
+ with $\lambda^{'*}$ optimal for $(P_{c', \alpha})$. Since $c_i'\leq B$,
+ using Lemma~\ref{lemma:derivative-bounds}, we get that $\xi^*\geq
+ \frac{b}{2^nB}$, which concludes the proof.
+\end{proof}
+
+We are now ready to conclude the proof of Proposition~\ref{prop:monotonicity}.
+
+\begin{proof}
+Let $\hat{L}^*_{c,\alpha}$ be the approximation computed by
+Algorithm~\ref{alg:monotone}.
+\begin{enumerate}
+ \item using Lemma~\ref{lemma:proximity}:
+\begin{displaymath}
+ |\hat{L}^*_{c,\alpha} - L^*_c| \leq |\hat{L}^*_{c,\alpha} - L^*_{c,\alpha}| + |L^*_{c,\alpha} - L^*_c|
+ \leq \frac{\alpha\delta}{B} + \alpha n^2 = \varepsilon
+\end{displaymath}
+which proves the $\varepsilon$-accuracy.
+
+\item for the $\delta$-decreasingness, let $c' = (c_i', c_{-i})$ with $c_i'\leq
+ c_i-\delta$, then:
+\begin{displaymath}
+ \hat{L}^*_{c',\alpha} \geq L^*_{c',\alpha} - \frac{\alpha\delta b}{2^{n+1}B}
+ \geq L^*_{c,\alpha} + \frac{\alpha\delta b}{2^{n+1}B}
+ \geq \hat{L}^*_{c,\alpha}
+\end{displaymath}
+where the first and last inequalities follow from the accuracy of the approximation, and
+the inner inequality follows from Lemma~\ref{lemma:monotonicity}.
+
+\item the accuracy of the approximation $\hat{L}^*_{c,\alpha}$ is:
+\begin{displaymath}
+ \varepsilon' =\frac{\varepsilon\delta b}{2^{n+1}(\delta + n^2B)}
+\end{displaymath}
+
+Note that:
+\begin{displaymath}
+ \log\log (\varepsilon')^{-1} = O\bigg(\log\log\frac{B}{\varepsilon\delta b} + \log n\bigg)
+\end{displaymath}
+Using Lemma~\ref{lemma:barrier} concludes the proof of the running time.\qedhere
+\end{enumerate}
+\end{proof}
diff --git a/conclusion.tex b/conclusion.tex
index 4db1030..6b17237 100644
--- a/conclusion.tex
+++ b/conclusion.tex
@@ -5,7 +5,7 @@ polynomial time. %Our objective function, commonly known as the Bayes $D$-optima
A natural question to ask is to what extent ou results
%we present here
generalize to other machine learning tasks beyond linear regression. We outline
-a path to such a generalization in \cite{arxiv}: %. In
+a path to such a generalization in Appendix~\ref{sec:ext}: %. In
%particular, although the information gain is not generally a submodular
%function, we show that
for a wide class of models in which experiment
diff --git a/definitions.tex b/definitions.tex
index 236c368..73e7a35 100644
--- a/definitions.tex
+++ b/definitions.tex
@@ -9,7 +9,7 @@
%\newtheorem{corollary}{Corollary}
%\theoremstyle{definition}
%\newtheorem{definition}{Definition}
-\newcommand{\citeN}{\citet}
+%\newcommand{\citeN}{\citet}
%\newcommand*{\defeq}{\stackrel{\text{def}}{=}}
\newcommand*{\defeq}{\equiv}
\newcommand{\var}{\mathop{\mathrm{Var}}}
diff --git a/intro.tex b/intro.tex
index 8e684a0..27db6df 100644
--- a/intro.tex
+++ b/intro.tex
@@ -61,7 +61,7 @@ Our convex relaxation of \EDP{} involves maximizing a self-concordant function s
%Our approach to mechanisms for experimental design --- by
% optimizing the information gain in parameters like $\beta$ which are estimated through the data analysis process --- is general. We give examples of this approach beyond linear regression to a general class that includes logistic regression and learning binary functions, and show that the corresponding budgeted mechanism design problem is also expressed through a submodular optimization. Hence, prior work \cite{chen,singer-mechanisms} immediately applies, and gives randomized, universally truthful, polynomial time, constant factor approximation mechanisms for problems in this class. Getting deterministic, truthful, polynomial time mechanisms with a constant approximation factor for this class or specific problems in it, like we did for \EDP, remains an open problem.
-In what follows, we describe related work in Section~\ref{sec:related}. We briefly review experimental design and budget feasible mechanisms in Section~\ref{sec:peel} and define \SEDP\ formally. We present our convex relaxation to \EDP{} in Section~\ref{sec:approximation} and use it to construct our mechanism in Section~\ref{sec:main}. We conclude in Section~\ref{sec:concl}. All proofs of our technical results are provided in the full version of this paper \cite{arxiv}. %we present our mechanism for \SEDP\ and state our main results. %A generalization of our framework to machine learning tasks beyond linear regression is presented in Section~\ref{sec:ext}.
+In what follows, we describe related work in Section~\ref{sec:related}. We briefly review experimental design and budget feasible mechanisms in Section~\ref{sec:peel} and define \SEDP\ formally. We present our convex relaxation to \EDP{} in Section~\ref{sec:approximation} and use it to construct our mechanism in Section~\ref{sec:main}. We conclude in Section~\ref{sec:concl}. %we present our mechanism for \SEDP\ and state our main results. %A generalization of our framework to machine learning tasks beyond linear regression is presented in Section~\ref{sec:ext}.
\junk{
diff --git a/main.tex b/main.tex
index 0354ad6..e3f557b 100644
--- a/main.tex
+++ b/main.tex
@@ -1,6 +1,6 @@
\label{sec:main}
-The $\delta$-decreasing, $\epsilon$-accurate algorithm solving the convex optimization problem \eqref{eq:primal} can be used to design a mechanism for \SEDP. The construction follows a methodology proposed in \cite{singer-mechanisms} and employed by \citeN{chen} and \citeN{singer-influence} to construct \junk{deterministic, truthful} mechanisms for \textsc{Knapsack} and \textsc{Coverage} respectively. We briefly outline this below (see \cite{arxiv} for a detailed description).
+The $\delta$-decreasing, $\epsilon$-accurate algorithm solving the convex optimization problem \eqref{eq:primal} can be used to design a mechanism for \SEDP. The construction follows a methodology proposed in \cite{singer-mechanisms} and employed by \citeN{chen} and \citeN{singer-influence} to construct \junk{deterministic, truthful} mechanisms for \textsc{Knapsack} and \textsc{Coverage} respectively.
Recall from Section~\ref{sec:fullinfo} that $i^*\defeq \arg\max_{i\in
\mathcal{N}} V(\{i\})$ is the element of maximum value, and $S_G$ is a set
@@ -24,7 +24,7 @@ polynomial time. We show that the convex relaxation \eqref{eq:primal}, solved
by an $\epsilon$-accurate, $\delta$-decreasing algorithm, can be used to
construct a $\delta$-truthful, constant approximation \mbox{mechanism.}
-To obtain this result, we use the following modified version of Myerson's theorem \cite{myerson}, whose proof we provide in \cite{arxiv}.
+To obtain this result, we use the following modified version of Myerson's theorem \cite{myerson}.
\begin{lemma}\label{thm:myerson-variant}
A normalized mechanism $\mathcal{M} = (S,p)$ for a single parameter auction is
@@ -35,14 +35,51 @@ fixed costs $c_{-i}$ of agents in $\mathcal{N}\setminus\{i\}$, $i\in S(c_i,
c_{-i})$ implies $i\in S(c_i', c_{-i})$, and (b)
agents are paid \emph{threshold payments}, \emph{i.e.}, for all $i\in S(c)$, $p_i(c)=\inf\{c_i': i\in S(c_i', c_{-i})\}$.
\end{lemma}
-Lemma~\ref{thm:myerson-variant} allows us to incorporate our relaxation in the
-above framework, yielding the following theorem:
+\input{myerson}
+
+\begin{algorithm}
+ \caption{Mechanism for \SEDP{}}\label{mechanism}
+ \begin{algorithmic}[1]
+ %\State $\mathcal{N} \gets \mathcal{N}\setminus\{i\in\mathcal{N} : c_i > B\}$
+ \Require{ $B\in \reals_+$,$c\in[0,B]^n$, $\delta\in (0,1]$, $\epsilon\in (0,1]$ }
+ \State $i^* \gets \argmax_{j\in\mathcal{N}}V(j)$
+ \State \label{relaxexec}$OPT'_{-i^*} \gets$ using Proposition~\ref{prop:monotonicity},
+ compute a $\varepsilon$-accurate, $\delta$-decreasing
+ approximation of $$\textstyle L^*_{c_{-i^*}}\defeq\max_{\lambda\in[0,1]^{n}} \{L(\lambda)
+ \mid \lambda_{i^*}=0,\sum_{i \in \mathcal{N}\setminus\{i^*\}}c_i\lambda_i\leq B\}$$
+ %\Statex
+ \State $C \gets \frac{8e-1 + \sqrt{64e^2-24e + 9}}{2(e-1)}$
-%In the strategic case, Algorithm~\eqref{eq:max-algorithm} breaks incentive compatibility. Indeed, \citeN{singer-influence} notes that this allocation function is not monotone, which implies by Myerson's theorem (Theorem~\ref{thm:myerson}) that the resulting mechanism is not truthful.
+ \If{$OPT'_{-i^*} < C \cdot V(i^*)$} \label{c}
+ \State \textbf{return} $\{i^*\}$
+ \Else
+ \State $i \gets \argmax_{1\leq j\leq n}\frac{V(j)}{c_j}$
+ \State $S_G \gets \emptyset$
+ \While{$c_i\leq \frac{B}{2}\frac{V(S_G\cup\{i\})-V(S_G)}{V(S_G\cup\{i\})}$}
+ \State $S_G \gets S_G\cup\{i\}$
+ \State $i \gets \argmax_{j\in\mathcal{N}\setminus S_G}
+ \frac{V(S_G\cup\{j\})-V(S_G)}{c_j}$
+ \EndWhile
+ \State \textbf{return} $S_G$
+ \EndIf
+ \end{algorithmic}
+\end{algorithm}
+
+Lemma~\ref{thm:myerson-variant} allows us to incorporate our relaxation in the
+above framework. Our mechanism for \EDP{} is composed of
+(a) the allocation function presented in Algorithm~\ref{mechanism}, and
+(b) the payment function which pays each allocated agent $i$ her threshold
+payment as described in Myerson's Theorem (see Lemma~\ref{thm:myerson-variant}). In the case where $\{i^*\}$ is the
+allocated set, her threshold payment is $B$. %(she would be have been dropped on
+%line 1 of Algorithm~\ref{mechanism} had she reported a higher cost).
+A closed-form formula for threshold payments when $S_G$ is the allocated set can
+be found in~\cite{singer-mechanisms}. The guarantees of the resulting mechanism
+are summarized in the following Theorem.
\begin{theorem}\label{thm:main}\label{thm:lowerbound}
- For any $\delta\in(0,1]$, and any $\epsilon\in (0,1]$, there exists a $\delta$-truthful, individually rational
- and budget feasible mechanim for \EDP{} that runs in time
+ For any $\delta\in(0,1]$, and any $\epsilon\in (0,1]$, the mechanism
+ described in Algorithm~\ref{mechanism} is $\delta$-truthful, individually rational
+ and budget feasible mechanim for \EDP{}. Furthermore, it runs in time
$O\big(poly(n, d, \log\log\frac{B}{b\varepsilon\delta})\big)$
and allocates
a set $S^*$ such that
@@ -52,11 +89,195 @@ above framework, yielding the following theorem:
\varepsilon
\simeq 12.98V(S^*) + \varepsilon.
\end{displaymath}
-Furthemore, there is no $2$-approximate, truthful, budget feasible, individually rational
+\end{theorem}
+
+A corresponding lower bound is given by the following theorem.
+
+\begin{theorem}
+There is no $2$-approximate, truthful, budget feasible, individually rational
mechanism for EDP.
\end{theorem}
-The detailed description of our proposed mechanism as well as the proof of the theorem can be found in \cite{arxiv}.
+We use the notation $OPT_{-i^*}$ to denote the optimal value of \EDP{} when the
+maximum value element $i^*$ is excluded. We also use $OPT'_{-i^*}$ to denote
+the approximation computed by the $\delta$-decreasing, $\epsilon$-accurate
+approximation of $L^*_{c_{-i^*}}$, as defined in Algorithm~\ref{alg:monotone}.
+
+
+The properties of $\delta$-truthfulness and
+individual rationality follow from $\delta$-monotonicity and threshold
+payments. $\delta$-monotonicity and budget feasibility follow similar steps as the
+analysis of \citeN{chen}, adapted to account for $\delta$-monotonicity:
+\begin{lemma}\label{lemma:monotone}
+ The mechanism for \EDP{} described in Algorithm~\ref{mechanism} is
+ $\delta$-monotone and budget feasible.
+\end{lemma}
+
+\begin{proof}
+ Consider an agent $i$ with cost $c_i$ that is
+ selected by the mechanism, and suppose that she reports
+ a cost $c_i'\leq c_i-\delta$ while all other costs stay the same.
+ Suppose that when $i$ reports $c_i$, $OPT'_{-i^*} \geq C V(i^*)$; then, as $s_i(c_i,c_{-i})=1$, $i\in S_G$.
+ By reporting cost $c_i'$, $i$ may be selected at an earlier iteration of the greedy algorithm.
+ %using the submodularity of $V$, we see that $i$ will satisfy the greedy
+ %selection rule:
+ %\begin{displaymath}
+ % i = \argmax_{j\in\mathcal{N}\setminus S} \frac{V(S\cup\{j\})
+ % - V(S)}{c_j}
+ %\end{displaymath}
+ %in an earlier iteration of the greedy heuristic.
+ Denote by $S_i$
+ (resp. $S_i'$) the set to which $i$ is added when reporting cost $c_i$
+ (resp. $c_i'$). We have $S_i'\subseteq S_i$; in addition, $S_i'\subseteq S_G'$, the set selected by the greedy algorithm under $(c_i',c_{-i})$; if not, then greedy selection would terminate prior to selecting $i$ also when she reports $c_i$, a contradiction. Moreover, we have
+ \begin{align*}
+ c_i' & \leq c_i \leq
+ \frac{B}{2}\frac{V(S_i\cup\{i\})-V(S_i)}{V(S_i\cup\{i\})}
+ \leq \frac{B}{2}\frac{V(S_i'\cup\{i\})-V(S_i')}{V(S_i'\cup\{i\})}
+ \end{align*}
+ by the monotonicity and submodularity of $V$. Hence $i\in S_G'$. By
+ $\delta$-decreasingness of
+ $OPT'_{-i^*}$, under $c'_i\leq c_i-\delta$ the greedy set is still allocated and $s_i(c_i',c_{-i}) =1$.
+ Suppose now that when $i$ reports $c_i$, $OPT'_{-i^*} < C V(i^*)$. Then $s_i(c_i,c_{-i})=1$ iff $i = i^*$.
+ Reporting $c_{i^*}'\leq c_{i^*}$ does not change $V(i^*)$ nor
+ $OPT'_{-i^*} \leq C V(i^*)$; thus $s_{i^*}(c_{i^*}',c_{-i^*})=1$, so the mechanism is monotone.
+
+To show budget feasibility, suppose that $OPT'_{-i^*} < C V(i^*)$. Then the mechanism selects $i^*$. Since the bid of $i^*$ does not affect the above condition, the threshold payment of $i^*$ is $B$ and the mechanism is budget feasible.
+Suppose that $OPT'_{-i^*} \geq C V(i^*)$.
+Denote by $S_G$ the set selected by the greedy algorithm, and for $i\in S_G$, denote by
+$S_i$ the subset of the solution set that was selected by the greedy algorithm just prior to the addition of $i$---both sets determined for the present cost vector $c$.
+%Chen \emph{et al.}~\cite{chen} show that,
+Then for any submodular function $V$, and for all $i\in S_G$:
+%the reported cost of an agent selected by the greedy heuristic, and holds for
+%any submodular function $V$:
+\begin{equation}\label{eq:budget}
+ \text{if}~c_i'\geq \frac{V(S_i\cup\{i\}) - V(S)}{V(S_G)} B~\text{then}~s_i(c_i',c_{-i})=0
+\end{equation}
+In other words, if $i$ increases her cost to a value higher than $\frac{V(S_i\cup\{i\}) - V(S)}{V(S_G)}$, she will cease to be in the selected set $S_G$. As a result,
+\eqref{eq:budget}
+implies that the threshold payment of user $i$ is bounded by the above quantity.
+%\begin{displaymath}
+%\frac{V(S_i\cup\{i\}) - V(S_i)}{V(S_G)} = B
+%\end{displaymath}
+Hence, the total payment is bounded by the telescopic sum:
+\begin{displaymath}
+ \sum_{i\in S_G} \frac{V(S_i\cup\{i\}) - V(S_i)}{V(S_G)} B = \frac{V(S_G)-V(\emptyset)}{V(S_G)} B=B\qedhere
+\end{displaymath}
+\end{proof}
+
+The complexity of the mechanism is given by the following lemma.
+
+\begin{lemma}[Complexity]\label{lemma:complexity}
+ For any $\varepsilon > 0$ and any $\delta>0$, the complexity of the
+ mechanism described in Algorithm~\ref{mechanism} is
+ $O\big(poly(n, d, \log\log\frac{B}{b\varepsilon\delta})\big)$.
+\end{lemma}
+
+\begin{proof}
+ The value function $V$ in \eqref{modified} can be computed in time
+ $O(\text{poly}(n, d))$ and the mechanism only involves a linear
+ number of queries to the function $V$.
+ By Proposition~\ref{prop:monotonicity}, line \ref{relaxexec} of Algorithm~\ref{mechanism}
+ can be computed in time
+ $O(\text{poly}(n, d, \log\log \frac{B}{b\varepsilon\delta}))$. Hence the allocation
+ function's complexity is as stated.
+ %Payments can be easily computed in time $O(\text{poly}(n, d))$ as in prior work.
+\junk{
+ Using Singer's characterization of the threshold payments
+ \cite{singer-mechanisms}, one can verify that they can be computed in time
+ $O(\text{poly}(n, d))$.
+ }
+\end{proof}
+
+Finally, we prove the approximation ratio of the mechanism.
+We use the following lemma from \cite{chen} which bounds $OPT$ in terms of
+the value of $S_G$, as computed in Algorithm \ref{mechanism}, and $i^*$, the
+element of maximum value.
+
+\begin{lemma}[\cite{chen}]\label{lemma:greedy-bound}
+Let $S_G$ be the set computed in Algorithm \ref{mechanism} and let
+$i^*=\argmax_{i\in\mathcal{N}} V(\{i\})$. We have:
+\begin{displaymath}
+OPT \leq \frac{e}{e-1}\big( 3 V(S_G) + 2 V(i^*)\big).
+\end{displaymath}
+\end{lemma}
+
+Using Proposition~\ref{prop:relaxation} and Lemma~\ref{lemma:greedy-bound} we
+can complete the proof of the approximation ratio of our mechanism
+Theorem~\ref{thm:main} by showing that, for any $\varepsilon > 0$, if
+$OPT_{-i}'$, the optimal value of $L$ when $i^*$ is excluded from
+$\mathcal{N}$, has been computed to a precision $\varepsilon$, then the set
+$S^*$ allocated by the mechanism is such that:
+\begin{equation} \label{approxbound}
+OPT
+\leq \frac{10e\!-\!3 + \sqrt{64e^2\!-\!24e\!+\!9}}{2(e\!-\!1)} V(S^*)\!
++ \! \varepsilon .
+\end{equation}
+\begin{proof}
+Let $L^*_{c_{-i^*}}$ be the maximum value of $L$ subject to
+$\lambda_{i^*}=0$, $\sum_{i\in \mathcal{N}\setminus{i^*}}c_i\leq B$. From line
+\ref{relaxexec} of Algorithm~\ref{mechanism}, we have
+$L^*_{c_{-i^*}}-\varepsilon\leq OPT_{-i^*}' \leq L^*_{c_{-i^*}}+\varepsilon$.
+If the condition on line \ref{c} of the algorithm holds then, from the lower bound in Proposition~\ref{prop:relaxation},
+\begin{displaymath}
+ V(i^*) \geq \frac{1}{C}L^*_{c_{-i^*}}-\frac{\varepsilon}{C} \geq
+ \frac{1}{C}OPT_{-i^*} -\frac{\varepsilon}{C}.
+\end{displaymath}
+Also, $OPT \leq OPT_{-i^*} + V(i^*)$,
+hence,
+\begin{equation}\label{eq:bound1}
+ OPT\leq (1+C)V(i^*) + \varepsilon.
+\end{equation}
+If the condition on line \ref{c} does not hold, by observing that $L^*_{c_{-i^*}}\leq L^*_c$ and
+the upper bound of Proposition~\ref{prop:relaxation}, we get
+\begin{displaymath}
+ V(i^*)\leq \frac{1}{C}L^*_{c_{-i^*}} + \frac{\varepsilon}{C}
+ \leq \frac{1}{C} \big(2 OPT + 2 V(i^*)\big) + \frac{\varepsilon}{C}.
+\end{displaymath}
+Applying Lemma~\ref{lemma:greedy-bound},
+\begin{displaymath}
+ V(i^*) \leq \frac{1}{C}\left(\frac{2e}{e-1}\big(3 V(S_G)
+ + 2 V(i^*)\big) + 2 V(i^*)\right) + \frac{\varepsilon}{C}.
+\end{displaymath}
+Note that $C$ satifies $C(e-1) -6e +2 > 0$, hence
+\begin{align*}
+ V(i^*) \leq \frac{6e}{C(e-1)- 6e + 2} V(S_G)
+ + \frac{(e-1)\varepsilon}{C(e-1)- 6e + 2}.
+\end{align*}
+Finally, using Lemma~\ref{lemma:greedy-bound} again, we get
+\begin{equation}\label{eq:bound2}
+ OPT \leq
+ \frac{3e}{e-1}\left( 1 + \frac{4e}{C (e-1) -6e +2}\right) V(S_G)
+ + \frac{2e\varepsilon}{C(e-1)- 6e + 2}.
+\end{equation}
+Our choice of $C$, namely,
+\begin{equation}\label{eq:constant}
+ C = \frac{8e-1 + \sqrt{64e^2-24e + 9}}{2(e-1)},
+\end{equation}
+ is precisely to minimize the maximum among the coefficients of $V_{i^*}$ and $V(S_G)$ in \eqref{eq:bound1}
+and \eqref{eq:bound2}, respectively. Indeed, consider:
+\begin{displaymath}
+ \max\left(1+C,\frac{3e}{e-1}\left( 1 + \frac{4e}{C (e-1) -6e +2}
+ \right)\right).
+\end{displaymath}
+This function has two minima, only one of those is such that $C(e-1) -6e
++2 \geq 0$. This minimum is precisely \eqref{eq:constant}.
+For this minimum, $\frac{2e\varepsilon}{C(e-1)- 6e + 2}\leq \varepsilon.$
+Placing the expression of $C$ in \eqref{eq:bound1} and \eqref{eq:bound2}
+gives the approximation ratio in \eqref{approxbound}, and concludes the proof
+of Theorem~\ref{thm:main}.\hspace*{\stretch{1}}\qed
+\end{proof}
+\begin{proof}
+Finally, we prove the lower bound stated in Theorem~\ref{thm:main}.
+Suppose, for contradiction, that such a mechanism exists. From Myerson's Theorem \cite{myerson}, a single parameter auction is truthful if and only if the allocation function is monotone and agents are paid theshold payments. Consider two
+experiments with dimension $d=2$, such that $x_1 = e_1=[1 ,0]$, $x_2=e_2=[0,1]$
+and $c_1=c_2=B/2+\epsilon$. Then, one of the two experiments, say, $x_1$, must
+be in the set selected by the mechanism, otherwise the ratio is unbounded,
+a contradiction. If $x_1$ lowers its value to $B/2-\epsilon$, by monotonicity
+it remains in the solution; by threshold payment, it is paid at least
+$B/2+\epsilon$. So $x_2$ is not included in the solution by budget feasibility
+and individual rationality: hence, the selected set attains a value $\log2$,
+while the optimal value is $2\log 2$.\hspace*{\stretch{1}}\qed
+\end{proof}
diff --git a/myerson.tex b/myerson.tex
index 8c80cf6..371e0d3 100644
--- a/myerson.tex
+++ b/myerson.tex
@@ -1,4 +1,5 @@
-Using the notations of Lemma~\ref{thm:myerson-variant}, we want to prove that
+\begin{proof}
+We want to prove that
if $c_i$ and $c_i'$ are two different costs reported by user $i$ with $|c_i
- c_i'|\geq \delta$, and if $c_{-i}$ is any vector of costs reported by the
other users:
@@ -29,3 +30,4 @@ c_{-i}) = 0$ implies that $i$'s threshold payment is less than $c_i$,
\emph{i.e.} $p_i(c_i', c_{-i}) \leq c_i$. This last inequality is equivalent to
\eqref{eq:local-foobar} in this final case. \qed
\end{enumerate}
+\end{proof}
diff --git a/paper.tex b/paper.tex
index e029aa4..946d898 100755
--- a/paper.tex
+++ b/paper.tex
@@ -1,30 +1,22 @@
-\documentclass{llncs}
-\usepackage[numbers, sectionbib]{natbib}
+\documentclass[prodmode,acmteac]{acmsmall}
+%\usepackage[numbers, sectionbib]{natbib}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsfonts}
\usepackage{algorithm, algpseudocode}
-\usepackage{bbm,color,verbatim}
+\usepackage{bbm,color,verbatim, microtype}
\input{definitions}
-\usepackage[pagebackref=true,breaklinks=true,colorlinks=true,pagebackref=false]{hyperref}
-\title{Budget Feasible Mechanisms \\for Experimental Design}
+\usepackage[pagebackref=false,breaklinks=true]{hyperref}
+\title{Budget Feasible Mechanisms for Experimental Design}
\author{
- Thibaut Horel\inst{1}
- \and
- Stratis Ioannidis\inst{2}
- \and
- S. Muthukrishnan\inst{3}
-}
-\institute{École Normale Supérieure, \email{thibaut.horel@normalesup.org}
- \and
- Technicolor, \email{stratis.ioannidis@technicolor.com}
- \and
- Rutgers University, \email{muthu@cs.rutgers.edu}
+ Thibaut Horel\affil{Harvard University}
+ Stratis Ioannidis\affil{Northeastern University}
+ S. Muthukrishnan\affil{Rutgers University}
}
\begin{document}
-\maketitle
\begin{abstract}
\input{abstract}
\end{abstract}
+\maketitle
\section{Introduction}
\input{intro}
@@ -38,16 +30,14 @@
\input{conclusion}
\section*{Acknowledgments}
\input{ack}
-\bibliographystyle{splncsnat}
-\begin{footnotesize}
+\bibliographystyle{ACM-Reference-Format-Journals}
\bibliography{notes}
-\end{footnotesize}
-%\appendix
-%\input{appendix}
-%\section{Extensions}\label{sec:ext}
-%\input{general}
-%\section{Non-Truthfulness of the Maximum Operator}\label{sec:non-monotonicity}
-%\input{counterexample}
+\appendix
+\input{appendix}
+\section{Extensions}\label{sec:ext}
+\input{general}
+\section{Non-Truthfulness of the Maximum Operator}\label{sec:non-monotonicity}
+\input{counterexample}
\end{document}
diff --git a/problem.tex b/problem.tex
index 6033e86..c3c124e 100644
--- a/problem.tex
+++ b/problem.tex
@@ -59,7 +59,7 @@ which is the entropy reduction on $\beta$ after the revelation of $y_S$ (also kn
Hence, selecting a set of experiments $S$ that
maximizes $V(S)$ is equivalent to finding the set of experiments that minimizes
the uncertainty on $\beta$, as captured by the entropy reduction of its estimator.
-Under the linear model, and the Gaussian prior, the information gain takes the following form (see, \emph{e.g.}, \cite{chaloner1995bayesian}):
+Under the linear model, and the Gaussian prior, the information gain takes the following form (see, \emph{e.g.}, \mbox{\cite{chaloner1995bayesian}}):
\begin{align}
I(\beta;y_S)&= \frac{1}{2}\log\det(R+ \T{X_S}X_S) - \frac{1}{2}\log\det R\label{dcrit} %\\
\end{align}
@@ -90,7 +90,7 @@ d}.$ Intuitively, this corresponds to the simplest prior, in which no direction
of $\reals^d$ is a priori favored; equivalently, it also corresponds to the
case where ridge regression estimation \eqref{ridge} performed by $\E$ has
a penalty term $\norm{\beta}_2^2$. A generalization of our results to arbitrary
-covariance matrices $R$ can be found in \cite{arxiv}.
+covariance matrices $R$ can be found in Appendix~\ref{sec:ext}.
%Note that \eqref{dcrit} is a submodular set function, \emph{i.e.},
%$V(S)+V(T)\geq V(S\cup T)+V(S\cap T)$ for all $S,T\subseteq \mathcal{N}$; it is also monotone, \emph{i.e.}, $V(S)\leq V(T)$ for all $S\subset T$.
@@ -117,7 +117,7 @@ the optimal value achievable in the full-information case.
reduces to EDP with $d=1$ by mapping the weight of each item, say,
$w_i$, to an experiment with $x_i^2=w_i$.% Moreover, \eqref{modified} is submodular, monotone and satisfies $V(\emptyset) = 0$.
-The value function \eqref{modified} has the following properties, which are proved in \cite{arxiv}. First, it is non-negative, \emph{i.e.}, $V(S)\geq 0$
+The value function \eqref{modified} has the following properties, which are proved in Appendix~\ref{app:properties}. First, it is non-negative, \emph{i.e.}, $V(S)\geq 0$
for all $S\subseteq\mathcal{N}$. Second, it is
also monotone, \emph{i.e.}, $V(S)\leq V(T)$ for all $S\subseteq T$, with
$V(\emptyset)=0$. Finally, it is submodular, \emph{i.e.},
@@ -142,14 +142,11 @@ the following algorithm:
\textbf{if}\; V(\{i^*\}) \geq V(S_G)\; \textbf{return}\; \{i^*\}
\;\textbf{else return}\; S_G
\end{equation}
-yields an approximation ratio of $\frac{5 e }{e-1}~$\cite{singer-mechanisms}; this can be further improved to $\frac{e}{e-1}$ using more complicated greedy set constructions~\cite{krause-submodular,sviridenko-submodular}.
+yields an approximation ratio of $\frac{2 e }{e-1}~$\cite{krause-submodular}; this can be further improved to $\frac{e}{e-1}$ using more complicated greedy set constructions~\cite{krause-submodular,sviridenko-submodular}.
-
-
-
- \subsection{Budget-Feasible Experimental Design: Strategic Case}
+\subsection{Budget-Feasible Experimental Design: Strategic Case}
We study the following \emph{strategic} setting, in which the costs $c_i$ are {\em not} common knowledge and their reporting can be manipulated by the experiment subjects. The latter are strategic and wish to maximize their utility, which is the difference of the payment they receive and their true cost. Note that, though subjects may misreport $c_i$, they cannot lie about $x_i$ (\emph{i.e.}, all public features are verifiable prior to the experiment) nor $y_i$ (\emph{i.e.}, the subject cannot falsify her measurement).
-Experimental design thus reduces to a \emph{budget feasible reverse auction}, as introduced by \citeN{singer-mechanisms}; we review the formal definition in \cite{arxiv}. In short, given a budget $B$ and a value function $V:2^{\mathcal{N}}\to\reals_+$, a \emph{reverse auction mechanism} $\mathcal{M} = (S,p)$ comprises (a) an \emph{allocation function} $S:\reals_+^n \to 2^\mathcal{N}$, determining the set
+Experimental design thus reduces to a \emph{budget feasible reverse auction}, as introduced by \citeN{singer-mechanisms}; we review the formal definition in Appendix~\ref{app:budgetfeasible}. In short, given a budget $B$ and a value function $V:2^{\mathcal{N}}\to\reals_+$, a \emph{reverse auction mechanism} $\mathcal{M} = (S,p)$ comprises (a) an \emph{allocation function} $S:\reals_+^n \to 2^\mathcal{N}$, determining the set
of experiments to be purchased, and (b) a \emph{payment function}
$p:\reals_+^n\to \reals_+^n$, determining the payments $[p_i(c)]_{i\in \mathcal{N}}$ received by experiment subjects.
@@ -157,8 +154,11 @@ We seek mechanisms that are \emph{normalized} (unallocated experiments receive z
We relax the notion of truthfulness to \emph{$\delta$-truthfulness}, requiring that reporting one's true cost is an \emph{almost-dominant} strategy: no subject increases their utility by reporting a cost that differs more than $\delta>0$ (\emph{e.g.}, a tenth of a cent) from their true cost. Under this definition, a mechanism is truthful if $\delta=0$.
In addition, we would like the allocation $S(c)$ to be of maximal value; however, $\delta$-truthfulness, as well as the hardness of \EDP{}, preclude achieving this goal. Hence, we seek mechanisms with that are \emph{$(\alpha,\beta)$-approximate}, \emph{i.e.}, there exist $\alpha\geq 1$ and $\beta>0$ s.t.~$OPT \leq \alpha V(S(c))+\beta$, and are \emph{computationally efficient}, in that $S$ and $p$ can be computed in polynomial time.
-We note that the constant approximation algorithm \eqref{eq:max-algorithm} breaks
-truthfulness. Though this is not true for all submodular functions (see, \emph{e.g.}, \cite{singer-mechanisms}), it is true for the objective of \EDP{}: we show this in \cite{arxiv}, motivating our study of more complex mechanisms.
+We note that the constant approximation algorithm \eqref{eq:max-algorithm}
+breaks truthfulness. Though this is not true for all submodular functions (see,
+\emph{e.g.}, \cite{singer-mechanisms}), it is true for the objective of \EDP{}:
+we give an example in Appendix~\ref{sec:non-monotonicity}, motivating our study of more
+complex mechanisms.
\begin{comment}
As noted in \cite{singer-mechanisms, chen}, budget feasible reverse auctions are \emph{single parameter} auctions: each agent has only one
diff --git a/related.tex b/related.tex
index 60bc295..e160de6 100644
--- a/related.tex
+++ b/related.tex
@@ -16,7 +16,7 @@ full-information setup, Chen \emph{et al.}~propose a truthful, $8.34$-approximat
\vspace{0.5\baselineskip}
\noindent\emph{Specific Problems.}
-Improved uper and lower bounds \emph{and} deterministic polynomial mechanisms are known for specific submodular objectives \cite{singer-mechanisms, chen, singer-influence}.
+Improved uper and lower bounds \emph{and} deterministic polynomial mechanisms are known for specific submodular objectives \cite{singer-mechanisms,chen,singer-influence}.
\junk{For symmetric submodular functions, a truthful mechanism with approximation ratio 2 is known, and this ratio is tight \cite{singer-mechanisms}. Singer provides a 7.32-approximate truthful mechanism for the budget feasible version of \textsc{Matching}, and a corresponding lower bound of 2 \cite{singer-mechanisms}. Improving an earlier result by Singer, \citeN{chen} give a truthful, $2+\sqrt{2}$-approximate mechanism for \textsc{Knapsack}, and a lower bound of $1+\sqrt{2}$. Finally, a truthful, 31-approximate mechanism is also known for the budgeted version of \textsc{Coverage} \cite{singer-influence}.}
The deterministic mechanisms for \textsc{Knapsack} \cite{chen} and
\textsc{Coverage} \cite{singer-influence} follow the same general framework,