%%% -*-BibTeX-*-
%%% ====================================================================
%%%  BibTeX-file{
%%%     author-1        = "Preston Briggs",
%%%     author-2        = "Nelson H. F. Beebe",
%%%     version         = "2.97",
%%%     date            = "30 April 2012",
%%%     time            = "17:22:40 MDT",
%%%     filename        = "toplas.bib",
%%%     address-1       = "Tera Computer Company
%%%                        2815 Eastlake East
%%%                        Seattle, WA 98102
%%%                        USA",
%%%     address-2       = "University of Utah
%%%                        Department of Mathematics, 110 LCB
%%%                        155 S 1400 E RM 233
%%%                        Salt Lake City, UT 84112-0090
%%%                        USA",
%%%     telephone-1     = "+1 206 325-0800",
%%%     telephone-2     = "+1 801 581 5254",
%%%     FAX-2           = "+1 801 581 4148",
%%%     URL-2           = "http://www.math.utah.edu/~beebe",
%%%     checksum        = "14760 36850 178515 1794524",
%%%     email-1         = "preston at tera.com (Internet)",
%%%     email-2         = "beebe at math.utah.edu, beebe at acm.org,
%%%                        beebe at computer.org (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "bibliography, BibTeX, ACM Transactions on
%%%                        Programming Languages and Systems, TOPLAS",
%%%     license         = "public domain",
%%%     supported       = "yes",
%%%     docstring       = "This is a COMPLETE bibliography of the journal
%%%                        ACM Transactions on Programming Languages and
%%%                        Systems (CODEN ATPSDT, ISSN 0164-0925
%%%                        (print), 1558-4593 (electronic)), informally
%%%                        known as TOPLAS, covering volumes 1--21
%%%                        (1988--1999).
%%%
%%%                        The publisher maintains a World Wide Web site
%%%                        for this journal at
%%%
%%%                            http://www.acm.org/pubs/contents/journals/toplas/
%%%                            http://portal.acm.org/browse_dl.cfm?idx=J783
%%%
%%%                        At version 2.97, the year coverage looked
%%%                        like this:
%%%
%%%                             1979 (  20)    1991 (  30)    2003 (  20)
%%%                             1980 (  33)    1992 (  22)    2004 (  28)
%%%                             1981 (  28)    1993 (  32)    2005 (  33)
%%%                             1982 (  39)    1994 (  66)    2006 (  27)
%%%                             1983 (  36)    1995 (  39)    2007 (  45)
%%%                             1984 (  34)    1996 (  29)    2008 (  33)
%%%                             1985 (  34)    1997 (  35)    2009 (  23)
%%%                             1986 (  26)    1998 (  34)    2010 (  21)
%%%                             1987 (  27)    1999 (  32)    2011 (  21)
%%%                             1988 (  32)    2000 (  28)    2012 (   6)
%%%                             1989 (  30)    2001 (  14)
%%%                             1990 (  28)    2002 (  21)
%%%
%%%                             Article:       1005
%%%                             TechReport:       1
%%%
%%%                             Total entries: 1006
%%%
%%%                        This bibliography was initially constructed
%%%                        by hand by the first author (PB) from
%%%                        various sources, and at its last release in
%%%                        February 1995, had 447 entries.
%%%
%%%                        It was further extended by the second
%%%                        author (NHFB) using bibliographies in
%%%                        NHFB's personal files, from the OCLC
%%%                        Contents1st database, from the IEEE INSPEC
%%%                        database, from the computer graphics
%%%                        bibliography archive at ftp.siggraph.org,
%%%                        and from the computer science bibliography
%%%                        collection on ftp.ira.uka.de in
%%%                        /pub/bibliography to which many people of
%%%                        have contributed.  The snapshot of this
%%%                        collection was taken on 5-May-1994, and it
%%%                        consists of 441 BibTeX files, 2,672,675
%%%                        lines, 205,289 entries, and 6,375
%%%                        <at>String{} abbreviations, occupying
%%%                        94.8MB of disk space.  This work updated 85
%%%                        existing entries and added 104 new entries,
%%%                        completing coverage to for all issues up to
%%%                        Volume 17, Number 5, September 1995.
%%%
%%%                        Numerous errors in the sources noted above
%%%                        have been corrected.  Spelling has been
%%%                        verified with the UNIX spell and GNU ispell
%%%                        programs using the exception dictionary
%%%                        stored in the companion file with extension
%%%                        .sok.
%%%
%%%                        The ACM maintains Web pages with journal
%%%                        tables of contents for 1985--1995 at
%%%                        http://www.acm.org/pubs/toc.  That data has
%%%                        been automatically converted to BibTeX
%%%                        form, corrected for spelling and page
%%%                        number errors, and merged into this file.
%%%
%%%                        ACM copyrights explicitly permit abstracting
%%%                        with credit, so article abstracts, keywords,
%%%                        and subject classifications have been
%%%                        included in this bibliography wherever
%%%                        available.  Article reviews have been
%%%                        omitted, until their copyright status has
%%%                        been clarified.
%%%
%%%                        bibsource keys in the bibliography entries
%%%                        below indicate the entry originally came
%%%                        from the computer science bibliography
%%%                        archive, even though it has likely since
%%%                        been corrected and updated.
%%%
%%%                        URL keys in the bibliography point to
%%%                        World Wide Web locations of additional
%%%                        information about the entry.
%%%
%%%                        BibTeX citation tags are uniformly chosen as
%%%                        name:year:abbrev, where name is the family
%%%                        name of the first author or editor, year is a
%%%                        4-digit number, and abbrev is a 3-letter
%%%                        condensation of important title
%%%                        words. Citation tags were automatically
%%%                        generated by software developed for the
%%%                        BibNet Project.
%%%
%%%                        In this bibliography, entries are sorted in
%%%                        publication order, using bibsort -byvolume.
%%%
%%%                        The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%  }
%%% ====================================================================

@Preamble{
    "\hyphenation{
        Fa-la-schi
        Her-men-e-gil-do
        Lu-ba-chev-sky
        Pu-ru-sho-tha-man
        Roe-ver
        Ros-en-krantz
        Ru-dolph
    }" #
    "\ifx \undefined \circled \def \circled #1{(#1)}\fi" #
    "\ifx \undefined \reg \def \reg {\circled{R}}\fi"
}

%%% ====================================================================
%%% Acknowledgement abbreviations:

@String{ack-meo =  "Melissa E. O'Neill,
                    School of Computing Science,
                    Simon Fraser University,
                    Burnaby, BC,
                    Canada V5A 1S6,
                    e-mail: \path|oneill@cs.sfu.ca|,
                    URL: \path|http://www.cs.sfu.ca/people/GradStudents/oneill/|"}

@String{ack-nhfb = "Nelson H. F. Beebe,
                    University of Utah,
                    Department of Mathematics, 110 LCB,
                    155 S 1400 E RM 233,
                    Salt Lake City, UT 84112-0090, USA,
                    Tel: +1 801 581 5254,
                    FAX: +1 801 581 4148,
                    e-mail: \path|beebe@math.utah.edu|,
                            \path|beebe@acm.org|,
                            \path|beebe@computer.org| (Internet),
                    URL: \path|http://www.math.utah.edu/~beebe/|"}

@String{ack-pb =    "Preston Briggs,
                     Tera Computer Company,
                     2815 Eastlake East,
                     Seattle, WA 98102,
                     USA,
                     Tel: +1 206 325-0800,
                     e-mail: \path|preston@tera.com|"}

%%% ====================================================================
%%% Journal abbreviations:

@String{j-TOPLAS                = "ACM Transactions on Programming
                                  Languages and Systems"}

%%% ====================================================================
%%% Bibliography entries:

@TechReport{Morgan:1988:RC,
  author =       "C. C. Morgan and K. A. Robinson and P. H. B.
                 Gardiner",
  title =        "On the Refinement Calculus",
  type =         "Technical Monograph",
  number =       "PRG-70",
  institution =  "Oxford University Computing Laboratory",
  address =      "Wolfson Building, Parks Road, Oxford, UK",
  month =        oct,
  year =         "1988",
  ISBN =         "0-902928-52-X",
  ISBN-13 =      "978-0-902928-52-7",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  length =       "151",
}

@Article{Lindstrom:1979:BGC,
  author =       "Gary Lindstrom",
  title =        "Backtracking in a Generalized Control Setting",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "8--26",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Dewar:1979:PRE,
  author =       "Robert B. K. Dewar and Arthur Grand and Ssu-Cheng Liu
                 and Jacob T. Schwartz and Edmond Schonberg",
  title =        "Programming by Refinement, as Exemplified by the
                 {SETL} Representation Sublanguage",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "27--49",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sites:1979:CLI,
  author =       "Richard L. Sites",
  title =        "The Compilation of Loop Induction Expressions",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "50--57",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ghezzi:1979:IP,
  author =       "Carlo Ghezzi and Dino Mandrioli",
  title =        "Incremental Parsing",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "58--70",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 11:06:56 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Robertson:1979:CGS,
  author =       "Edward L. Robertson",
  title =        "Code Generation and Storage Allocation for Machines
                 with Span-Dependent Instructions",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "71--83",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lamport:1979:NAP,
  author =       "Leslie Lamport",
  title =        "A New Approach to Proving the Correctness of
                 Multiprocess Programs",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "84--97",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:02:18 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See also corrigendum \cite{Lamport:1980:CNA}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Constable:1979:HAF,
  author =       "Robert L. Constable and James E. Donahue",
  title =        "A Hierarchical Approach to Formal Semantics With
                 Application to the Definition of {PL\slash CS}",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "98--114",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 18:36:35 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wise:1979:MGC,
  author =       "David S. Wise",
  title =        "{Morris}'s Garbage Compaction Algorithm Restores
                 Reference Counts",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "115--120",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lengauer:1979:FAF,
  author =       "Thomas Lengauer and Robert Endre Tarjan",
  title =        "A Fast Algorithm for Finding Dominators in a
                 Flowgraph",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "121--141",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kennedy:1979:DAG,
  author =       "Ken Kennedy and Jayashree Ramanathan",
  title =        "A Deterministic Attribute Grammar Evaluator Based on
                 Dynamic Scheduling",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "1",
  pages =        "142--160",
  month =        jul,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Parallel/scheduling.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Iverson:1979:O,
  author =       "Kenneth E. Iverson",
  title =        "Operators",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "161--176",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Perrott:1979:LAV,
  author =       "R. H. Perrott",
  title =        "A Language for Array and Vector Processors",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "177--195",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Prywes:1979:UNS,
  author =       "N. S. Prywes and Amir Pnueli and S. Shastry",
  title =        "Use of a Nonprocedural Specification Language and
                 Associated Program Generator in Software Development",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "196--217",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kieburtz:1979:CCS,
  author =       "Richard B. Kieburtz and Abraham Silberschatz",
  title =        "Comments on ``{Communicating} Sequential Processes''",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "218--225",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Luckham:1979:VAR,
  author =       "David C. Luckham and Norihisa Suzuki",
  title =        "Verification of Array, Record, and Pointer Operations
                 in {Pascal}",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "226--244",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Nelson:1979:SCD,
  author =       "Greg Nelson and Derek C. Oppen",
  title =        "Simplification by Cooperating Decision Procedures",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "245--257",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/Constr.logic.prog.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gries:1979:SEB,
  author =       "David Gries",
  title =        "Is Sometimes Ever Better Than Alway?",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "258--265",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bobrow:1979:CEL,
  author =       "Daniel G. Bobrow and Douglas W. Clark",
  title =        "Compact Encodings of List Structure",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "266--286",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  comment =      "Good words on {CDR}-coding",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Beyer:1979:SED,
  author =       "Eric Beyer and Peter Buneman",
  title =        "A Space Efficient Dynamic Allocation Algorithm for
                 Queuing Messages",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "287--294",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tai:1979:NSG,
  author =       "Kou-Chung Tai",
  title =        "Noncanonical {SLR}(1) Grammars",
  journal =      j-TOPLAS,
  volume =       "1",
  number =       "2",
  pages =        "295--320",
  month =        oct,
  year =         "1979",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Harel:1980:PNA,
  author =       "David Harel",
  title =        "{And/Or} Programs: {A} New Approach to Structured
                 Programming",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "1--17",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pai:1980:GCR,
  author =       "Ajit B. Pai and Richard B. Kieburtz",
  title =        "Global Context Recovery: {A} New Strategy for
                 Syntactic Error Recovery by Table-Drive Parsers",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "18--41",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Francez:1980:DT,
  author =       "Nissim Francez",
  title =        "Distributed Termination",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "42--55",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:02:21 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See also corrigendum \cite{Francez:1980:CT} and
                 remarks \cite{Mohan:1981:TCF,Francez:1981:TCR}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Andrews:1980:AAI,
  author =       "Gregory R. Andrews and Richard P. Reitman",
  title =        "An Axiomatic Approach to Information Flow in
                 Programs",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "56--76",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Papadimitriou:1980:PBH,
  author =       "Christos H. Papadimitriou and Philip A. Bernstein",
  title =        "On the Performance of Balanced Hashing Functions When
                 the Keys Are Not Equiprobable",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "77--89",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/hash.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Manna:1980:DAP,
  author =       "Zohar Manna and Richard Waldinger",
  title =        "A Deductive Approach to Program Synthesis",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "90--121",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Arnold:1980:URG,
  author =       "D. B. Arnold and M. R. Sleep",
  title =        "Uniform Random Generation of Balanced Parenthesis
                 Strings",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "122--128",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Comer:1980:NMS,
  author =       "Douglas Comer",
  title =        "A Note on Median Split Trees",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "129--133",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lamport:1980:CNA,
  author =       "Leslie Lamport",
  title =        "Corrigendum: ``{A New Approach to Proving the
                 Correctness of Multiprocess Programs}''",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "1",
  pages =        "134--134",
  month =        jan,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:53:34 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Lamport:1979:NAP}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wallis:1980:ERO,
  author =       "Peter J. L. Wallis",
  title =        "External Representations of Objects of User-Defined
                 Type",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "137--152",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See also corrigendum \cite{Wallis:1981:CRO}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Griswold:1980:AUP,
  author =       "Ralph E. Griswold and David R. Hanson",
  title =        "An Alternative to the Use of Patterns in String
                 Processing",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "153--172",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cattell:1980:ADC,
  author =       "R. G. G. Cattell",
  title =        "Automatic Derivation of Code Generators from Machine
                 Descriptions",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "173--190",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Davidson:1980:DAR,
  author =       "Jack W. Davidson and Christopher W. Fraser",
  title =        "The Design and Application of a Retargetable Peephole
                 Optimizer",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "191--202",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:02:24 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See also corrigendum \cite{Davidson:1981:CDA}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fischer:1980:PCA,
  author =       "Charles N. Fischer",
  title =        "On Parsing and Compiling Arithmetic Expressions on
                 Vector Computers",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "203--224",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Luckham:1980:AEH,
  author =       "David C. Luckham and W. Polak",
  title =        "{Ada} exception handling: an axiomatic approach",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "225--233",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bernstein:1980:OGN,
  author =       "Arthur Bernstein",
  title =        "Output Guards and Nondeterminism in ``{Communicating
                 Sequential Processes}''",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "234--238",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/ProbAlgs.bib",
  note =         "Bernstein presents a distributed algorithm for CSP
                 output guards based on priority ordering of
                 processes.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ma:1980:DMI,
  author =       "Perng-Ti Ma and T. G. Lewis",
  title =        "Design of a Machine-Independent Optimizing System for
                 Emulator Development",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "2",
  pages =        "239--262",
  month =        apr,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bobrow:1980:MRS,
  author =       "Daniel G. Bobrow",
  title =        "Managing Reentrant Structures Using Reference Counts",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "269--273",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Leverett:1980:CSD,
  author =       "Bruce W. Leverett and Thomas G. Szymanski",
  title =        "Chaining Span-Dependent Jump Instructions",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "274--289",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Samet:1980:CAP,
  author =       "Hanan Samet",
  title =        "A Coroutine Approach to Parsing",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "290--306",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Howden:1980:ASV,
  author =       "W. E. Howden",
  title =        "Applicability of Software Validation Techniques to
                 Scientific Programs",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "307--320",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Broy:1980:DIA,
  author =       "Manfred Broy and Bernd Krieg-{Br\"uckner}",
  title =        "Derivation of Invariant Assertions During Program
                 Development by Transformation",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "321--337",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Clarke:1980:SRI,
  author =       "Edmund Melson {Clarke, Jr.}",
  title =        "Synthesis of Resource Invariants for Concurrent
                 Programs",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "338--358",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Apt:1980:PSC,
  author =       "Krzysztof R. Apt and Nissim Francez and Willem P. de
                 Roever",
  title =        "A Proof System for Communicating Sequential
                 Processes",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "359--385",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:22:43 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remarks \cite{Moitra:1983:TCA}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Casanova:1980:FSR,
  author =       "Marco R. Casanova and Phillip A. Bernstein",
  title =        "A Formal System for Reasoning about Programs Accessing
                 a Relational Database",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "386--414",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Graham:1980:ICF,
  author =       "Susan L. Graham and Michael A. Harrison and Walter L.
                 Ruzzo",
  title =        "An Improved Context-Free Recognizer",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "415--462",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Francez:1980:CT,
  author =       "Nissim Francez",
  title =        "Corrigendum: ``{Distributed Termination}''",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "3",
  pages =        "463--463",
  month =        jul,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:55:53 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See
                 \cite{Francez:1980:DT,Mohan:1981:TCF,Francez:1981:TCR}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Oppen:1980:P,
  author =       "Dereck C. Oppen",
  title =        "Prettyprinting",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "465--483",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Schwartz:1980:U,
  author =       "Jacob T. Schwartz",
  title =        "Ultracomputers",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "484--521",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ernst:1980:SAD,
  author =       "George W. Ernst and William F. Ogden",
  title =        "Specification of Abstract Data Types in {Modula}",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "522--543",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Landwehr:1980:ATS,
  author =       "Carl E. Landwehr",
  title =        "An Abstract Type for Statistics Collection in
                 {Simula}",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "544--563",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gries:1980:APC,
  author =       "David Gries and Gary Levin",
  title =        "Assignment and Procedure Call Proof Rules",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "564--579",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moret:1980:AVR,
  author =       "B. M. E. Moret and M. G. Thomason and R. C. Gonzalez",
  title =        "The Activity of a Variable and Its Relation to
                 Decision Trees",
  journal =      j-TOPLAS,
  volume =       "2",
  number =       "4",
  pages =        "580--595",
  month =        oct,
  year =         "1980",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Steensgaard-Madsen:1981:SOA,
  author =       "J. Steensgaard-Madsen",
  title =        "A Statement-Oriented Approach to Data Abstraction",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "1--10",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remarks
                 \cite{Ellis:1982:TCS,Steensgaard-Madsen:1982:SMR}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Andre:1981:MAC,
  author =       "F. {Andr\'e} and J. P. Banatre and J. P. Routeau",
  title =        "A Multiprocessing Approach to Compile-Time Symbol
                 Resolution",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "11--23",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Juelich:1981:CAS,
  author =       "Otto C. Juelich and Clinton R. Foulk",
  title =        "Compilation of Acyclic Smooth Programs for Parallel
                 Execution",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "24--48",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Grit:1981:DIT,
  author =       "Dale H. Grit and Rex L. Page",
  title =        "Deleting Irrelevant Tasks in an Expression-Oriented
                 Multiprocessor System",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "49--59",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kristensen:1981:MCL,
  author =       "Bent Bruun Kristensen and Ole Lehrmann Madsen",
  title =        "Methods for Computing {LALR$(k)$} Lookahead",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "60--82",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{LaLonde:1981:HOP,
  author =       "Wilf R. LaLonde and Jim des Rivieres",
  title =        "Handling Operator Precedence in Arithmetic Expressions
                 with Tree Transformations",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "83--103",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:17:11 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remarks
                 \cite{Henderson:1983:TCL,LaLonde:1983:TCL}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Misra:1981:EPE,
  author =       "Jayadev Misra",
  title =        "An Exercise in Program Explanation",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "104--109",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Davidson:1981:CDA,
  author =       "Jack W. Davidson and Christopher W. Fraser",
  title =        "Corrigendum: ``{The Design and Application of a
                 Retargetable Peephole Optimizer}''",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "110--110",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Davidson:1980:DAR}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wallis:1981:CRO,
  author =       "Peter J. L. Wallis",
  title =        "Corrigendum: ``{External Representations of Objects of
                 User-Defined Type}''",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "111--111",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Wallis:1980:ERO}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Mohan:1981:TCF,
  author =       "C. Mohan",
  title =        "Technical Correspondence: On {Francez}'s
                 ``{Distributed Termination}''",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "112--112",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Francez:1980:DT,Francez:1981:TCR}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Francez:1981:TCR,
  author =       "N. Francez",
  title =        "Technical Correspondence: Reply from {Francez}",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "1",
  pages =        "112--113",
  month =        jan,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:05:53 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Francez:1980:DT,Mohan:1981:TCF}.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fraser:1981:EDS,
  author =       "Christopher W. Fraser and A. A. Lopez",
  title =        "Editing Data Structures",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "2",
  pages =        "115--125",
  month =        apr,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/lisp.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Schonberg:1981:ATS,
  author =       "Edmond Schonberg and Jacob T. Schwartz and Micha
                 Sharir",
  title =        "An Automatic Technique for Selection of Data
                 Structures in {SETL} Programs",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "2",
  pages =        "126--143",
  month =        apr,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/Graefe.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "SETL is a very high level programming language
                 supporting set theoretic syntax and semantics. It
                 allows algorithms to be programmed rapidly and
                 succinctly without requiring data structure
                 declarations to be supplied. Such declarations can be
                 manually specified later, without recoding the program,
                 to improve the efficiency of program execution. We
                 describe a new technique for automatic selection of
                 appropriate data representations during compile time
                 for programs with omitted declarations and present an
                 efficient data representation selection algorithm,
                 whose complexity is comparable with those of the
                 fastest known general data-flow algorithms of Tarjan
                 and Reif.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "New York Univ. bit vector direct representation
                 pointer array for subsets",
}

@Article{Griswold:1981:GI,
  author =       "Ralph E. Griswold and David R. Hanson and John T.
                 Korb",
  title =        "Generators in {Icon}",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "2",
  pages =        "144--161",
  month =        apr,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hanson:1981:APP,
  author =       "David R. Hanson",
  title =        "{Algorithm 568}. {PDS} --- {A} Portable Directory
                 System",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "2",
  pages =        "162--167",
  month =        apr,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Sep 9 14:11:06 1994",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://doi.acm.org/10.1145/357133.357137",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{LaLonde:1981:CSC,
  author =       "Wilf R. LaLonde",
  title =        "The Construction of Stack-Controlling {LR} Parsers for
                 Regular Right Part Grammars",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "2",
  pages =        "168--206",
  month =        apr,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gannon:1981:DAI,
  author =       "John Gannon and Paul McMullin and Richard Hamlet",
  title =        "Data Abstraction, Implementation, Specification, and
                 Testing",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "211--223",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{vandenBos:1981:PCB,
  author =       "Jan {van den Bos} and R. Plasmeijer and Jan W. M.
                 Stroet",
  title =        "Process Communication Based on Input Specifications",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "224--250",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Oct 31 06:37:56 2003",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Nierstrasz.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "uilit",
}

@Article{Rem:1981:APN,
  author =       "Martin Rem",
  title =        "Associons: {A} Program Notation with Tuples Instead of
                 Variables",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "251--262",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lindstrom:1981:RRB,
  author =       "Gary Lindstrom and Mary Lou Soffa",
  title =        "Referencing and Retention in Block-Structured
                 Coroutines",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "263--292",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Barnden:1981:NCA,
  author =       "J. A. Barnden",
  title =        "Nonsequentiality and Concrete Activity Phases in
                 Discrete-Event Simulation Languages",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "293--317",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anderson:1981:LLC,
  author =       "S. O. Anderson and R. C. Backhouse",
  title =        "Locally Least-Cost Error Recovery in {Early}'s
                 Algorithm",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "3",
  pages =        "318--347",
  month =        jul,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Borning:1981:PLA,
  author =       "Alan Borning",
  title =        "The Programming Language Aspects of {ThingLab}, a
                 Constraint-Oriented Simulation Laboratory",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "353--387",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Jazayeri:1981:SES,
  author =       "Medhi Jazayeri and Diane Pozefsky",
  title =        "Space-Efficient Storage Management in an Attribute
                 Grammar Evaluator",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "388--404",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Andrews:1981:SR,
  author =       "Gregory R. Andrews",
  title =        "Synchronizing Resources",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "405--430",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Apt:1981:TYH,
  author =       "Krzysztof R. Apt",
  title =        "Ten Years of {Hoare}'s Logic: {A} Survey --- {Part
                 I}",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "431--483",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/prog.lang.theory.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Greif:1981:SSW,
  author =       "Irene Greif and Albert R. Meyer",
  title =        "Specifying the Semantics of while Programs: {A}
                 Tutorial and Critique of a Paper by {Hoare} and
                 {Lauer}",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "484--507",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hansen:1981:CMI,
  author =       "Wilfred J. Hansen",
  title =        "A Cost Model for the Internal Organization of
                 {B$^{+}$}-Tree Nodes",
  journal =      j-TOPLAS,
  volume =       "3",
  number =       "4",
  pages =        "508--532",
  month =        oct,
  year =         "1981",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Feather:1982:SAP,
  author =       "Martin S. Feather",
  title =        "A System for Assisting Program Transformation",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "1--20",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Program transformation has been advocated as a
                 potentially appropriate methodology for program
                 development. The ability to transform large programs is
                 crucial to the practicality of such an approach. This
                 paper describes research directed towards applying one
                 particular transformation method to problems of
                 increasing scale. The method adopted is that developed
                 by Burstall and Darlington, and familiarity with their
                 work is assumed. The problems which arise when
                 attempting transformation of larger scale programs are
                 discussed, and an approach to overcoming them is
                 presented. Parts of the approach have been embodied in
                 a machine-based system which assists a user in
                 transforming his programs. The approach, and the use of
                 this system, are illustrated by presenting portions of
                 the transformation of a compiler for a ``toy''
                 language.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "program development; program transformation",
  sjb =          "Manual transformation method i.e. the program has to
                 be told where to do the transformations.",
  source =       "Dept. Library",
}

@Article{Tanenbaum:1982:UPO,
  author =       "Andrew S. Tanenbaum and Hans {van Staveren} and Johan
                 W. Stevenson",
  title =        "Using Peephole Optimization on Intermediate Code",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "21--36",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:58:22 1998",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remarks \cite{Pemberton:1983:TCT}.",
  abstract =     "Many portable compilers generate an intermediate code
                 that is subsequently translated into target machine's
                 assembly language. In this paper a stack-machine-based
                 intermediate code suitable for algebraic languages
                 (e.g., PASCAL, C, FORTRAN) and most byte-addressed
                 mini- and microcomputers is described. A table-driven
                 peephole optimizer that improves the intermediate code
                 is discussed in detail and compared with other local
                 optimization methods. Measurements show an improvement
                 of about 15 percent, depending on precise metrics
                 used.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract machine; intermediate code; peephole
                 optimizer",
  source =       "Dept. Library",
}

@Article{Misra:1982:TDD,
  author =       "Jayadev Misra and K. M. Chandy",
  title =        "Termination Detection of Diffusing Computations in
                 Communicating Sequential Processes",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "37--43",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In this paper it is shown how the Dijkstra-Scholten
                 scheme for termination detection in a diffusing
                 computation can be adapted to detect termination or
                 deadlock in a network of communicating sequential
                 processes as defined by Hoare.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "diffusing computation; distributed systems; networks
                 of processes; termination detection",
  source =       "Dept. Library",
}

@Article{McGraw:1982:VLD,
  author =       "James R. McGraw",
  title =        "The {VAL} Language: Description and Analysis",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "44--82",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/Functional.bib; Parallel/par.dataflow.bib",
  abstract =     "VAL is a high-level, function-based language designed
                 for use on data flow computers. A data flow computer
                 has many small processors organized to cooperate in the
                 execution of a single computation. A computation is
                 represented by its data flow graph; each operator in a
                 graph is scheduled for execution on one of the
                 processors after all of its operands' values are known.
                 VAL promotes the identification of concurrency in
                 algorithms and simplifies the mapping into data flow
                 graphs. This paper presents a detailed introduction to
                 VAL and analyzes its usefulness for programming in a
                 highly concurrent environment. VAL provides {\em
                 implicit concurrency\/} (operations that can execute
                 simultaneously are evident without the need for any
                 explicit language notation). The language uses
                 function- and expression-based features that prohibit
                 all side effects, which simplifies translation to
                 graphs. The salient language features are described and
                 illustrated through examples taken from a complete VAL
                 program for adaptive quadrature. Analysis of the
                 language shows that VAL meets the critical needs for a
                 data flow environment. The language encourages
                 programmers to think in terms of general concurrency,
                 enhances readability (due to the absence of side
                 effects), and possesses a structure amenable
                 verification techniques. However, VAL is still
                 evolving. The language definition needs refining, and
                 more support tools for programmer use need to be
                 developed. Also, some new kinds of optimization
                 problems should be addressed.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "applicative languages; concurrent programming
                 structures; data-flow languages; design; functional;
                 languages",
  source =       "Dept. Library",
}

@Article{Hoffman:1982:PE,
  author =       "Christoph M. Hoffman and Michael J. O'Donnell",
  title =        "Programming with Equations",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "83--112",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Equations provide a convenient notation for defining
                 many computations, for example, for programming
                 language interpreters. This paper illustrates the
                 usefulness of equational programs, describes the
                 problems involved in implementing equational programs,
                 and investigates practical solutions to those problems.
                 The goal of the study is a system to automatically
                 transform a set of equations into an efficient program
                 which exactly implements the logical meaning of the
                 equations. This logical meaning may be defined in terms
                 of the traditional mathematical interpretation of
                 equations, without using advanced computing concepts.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "equations; interpreters; nonprocedural languages;
                 term-rewriting systems",
  sjb =          "Includes code for a 2-3 tree.",
}

@Article{Williams:1982:FNS,
  author =       "M. Howard Williams",
  title =        "A Flexible Notation for Syntactic Definitions",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "113--119",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jun 8 13:21:42 1984",
  bibsource =    "Compiler/bevan.bib; Compiler/compiler.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In view of the proliferation of notations for defining
                 the syntax of programming languages, it has been
                 suggested that a simple notation should be adopted as a
                 standard. However, any notation adopted as a standard
                 should also be as versatile as possible. For this
                 reason, a notation is presented here which is both
                 simple and versatile and which has additional benefits
                 when specifying the static semantic rules of a
                 language.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "BNF; syntax",
  sjb =          "Suggests some additions to Wirth's notation to capture
                 some commonly required constraints such as ``maximum
                 length of an identifier is $X$'', ``$X$ can be repeated
                 $Y$ times''. The ``simple and versatile'' notation is
                 just Wirth's EBNF augmented with affixes/attributes.
                 Ends with the following ``It is hoped that this paper
                 will not be viewed simply as a presentation of yet
                 another notation for syntactic definitions. The main
                 purpose of the paper has been to look closely at the
                 advantages of the notation proposed, and it is hoped
                 that in the future, before adopting any syntactic
                 notation, readers will give careful consideration to
                 the advantages of such a notation and avoid the
                 introduction of new notations or variations on existing
                 ones unless the advantages can be clearly spelled
                 out.''",
}

@Article{Ellis:1982:TCS,
  author =       "John R. Ellis",
  title =        "Technical Correspondence: On {Steensgaard-Madsen}'s
                 ``{A Statement-Oriented Approach to Data
                 Abstraction}''",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "120--122",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:08:12 1996",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See
                 \cite{Steensgaard-Madsen:1981:SOA,Steensgaard-Madsen:1982:SMR}",
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  sjb =          "Points out that Madsen's ``new'' approach already
                 exists in languages like Smalltalk and Scheme.",
}

@Article{Steensgaard-Madsen:1982:SMR,
  author =       "J. Steensgaard-Madsen",
  title =        "Technical Correspondence: {Steensgaard-Madsen}'s
                 reply",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "1",
  pages =        "122--123",
  month =        jan,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See
                 \cite{Steensgaard-Madsen:1981:SOA,Ellis:1982:TCS}.",
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  sjb =          "Admits ignorance of Scheme and Smalltalk, but doggedly
                 clings to the idea that his approach is new.",
}

@Article{Schneider:1982:SDP,
  author =       "Fred B. Schneider",
  title =        "Synchronization in Distributed Programs",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "125--148",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A technique for solving synchronization problems in
                 distributed programs is described. Use of this
                 technique in environments in which processes may fail
                 is discussed. The technique can be used to solve
                 synchronization problems directly, to implement new
                 synchronization mechanisms (which are presumably well
                 suite for use in distributed programs), and to
                 construct distributed versions of existing
                 synchronization mechanisms. use of the technique is
                 illustrated with implementations of distributed
                 semaphores and a conditional message-passing
                 facility.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "logical clocks",
  source =       "Dept. Library",
}

@Article{Holt:1982:ISS,
  author =       "Richard C. Holt and J. R. Cordy and David B. Wortman",
  title =        "An Introduction to {S/SL}: {Syntax\slash Semantic
                 Language}",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "149--178",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 18:36:33 1996",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "S/SL (Syntax/Semantic Language) is a language that was
                 developed for implementing compilers. A subset called
                 SL (Syntax Language) has the same recognition power as
                 do LR(k) parsers. Complete S/SL includes invocation of
                 semantic operations implemented in another language
                 such as PASCAL. S/SL implies a top-down programming
                 methodology. First, a data-free algorithm is developed
                 in S/SL. The algorithm invokes operations on ``semantic
                 mechanisms.'' A semantic mechanism is an abstract
                 object, specified, from the point of view of the S/SL,
                 only by the effect of operations upon the object.
                 Later, the mechanisms are implemented apart from the
                 S/SL program. The separation of the algorithm from the
                 data and the division of data into mechanisms reduce
                 the effort needed to understand and maintain the
                 resulting software. S/SL has been used to construct
                 compilers for SPECKLE (a PL/I subset), PT (a PASCAL
                 subset), Toronto EUCLID, and Concurrent EUCLID. It has
                 been used to implement scanners, parser, semantic
                 analyzers, and code generators. S/SL programs are
                 implemented by translating them into tables of
                 integers. A ``table walker'' program executes the S/SL
                 program by interpreting this table. The translation of
                 S/SL programs into tables is performed by a program
                 called the S/SL processor. This processor serves a
                 function analogous to that served by an LR(k) parser
                 generator. The implementation of S/SL is simple and
                 portable. It is available in a small subset of PASCAL
                 that can be easily transliterated into other high-level
                 languages.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design languages; LR(k)",
  source =       "Dept. Library",
}

@Article{Soisalon-Soininen:1982:IEE,
  author =       "Eljas Soisalon-Soininen",
  title =        "Inessential Error Entries and Their Use in {LR} Parser
                 Optimization",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "179--195",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{LaLonde:1984:TCC}.",
  abstract =     "The use of ``default reductions'' in implementing LR
                 parsers is considered in conjunction with the desire to
                 decrease the number of states of the parser by making
                 use of ``don't care'' (also called ``inessential'')
                 error entries. Default reduction are those which are
                 performed independently of the lookahead string when
                 other operations do not apply, and their use can lead
                 to substantial savings in space and time. Don't-care
                 error entries of an LR parser are those which are never
                 consulted, and thus they can be arbitrarily replaced by
                 nonerror entries in order to make a state compatible
                 with another one. Determining don't-care error entries
                 is most important in avoiding the growth of the sie of
                 the parser when eliminating reductions by single
                 productions, that is, productions for which the
                 right-hand side is a single symbol. The use of default
                 reductions diminishes don't-care entries. This effect
                 is analyzed by giving a necessary and sufficient
                 condition for an error entry to be don't care when
                 default reductions are used. As an application,
                 elimination of reductions by single productions in
                 conjunction with the use of default reductions is
                 considered.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "default reductions; don't-care error entries; LR(k);
                 single productions",
  source =       "Dept. Library",
}

@Article{Sharir:1982:SOC,
  author =       "Micha Sharir",
  title =        "Some Observations Concerning Formal Differentiation of
                 Set Theoretic Expressions",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "196--225",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wetherell:1982:EDV,
  author =       "C. S. Wetherell",
  title =        "Error Data Values in the Data-Flow Language {VAL}",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "226--238",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The data-flow architecture is intended to support
                 large scientific computations, and VAL is an algebraic,
                 procedural language for use on a data-flow computer.
                 VAL is Apt for numerical computations but requires an
                 error monitoring feature that can be used to diagnose
                 and correct errors arising during program execution.
                 Traditional monitoring methods (software traps and
                 condition codes) are inappropriate for VAL; instead VAL
                 includes a set of error data values and an algebra for
                 their manipulation. The error data values and their
                 algebra are described an assessed; the conclusion is
                 that error values provide a clean way for a high-level
                 language to handle numeric (and some other) errors.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "applicative languages; computer arithmetic; data-flow
                 architectures; data-flow languages; design; error
                 handling and recovery; languages",
  sjb =          "easy read",
  source =       "Dept. Library",
}

@Article{Fateman:1982:HLL,
  author =       "Richard J. Fateman",
  title =        "High-Level Language Implications of the Proposed
                 {IEEE} Floating-Point Standard",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "239--257",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/357162.357168",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 8 14:50:28 2007",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "An IEEE Computer Society working group on
                 floating-point arithmetic has recommended a standard
                 for binary floating-point number formats, operations,
                 and semantics. This paper, which has evolved in part
                 during the deliberations of that committee, describes
                 the significance to languages and, in particular, to
                 FORTRAN and its variants, of various novel features of
                 the recommended standard.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "computer arithmetic; control structures; data types
                 and structures; error handling and recovery;
                 floating-point arithmetic; FORTRAN; run-time
                 environments",
  source =       "Dept. Library",
}

@Article{Martelli:1982:EUA,
  author =       "Alberto Martelli and Ugo Montanari",
  title =        "An Efficient Unification Algorithm",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "258--282",
  month =        feb,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/prolog.1.bib; Compiler/bevan.bib;
                 Compiler/Compiler.Lins.bib;
                 Compiler/prog.lang.theory.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/formal.hardware.verification.bib",
  abstract =     "The unification problem in first-order predicate
                 calculus is described in general terms as the solution
                 of a system of equations, and a nondeterministic
                 algorithm is given. A new unification algorithm,
                 characterized by having the acyclicity test efficiently
                 embedded into it, is derived from the nondeterministic
                 one, and a PASCAL implementation is given. A comparison
                 with other well-known unification algorithms shows that
                 the algorithm described here performs well in all
                 cases.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; complexity of proof procedures; languages;
                 logic; mechanical theorem proving; performance; prolog;
                 resolution; theory",
  source =       "Dept. Library",
}

@Article{Ashcroft:1982:BRS,
  author =       "E. A. Ashcroft and W. W. Wadge",
  title =        "{\bf R}$_{\!\!\!\mbox{\raisebox{.5ex}{\tiny /}}}$ for
                 Semantics",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "283--294",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A constructive criticism of recent work in the
                 semantics of programming languages is offered. The
                 criticism is directed not so much at the techniques and
                 results obtained as at the use to which they are put.
                 The fact that denotational (or ``mathematical'')
                 semantics plays on the whole a passive
                 (``descriptive'') role, while operational semantics
                 plays on the whole an active (``prescriptive'') role,
                 is seen as the basic problem. It is suggested that
                 these roles be reversed.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "denotational semantics; operational semantics;
                 semantics; theory",
  sjb =          "Easy read. Note the format of the title is taken the
                 ACM TOPLAS bibliography maintained by
                 preston@cs.rice.edu",
  source =       "Dept. Library",
}

@Article{Arsac:1982:STR,
  author =       "J. Arsac and Y. Kodratoff",
  title =        "Some Techniques for Recursion Removal from Recursive
                 Functions",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "2",
  pages =        "295--322",
  month =        apr,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Three different techniques that can be used for
                 recursion removal are described: generalization of the
                 function definition, study of the computation traces of
                 the function, and nonprocedural languages. Despite the
                 existence of implemented versions of these techniques,
                 they are easy to use ``by hand'' and should therefore
                 be part of every programmers knowledge.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "computation trace; denotational semantics; operational
                 semantics; recursion removal; semantics; tail
                 recursion",
  sjb =          "Gets a bit heavy in places, but on the whole quite
                 readable.",
  source =       "Dept. Library",
}

@Article{Hennessy:1982:SDO,
  author =       "John L. Hennessy",
  title =        "Symbolic Debugging of Optimized Code",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "323--344",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 14:20:25 1996",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remark \cite{Copperman:1993:TCF}.",
  abstract =     "The long-standing conflict between code optimization
                 and symbolic debugging is examined. The effects of
                 local and global optimizations on the variables of a
                 program are categorized, and models for representing
                 the effect of optimizations are given. Algorithms use
                 these models to determine the subset of variables hose
                 values do not correspond to those in the original
                 program. Restoring these variables to their correct
                 values is investigated, and empirical results from the
                 application of these algorithms to local optimization
                 are also presented.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "code generation optimization; debugging aids; directed
                 acyclic graphs; flow graphs; symbolic debugging",
  source =       "Dept. Library",
}

@Article{Sipala:1982:CSB,
  author =       "Paolo Sipala",
  title =        "Compact Storage of Binary Trees",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "345--361",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Broy:1982:CAA,
  author =       "Manfred Broy and Peter Pepper",
  title =        "Combining Algebraic and Algorithmic Reasoning: An
                 Approach to the {Schorr--Waite} Algorithm",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "362--381",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The basic idea of the Schorr--Waite graph-marking
                 algorithm can be precisely formulated, explained, and
                 verified in a completely applicative (functional)
                 programming style. Graphs are specified algebraically
                 as objects of an abstract data type. When formulating
                 recursive programs over such types, one can combine
                 algebraic and algorithmic reasoning: An applicative
                 depth-first-search algorithm is derived from a
                 mathematical specification by applying properties of
                 reflexive, transitive closures of relations. This
                 program is then transformed in several steps into a
                 final procedural version with the help of both
                 algebraic properties of graphs and algorithmic
                 properties reflected in the recursion structure of the
                 program.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract data types; algorithms; applicative
                 (functional) programming; languages; program
                 transformation; verification",
  source =       "Dept. Library",
}

@Article{Lamport:1982:BGP,
  author =       "Leslie Lamport and Robert Shostak and Marshall Pease",
  title =        "The {Byzantine} Generals Problem",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "382--401",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Oct 17 12:24:31 1998",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib; Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/ProbAlgs.bib",
  note =         "They proved that Byzantine agreement (the subject of
                 Section~\ref{sec-byzantine}) cannot be reached unless
                 fewer than one-third of the processes are faulty. This
                 result assumes that authentication, i.e., the crypting
                 of messages to make them unforgeable, is not used. With
                 unforgeable messages, they show that the problem is
                 solvable for any $n \geq t > 0$, where $n$ is the total
                 number of processes and $t$ is the number of faulty
                 processes.",
  abstract =     "Reliable computer systems must handle malfunctioning
                 components that give conflicting information to
                 different parts of the system. This situation can be
                 expressed abstractly in terms of a group of generals of
                 the Byzantine army camped with their troops around an
                 enemy city. Communicating only by messenger, the
                 generals must agree upon a common battle plan. However,
                 one or more of them may be traitors who will try and
                 confuse the others. The problem is to find an algorithm
                 to ensure that the loyal generals will reach agreement.
                 It is shown that, using only oral messages, this
                 problem is solvable if and only if more than two-thirds
                 of the generals are loyal; so a single traitor can
                 confound two loyal generals. With unforgeable written
                 messages, the problem is solvable for any number of
                 generals and possible traitors. Applications of the
                 solutions to reliable computer systems are then
                 discussed.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "fault tolerance; interactive consistency; network
                 communications; network operating systems;
                 reliability",
  source =       "Dept. Library",
}

@Article{Paige:1982:FDC,
  author =       "Robert Paige and Shaye Koenig",
  title =        "Finite Differencing of Computable Expressions",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "402--454",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Finite differencing is a program optimization method
                 that generalizes strength reduction, and provides an
                 efficient implementation for a host of program
                 transformations including ``iterator inversion.''
                 Finite differencing is formally specified in terms of
                 more basic transformations shown to preserve program
                 semantics. Estimates of the speedup that the technique
                 yields are given. A full illustrative example of the
                 algorithm is given.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; automatic programming; computations on
                 discrete structures; differentiable expression;
                 languages; optimization; program transformation; SETL;
                 theory; verification; very high-level languages",
  source =       "Dept. Library",
}

@Article{Owicki:1982:PLP,
  author =       "Susan Owicki and Leslie Lamport",
  title =        "Proving Liveness Properties of Concurrent Programs",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "455--495",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/nonmono.bib; Compiler/bevan.bib;
                 Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A liveness property asserts that program execution
                 eventually reaches some desirable state. While
                 termination has been studied extensively, many other
                 liveness properties are important for concurrent
                 programs. A formal proof method, based on temporal
                 logic, for deriving liveness properties is presented.
                 It allows a rigorous formulation of simple informal
                 arguments. How to reason with temporal logic and how to
                 use safety (invariance) properties in proving liveness
                 is shown. The method is illustrated using, first, a
                 simple programming language without synchronization
                 primitives, then one with semaphores. However, it is
                 applicable to any programming language.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrent programming; fairness; languages; liveness;
                 multiprocessing; program verification; proof of
                 correctness; semantics of programming languages;
                 synchronization; temporal logic; theory; verification",
  source =       "Dept. Library",
}

@Article{Wand:1982:DTC,
  author =       "Mitchell Wand",
  title =        "Deriving Target Code as a Representation of
                 Continuation Semantics",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "496--517",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Reynolds' technique for deriving interpreters is
                 extended to derive compilers from continuation
                 semantics. The technique starts by eliminating
                 $\lambda$-variables from the semantic equations through
                 the introduction of special-purpose combinators. The
                 semantics of a program phrase may be represented by a
                 term built from these combinators. Then associative and
                 distributive laws are used to simplify the terms. Last,
                 a machine is built to interpret the simplified terms as
                 the functions they represent. The combinators reappear
                 as the instructions of this machine. The technique is
                 illustrated with three examples.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "code generation; combinators; compilers;
                 continuations; denotational semantics; lambda calculus;
                 semantics",
  sjb =          "excellent paper",
  source =       "Dept. Library",
}

@Article{Krogh:1982:AAP,
  author =       "Fred T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "518--521",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:36:09 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1982:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "3",
  pages =        "522--525",
  month =        jul,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Herlihy:1982:VTM,
  author =       "Maurice P. Herlihy and Barbara Liskov",
  title =        "A Value Transmission Method for Abstract Data Types",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "527--551",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu May 26 15:49:48 1988",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  abstract =     "Abstract data types have proved to be a useful
                 technique for structuring systems. In large systems it
                 is sometimes useful to have different regions of the
                 system use different representations for the abstract
                 data values. A technique is described for communicating
                 abstract values between such regions. The method was
                 developed for use in constructing distributed systems,
                 where the regions exist at different computers and the
                 values are communicated over a network. The method
                 defines a call-by-value semantics; it is also useful in
                 nondistributed systems wherever call by value is the
                 desired semantics. An important example of such a use
                 is a repository, such as a file system, for storing
                 long lived data.",
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract data types; call by value; data translation;
                 design; distributed systems; input/output; languages;
                 long-term storage.; message communications; message
                 sending",
  sjb =          "For every type that is to be transmitted, need to
                 define encode $:: T \rightarrow XT$, decode $:: XT
                 \rightarrow T$, from these, the ``system'' generates
                 transmit $:: T\rightarrow T$ and transmit $:: XT
                 \rightarrow XT$, where $XT$ is the external
                 representation. As an example of how $XT$ may differ
                 from $T$, in the case of 2D coordinates, $T$ might be
                 cartesian whereas $XT$ may be a variant containing
                 either cartesian or polar. Note that it is up to the
                 user to decide what to do about sharing e.g. to
                 structured types having a pointer to a third.",
  source =       "Dept. Library",
}

@Article{Holt:1982:MIE,
  author =       "Richard C. Holt and David B. Wortman",
  title =        "A Model for Implementing {Euclid} Modules and
                 Prototypes",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "552--562",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The PASCAL-based programming language EUCLID was
                 designed for use in implementing verifiable systems
                 software. The design of EUCLID includes many novel
                 extensions, including a module mechanism and a
                 substantial generalization of the PASCAL type
                 mechanism. This paper presents an implementation model
                 for two of these extensions: modules and parameterized
                 type definitions (prototypes).",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract data types; data types and structures;
                 EUCLID; packages; run-time environments; systems
                 implementation language",
  sjb =          "Amongst other things discusses how to compile generics
                 e.g. macro vs. shared.",
  source =       "Dept. Library",
}

@Article{Griswold:1982:EEI,
  author =       "Ralph E. Griswold",
  title =        "The Evaluation of Expressions in {Icon}",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "563--584",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Expressions in the Icon programming language may be
                 {\em conditional}, possibly producing no result, or
                 they may be {\em generators}, possibly producing a
                 sequence of results. Generators, coupled with a goal
                 directed evaluation mechanism, provide a concise method
                 for expression many complex computations. This paper
                 describes the evaluation of expressions in Icon and
                 presents an Icon program that explicates the semantics
                 of expression evaluation. This program also provides an
                 executable ``formalism'' that can be used as a tool to
                 design and test changes and additions to the
                 language.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "control structures; Icon; interpreters; semantics",
  source =       "Dept. Library",
}

@Article{Gergeron:1982:SAS,
  author =       "J. Gergeron and A. Dubuque",
  title =        "A Structured {APL} System",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "585--600",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A structured APL system introducing several
                 interesting features is described. The APL group
                 concept has been considerably extended to yield a new
                 type of APL object called a segment. Segments
                 constitute the basic building blocks used to manage
                 memory and build up the workspace and the user's
                 library. The encapsulation capability provides a
                 unified scheme for handling variables, functions and
                 other APL objects, including files. A new structured
                 user library is proposed. The dynamic call of objects
                 during a terminal session links the user library to the
                 workspace. New types of variables are described along
                 with solutions to interesting problems based on them.",
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "APL; segmentation; software libraries; workspace",
  source =       "Dept. Library",
}

@Article{Baker:1982:OPA,
  author =       "T. P. Baker",
  title =        "A One-Pass Algorithm for Overload Resolution in
                 {Ada}",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "601--614",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A simple method is presented for detecting ambiguities
                 and finding the correct interpretations of expressions
                 in the programming language Ada. Unlike previously
                 reported solutions to this problem, which require
                 multiple passes over a tree structure, the method
                 described here operates in one bottom-up pass, during
                 which a directed acyclic graph is produced. The
                 correctness of this approach is demonstrated by a brief
                 formal argument.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Ada; compilers; overloading; translators",
  source =       "Dept. Library",
}

@Article{DeRemer:1982:ECL,
  author =       "Frank DeRemer and Thomas Pennello",
  title =        "Efficient Computation of {LALR}(1) Look-Ahead Sets",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "615--649",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 4 17:32:11 1996",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Two relations that capture the essential structure of
                 the problem of computing LALR(1) look-ahead sets are
                 defined, an efficient algorithm is presented to compute
                 the sets in time linear in the size of the relations.
                 In particular, for a PASCAL grammar, the algorithm
                 performs fewer than 15 percent of the set unions
                 performed by the popular compiler-compiler YACC. When a
                 grammar is not LALR(1), the relations, represented
                 explicitly, provide for printing user-oriented error
                 messages that specifically indicate {\em how\/} the
                 look-ahead problem arose. In addition, certain loops in
                 the digraphs induced by these relations indicate that
                 the grammar is not LR($k$) for any $k$. Finally, on
                 oft-discovered and used but {\em incorrect\/}
                 look-ahead set algorithm is similarly based on two
                 other relations defined for the first time here. The
                 formal presentation of this algorithm should help
                 prevent its rediscovery.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Backus-Naur form; compiler generators; context-free
                 grammar; grammar debugging.; LALR(1); LR(k); parsing;
                 strongly connected component; syntax; translator
                 writing systems",
  source =       "Dept. Library",
}

@Article{Dewar:1982:TDG,
  author =       "Robert B. K. Dewar and Micha Sharir and Elia
                 Weixelbaum",
  title =        "Transformational Derivation of a Garbage Collection
                 Algorithm",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "650--667",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Transformational programming is a relatively new
                 programming technique intended to derive complex
                 algorithms automatically. Initially, a set of
                 transformational rules is described, and an initial
                 specification of the problem to be programmed is given.
                 The specification is written in a high-level language
                 in a fairly compact form possibly ignoring efficiency.
                 A number of versions, called transformations, are
                 created by successively applying the transformational
                 rules starting with the initial specification. As an
                 example of the application of this technique to a
                 fairly complex case, a transformational derivation of a
                 variant of known efficient garbage collection and
                 compaction algorithm from an initial very high-level
                 specification is given. Currently, the techniques are
                 still being developed, and therefore the
                 transformations are derived manually. However, most of
                 the transformations done are of a technical nature and
                 could eventually be automated.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; automatic programming; design; formal
                 differentiation; garbage collection; languages; loop
                 fusion; program transformation; strength reduction.;
                 transformational programming; very high level
                 languages; wide-spectrum languages",
  source =       "Dept. Library",
}

@Article{Boom:1982:WPL,
  author =       "H. J. Boom",
  title =        "A Weaker Precondition for Loops",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "668--677",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In his book, {\em A Discipline of Programming},
                 Dijkstra presents the skeleton for a programming
                 language and defines its semantics axiomatically using
                 predicate transformers. His language involves only
                 bounded nondeterminism. He shows that unbounded
                 nondeterminism is incompatible with his axioms and his
                 continuity principle, and he argues that this is no
                 drawback because unboundedly nondeterministic machines
                 cannot be built. This paper considers the question of
                 unbounded nondeterminism. A new predicate transformer
                 is derived to handle this. A proof is given that the
                 new transformer corresponds to operational semantics,
                 and an informal argument is given that unbounded
                 nondeterminism can be a useful programming concept even
                 in the absence of nondeterministic machines.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Ackermann's function; fair do loop; fair scheduling;
                 nondeterminism; predicate transformer; total
                 correctness; unbounded nondeterminism; weakest
                 precondition",
  source =       "Dept. Library",
}

@Article{Misra:1982:DGA,
  author =       "Jayadev Misra and K. M. Chandy",
  title =        "A Distributed Graph Algorithm: Knot Detection",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "678--686",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A {\em knot\/} is a directed graph is [sic] a useful
                 concept in deadlock detection. A distributed algorithm
                 for identifying a knot in a graph using a network of
                 processes is presented. The algorithm is based on the
                 work of Dijkstra and Scholten.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "distributed algorithms; distributed applications;
                 graph algorithms; knot; message communication; network
                 operating systems; network problems; sequencing and
                 scheduling",
  source =       "Dept. Library",
}

@Article{Mallgren:1982:FSG,
  author =       "William R. Mallgren",
  title =        "Formal Specification of Graphic Data Types",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "687--710",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Formal specification techniques and data abstractions
                 have seen little application to computer graphics. Many
                 of the objects and operations unique to graphics
                 programs can be handled conveniently by defining
                 special graphic data types. Not only do graphic data
                 types provide an attractive way to work with pictures,
                 but they also allow specification techniques for data
                 abstractions to be employed. Algebraic axioms, because
                 of their definitional nature, are especially well
                 suited to specifying the diversity of types useful in
                 graphics applications. In this paper, definitions are
                 given for some important concepts that appear in
                 graphics programs. Based on these definitions, some
                 illustrative graphic data types, called point, region,
                 geometric function, graphic transformation, and
                 tree-structured picture, are defined and specified
                 algebraically. A simple graphics language for line
                 drawings is created by embedding these new data types
                 in the language PASCAL. Using the specifications, an
                 outline of a correctness proof for a small programming
                 example is presented.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract data types; algebraic approaches to
                 semantics; correctness proofs; graphic data type;
                 languages; specification techniques; verification",
  sjb =          "readable",
  source =       "Dept. Library",
}

@Article{Thatcher:1982:DTS,
  author =       "J. W. Thatcher and E. G. Wagner and J. B. Wright",
  title =        "Data Type Specification: Parameterization and the
                 Power of Specification Techniques",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "711--732",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Our earlier work on abstract data types is extended by
                 the answers to a number of questions on the power and
                 limitations of algebraic specification techniques and
                 by a algebraic treatment of parameterized data types
                 like {\em set-of-(\ )\/} and {\em stacks-of(\ )}. The
                 ``hidden function'' problem (the need to include
                 operations in specifications which are wanted hidden
                 from the user) is investigated; the relative power of
                 conditional specifications and equational
                 specifications is investigated; and it is show that
                 parameterized specifications must contain ``side
                 conditions'' (e.g., that {\em finite-sets-of-d\/}
                 requires an equality predicate on $d$).",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract data types; algebraic approaches to
                 semantics; algebraic specification; semantics; type
                 structure",
  sjb =          "Looks dated now",
  source =       "Dept. Library",
}

@Article{Williams:1982:DAF,
  author =       "John H. Williams",
  title =        "On the Development of the Algebra of Functional
                 Programs",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "733--757",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/bevan.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The development of the algebraic approach to reasoning
                 about functional programs that was introduced by Backus
                 in his Turing Award Lecture is furthered. Precise
                 definitions for the foundations on which the algebra is
                 based are given, and some new expansion theorems that
                 broaden the class of functions for which this approach
                 is applicable are proved. In particular, the class of
                 ``overrun-tolerant'' forms, nonlinear forms that
                 include some of the familiar divide-and-conquer program
                 schemes, are defined; an expansion theorem for such
                 forms is proved; and that theorem is used to show how
                 to derive expansions for some programs defined by
                 nonlinear forms.",
  acknowledgement = ack-pb,
  checked =      "19940302",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algebraic approaches to semantics; applicative
                 (functional) programming; correctness proofs;
                 functional constructs; semantics; transformations",
  sjb =          "Looks dated now",
  source =       "Dept. Library",
}

@Article{Peterson:1982:UAC,
  author =       "Gary L. Peterson",
  title =        "An {$O(n\log{n})$} Unidirectional Algorithm for the
                 Circular Extrema Problem",
  journal =      j-TOPLAS,
  volume =       "4",
  number =       "4",
  pages =        "758--762",
  month =        oct,
  year =         "1982",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/ProbAlgs.bib",
  note =         "Peterson presents a deterministic distributed
                 algorithm for finding the largest of a set of $n$
                 uniquely numbered processes in a ring. The algorithm
                 requires $O(n \log n)$ messages in the worst case, and
                 is unidirectional. The number of processes is not
                 initially known.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Merlin:1983:CSS,
  author =       "Philip Merlin and Gregor V. Bochmann",
  title =        "On the Construction of Submodule Specifications and
                 Communication Protocols",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "1--25",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Freudenberger:1983:ESO,
  author =       "Stefan M. Freudenberger and Jacob T. Schwartz and
                 Micha Sharir",
  title =        "Experience with the {SETL} Optimizer",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "26--45",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Peterson:1983:CRW,
  author =       "Gary L. Peterson",
  title =        "Concurrent Reading While Writing",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "46--55",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Peterson:1983:NSL,
  author =       "Gary L. Peterson",
  title =        "A New Solution to {Lamport}'s Concurrent Programming
                 Problem Using Small Shared Variables",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "56--65",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Database/Wiederhold.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  annote =       "Immune to process failures and restarts.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gallager:1983:DAM,
  author =       "R. G. Gallager and P. A. Humblet and P. M. Spira",
  title =        "A Distributed Algorithm for Minimum-Weight Spanning
                 Trees",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "66--77",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kieburtz:1983:ARE,
  author =       "Richard B. Kieburtz and Abraham Silberschatz",
  title =        "Access-Right Expressions",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "78--96",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kamin:1983:FDT,
  author =       "Samuel Kamin",
  title =        "Final Data Types and Their Specification",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "97--121",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 11:07:03 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Henderson:1983:TCL,
  author =       "Peter B. Henderson",
  title =        "Technical Correspondence: On {LaLonde} and {des
                 Rivieres}' ``{Handling Operator Precedence in
                 Arithmetic Expressions with Tree Transformations}''",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "122--122",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{LaLonde:1981:HOP,LaLonde:1983:TCL}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{LaLonde:1983:TCL,
  author =       "Wilf R. LaLonde",
  title =        "Technical Correspondence: {LaLonde}'s Reply",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "1",
  pages =        "122--122",
  month =        jan,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{LaLonde:1981:HOP,Henderson:1983:TCL}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Reiss:1983:GCS,
  author =       "Steven P. Reiss",
  title =        "Generation of Compiler Symbol Processing Mechanisms
                 from Specifications",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "2",
  pages =        "127--163",
  month =        apr,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 28 16:03:28 1983",
  bibsource =    "Compiler/compiler.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  annote =       "Compiler symbol processing has become complex as
                 programming languages have evolved. In this paper we
                 describe a comprehensive model of symbol processing,
                 and a system that uses this model to generate the
                 symbol processing portions of a compiler from simple
                 specifications. The model supports a variety of
                 entities with different types of names. It includes a
                 detailed view of scoping. It provides a simple picture
                 of the complex mapping from a source token to a
                 specific entity. The model is illustrated with examples
                 from Ada. The system is divided into two parts. The
                 first takes a nonprocedural description of the
                 semantics of symbols in the language and produces a
                 symbol table module for a compiler in that language.
                 The second supports a simple symbol processing language
                 that allows the easy connection of syntax and semantic
                 processing to the symbol module. [abstract]",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gottlieb:1983:BTE,
  author =       "Allan Gottlieb and Boris D. Lubachevsky and Larry
                 Rudolph",
  title =        "Basic Techniques for the Efficient Coordination of
                 Very Large Numbers of Cooperating Sequential
                 Processors",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "2",
  pages =        "164--189",
  month =        apr,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/Graefe.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "glr acm toplas",
}

@Article{Lamport:1983:SCP,
  author =       "Leslie Lamport",
  title =        "Specifying Concurrent Program Modules",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "2",
  pages =        "190--222",
  month =        apr,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Buckley:1983:EIG,
  author =       "G. N. Buckley and Abraham Silberschatz",
  title =        "An Effective Implementation for the Generalized
                 Input-Output Construct of {CSP}",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "2",
  pages =        "223--235",
  month =        apr,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/ProbAlgs.bib",
  note =         "They present a distributed algorithm for CSP output
                 guards based on priority ordering of processes. Their
                 algorithm has the property that two processes that can
                 communicate and do not establish communication with a
                 third process will communicate within a bounded time.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Maher:1983:API,
  author =       "B. Maher and D. H. Sleeman",
  title =        "Automatic Program Improvement: Variable Usage
                 Transformations",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "2",
  pages =        "236--264",
  month =        apr,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 28 16:27:08 1983",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  annote =       "The design of the Leeds Transformation System is to
                 transform existing programs, written in a variety of
                 languages, into `tidier' programs. The total system was
                 conceived of as having three phases: syntactic
                 transformations, variable usage transformations, and
                 synthesizing features. Because programmers vary greatly
                 in what they consider to be a more acceptable form, we
                 have aimed to make the system as data driven as
                 possible. (That also enables us to deal with a variety
                 of programming languages.) The paper reviews the first
                 two phases, reports the second in some detail, and
                 illustrates the use of the system on an ALGOL 60
                 program. Redundant assignments, redundant variables,
                 and loop-invariant statements are discovered by means
                 of a novel approach which represents variable usage
                 within a program as a correspondence matrix. Potential
                 enhancements of the system are also discussed.
                 [abstract]",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cohen:1983:ERR,
  author =       "Norman H. Cohen",
  title =        "Eliminating Redundant Recursive Calls",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "265--299",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Dekel:1983:PGP,
  author =       "Eliezer Dekel and Sartaj Sahni",
  title =        "Parallel Generation of Postfix and Tree Forms",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "300--317",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gazinger:1983:PSP,
  author =       "Harald Gazinger",
  title =        "Parameterized Specifications: Parameter Passing and
                 Implementation with Respect to Observability",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "318--354",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{DeMillo:1983:GEI,
  author =       "Richard A. DeMillo",
  title =        "{Guest Editor}'s Introduction",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "355--355",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:32:11 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hart:1983:TPC,
  author =       "Sergiu Hart and Micha Sharir and Amir Pnueli",
  title =        "Termination of Probabilistic Concurrent Program",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "356--380",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Liskov:1983:GAL,
  author =       "Barbara Liskov and Robert Scheifler",
  title =        "Guardians and Actions: Linguistic Support for Robust,
                 Distributed Programs",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "381--404",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Nierstrasz.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "olit-oopl argus guardians transactions",
}

@Article{Lipton:1983:VLP,
  author =       "Richard J. Lipton and Jacobo Valdes and Gopalakrishnan
                 Vijayen and Stephen C. Notth and Robert Sedgewick",
  title =        "{VLSI} Layout as Programming",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "405--421",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/vlsi.bib",
  abstract =     "The first component of a VLSI design environment being
                 built at Princeton University is described. The general
                 theme of this effort is to make the design of VLSI
                 circuits as similar to programming as possible. The
                 attempt is to build tools that do for the VLSI circuit
                 designer what the best software tools do for the
                 implementor of large software systems.",
  acknowledgement = ack-pb,
  annote =       "This paper describes ALI, a procedural language to
                 describe layouts. The main feature of ALI is that it
                 allows its user to design layouts at a conceptual level
                 at which neither sizes nor positions (absolute or
                 relative) of layout components may be specified. ALI is
                 similar to IDEAL in both design and implementation, in
                 that both use a strongly-typed variant of Pascal (or
                 C), both solve a set of linear inequalities to
                 determine the final positions of the elements, and both
                 support hierarchies through the use of procedures.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  owner =        "Rick Snodgrass",
}

@Article{Hennessy:1983:PCO,
  author =       "John L. Hennessy and Thomas Gross",
  title =        "Postpass Code Optimization of Pipeline Constraints",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "422--448",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Reps:1983:ICD,
  author =       "Thomas Reps and Tim Teitelbaum and Alan Demers",
  title =        "Incremental Context-Dependent Analysis for
                 Language-Based Editors",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "449--477",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Giegerich:1983:FFD,
  author =       "Robert Giegerich",
  title =        "A Formal Framework for the Derivation of
                 Machine-Specific Optimizers",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "478--498",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pemberton:1983:TCT,
  author =       "Steven Pemberton",
  title =        "Technical Correspondence: On {Tanenbaum}, {van
                 Staveren}, and {Stevenson}'s ``{Using Peephole
                 Optimization on Intermediate Code}''",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "499--499",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Tanenbaum:1982:UPO,Tanenbaum:1983:TCT}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tanenbaum:1983:TCT,
  author =       "Andrew S. Tanenbaum",
  title =        "Technical Correspondence: {Tanenbaum}'s Reply",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "499--500",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Tanenbaum:1982:UPO,Pemberton:1983:TCT}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moitra:1983:TCA,
  author =       "Abha Moitra",
  title =        "Technical Correspondence: On {Apt}, {Francez}, and {de
                 Roever}'s ``{A Proof System for Communicating
                 Sequential Processes}''",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "500--501",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Apt:1980:PSC}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Krogh:1983:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "502--505",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:36:05 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1983:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "3",
  pages =        "506--509",
  month =        jul,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Waters:1983:UFC,
  author =       "Richard C. Waters",
  title =        "User Format Control in a {Lisp} Prettyprinter",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "513--531",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cohen:1983:CCA,
  author =       "Jacques Cohen and Alexandru Nicolau",
  title =        "Comparison of Compacting Algorithms for Garbage
                 Collection",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "532--553",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sethi:1983:CFA,
  author =       "Ravi Sethi",
  title =        "Control Flow Aspects of Semantics-Directed Compiling",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "554--595",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Jones:1983:TST,
  author =       "C. B. Jones",
  title =        "Tentative Steps Toward a Development Method for
                 Interfering Programs",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "596--619",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ossefort:1983:CPC,
  author =       "Marty Ossefort",
  title =        "Correctness Proofs of Communicating Processes: Three
                 Illustrative Examples from the Literature",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "620--640",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Weyuker:1983:ATD,
  author =       "Elaine J. Weyuker",
  title =        "Assessing Test Data Adequacy through Program
                 Inference",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "641--655",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sippu:1983:SEH,
  author =       "Seppo Sippu and Eljas Soisalon-Soininen",
  title =        "A Syntax-Error-Handling Technique and Its Experimental
                 Analysis",
  journal =      j-TOPLAS,
  volume =       "5",
  number =       "4",
  pages =        "656--679",
  month =        oct,
  year =         "1983",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Archer:1984:URR,
  author =       "James E. {Archer, Jr.} and Richard Conway and Fred B.
                 Schneider",
  title =        "User Recovery and Reversal in Interactive Systems",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "1--19",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cameron:1984:GBD,
  author =       "Robert D. Cameron and M. Robert Ito",
  title =        "Grammar-Based Definition of Metaprogramming Systems",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "20--54",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Colussi:1984:RES,
  author =       "L. Colussi",
  title =        "Recursion As an Effective Step in Program
                 Development",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "55--67",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Manna:1984:SCP,
  author =       "Zohar Manna and Pierre Wolper",
  title =        "Synthesis of Communicating Processes from Temporal
                 Logic Specifications",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "68--93",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/nonmono.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Nierstrasz.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "temporal-logic csp binder(csp)",
}

@Article{Constable:1984:TTP,
  author =       "Robert L. Constable and Daniel R. Zlatin",
  title =        "The Type Theory of {PL\slash CV3}",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "94--117",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 18:36:30 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kaufman:1984:TLR,
  author =       "Arie Kaufman",
  title =        "Tailored-List and Recombination-Delaying Buddy
                 Systems",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "1",
  pages =        "118--125",
  month =        jan,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Applelbe:1984:ECS,
  author =       "William F. Applelbe and A. P. Ravn",
  title =        "Encapsulation Constructs in Systems Programming
                 Languages",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "129--158",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Burton:1984:ACP,
  author =       "F. Warren Burton",
  title =        "{Annotations to Control Parallelism and Reduction
                 Order in the Distributed Evaluation of Functional
                 Programs}",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "159--174",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/Functional.bib; Parallel/Pfpbib.bib",
  abstract =     "When evaluating a functional program on a network of
                 processors, it is necessary to decide when parallelism
                 is desirable, which work may be transferred to another
                 processor, and in what form the work is to be
                 transferred. If the wrong decisions are made, a
                 parallel evaluation may require asymptotically more
                 time than a sequential evaluation, owing to
                 communication costs. The introduction of annotations to
                 give the programmer control over the above decisions is
                 proposed. The annotations and their effects are defined
                 in terms of the lambda calculus. Each application must
                 have one of three annotations. No other annotations are
                 required. Examples and possible extensions to this
                 work, including annotated combinators, are briefly
                 considered.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Annotations; Para-Functional Programming",
}

@Article{Hull:1984:CSP,
  author =       "M. Elizabeth C. Hull and R. M. McKeag",
  title =        "Communicating Sequential Processes for Centralized and
                 Distributed Operating System Design",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "175--191",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Backhouse:1984:GDF,
  author =       "Roland Backhouse",
  title =        "Global Data Flow Analysis Problems Arising in Locally
                 Least-Cost Error Recovery",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "192--214",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Reif:1984:RTS,
  author =       "John H. Reif and Paul G. Spirakis",
  title =        "Real-Time Synchronization of Interprocess
                 Communications",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "215--238",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/ProbAlgs.bib",
  note =         "They present probabilistic distributed algorithms for
                 the guard-scheduling problem
                 (Section~\ref{sec-guardscheduling}) that guarantee
                 real-time response. A preliminary version of this paper
                 appeared as ``Distributed Algorithms for Synchronizing
                 Interprocess Communication in Real Time,'' in {\em
                 Proc. 13th Ann. ACM Symp. on Theory of Computing},
                 1981.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Karp:1984:PFF,
  author =       "Richard Alan Karp",
  title =        "Proving Failure-Free Properties of Concurrent Systems
                 Using Temporal Logic",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "239--253",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lamport:1984:UTI,
  author =       "Leslie Lamport",
  title =        "Using Time Instead of Timeout for Fault-Tolerant
                 Distributed Systems",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "254--280",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lamport:1984:HLC,
  author =       "Leslie Lamport and Fred B. Schneider",
  title =        "The ``{Hoare} Logic'' of {CSP}, and All That",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "2",
  pages =        "281--296",
  month =        apr,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Budd:1984:ACV,
  author =       "Timothy A. Budd",
  title =        "An {APL} Compiler for a Vector Processor",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "297--313",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hobson:1984:DEE,
  author =       "Richard F. Hobson",
  title =        "A Directly Executable Encoding for {APL}",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "314--332",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ben-Ari:1984:AFG,
  author =       "Mordechai Ben-Ari",
  title =        "Algorithms for On-the-fly Garbage Collection",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "333--344",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Katayama:1984:TAG,
  author =       "Takuya Katayama",
  title =        "Translation of Attribute Grammars into Procedures",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "345--369",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Apt:1984:MDT,
  author =       "Krzysztof R. Apt and Nissem Francez",
  title =        "Modeling the Distributed Termination Convention of
                 {CSP}",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "370--379",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Korach:1984:DAF,
  author =       "E. Korach and D. Rotem and N. Santoro",
  title =        "Distributed Algorithms for Finding Centers and Medians
                 in Networks",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "380--401",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Schlichting:1984:UMP,
  author =       "Richard D. Schlichting and Fred B. Schneider",
  title =        "Using Message Passing for Distributed Programming:
                 Proof Rules and Disciplines",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "402--431",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{LaLonde:1984:TCC,
  author =       "Wilf R. LaLonde",
  title =        "Technical Correspondence: Comments on
                 {Soisalon-Soininen}'s ``{Inessential Error Entries and
                 Their Use in {LR} Parser Optimization}''",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "432--439",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Soisalon-Soininen:1982:IEE}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Krogh:1984:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "440--443",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:27:37 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1984:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "3",
  pages =        "444--447",
  month =        jul,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:28:08 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Winner:1984:UO,
  author =       "Robert I. Winner",
  title =        "Unassigned Objects",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "449--467",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Turini:1984:MLO,
  author =       "Franco Turini",
  title =        "{Magma2}: {A} Language Oriented toward Experiments in
                 Control",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "468--486",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bird:1984:PAS,
  author =       "R. S. Bird",
  title =        "The Promotion and Accumulation Strategies in
                 Transformational Programming",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "487--504",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See addendum \cite{Bird:1985:APA}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Davidson:1984:CST,
  author =       "Jack W. Davidson and Christopher W. Fraser",
  title =        "Code Selection through Object Code Optimization",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "505--526",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Nov 20 15:31:51 1984",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This paper shows how thorough object code optimization
                 has simplified a compiler and made it easy to retarget.
                 The code generator forgoes case analysis and emits
                 naive code that is improved by a retargetable object
                 code optimizer. With this technique, cross-compilers
                 emit code comparable to host-specific compilers",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "code generation; compilation; optimization; peephole
                 optimization; portability",
}

@Article{Ramanath:1984:JML,
  author =       "M. V. S. Ramanath and Marvin Solomon",
  title =        "Jump Minimization in Linear Time",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "527--545",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Nov 20 15:35:55 1984",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Unlike other instructions, which compute or test
                 values, unconditional branch instructions do no useful
                 work. Rather, they are artifacts of the translation
                 from a flow graph to the linear form of conventional
                 machine language. Careful ordering of the basic blocks
                 of a program can decrease the number of branches
                 required by allowing a basic block to `fall through' to
                 a successor. It is shown that although the general
                 problem of minimizing the number of branches is
                 NP-complete, an efficient algorithm is possible for
                 `structured' programs --- those written without goto
                 statements. More specifically, an algorithm is
                 presented that produces an optimal odering of the basic
                 blocks of any program that uses only the control
                 structures if-then-else, loop, and exit. The running
                 time of the algorithm is proportional to the length of
                 the program, provided the number of loops exited by any
                 exit statement can be bounded by a constant.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "code generation; code reordering; goto statements;
                 program optimization; unconditional branches",
}

@Article{Dencker:1984:OPT,
  author =       "Peter Dencker and Karl {D\"urre} and Johannes Heuft",
  title =        "Optimization of Parser Tables for Portable Compilers",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "546--572",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 7 11:53:52 1985",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/graph.coloring.bib",
  abstract =     "Six methods for parser table compression are compared.
                 The investigations are focused on four methods that
                 allow the access of table entries with a constant
                 number of index operations. The advantage of these
                 methods is that the access to the compressed tables can
                 be programmed efficiently in portable high-level
                 languages like Pascal or FORTRAN. The results are
                 related to two simple methods based on list searching.
                 Experimental results on eleven different grammers show
                 that, on the average, a method based on graph coloring
                 turns our best.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Graph coloring; sparse matrices; table compression",
}

@Article{Minsky:1984:SLC,
  author =       "Naftaly H. Minsky",
  title =        "Selective and Locally Controlled Transport of
                 Privileges",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "573--602",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Georgeff:1984:TRS,
  author =       "Michael Georgeff",
  title =        "Transformations and Reduction Strategies for Typed
                 Lambda Expressions",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "603--631",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remark \cite{Nielson:1986:TCC}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Chandy:1984:DPP,
  author =       "K. M. Chandy and Jayadev Misra",
  title =        "The Drinking Philosopher's Problem",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "632--646",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 7 12:01:54 1985",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/os.bib; Os/os.bib",
  abstract =     "The problem of resolving conflicts between processes
                 in distributed systems is of practical importance. A
                 conflict between a set of processes must be resolved in
                 favor of some (usually one) process and against the
                 others: a favored process must have some property that
                 distinguishes it from others. To guarantee fairness,
                 the distinguishing property must be such that the
                 process selected for favorable treatment is not always
                 the same. A distributed implementation of an acyclic
                 precedence graph, in which the depth of a process (the
                 longest chain of predecessors) is a distinguishing
                 property, is presented. A simple conflict resolution
                 rule coupled with the acyclic graph ensures fair
                 resolution of all conflicts. To make the problem
                 concrete, two paradigms are presented: the well-known
                 distributed dining philosophers problem and a
                 generalization of it, the distributed drinking
                 philosophers problem.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Asymmetry; dining philosophers problem",
}

@Article{Soundararajan:1984:ASC,
  author =       "N. Soundararajan",
  title =        "Axiomatic Semantics of Communicating Sequential
                 Processes",
  journal =      j-TOPLAS,
  volume =       "6",
  number =       "4",
  pages =        "647--662",
  month =        oct,
  year =         "1984",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Barstow:1985:CTD,
  author =       "David Barstow",
  title =        "On Convergence Toward a Database of Program
                 Transformations",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "1--9",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2364.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; measurement",
  subject =      "{\bf I.2.4}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Knowledge Representation Formalisms and
                 Methods. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.1.2}: Software, PROGRAMMING
                 TECHNIQUES, Automatic Programming. {\bf E.1}: Data,
                 DATA STRUCTURES, Graphs. {\bf I.2.4}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Knowledge
                 Representation Formalisms and Methods, PECOS.",
}

@Article{Zave:1985:DAF,
  author =       "Pamela Zave",
  title =        "A Distributed Alternative to Finite-State-Machine
                 Specifications",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "10--36",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2365.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Tools. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Bergeretti:1985:IFD,
  author =       "Jean-Francois Bergeretti and Bernard A. {Carr\'e}",
  title =        "Information-Flow and Data-Flow Analysis of
                 while-Programs",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "37--61",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2366.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "documentation; languages; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques. {\bf D.2.5}:
                 Software, SOFTWARE ENGINEERING, Testing and Debugging.
                 {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.4}: Software,
                 SOFTWARE ENGINEERING, Program Verification, Assertion
                 checkers.",
}

@Article{Fuchs:1985:OPF,
  author =       "David R. Fuchs and Donald E. Knuth",
  title =        "Optimal Prepaging and Font Caching",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "62--79",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 6 11:45:48 1985",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Graphics/graphics.1.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2367.html",
  abstract =     "An efficient algorithm for communicating letter-shape
                 information from a high-speed computer with a large
                 memory to a typesetting device that has a limited
                 memory is presented. The encoding is optimum in the
                 sense that the total time for typesetting is minimized,
                 using a model that generalizes well-known ``demand
                 paging'' strategies to the case where changes to the
                 cache are allowed before the associated information is
                 actually needed. Extensive empirical data show that
                 good results are obtained even when difficult technical
                 material is being typeset on a machine that can store
                 information concerning only 100 characters. The methods
                 of this paper are also applicable to other hardware and
                 software caching applications with restricted
                 lookahead.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; measurement; performance; theory",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Allocation/deallocation strategies. {\bf
                 D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Secondary storage. {\bf D.4.2}: Software,
                 OPERATING SYSTEMS, Storage Management, Virtual memory.
                 {\bf E.2}: Data, DATA STORAGE REPRESENTATIONS, Linked
                 representations. {\bf I.7.2}: Computing Methodologies,
                 TEXT PROCESSING, Document Preparation,
                 Photocomposition/typesetting.",
}

@Article{Gelernter:1985:GCL,
  author =       "David Gelernter",
  title =        "Generative Communication in {Linda}",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "80--112",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2433.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Linda. {\bf C.2.1}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS, Network
                 Architecture and Design, Network communications. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Concurrent
                 programming structures. {\bf D.4.4}: Software,
                 OPERATING SYSTEMS, Communications Management, Message
                 sending. {\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems, Distributed applications. {\bf
                 D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Distributed memories.",
}

@Article{Bates:1985:PP,
  author =       "Joseph L. Bates and Robert L. Constable",
  title =        "Proofs as Programs",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "113--136",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2528.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; theory; verification",
  subject =      "{\bf D.1.2}: Software, PROGRAMMING TECHNIQUES,
                 Automatic Programming. {\bf I.2.3}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving. {\bf F.3.1}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Specifying and
                 Verifying and Reasoning about Programs. {\bf I.2.2}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Automatic Programming. {\bf D.1.2}: Software,
                 PROGRAMMING TECHNIQUES, Automatic Programming, PRL.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification.",
}

@Article{Dunlop:1985:GSU,
  author =       "Douglas D. Dunlop and Victor R. Basili",
  title =        "Generalizing Specifications for Uniformly Implemented
                 Loops",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "137--158",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2708.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Specification techniques. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Assertion checkers. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness proofs.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Validation.",
}

@Article{Park:1985:NAL,
  author =       "Joseph C. H. Park and K. M. Choe and C. H. Chang",
  title =        "A New Analysis of {LALR} Formalisms",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "159--175",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 6 12:00:21 1985",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/2527.html",
  abstract =     "The traditional LALR analysis is reexamined using a
                 new operator and an associated graph. An improved
                 method that allows factoring out a crucial part of the
                 computation for defining states of LR(0) canonical
                 collection and for computing LALR(1) lookahead sets is
                 presented. This factorization leads to significantly
                 improved algorithms with respect to execution time as
                 well as storage requirements. Experimental results
                 including comparison with other known methods are
                 presented.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; LALR(1) lookahead sets;
                 LALR(k) grammar; languages; parser generating system;
                 performance; theory; verification",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Translator
                 writing systems and compiler generators. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Syntax. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Parsing.",
}

@Article{Wall:1985:TCN,
  author =       "D. Wall and A. Srivastava and F. Templin",
  title =        "Technical Correspondence: {A} Note on {Hennessy}'s
                 ``{Symbolic Debugging of Optimized Code}''",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "1",
  pages =        "176--181",
  month =        jan,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 6 12:03:08 1985",
  bibsource =    "Compiler/compiler.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/215005.html",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; performance; reliability",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Symbolic execution. {\bf D.2.3}:
                 Software, SOFTWARE ENGINEERING, Coding. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Heering:1985:TMP,
  author =       "Jan Heering and Paul Klint",
  title =        "Towards Monolingual Programming Environments",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "183--213",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 21 13:40:48 1985",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3321.html",
  abstract =     "Most programming environments are much too complex.
                 One way of simplifying them is to reduce the number of
                 mode-dependent languages the user has to be familiar
                 with. As a first step towards this end, the feasibility
                 of unified command/programming/debugging languages, and
                 the concepts on which such languages have to be based,
                 are investigated. The unification process is
                 accomplished in two phases. First, a unified
                 command/programming framework is defined and, second,
                 this framework is extended by adding an integrated
                 debugging capability to it. Strict rules are laid down
                 by which to judge language concepts presenting
                 themselves as candidates for inclusion in the framework
                 during each phase. On the basis of these rules many of
                 the language design questions that have hitherto been
                 resolved this way or that, depending on the taste of
                 the designer, lose their vagueness and can be decided
                 in an unambiguous manner.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "debugging language; design; event association;
                 language design; language integration; languages;
                 monolingual system; side-effect recovery; type
                 checking",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.4.7}: Software,
                 OPERATING SYSTEMS, Organization and Design. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.4.9}: Software, OPERATING SYSTEMS, Systems
                 Programs and Utilities. {\bf D.2.5}: Software, SOFTWARE
                 ENGINEERING, Testing and Debugging. {\bf D.4.9}:
                 Software, OPERATING SYSTEMS, Systems Programs and
                 Utilities, Command and control languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Smalltalk-80. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 INTERLISP.",
}

@Article{Yemini:1985:MVE,
  author =       "Shaula Yemini and Daniel M. Berry",
  title =        "A Modular Verifiable Exception-Handling Mechanism",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "214--243",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3320.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; reliability; security;
                 verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.2.5}: Software, SOFTWARE ENGINEERING, Testing and
                 Debugging, Error handling and recovery. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques,
                 Modules and interfaces. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Abstract data types. {\bf D.2.4}: Software,
                 SOFTWARE ENGINEERING, Program Verification. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, ALGOL-68. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Modules, packages.",
}

@Article{Weihl:1985:IRA,
  author =       "William Weihl and Barbara Liskov",
  title =        "Implementation of Resilient, Atomic Data Types",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "244--269",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/obscure.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3319.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; reliability",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Abstract data types. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Modules, packages. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, ARGUS.",
}

@Article{Milne:1985:CRC,
  author =       "George J. Milne",
  title =        "{CIRCAL} and the representation of communication,
                 concurrency, and time",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "270--298",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/Discrete.event.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3322.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, CIRCAL. {\bf
                 F.1.2}: Theory of Computation, COMPUTATION BY ABSTRACT
                 DEVICES, Modes of Computation, Parallelism and
                 concurrency. {\bf F.1.2}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Modes of Computation,
                 Alternation and nondeterminism. {\bf B.7.2}: Hardware,
                 INTEGRATED CIRCUITS, Design Aids, Verification. {\bf
                 C.2.3}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Operations.
                 {\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic, Lambda calculus and related
                 systems. {\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages.",
}

@Article{Schmidt:1985:DGV,
  author =       "David A. Schmidt",
  title =        "Detecting Global Variables in Denotational
                 Specifications",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "299--310",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3323.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.4.1}: Theory
                 of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Lambda calculus and
                 related systems. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.",
}

@Article{Pingali:1985:EDD,
  author =       "Keshav Pingali and Arvind",
  title =        "Efficient Demand-Driven Evaluation. Part 1",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "311--333",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3480.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf F.3.3}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs.",
}

@Article{Gini:1985:DWM,
  author =       "Giuseppina C. Gini and Maria L. Gini",
  title =        "Dealing with World-Model-Based Programs",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "334--347",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3479.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation; languages",
  subject =      "{\bf I.2.9}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Robotics. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf I.2.5}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Programming Languages and Software. {\bf J.6}: Computer
                 Applications, COMPUTER-AIDED ENGINEERING. {\bf I.2.9}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Robotics, POINTY.",
}

@Article{Bar-on:1985:OPG,
  author =       "Ilan Bar-On and Uzi Vishkin",
  title =        "Optimal Parallel Generation of a Computation Tree
                 Form",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "2",
  pages =        "348--357",
  month =        apr,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3478.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf F.2.2}: Theory of Computation, ANALYSIS OF
                 ALGORITHMS AND PROBLEM COMPLEXITY, Nonnumerical
                 Algorithms and Problems, Computations on discrete
                 structures. {\bf F.1.2}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Modes of Computation,
                 Parallelism and concurrency. {\bf G.2.2}: Mathematics
                 of Computing, DISCRETE MATHEMATICS, Graph Theory, Graph
                 algorithms. {\bf E.1}: Data, DATA STRUCTURES, Trees.",
}

@Article{Nielson:1985:PTD,
  author =       "Flemming Nielson",
  title =        "Program Transformations in a Denotational Setting",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "359--379",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3917.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 F.3.2}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Avrunin:1985:DAD,
  author =       "George S. Avrunin and Jack C. Wileden",
  title =        "Describing and Analyzing Distributed Software System
                 Designs",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "380--403",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3989.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Design languages. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification.
                 {\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, DYMOL. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Jefferson:1985:VT,
  author =       "David R. Jefferson",
  title =        "Virtual Time",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "404--425",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Sep 30 16:35:18 1985",
  bibsource =    "Database/time.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3988.html",
  abstract =     "Virtual time a new paradigm for organizing and
                 synchronizing distributed systems which can be applied
                 to such problems as distributed discrete event
                 simulation and distributed database concurrency
                 control. Virtual time provides a flexible abstraction
                 of real time in much the same way that virtual memory
                 provides an abstraction of real memory. It is
                 implemented using the Time Warp mechanism, a
                 synchronization protocol distinguished by its reliance
                 on lookahead-rollback, and by its implementation of
                 rollback via antimessages.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency control; design; performance; reliability;
                 simulation; Time Warp",
  subject =      "{\bf D.4.7}: Software, OPERATING SYSTEMS, Organization
                 and Design, Distributed systems. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Synchronization.
                 {\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf F.1.2}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Modes of
                 Computation, Parallelism and concurrency.",
}

@Article{Donahue:1985:DTV,
  author =       "James Donahue and Alan Demers",
  title =        "Data Types Are Values",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "426--445",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Aug 13 17:16:20 MDT 1994",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/sigplan.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3987.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  review =       "ACM CR 8604-0326",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 RUSSELL.",
}

@Article{Dershowitz:1985:PAI,
  author =       "Nachum Dershowitz",
  title =        "Program Abstraction and Instantiation",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "446--477",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/3986.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Structured programming. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Correctness proofs. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.1.2}:
                 Software, PROGRAMMING TECHNIQUES, Automatic
                 Programming. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Assertions. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Invariants. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Software
                 libraries.",
}

@Article{Richter:1985:NSE,
  author =       "Helmut Richter",
  title =        "Noncorrecting Syntax Error Recovery",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "478--489",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4019.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; Futures; languages; Lisp; performance; theory;
                 verification",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.2.5}:
                 Software, SOFTWARE ENGINEERING, Testing and Debugging,
                 Error handling and recovery. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Syntax.",
}

@Article{Bird:1985:APA,
  author =       "R. S. Bird",
  title =        "Addendum: ``{The Promotion and Accumulation Strategies
                 in Transformational Programming}''",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "490--492",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Bird:1984:PAS}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Krogh:1985:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "493--496",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:35:53 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1985:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "3",
  pages =        "497--500",
  month =        jul,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:36:44 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Halstead:1985:MLC,
  author =       "Robert H. {Halstead, Jr.}",
  title =        "{Multilisp: A Language for Concurrent Symbolic
                 Computation}",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "501--538",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Parallel/Pfpbib.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4478.html",
  abstract =     "Multilisp is a version of the Lisp dialect Scheme
                 extended with constructs for parallel execution. Like
                 Scheme, Multilisp is oriented toward symbolic
                 computation. Unlike some parallel programming
                 languages, Multilisp incorporates constructs for
                 causing side effects and for explicitly introducing
                 parallelism. The potential complexity of dealing with
                 side effects in a parallel context is mitigated by the
                 nature of the parallelism constructs and by support for
                 abstract data types: a recommended Multilisp
                 programming style is presented which, if followed,
                 should lead to highly parallel, easily understandable
                 programs. Multilisp is being implemented on the 32
                 processor {\em Concert\/} multiprocessor; however, it
                 is ultimately intended for use on larger
                 multiprocessors. The current implementation, called
                 {\em Concert Multilisp}, is complete enough to run the
                 Multilisp compiler itself and has been run on Concert
                 prototypes including up to eight processors. Concert
                 Multilisp uses novel techniques for task scheduling and
                 garbage collection. The task scheduler helps control
                 excessive resource utilization by means of an unfair
                 scheduling policy; the garbage collector uses a
                 multiprocessor algorithm based on the incremental
                 garbage collector of Baker.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, MULTILISP. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf C.1.2}: Computer Systems Organization,
                 PROCESSOR ARCHITECTURES, Multiple Data Stream
                 Architectures (Multiprocessors),
                 Multiple-instruction-stream, multiple-data-stream
                 processors (MIMD). {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, LISP. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, SCHEME.",
}

@Article{Atkinson:1985:PPD,
  author =       "Malcolm P. Atkinson and Ronald Morrison",
  title =        "Procedures as Persistent Data Objects",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "539--559",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Aug 13 17:16:20 MDT 1994",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/sigplan.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4477.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  review =       "ACM CR 8607-0603",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Procedures, functions, and
                 subroutines. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Abstract
                 data types. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques.",
}

@Article{Ganapathi:1985:AGD,
  author =       "Mahadevan Ganapathi and Charles N. Fischer",
  title =        "Affix Grammar Driven Code Generation",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "560--599",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 09:17:25 1996",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/sigplan.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4486.html",
  abstract =     "Affix grammars are used to describe the instruction
                 set of a target architecture for purposes of compiler
                 code generation. A code generator is obtained
                 automatically for a compiler using attributed parsing
                 techniques. A compiler built on this model can
                 automatically perform most popular machine-dependent
                 optimizations, including peephole optimizations. Code
                 generators based on this model demonstrate
                 retargetability for the VAX1-11, iAPX2-86, Z-80003,
                 PDP4-11, MC-68000, NS32032, FOM, and IBM-370
                 architectures.",
  acknowledgement = ack-pb # " and " # ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; Code generation; code optimization;
                 code-generator-generator; compiler compiler; design;
                 intermediate representation; languages; machine
                 description; machine-dependent optimization",
  owner =        "manning",
  review =       "ACM CR 8607-0604",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Translator writing systems and
                 compiler generators.",
}

@Article{Nix:1985:EE,
  author =       "Robert P. Nix",
  title =        "Editing by Example",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "600--621",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4476.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; theory",
  subject =      "{\bf I.7.1}: Computing Methodologies, TEXT PROCESSING,
                 Text Editing. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 synthesis. {\bf H.4.1}: Information Systems,
                 INFORMATION SYSTEMS APPLICATIONS, Office Automation,
                 Word processing. {\bf I.5.4}: Computing Methodologies,
                 PATTERN RECOGNITION, Applications, Text processing.
                 {\bf I.5.5}: Computing Methodologies, PATTERN
                 RECOGNITION, Implementation, Interactive systems. {\bf
                 I.7.1}: Computing Methodologies, TEXT PROCESSING, Text
                 Editing, Languages.",
}

@Article{Francez:1985:SIC,
  author =       "Nissim Francez and Shaula A. Yemini",
  title =        "Symmetric Intertask Communication",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "622--636",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4475.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.1.3}: Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Concurrency. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Synchronization. {\bf D.4.4}:
                 Software, OPERATING SYSTEMS, Communications Management.
                 {\bf F.3.3}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs.",
}

@Article{Boehm:1985:SEA,
  author =       "Hans-Juergen Boehm",
  title =        "Side Effects and Aliasing Can Have Simple Axiomatic
                 Descriptions",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "637--655",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4474.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Logics of programs. {\bf F.3.1}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Specifying and
                 Verifying and Reasoning about Programs, Mechanical
                 verification. {\bf F.3.3}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages.",
}

@Article{deBruin:1985:DSD,
  author =       "Arie de Bruin and Wim {B\"ohm}",
  title =        "The Denotational Semantics of Dynamic Networks of
                 Processes",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "656--679",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Oct 31 06:38:00 2003",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/4473.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Concurrent programming structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Coroutines. {\bf F.3.2}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Denotational
                 semantics. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, DNP.",
}

@Article{Cohen:1985:NCE,
  author =       "Norman H. Cohen",
  title =        "A note on {Cohen}'s {``Eliminating Redundant Recursive
                 Calls''}",
  journal =      j-TOPLAS,
  volume =       "7",
  number =       "4",
  pages =        "680--685",
  month =        oct,
  year =         "1985",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jun 1 08:35:36 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/215006.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.1.2}: Software, PROGRAMMING
                 TECHNIQUES, Automatic Programming. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Procedures, functions, and subroutines.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Program and recursion schemes.
                 {\bf G.2.2}: Mathematics of Computing, DISCRETE
                 MATHEMATICS, Graph Theory, Graph algorithms. {\bf
                 G.2.2}: Mathematics of Computing, DISCRETE MATHEMATICS,
                 Graph Theory, Trees.",
}

@Article{Clark:1986:PPP,
  author =       "Keith Clark and Steve Gregory",
  title =        "{Parlog}: parallel programming in logic",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "1--49",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5390.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, PARLOG. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative languages. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Prolog. {\bf I.2.3}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving, Logic programming.",
}

@Article{Leeman:1986:FAU,
  author =       "George B. {Leeman, Jr.}",
  title =        "A Formal Approach to Undo Operations in Programming
                 Languages",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "50--87",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5005.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; human factors; languages",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Error handling and recovery. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Procedures, functions, and subroutines.
                 {\bf D.4.5}: Software, OPERATING SYSTEMS, Reliability,
                 Checkpoint/restart. {\bf H.2.1}: Information Systems,
                 DATABASE MANAGEMENT, Logical Design, Data models. {\bf
                 H.2.7}: Information Systems, DATABASE MANAGEMENT,
                 Database Administration, Logging and recovery. {\bf
                 I.2.8}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Problem Solving, Control Methods, and
                 Search, Backtracking.",
}

@Article{Keller:1986:AC,
  author =       "Robert M. Keller and M. Ronan Sleep",
  title =        "Applicative Caching",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "88--108",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5004.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation; languages; measurement;
                 performance",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 E.2}: Data, DATA STORAGE REPRESENTATIONS. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors.",
}

@Article{Pingali:1986:EDD,
  author =       "Keshav Pingali and Arvind",
  title =        "Efficient Demand-Driven Evaluation. Part 2",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "109--139",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In Part 1 of this paper [5], we presented a scheme
                 whereby a compiler could propagate demands through
                 programs in a powerful stream language L. A data-driven
                 evaluation of the transformed program performed exactly
                 the same computation as a demand-driven evaluation of
                 the original program. In this paper we explore a
                 different transformation, which trades the complexity
                 of demand propagation for a {\em bounded\/} amount of
                 extra computation on some data lines.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "Categories and Subject Descriptors: Software
                 -Programming Techniques - Applicative (Functional)
                 Programming (D.1.1); Software -Programming Techniques -
                 Concurrent Programming (D.1.3); Software -Programming
                 Languages - Formal Definitions and Theory (D.3.1):
                 Semantics ; Theory of Computation -Logics and Meanings
                 of Programs - Semantics of Programming Languages
                 (F.3.2); Software -Programming Languages - Processors
                 (D.3.4); Theory of Computation -Logics and Meanings of
                 Programs - Studies of Program Constructs (F.3.3);
                 Software -Programming Languages - Language
                 Classifications (D.3.2); Software -Programming
                 Languages - Language Classifications (D.3.2): Data-flow
                 languages ; Software -Programming Languages -
                 Processors (D.3.4): Optimization ; Software
                 -Programming Languages - Language Classifications
                 (D.3.2): LD ; General Terms: Algorithms, Languages,
                 Theory, Verification",
}

@Article{Pingali:1986:CFI,
  author =       "Keshav Pingali and Arvind",
  title =        "Clarification of ``{Feeding} Inputs on Demand'' in
                 {Efficient} Demand-Driven Evaluation. Part 1",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "140--141",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5003.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors.
                 {\bf F.3.3}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Data-flow
                 languages. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Optimization. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, LD.",
}

@Article{Misra:1986:AMA,
  author =       "Jayadev Misra",
  title =        "Axioms for Memory Access in Asynchronous Hardware
                 Systems",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "142--153",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5007.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; verification",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf B.3.2}: Hardware, MEMORY
                 STRUCTURES, Design Styles, Sequential-access memory.
                 {\bf B.5.1}: Hardware, REGISTER-TRANSFER-LEVEL
                 IMPLEMENTATION, Design, Memory design. {\bf B.4.3}:
                 Hardware, INPUT/OUTPUT AND DATA COMMUNICATIONS,
                 Interconnections (subsystems), Asynchronous/synchronous
                 operation.",
}

@Article{Gouda:1986:PLN,
  author =       "Mohamed G. Gouda and Chung-Kou Chang",
  title =        "Proving Liveness for Networks of Communicating Finite
                 State Machines",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "1",
  pages =        "154--182",
  month =        jan,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5002.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory; verification",
  subject =      "{\bf B.4.4}: Hardware, INPUT/OUTPUT AND DATA
                 COMMUNICATIONS, Performance Analysis and Design Aids,
                 Formal models. {\bf C.2.2}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS, Network
                 Protocols, Protocol architecture. {\bf C.2.2}: Computer
                 Systems Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Network Protocols, Protocol verification. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Correctness proofs. {\bf F.3.1}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Specifying and
                 Verifying and Reasoning about Programs. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming.",
}

@Article{Chirica:1986:TCI,
  author =       "Laurian M. Chirica and David F. Martin",
  title =        "Toward Compiler Implementation Correctness Proofs",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "2",
  pages =        "185--214",
  month =        apr,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/30847.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; verification",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Algebraic
                 approaches to semantics. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Invariants. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Assertions. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Parsing.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness
                 proofs.",
}

@Article{Spooner:1986:MAR,
  author =       "C. R. Spooner",
  title =        "The {ML} Approach to the Readable All-Purpose
                 Language",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "2",
  pages =        "215--243",
  month =        apr,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5918.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, ML. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features.",
}

@Article{Clarke:1986:AVF,
  author =       "E. M. Clarke and E. A. Emerson and A. P. Sistla",
  title =        "Automatic Verification of Finite-State Concurrent
                 Systems Using Temporal Logic Specifications",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "2",
  pages =        "244--263",
  month =        apr,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Ai/nonmono.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib; Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Nierstrasz.bib",
  note =         "An early version appeared in {\em Proc.~10th ACM
                 Symposium on Principles of Programming Languages},
                 1983",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5399.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency regular processes binder; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification. {\bf F.3.1}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Specifying and
                 Verifying and Reasoning about Programs, Mechanical
                 verification. {\bf F.3.1}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Specifying and
                 Verifying and Reasoning about Programs. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic.",
}

@Article{Sager:1986:SPC,
  author =       "Thomas J. Sager",
  title =        "A Short Proof of a Conjecture of {DeRemer} and
                 {Pennello}",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "2",
  pages =        "264--271",
  month =        apr,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/30850.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Syntax. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Grammar types.
                 {\bf F.4.3}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Formal Languages, Classes defined
                 by grammars or automata.",
}

@Article{Tichy:1986:SR,
  author =       "Walter F. Tichy",
  title =        "Smart Recompilation",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "273--291",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5959.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Software libraries.
                 {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.7}: Software,
                 SOFTWARE ENGINEERING, Distribution and Maintenance,
                 Version control.",
}

@Article{Turchin:1986:CS,
  author =       "Valentin F. Turchin",
  title =        "The Concept of a Supercompiler",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "292--325",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5957.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Refal. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Chandy:1986:ESR,
  author =       "K. M. Chandy and Jayadev Misra",
  title =        "An Example of Stepwise Refinement of Distributed
                 Programs: Quiescence Detection",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "326--343",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5958.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Deadlocks. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Hennessy:1986:PSS,
  author =       "Matthew Hennessy",
  title =        "Proving Systolic Systems Correct",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "344--387",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/5999.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; theory; verification",
  subject =      "{\bf B.7.1}: Hardware, INTEGRATED CIRCUITS, Types and
                 Design Styles, Algorithms implemented in hardware. {\bf
                 D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Mechanical verification. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf D.2.1}: Software,
                 SOFTWARE ENGINEERING, Requirements/Specifications,
                 Languages.",
}

@Article{Apt:1986:CPD,
  author =       "Krzysztof R. Apt",
  title =        "Correctness Proofs of Distributed Termination
                 Algorithms",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "388--405",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/6000.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory; verification",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, CSP.",
}

@Article{Nielson:1986:TCC,
  author =       "Flemming Nielson and Hanne Riis Nielson",
  title =        "Technical Correspondence: Comments on {Georgeff}'s
                 ``{Transformations and Reduction Strategies for Typed
                 Lambda Expressions}''",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "406--407",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Georgeff:1984:TRS}",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/215007.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 F.4.1}: Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Mathematical Logic, Lambda calculus
                 and related systems.",
}

@Article{Krogh:1986:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "408--411",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 15:04:03 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1986:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "3",
  pages =        "412--415",
  month =        jul,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Reps:1986:GEI,
  author =       "Thomas Reps",
  title =        "{Guest Editor}'s Introduction",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "417--418",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Swinehart:1986:SVC,
  author =       "Daniel Swinehart and Polle Zellweger and Richard Beach
                 and Robert Hagemann",
  title =        "A Structural View of the {Cedar} Programming
                 Environment",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "419--490",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jan 19 14:55:31 1987",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib; Object/Nierstrasz.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/6466.html",
  abstract =     "This paper presents an overview of the Cedar
                 programming environment, focusing on its overall
                 structure-that is, the major components of Cedar and
                 the way they are organized. Cedar supports the
                 development of programs written in a single programming
                 language, also called Cedar. Its primary purpose is to
                 increase the productivity of programmers whose
                 activities include experimental programming and the
                 development of prototype software systems for a
                 high-performance personal computer. The paper
                 emphasizes the extent to which the Cedar language, with
                 run-time support, has influenced the organization,
                 flexibility, usefulness, and stability of the Cedar
                 environment. It highlights the novel system features of
                 Cedar, including automatic storage management of
                 dynamically allocated typed values, a run-time type
                 system that provides run-time access to Cedar data type
                 definitions and allows interpretive manipulation of
                 typed values, and a powerful device-independent imaging
                 model that supports the user interface facilities.
                 Using these discussions to set the context, the paper
                 addresses the language and system features and the
                 methodologies used to facilitate the integration of
                 Cedar applications. A comparison of Cedar with other
                 programming environments further identifies areas where
                 Cedar excels and areas where work remains to be done.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimental programming; experimentation;
                 integrated programming environment; languages;
                 olit-oopl cedar; open operating system; strongly typed
                 programming language",
  owner =        "manning",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments, CEDAR. {\bf D.2.2}: Software,
                 SOFTWARE ENGINEERING, Tools and Techniques. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf D.4.0}: Software,
                 OPERATING SYSTEMS, General. {\bf D.4.7}: Software,
                 OPERATING SYSTEMS, Organization and Design. {\bf H.0}:
                 Information Systems, GENERAL.",
}

@Article{Cooper:1986:IIA,
  author =       "Keith D. Cooper and Ken Kennedy and Linda Torczon",
  title =        "The impact of interprocedural analysis and
                 optimizations in the {R}(n) programming environment",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "491--523",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jan 19 15:05:31 1987",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/6489.html",
  abstract =     "In spite of substantial progress in the theory of
                 interprocedural data flow analysis, few practical
                 compiling systems can afford to apply it to produce
                 more efficient object programs. To perform
                 interprocedural analysis, a compiler needs not only the
                 source code of the module being compiled, but also
                 information about the side effects of every procedure
                 in the program containing that module, even separately
                 compiled procedures. In a conventional batch compiler
                 system, the increase in compilation time required to
                 gather this information would make the whole process
                 impractical. In an integrated programming environment,
                 however, other tools can cooperate with the compiler to
                 compute the necessary interprocedural information
                 incrementally as the program is being developed,
                 decreasing both the overall cost of the analysis and
                 the cost of individual compilations. A central goal of
                 the Rn project at Rice University is to construct a
                 prototype software development environment that is
                 designed to build whole programs, rather than just
                 individual modules. It employs interprocedural analysis
                 and optimization to produce high-quality machine code
                 for whole programs. This paper presents an overview of
                 the methods used by the environment to accomplish this
                 task and discusses the impact of these methods on the
                 various environment components. The responsibilities of
                 each component of the environment for the preparation
                 and use of interprocedural information are presented in
                 detail.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; data flow analysis; design; languages;
                 performance",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Moriconi:1986:PSP,
  author =       "Mark Moriconi and Dwight Hare",
  title =        "The {PegaSys} System: Pictures as Formal Documentation
                 of Large Programs",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "524--546",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Feb 24 09:59:21 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/6478.html",
  abstract =     "PegaSys is an experimental system in which a user
                 formally describes how a program is put together by
                 means of a hierarchically structured collection of
                 pictures, called formal dependency diagrams (FDDs).
                 Icons in an FDD demote a wide range of data and control
                 dependencies among the relatively coarse-grained
                 entities contained in large programs. Dependencies
                 considered atomic with respect to one level in a
                 hierarchy can be decomposed into a number of
                 dependencies at a lower level. Each dependency can be
                 predefined primitive of the FDD language or it can be
                 defined by a PegaSys user in terms of the primitives. A
                 PegaSys user is given the illusion that logical
                 formulas do not exist, even thought PegaSys reasons
                 about them internally. This involves (1) checking
                 whether an FDD is meaningful syntactically, (2)
                 determining whether hierarchical refinements of an FDD
                 are methodologically sound, and (3) deciding whether an
                 FDD hierarchy is logically consistent with the program
                 that it is intended to describe. The techniques used to
                 provide these capabilities are discussed along with the
                 logical properties that enable PegaSys to maintain the
                 user illusion.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Ada; data and control dependencies; design; design
                 hierarchy; documentation; experimentation; graphical
                 formalism; languages; mechanical decision procedure;
                 programming in the large; theory; verification",
  owner =        "manning",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments, PegaSys. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques,
                 User interfaces. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Mechanical verification. {\bf D.2.10}: Software,
                 SOFTWARE ENGINEERING, Design.",
}

@Article{Bahlke:1986:PSF,
  author =       "Rolf Bahlke and Gregor Snelting",
  title =        "The {PSG} System: From Formal Language Definitions to
                 Interactive Programming Environments",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "547--576",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 09:41:04 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib; Misc/sigplan.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/20890.html",
  abstract =     "The PSG programming system generator developed at the
                 Technical University of Darmstadt produces interactive,
                 language-specific programming environments from formal
                 language definitions. All language-dependent parts of
                 the environment are generated from an entirely
                 nonprocedural specification of the language's syntax,
                 context conditions, and dynamic semantics. The
                 generated environment consists of a language-based
                 editor, supporting systematic program development by
                 named program fragments, an interpreter, and a fragment
                 library system. The major component of the environment
                 is a full-screen editor, which allows both structure
                 and text editing. In structure mode the editor
                 guarantees prevention of both syntactic and semantic
                 errors, whereas in textual semantic analysis which is
                 based on unification. The algorithm will immediately
                 detect semantic errors even in incomplete program
                 fragments. The dynamic semantics of the language are
                 defined in denotational style using a functional
                 language based on the lambda calculus. Program
                 fragments are compiled to terms of the functional
                 language which are executed by an interpreter. The PSG
                 generator has been used to produce environments for
                 Pascal, ALGOL 60, MODULA-2, and the formal language
                 definition language itself.",
  acknowledgement = ack-pb # " and " # ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; documentation; languages; theory;
                 theory and verification and Hybrid editor and
                 unification-based incremental semantic analysis;
                 verification",
  owner =        "manning",
  review =       "ACM CR 8711-0926",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding, Program editors. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Syntax. {\bf D.2.3}: Software,
                 SOFTWARE ENGINEERING, Coding, Pretty printers. {\bf
                 F.3.2}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages. {\bf
                 F.4.2}: Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Grammars and Other Rewriting Systems,
                 Grammar types. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Parsing. {\bf I.2.3}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Deduction and Theorem Proving, Deduction.",
}

@Article{Horwitz:1986:GEE,
  author =       "Susan Horwitz and Tim Teitelbaum",
  title =        "Generating Editing Environments Based on Relations and
                 Attributes",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "577--608",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 20 11:19:15 1987",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/6512.html",
  abstract =     "The ability to generate language-based editors depends
                 on the existence of a powerful, language-independent
                 model of editing. A model is proposed in which programs
                 are represented as attributed abstract-syntax trees
                 with an associated relational database. Relations can
                 depend on state of the attributed tree, and attributes
                 can depend on the values in relations, provided there
                 are no circular dependencies. The power and the
                 limitations of relational operations are demonstrated
                 with respect to the support of static-semantic
                 checking, anomaly detection, an interrogation facility,
                 and the ability to define alternative program displays.
                 The advantages of the hybrid system over both the
                 purely relational and purely attribute-based systems
                 are presented, and new algorithms are given for query
                 evaluation and incremental view updating motivated by
                 the efficiency requirements of interactive editing
                 under the defined model. A prototype implementation of
                 an editor generator is described, and suggestions for
                 future research are made.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; documentation; languages;
                 relational database; verification and attribute grammar
                 and generating language-based editors and incremental
                 view updating",
  owner =        "manning",
  subject =      "{\bf D.2.3}: Software, SOFTWARE ENGINEERING, Coding,
                 Program editors. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors. {\bf
                 H.2.1}: Information Systems, DATABASE MANAGEMENT,
                 Logical Design, Data models. {\bf H.2.4}: Information
                 Systems, DATABASE MANAGEMENT, Systems, Query
                 processing.",
}

@Article{Anonymous:1986:AI,
  author =       "Anonymous",
  title =        "1986 Author Index",
  journal =      j-TOPLAS,
  volume =       "8",
  number =       "4",
  pages =        "609--610",
  month =        oct,
  year =         "1986",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:41:06 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wing:1987:WLI,
  author =       "Jeannette M. Wing",
  title =        "Writing {Larch} Interface Language Specifications",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "1",
  pages =        "1--24",
  month =        jan,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/10500.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; verification",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Languages. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Larch. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Abstract data types. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Modules, packages. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Procedures, functions, and subroutines. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Pre- and post-conditions. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Carson:1987:GSP,
  author =       "Scott D. Carson and Paul F. {Reynolds, Jr.}",
  title =        "The Geometry of Semaphore Programs",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "1",
  pages =        "25--53",
  month =        jan,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/9759.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Synchronization. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Concurrency.
                 {\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Deadlocks. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Mutual exclusion. {\bf G.2.2}: Mathematics
                 of Computing, DISCRETE MATHEMATICS, Graph Theory, Graph
                 algorithms.",
}

@Article{Broy:1987:ADP,
  author =       "Manfred Broy and Martin Wirsing and Peter Pepper",
  title =        "On the Algebraic Definition of Programming Languages",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "1",
  pages =        "54--99",
  month =        jan,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/10501.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Algebraic approaches to
                 semantics. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory.",
}

@Article{Sokolowski:1987:SHL,
  author =       "Stefan Soko{\l}owski",
  title =        "Soundness of {Hoare}'s Logic: An Automated Proof Using
                 {LCF}",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "1",
  pages =        "100--120",
  month =        jan,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/11326.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic. {\bf I.2.3}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving.",
}

@Article{Cohen:1987:PCU,
  author =       "Jacques Cohen and Timothy J. Hickey",
  title =        "Parsing and Compiling Using {Prolog}",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "125--163",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jun 29 10:47:01 1987",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/22946.html",
  abstract =     "This paper presents the material needed for exposing
                 the reader to the advantages of using Prolog as a
                 language for describing succinctly most of the
                 algorithms needed in prototyping and implementing
                 compilers or producing tools that facilitate this task.
                 The available published material on the subject
                 describes one particular approach in implementing
                 compilers using Prolog. It consists of coupling actions
                 to recursive descent parsers to produce syntax-trees
                 which are subsequently utilized in guiding the
                 generation of assembly language code. Although this
                 remains a worthwhile approach, there is a host of
                 possibilities for Prolog usage in compiler
                 construction. The primary aim of this paper is to
                 demonstrate the use of Prolog in parsing and compiling.
                 A second, but equally important, goal of this paper is
                 to show that Prolog is a labor-saving tool in
                 prototyping and implementing many non-numerical
                 algorithms which arise in compiling, and whose
                 description using Prolog is not available in the
                 literature. The paper discusses the use of unification
                 and nondeterminism in compiler writing as well as means
                 to bypass these (costly) features when they are deemed
                 unnecessary. Topics covered include bottom-up and
                 top-down parsers, syntax-directed translation, grammar
                 properties, parser generation, code generation, and
                 optimizations. Newly proposed features that are useful
                 in compiler construction are also discussed. A
                 knowledge of Prolog is assumed.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; code generation; grammar properties;
                 languages; optimization; parsing; theory;
                 verification",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Prolog. {\bf
                 D.1.0}: Software, PROGRAMMING TECHNIQUES, General.",
}

@Article{Burke:1987:PML,
  author =       "Michael G. Burke and Gerald A. Fisher",
  title =        "A Practical Method for {LR} and {LL} Syntactic Error
                 Diagnosis and Recovery",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "164--197",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jun 29 11:01:25 1987",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/22720.html",
  abstract =     "This paper presents a powerful, practical, and
                 essentially language-independent syntactic error
                 diagnosis and recovery method that is applicable within
                 the frameworks of LR and LL parsing. The method
                 generally issues accurate diagnoses even where multiple
                 errors occur within close proximity, yet seldom issues
                 spurious error messages. It employs a new technique,
                 parse action deferral, that allows the most appropriate
                 recovery in cases where this would ordinarily be
                 precluded by late detection of the error. The method is
                 practical in that it does not impose substantial space
                 or time overhead on the parsing of correct programs,
                 and in that its time efficiency in processing an error
                 allows for it incorporation in a production compiler.
                 The method is language independent, but it does allow
                 for tuning with respect to particular languages and
                 implementations through the setting of
                 language-specific parameters.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; LL parser; LR parser; syntactic
                 error diagnosis; syntactic error recovery; syntactic
                 error repair",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques,
                 User interfaces. {\bf D.2.5}: Software, SOFTWARE
                 ENGINEERING, Testing and Debugging, Error handling and
                 recovery. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing.",
}

@Article{Feather:1987:LSS,
  author =       "Martin S. Feather",
  title =        "Language Support for the Specification and Development
                 of Composite Systems",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "198--234",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jun 29 11:08:03 1987",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/softeng.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/22947.html",
  abstract =     "When a complex system is to be realized as a
                 combination of interacting components, development of
                 those components should commence from a specification
                 of the behavior required of the composite system. A
                 separate specification should be used to describe the
                 decomposition of that system into components. The first
                 phase of implementation from a specification in this
                 style is the derivation of the individual component
                 behaviors implied by these specifications. The virtues
                 of this approach to specification are expounded, and
                 specification language features that are supportive of
                 it are presented. It is shown how these are
                 incorporated in the specification language Gist, which
                 our group has developed. These issues are illustrated
                 in a development of a controller for elevators serving
                 passengers in a multistory building.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "composite systems; design; distributed decomposition;
                 interactive systems; languages; theory; verification",
  owner =        "manning",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Languages. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Gist. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Very high-level languages. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Finkel:1987:DDI,
  author =       "Raphael Finkel and Udi Manber",
  title =        "{DIB} --- {A} distributed implementation of
                 backtracking",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "235--256",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jun 29 11:22:11 1987",
  bibsource =    "Ai/ai.bib; Ai/nonmono.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24067.html",
  abstract =     "DIB is a general-purpose package that allows a wide
                 range of applications such as recursive backtrack,
                 branch and bound, and alpha-beta search to be
                 implemented on a multicomputer. It is very easy to use.
                 The application program needs to specify only the root
                 of the recursion tree, the computation to be performed
                 at each node, and how to generate children at each
                 node. In addition, the application and how to
                 disseminate information (such as bounds) either
                 globally or locally in the tree. DIB uses a distributed
                 algorithm, transparent to the application programmer,
                 that divides the problem into subproblems and
                 dynamically allocates them to any number of
                 (potentially nonhomogeneous) machines. This algorithm
                 requires only minimal support from the distributed
                 operating system. DIB can recover from failures of
                 machines even if they are not detected DIB currently
                 runs on the Crystal multicomputer at the University of
                 Wisconsin-Madison. Many applications have been
                 implemented quite easily, including exhaustive
                 traversal (N queens, knight's tour, megamax tree
                 evaluation), branch and bound (traveling salesman) and
                 alpha-beta search (the game of NIM). Speedup is
                 excellent for exhaustive traversal and quite good for
                 branch and bound.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; backtracking; branch and bound; design;
                 distributed algorithms; local-area networks; networks
                 of workstations; reliability",
  owner =        "manning",
  subject =      "{\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Distributed applications. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Concurrency. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management,
                 Multiprocessing/multiprogramming. {\bf D.4.5}:
                 Software, OPERATING SYSTEMS, Reliability,
                 Fault-tolerance. {\bf D.4.7}: Software, OPERATING
                 SYSTEMS, Organization and Design, Distributed
                 systems.",
}

@Article{Mueller:1987:RMS,
  author =       "Robert A. Mueller and Joseph Varghese",
  title =        "Retargetable Microcode Synthesis",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "257--276",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jun 29 11:30:12 1987",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/arch.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/23717.html",
  abstract =     "Most work on automating the translation of high-level
                 microprogramming languages into microcode has dealt
                 with lexical and syntactic analysis and the use of
                 manually produced macro tables for code generation. We
                 describe an approach to and some results on the
                 formalization and automation of the more difficult
                 problem of retargeting local code generation in a
                 machine-independent, optimizing microcode synthesis
                 system. Whereas this problem is similar in many ways to
                 that of retargeting local code generation in high-level
                 language compilers, there are some major differences
                 that call for new approaches. The primary issues
                 addressed in this paper are the representation of
                 target microprogrammable machines, the intermediate
                 representation of local microprogram function, and
                 general algorithmic methods for deriving local
                 microcode from target machine and microcode function
                 specifications. Of particular interest are the use of
                 formal semantics and data flow principles in achieving
                 both a general and reasonably efficient solution.
                 Examples of the modeling of a representative horizontal
                 machine (the PUMA) and the generation of microcode for
                 the PUMA machine model from our working implementation
                 are presented.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "data antidependency; data dependency; Design; flow
                 graph; languages; machine description; microcode
                 compaction; microcode generation; microinstruction set
                 processors; microprogramming",
  owner =        "manning",
  subject =      "{\bf B.1.4}: Hardware, CONTROL STRUCTURES AND
                 MICROPROGRAMMING, Microprogram Design Aids, Languages
                 and compilers. {\bf B.1.4}: Hardware, CONTROL
                 STRUCTURES AND MICROPROGRAMMING, Microprogram Design
                 Aids, Machine-independent microcode generation. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Code generation. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Translator
                 writing systems and compiler generators.",
}

@Article{Fraser:1987:ERC,
  author =       "Christopher W. Fraser and Eugene W. Myers",
  title =        "An Editor for Revision Control",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "2",
  pages =        "277--295",
  month =        apr,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 11:07:27 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/22948.html",
  abstract =     "Programming environments support revision control in
                 several guises. Explicitly, revision control softwre
                 manages the trees of revisions that grow as software is
                 modified. Implicitly, editors retain past versions by
                 automatically saving backup copies and by allowing
                 users to undo commands. This paper describes an editor
                 that offers a uniform solution to these problems by
                 never destroying the old version of the file being
                 edited. It represents files using a generalization of
                 AVL trees called ``AVL dags,'' which makes it
                 affordable to automatically retain past versions of
                 files. Automatic retention makes revision maintenance
                 transparent to users. The editor also uses the same
                 command language to edit both text and revision
                 trees.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; Algorithms and design and languages and
                 management and editor and persistent data type; design;
                 languages; management; revision control; undo command",
  owner =        "manning",
  subject =      "{\bf D.2.7}: Software, SOFTWARE ENGINEERING,
                 Distribution and Maintenance, Version control. {\bf
                 D.2.6}: Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 E.1}: Data, DATA STRUCTURES, Lists. {\bf I.7.1}:
                 Computing Methodologies, TEXT PROCESSING, Text
                 Editing.",
}

@Article{Lamb:1987:ISI,
  author =       "David Alex Lamb",
  title =        "{IDL}: Sharing Intermediate Representations",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "297--318",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Aug 21 09:04:21 1987",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24040.html",
  abstract =     "IDL (Interface Description Language) is a practical
                 and useful tool for controlling the exchange of
                 structured data between different components of a large
                 system. IDL is a notation for describing collections of
                 programs and the data structures through which they
                 communicate. Using IDL, a designer gives abstract
                 descriptions of data structures, together with
                 representation specifications that specialize the
                 abstract structures of particular programs. A tool, the
                 IDL translator, generates readers and writers that map
                 between concrete internal representations and abstract
                 exchange representations. data between",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Data representation; data structures; design;
                 input/output; languages; performance; software
                 engineering; system design",
  owner =        "manning",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Run-time environments. {\bf
                 E.2}: Data, DATA STORAGE REPRESENTATIONS. {\bf H.2.3}:
                 Information Systems, DATABASE MANAGEMENT, Languages,
                 Data description languages (DDL).",
}

@Article{Ferrante:1987:PDG,
  author =       "Jeanne Ferrante and Karl J. Ottenstein and Joe D.
                 Warren",
  title =        "The Program Dependence Graph and its Use in
                 Optimization",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "319--349",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 2 13:23:46 1987",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24041.html",
  abstract =     "In this paper, we present an intermediate program
                 representation, called the program dependence
                 graph-PDG-, that makes explicit both the data and
                 control dependences for each operation in a program.
                 Data dependences have been used to represent only the
                 relevant data flow relationships of a program. Control
                 dependences are introduced to analogously represent
                 only the essential control of a program. Control
                 dependences are derived from the usual control flow
                 graph. Many traditional optimizations operate more
                 efficiently on the PDG. Since dependences in the PDG
                 connect computationally related parts of the program, a
                 single walk of these dependences is sufficient to
                 perform many optimizations. The PDG allows
                 transformations such as vectorization, that previously
                 required special treatment of control dependence, to be
                 performed in a manner that is uniform for both control
                 and data dependences. Program transformations that
                 require interaction of the two dependence types can be
                 easily handled with our representation. As an example,
                 an incremental approach to modifying data dependences
                 resulting from branch deletion or loop unrolling is
                 introduced. The PDG supports incremental optimization,
                 permitting transformations to be triggered by one
                 another and applied only to affect dependences.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; branch deletion; code motion; data flow;
                 debugging; dependence analysis; incremental data flow
                 analysis; intermediate program representation; internal
                 program form; languages; loop fusion; loop unrolling;
                 node splitting; parallelism; performance; slicing;
                 vectorization",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Charlesworth:1987:MR,
  author =       "Arthur Charlesworth",
  title =        "The Multiway Rendezvous",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "350--366",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24050.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Mutual exclusion. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.1.3}: Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Concurrency.",
}

@Article{Holt:1987:DDC,
  author =       "Richard C. Holt",
  title =        "Data Descriptors: {A} Compile-Time Model of Data and
                 Addressing",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "367--389",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 2 13:49:06 1987",
  bibsource =    "Compiler/compiler.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24051.html",
  abstract =     "Data descriptors, which have evolved from Wilcox's
                 value descriptors, are a notation for representing
                 run-time data objects at compile time. One of the
                 principal reasons for developing this notation was to
                 aid in the rapid construction of code generators,
                 especially for new microprocessors. Each data
                 descriptor contains a base, a displacement, and a level
                 of indirection. For example, a variable $x$ lying at
                 displacement 28 from base register B3 is represented by
                 this data descriptor: @B3.28. The general form of a
                 data descriptor is @kb.d.i where $k$ give the number of
                 levels of indirection, $b$ is a base, $d$ is a
                 displacement, and $i$ is an index. Data descriptors are
                 convenient for representing addressing in Fortran ---
                 with static allocation and common blocks-in Pascal and
                 Turing-with automatic allocation and stack frames ---
                 and in more general languages such as Euclid and PL/1.
                 This generality of data descriptors allows code
                 generation to be largely machine independent. This
                 paper gives a machine independent method for storage
                 allocation that uses data descriptors. Techniques are
                 given for local optimization of basic arithmetic and
                 addressing code using data descriptors. Target machine
                 dependencies are isolated so that the part of the code
                 generator that handles high-level addressing-such as
                 subscripting-is machine independent. The techniques
                 described in this paper have proven effective in the
                 rapid development of a number of production code
                 generators.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "addressability; addressing modes; array subscripting;
                 base displacement addressing; code generation; code
                 optimization; compiler structure; compilers; data
                 alignment; data descriptor; display based addressing;
                 language translators; languages; machine idioms;
                 machine-independent code generation; optimal addition;
                 portable compiler; storage allocation",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf E.2}: Data, DATA
                 STORAGE REPRESENTATIONS.",
}

@Article{Yemini:1987:ATE,
  author =       "Shaula Yemini and Daniel M. Berry",
  title =        "An Axiomatic Treatment of Exception Handling in an
                 Expression-Oriented Language",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "390--407",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/obscure.bib",
  note =         "See remarks \cite{Yemini:1988:TCA}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24052.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Control
                 structures. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Control primitives. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, ALGOL-68.",
}

@Article{Reps:1987:SSE,
  author =       "Thomas Reps and Alan Demers",
  title =        "Sublinear-Space Evaluation Algorithms for Attribute
                 Grammars",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "408--440",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 2 13:55:34 1987",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214529.html",
  abstract =     "A major drawback of attribute-grammar-based systems is
                 that they are profligate consumers of storage. This
                 paper concerns new storage-management techniques that
                 reduce the number of attribute values retained at any
                 stage of attribute evaluation; it presents an
                 algorithms for evaluating an $n$-attribute tree that
                 never retains more than $O-\log n$-attribute values.
                 This method is optimal, although it may require
                 nonlinear time. A second algorithm, which never retains
                 more than $O$-square root $n$-attribute values, it also
                 presented, both as an introduction to the $O-\log
                 n$-method and because it works in linear time.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; attribute evaluation; attribute grammar
                 and language-based editor and spill file; theory",
  owner =        "manning",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics.",
}

@Article{Banerjee:1987:MSR,
  author =       "Debasish Banerjee",
  title =        "A Methodology for Synthesis of Recursive Functional
                 Programs",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "441--462",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/24071.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Algebraic
                 approaches to semantics. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Denotational semantics. {\bf
                 F.3.3}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Studies of Program Constructs, Functional
                 constructs. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 synthesis.",
}

@Article{Krogh:1987:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "463--466",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 13:43:09 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1987:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "3",
  pages =        "467--470",
  month =        jul,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sonnenschein:1987:GTS,
  author =       "Michael Sonnenschein",
  title =        "Graph Translation Schemes to Generate Compiler Parts",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "473--490",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Feb 15 12:34:06 1988",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/29874.html",
  abstract =     "Graph translation schemes-GTSs-are a generalization of
                 attribute grammars and of some ideas in Koster's
                 language CDL2. They are specially designed to support a
                 compiler writer in defining parts of the back-end of
                 his compiler, but they can also be useful for the
                 specification of the analysis pass of a compiler. GTSs
                 combine elements of functional and of algorithmic
                 specification techniques to allow iterative attribute
                 evaluation and attributing of program graphs. GTSs
                 consist of only a few syntactical elements. We present
                 operational semantics and discuss improvements in the
                 efficiency of the proposed implementation of GTSs.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "attribute grammars; data flow analysis; design;
                 grammars; graph-oriented intermediate languages;
                 languages; program graphs",
  owner =        "manning",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Design languages. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems.",
}

@Article{Allen:1987:ATF,
  author =       "Randy Allen and Ken Kennedy",
  title =        "Automatic Translation of {Fortran} Programs to Vector
                 Form",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "491--542",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Feb 15 12:46:31 1988",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/programming.env.bib; Parallel/par.compiler.bib;
                 Parallel/vectorization.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/29875.html",
  abstract =     "The recent success of vector computers such as the
                 Cray-1 and array processors such as those manufactured
                 by Floating Point Systems has increased interest in
                 making vector operations available to the FORTRAN
                 programmer. The FORTRAN standards committee is
                 currently considering a successor to FORTRAN 77,
                 usually called FORTRAN 8x, that will permit the
                 programmer to explicitly specify vector and array
                 operations. Although FORTRAN 8x will make it convenient
                 to specify explicit vector operations in new programs,
                 it does little for existing code. In order to benefit
                 from the power of vector hardware, existing programs
                 will need to be rewritten in some language, presumably
                 FORTRAN 8x, that permits the explicit specification of
                 vector operations. One way to avoid a massive manual
                 recoding effort is to provide a translator that
                 discovers the parallelism implicit in a FORTRAN program
                 and automatically rewrites that program in FORTRAN 8x.
                 Such a translation from FORTRAN to FORTRAN 8x is not
                 straightforward because FORTRAN DO loops are not always
                 semantically equivalent to the corresponding FORTRAN 8x
                 parallel operation. The semantic difference between
                 these two constructs is precisely captured by the
                 concept of dependence. A translation from FORTRAN to
                 FORTRAN 8x preserves the semantics of the original
                 program if it preserves the dependences in that
                 program. The theoretical background is developed here
                 for employing data dependence to convert FORTRAN
                 programs to parallel form. Dependence is defined and
                 characterized in terms of the conditions that give rise
                 to it; accurate tests to determine dependence are
                 presented; and transformations that use dependence to
                 uncover additional parallelism are discussed.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "detection of parallelism; FORTRAN; language
                 translators; languages; vector computing",
  owner =        "manning",
  subject =      "{\bf D.1.2}: Software, PROGRAMMING TECHNIQUES,
                 Automatic Programming. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Rosenkrantz:1987:EAA,
  author =       "D. J. Rosenkrantz and H. B. Hunt",
  title =        "Efficient Algorithms for Automatic Construction and
                 Compactification of Parsing Grammars",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "543--566",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/29876.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Grammar types. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Decision
                 problems. {\bf D.3.1}: Software, PROGRAMMING LANGUAGES,
                 Formal Definitions and Theory, Syntax. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Translator
                 writing systems and compiler generators. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Parsing.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers.",
}

@Article{Anson:1987:GIC,
  author =       "Ed Anson",
  title =        "A Generalized Iterative Construct and Its Semantics",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "567--581",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/30391.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Correctness proofs.",
}

@Article{Haynes:1987:ECP,
  author =       "Christopher T. Haynes and Daniel P. Friedman",
  title =        "Embedding Continuations in Procedural Objects",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "582--598",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/30392.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; security; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Extensible languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, LISP. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 SCHEME. {\bf D.3.3}: Software, PROGRAMMING LANGUAGES,
                 Language Constructs and Features, Control structures.",
}

@Article{Cuny:1987:CDD,
  author =       "Janice E. Cuny and Lawrence Snyder",
  title =        "Conversion from Data-Driven to Synchronous Execution
                 in Loop Programs",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "599--617",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/31334.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf C.1.2}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors), Multiple-instruction-stream,
                 multiple-data-stream processors (MIMD). {\bf C.1.2}:
                 Computer Systems Organization, PROCESSOR ARCHITECTURES,
                 Multiple Data Stream Architectures (Multiprocessors),
                 Parallel processors. {\bf C.1.3}: Computer Systems
                 Organization, PROCESSOR ARCHITECTURES, Other
                 Architecture Styles, Adaptable architectures. {\bf
                 C.1.3}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Other Architecture Styles, Data-flow
                 architectures. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors.
                 {\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management.",
}

@Article{Bic:1987:DDM,
  author =       "Lubomir Bic and Craig Lee",
  title =        "A Data-Driven Model for a Subset of Logic
                 Programming",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "618--645",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/31333.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; performance; theory",
  subject =      "{\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Logic
                 programming. {\bf F.1.2}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Modes of Computation,
                 Parallelism and concurrency. {\bf I.2.4}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Knowledge
                 Representation Formalisms and Methods, Semantic
                 networks. {\bf C.1.3}: Computer Systems Organization,
                 PROCESSOR ARCHITECTURES, Other Architecture Styles,
                 Data-flow architectures.",
}

@Article{Loeckx:1987:ASC,
  author =       "Jacques Loeckx",
  title =        "Algorithmic Specifications: {A} Constructive
                 Specification Method for Abstract Data Types",
  journal =      j-TOPLAS,
  volume =       "9",
  number =       "4",
  pages =        "646--685",
  month =        oct,
  year =         "1987",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/30399.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Specification techniques. {\bf F.3.3}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs, Type structure.",
}

@Article{Ryder:1988:IDF,
  author =       "Barbara G. Ryder and Marvin C. Paull",
  title =        "Incremental Data-flow Analysis Algorithms",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "1--50",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42193.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Control structures. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors. {\bf F.2.2}: Theory
                 of Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Andrews:1988:OSL,
  author =       "Gregory R. Andrews and Ronald A. Olsson and Michael
                 Coffin and Irving Elshoff and Kelvin Nilsen and Titus
                 Purdin and Gregg Townsend",
  title =        "An Overview of the {SR} Language and Implementation",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "51--86",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42324.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Distributed applications. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems, Network operating systems. {\bf
                 D.1.3}: Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, SR.",
}

@Article{Hesselink:1988:MAN,
  author =       "W. H. Hesselink",
  title =        "A Mathematical Approach to Nondeterminism in Data
                 Types",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "87--117",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42194.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Abstract data types. {\bf F.1.2}: Theory
                 of Computation, COMPUTATION BY ABSTRACT DEVICES, Modes
                 of Computation, Alternation and nondeterminism. {\bf
                 F.3.3}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Studies of Program Constructs, Type
                 structure.",
}

@Article{Boute:1988:SSP,
  author =       "Raymond T. Boute",
  title =        "System Semantics: Principles, Applications, and
                 Implementation",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "118--155",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/45067.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; documentation; languages; performance;
                 reliability; theory; verification",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Operational
                 semantics. {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Syntax. {\bf
                 I.2.4}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Knowledge Representation Formalisms and
                 Methods, Representation languages. {\bf I.1.3}:
                 Computing Methodologies, ALGEBRAIC MANIPULATION,
                 Languages and Systems, Special-purpose algebraic
                 systems.",
}

@Article{Reed:1988:SVL,
  author =       "Joylyn Reed and Raymond T. Yeh",
  title =        "Specification and Verification of Liveness Properties
                 of Cyclic, Concurrent Processes",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "156--177",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Object/Nierstrasz.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42195.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency liveness; design; verification",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Murphy:1988:NDP,
  author =       "Sandra L. Murphy and A. Udaya Shankar",
  title =        "A Note on the Drinking Philosophers Problem (Technical
                 Correspondence)",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "1",
  pages =        "178--188",
  month =        jan,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hilfinger:1988:APD,
  author =       "Paul N. Hilfinger",
  title =        "An {Ada} Package for Dimensional Analysis",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "189--203",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 17 14:11:24 1988",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Misc/softeng.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42346.html",
  abstract =     "This paper illustrates the use of Ada's abstraction
                 facilities--notably, operator overloading and type
                 parameterization--to define an oft-requested feature: a
                 way to attribute units of measure to variables and
                 values. The definition given allows the programmer to
                 specify units of measure for variables, constants, and
                 parameters; checks uses of these entities for
                 dimensional consistency; allows arithmetic between
                 them, where legal; and provides scale conversions
                 between commensurate units. It is not constrained to a
                 particular system of measurement-such as the metric or
                 English systems. Although the definition is in standard
                 Ada and requires nothing special of the compiler,
                 certain reasonable design choices in the compiler,
                 discussed here at some length, can make its
                 implementation particularly efficient.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "dimensional analysis; language design; languages;
                 measurement; reliability; units",
  owner =        "manning",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Ada. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Extensible languages. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Data types and structures. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Modules, packages. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Wirth:1988:TE,
  author =       "Nicklaus Wirth",
  title =        "Type Extensions",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "204--214",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 17 14:16:02 1988",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Misc/softeng.bib",
  note =         "See remarks \cite{Cohen:1991:TCT,Wirth:1991:TCR}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/46167.html",
  abstract =     "Software systems represent a hierarchy of modules.
                 Client modules contain sets of procedures that extend
                 the capabilities of imported modules. This concept of
                 extension is here applied to data types. Extended types
                 are related to their ancestor in terms of a hierarchy.
                 Variables of an extended type are compatible with
                 variables of the ancestor type. This scheme is
                 expressed by three language constructs only: the
                 declaration of extended record types, the type test,
                 and the type guard. The facility of extended types,
                 which closely resembles the class concept, is defined
                 in rigorous and concise terms, and an efficient
                 implementation is presented.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Extensible data type; languages; Modula-2",
  owner =        "manning",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation.",
}

@Article{vandenBos:1988:AIT,
  author =       "Jan {van den Bos}",
  title =        "Abstract Interaction Tools: {A} Language for User
                 Interface Management Systems",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "215--247",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42191.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "human factors; languages",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, User interfaces. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Input/Output. {\bf H.1.2}: Information
                 Systems, MODELS AND PRINCIPLES, User/Machine Systems,
                 Human factors. {\bf I.3.6}: Computing Methodologies,
                 COMPUTER GRAPHICS, Methodology and Techniques.",
}

@Article{Metayer:1988:AAC,
  author =       "Daniel {Le M{\'e}tayer}",
  title =        "{ACE}: An Automatic Complexity Evaluator",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "248--266",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Parallel/Pfpbib.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42347.html",
  abstract =     "There has been a great deal of research done on the
                 evaluation of the complexity of particular algorithms;
                 little effort, however, has been devoted to the
                 mechanization of this evaluation. The ACE (Automatic
                 Complexity Evaluator) system is able to analyze
                 reasonably large programs, like sorting programs, in a
                 fully mechanically way. A time-complexity function is
                 derived from the initial functional program. This
                 function is transformed into its nonrecursive
                 equivalent according to McCarthy's recursion induction
                 principle, using a predefined library of recursive
                 definitions. As the complexity is not a decidable
                 property, this transformation will not be possible in
                 all cases. The richer the predefined library is, the
                 more likely the system is to succeed. The operations
                 performed by ACE are described and the use ofthe system
                 is illustrated with the analysis of a sorting
                 algorithm. Related works and further improvements are
                 discussed in the conclusion.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Granularity Analysis; languages; measurement;
                 performance",
  subject =      "{\bf D.2.8}: Software, SOFTWARE ENGINEERING, Metrics.
                 {\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 synthesis. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 transformation.",
}

@Article{Lamport:1988:CPB,
  author =       "Leslie Lamport",
  title =        "Control Predicates are Better than Dummy Variables for
                 Reasoning about Program Control",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "267--281",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42348.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Shasha:1988:ECE,
  author =       "Dennis Shasha and Marc Snir",
  title =        "Efficient and Correct Execution of Parallel Programs
                 that Share Memory",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "282--312",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/hash.bib; Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42277.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management. {\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems.",
}

@Article{Greenberg:1988:SEA,
  author =       "Albert G. Greenberg and Boris D. Lubachevsky and
                 Andrew M. Odlyzko",
  title =        "Simple, Efficient, Asynchronous Parallel Algorithms
                 for Maximization",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "313--337",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42278.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf C.1.2}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors), Parallel processors. {\bf C.4}:
                 Computer Systems Organization, PERFORMANCE OF SYSTEMS,
                 Modeling techniques. {\bf G.1.0}: Mathematics of
                 Computing, NUMERICAL ANALYSIS, General, Parallel
                 algorithms.",
}

@Article{Bermudez:1988:NRB,
  author =       "Manuel E. Bermudez and Karl M. Schimpf",
  title =        "On the (non-) Relationship between {SLR}(1) and
                 {NQLALR}(1) Grammars (Technical Correspondence)",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "2",
  pages =        "338--342",
  month =        apr,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/42276.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Syntax. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Translator writing
                 systems and compiler generators. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Parsing.",
}

@Article{Degano:1988:EIL,
  author =       "Pierpaolo Degano and Stefano Mannucci and Bruno
                 Mojana",
  title =        "Efficient Incremental {LR} Parsing for Syntax-Directed
                 Editors",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "345--373",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214503.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding, Program editors. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Syntax.",
}

@Article{Dillon:1988:CET,
  author =       "Laura K. Dillon and George S. Avrunin and Jack C.
                 Wiledon",
  title =        "Constrained Expressions: Toward Broad Applicability of
                 Analysis Methods for Distributed Software Systems",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "374--402",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/44502.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf D.4.7}: Software,
                 OPERATING SYSTEMS, Organization and Design, Distributed
                 systems. {\bf D.3.2}: Software, PROGRAMMING LANGUAGES,
                 Language Classifications, Design languages. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf F.4.3}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Formal Languages, Algebraic language theory.",
}

@Article{Morgan:1988:SS,
  author =       "Carroll Morgan",
  title =        "The Specification Statement",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "403--419",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Misc/Z.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/44503.html",
  acknowledgement = ack-pb,
  annote =       "Also reprinted in \cite{Morgan:1988:RC}.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf F.3.1}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs, Pre- and post-conditions. {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Top-down programming. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Correctness proofs.",
}

@Article{Olderog:1988:FPP,
  author =       "Ernst-{R\"udiger} Olderog and Krzysztof R. Apt",
  title =        "Fairness in Parallel Programs: The Transformational
                 Approach",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "420--455",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/44504.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; verification",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Concurrency.
                 {\bf F.3.1}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs.",
}

@Article{Mauney:1988:DEL,
  author =       "Jon Mauney and Charles N. Fischer",
  title =        "Determining the Extent of Lookahead in Syntactic Error
                 Repair",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "456--469",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/44505.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers.",
}

@Article{Mitchell:1988:ATE,
  author =       "John C. Mitchell and Gordon D. Plotkin",
  title =        "Abstract Types Have Existential Type",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "470--502",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/prog.lang.theory.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Object/Nierstrasz.bib",
  note =         "Preliminary version appeared in {\em Proc. 12th ACM
                 Symp. on Principles of Programming Languages}, 1985",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/45065.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; types fpl sol binder",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages.",
}

@Article{Yemini:1988:TCA,
  author =       "Shaula Yemini and Daniel M. Berry",
  title =        "Technical Correspondence: ``{An Axiomatic Treatment of
                 Exception Handling in an Expression-Oriented
                 Language}''",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "503--504",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Yemini:1987:ATE}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Krogh:1988:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "504--507",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 15:04:15 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1988:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "3",
  pages =        "508--511",
  month =        jul,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:50:15 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Back:1988:DCA,
  author =       "R. J. R. Back and R. Kurki-Suonio",
  title =        "Distributed Cooperation with Action Systems",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "513--554",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/48023.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems.
                 {\bf F.3.1}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs.",
}

@Article{Inoue:1988:AFP,
  author =       "Katsuro Inoue and Hiroyuki Seki and Hikaru Yagi",
  title =        "Analysis of Functional Programs to Detect Run-Time
                 Garbage Cells",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "555--578",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/absint.bib; Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/48025.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Allocation/deallocation strategies. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf E.2}: Data, DATA STORAGE
                 REPRESENTATIONS, Linked representations.",
}

@Article{Kruskal:1988:ESM,
  author =       "Clyde P. Kruskal and Larry Rudolph and Marc Snir",
  title =        "Efficient Synchronization on Multiprocessors with
                 Shared Memory",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "579--601",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/48024.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; theory; verification",
  subject =      "{\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Parallelism and
                 concurrency. {\bf B.3.2}: Hardware, MEMORY STRUCTURES,
                 Design Styles, Shared memory. {\bf C.1.2}: Computer
                 Systems Organization, PROCESSOR ARCHITECTURES, Multiple
                 Data Stream Architectures (Multiprocessors),
                 Interconnection architectures. {\bf C.1.2}: Computer
                 Systems Organization, PROCESSOR ARCHITECTURES, Multiple
                 Data Stream Architectures (Multiprocessors),
                 Multiple-instruction-stream, multiple-data-stream
                 processors (MIMD). {\bf C.1.2}: Computer Systems
                 Organization, PROCESSOR ARCHITECTURES, Multiple Data
                 Stream Architectures (Multiprocessors), Parallel
                 processors.",
}

@Article{Kennaway:1988:DSC,
  author =       "Richard Kennaway and Ronan Sleep",
  title =        "Director Strings as Combinators",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "602--626",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See corrigendum \cite{Kennaway:1989:CSC}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/48026.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages.",
}

@Article{Schwanke:1988:SR,
  author =       "Robert W. Schwanke and Gail E. Kaiser",
  title =        "Smarter Recompilation",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "627--632",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See remarks \cite{Tichy:1988:TCT}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214505.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Software libraries.
                 {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.7}: Software,
                 SOFTWARE ENGINEERING, Distribution and Maintenance,
                 Version control.",
}

@Article{Tichy:1988:TCT,
  author =       "Walter F. Tichy",
  title =        "Technical Correspondence: {Tichy}'s Response to {R. W.
                 Schwanke} and {G. E. Kaiser}'s ``{Smarter
                 Recompilation}''",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "633--634",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Schwanke:1988:SR}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214507.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Software libraries.
                 {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.7}: Software,
                 SOFTWARE ENGINEERING, Distribution and Maintenance,
                 Version control.",
}

@Article{Drechsler:1988:TCS,
  author =       "Karl-Heinz Drechsler and Manfred P. Stadel",
  title =        "Technical Correspondence: {A} Solution to a Problem
                 with {Morel} and {Renvoise}'s ``{Global Optimization by
                 Suppression of Partial Redundancies}''",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "635--640",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See remark \cite{Sorkin:1989:TCS}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214509.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Anonymous:1988:AI,
  author =       "Anonymous",
  title =        "1988 Author Index",
  journal =      j-TOPLAS,
  volume =       "10",
  number =       "4",
  pages =        "641--642",
  month =        oct,
  year =         "1988",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 13:53:44 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Steenkiste:1989:SIR,
  author =       "Peter A. Steenkiste and John L. Hennessy",
  title =        "A Simple Interprocedural Register Allocation Algorithm
                 and Its Effectiveness for {Lisp}",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "1--32",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Aug 13 17:16:20 MDT 1994",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Misc/sigplan.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/59289.html",
  acknowledgement = ack-pb # " and " # ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; measurement; performance",
  review =       "ACM CR 8909-0658",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 C.0}: Computer Systems Organization, GENERAL,
                 Hardware/software interfaces. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 LISP.",
}

@Article{Myers:1989:RRA,
  author =       "Eugene W. Myers and Webb Miller",
  title =        "Row Replacement Algorithms for Screen Editors",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "33--56",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/59290.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance",
  subject =      "{\bf D.2.3}: Software, SOFTWARE ENGINEERING, Coding,
                 Program editors. {\bf I.2.8}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Problem Solving, Control
                 Methods, and Search, Dynamic programming. {\bf D.4.4}:
                 Software, OPERATING SYSTEMS, Communications Management,
                 Input/Output. {\bf F.2.2}: Theory of Computation,
                 ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY,
                 Nonnumerical Algorithms and Problems, Computations on
                 discrete structures.",
}

@Article{Bernstein:1989:SEP,
  author =       "David Bernstein and Izidor Gertner",
  title =        "Scheduling Expressions on a Pipelined Processor with a
                 Maximal Delay of One Cycle",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "57--66",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Parallel/scheduling.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/59291.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; performance",
  subject =      "{\bf C.1.2}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors), Pipeline processors. {\bf D.4.7}:
                 Software, OPERATING SYSTEMS, Organization and Design,
                 Hierarchical design. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Code generation. {\bf F.2.2}:
                 Theory of Computation, ANALYSIS OF ALGORITHMS AND
                 PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems, Sequencing and scheduling.",
}

@Article{Steensgaard-Madsen:1989:TRO,
  author =       "J. Steensgaard-Madsen",
  title =        "Type Representation of Objects by Functions",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "67--89",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77345.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Lambda
                 calculus and related systems. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Functional constructs.",
}

@Article{Fischer:1989:DFA,
  author =       "Michael J. Fischer and Nancy A. Lynch and James E.
                 Burns and Allan Borodin",
  title =        "Distributed {FIFO} Allocation of Identical Resources
                 Using Small Shared Space",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "90--114",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/59292.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Scheduling. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems, Distributed applications. {\bf
                 C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Network operating systems. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Concurrency.
                 {\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Mutual exclusion. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Synchronization.
                 {\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Parallelism and
                 concurrency.",
}

@Article{Ait-Kaci:1989:EIL,
  author =       "Hassan {A\"{\i}t}-Kaci and Robert Boyer and Patrick
                 Lincoln and Roger Nasr",
  title =        "Efficient Implementation of Lattice Operations",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "115--146",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/59293.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf I.2.4}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Knowledge Representation
                 Formalisms and Methods, Frames and scripts. {\bf
                 H.3.3}: Information Systems, INFORMATION STORAGE AND
                 RETRIEVAL, Information Search and Retrieval,
                 Clustering.",
}

@Article{Alpern:1989:VTP,
  author =       "Bowen Alpern and Fred B. Schneider",
  title =        "Verifying Temporal Properties without Temporal Logic",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "1",
  pages =        "147--167",
  month =        jan,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/62028.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf D.2.1}: Software,
                 SOFTWARE ENGINEERING, Requirements/Specifications,
                 Methodologies. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness proofs.
                 {\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf F.1.1}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Models of Computation,
                 Automata.",
}

@Article{Kaiser:1989:IDS,
  author =       "Gail E. Kaiser",
  title =        "Incremental Dynamic Semantics for Language-Based
                 Programming Environments",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "169--193",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63400.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; reliability; theory",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types. {\bf D.2.3}:
                 Software, SOFTWARE ENGINEERING, Coding, Program
                 editors. {\bf D.2.5}: Software, SOFTWARE ENGINEERING,
                 Testing and Debugging, Debugging aids. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Cameron:1989:EHL,
  author =       "Robert D. Cameron",
  title =        "Efficient High-Level Iteration with Accumulators",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "194--211",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63401.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures.",
}

@Article{LaLonde:1989:DFD,
  author =       "Wilf R. LaLonde",
  title =        "Designing Families of Data Types Using Exemplars",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "212--248",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63265.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.2.10}: Software, SOFTWARE ENGINEERING, Design,
                 Methodologies. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques.",
}

@Article{Weihl:1989:LAP,
  author =       "William E. Weihl",
  title =        "Local Atomicity Properties: Modular Concurrency
                 Control for Abstract Data Types",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "249--283",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63518.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; reliability; theory; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf D.4.5}: Software,
                 OPERATING SYSTEMS, Reliability, Fault-tolerance. {\bf
                 C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Distributed databases. {\bf H.2.4}: Information
                 Systems, DATABASE MANAGEMENT, Systems, Transaction
                 processing.",
}

@Article{Carchiolo:1989:ELT,
  author =       "Vincenza Carchiolo and Antonella {Di Stefano} and
                 Alberto Faro and Giuseppe Pappalardo",
  title =        "{ECCS} and {LIPS}: Two Languages for {OSI} Systems
                 Specification and Verification",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "284--329",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63402.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf C.2.0}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, General, Open System
                 Interconnection reference model (OSI). {\bf D.2.1}:
                 Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Languages. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs.
                 {\bf C.2.2}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Protocols,
                 Protocol verification.",
}

@Article{Burns:1989:USS,
  author =       "James E. Burns and Jan Pachi",
  title =        "Uniform Self-Stabilizing Rings",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "2",
  pages =        "330--344",
  month =        apr,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/63403.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; reliability; theory",
  subject =      "{\bf F.1.1}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Models of Computation, Automata. {\bf
                 C.2.5}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Local Networks, Rings.
                 {\bf C.2.2}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Protocols.",
}

@Article{Horwitz:1989:INV,
  author =       "Susan Horwitz and Jan Prins and Thomas Reps",
  title =        "Integrating Noninterfering Versions of Programs",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "345--387",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/65980.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; management",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding, Program editors. {\bf D.2.7}:
                 Software, SOFTWARE ENGINEERING, Distribution and
                 Maintenance, Restructuring. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.2.7}: Software, SOFTWARE ENGINEERING, Distribution
                 and Maintenance, Version control.",
}

@Article{Brent:1989:EIF,
  author =       "R. P. Brent",
  title =        "Efficient Implementation of the First-Fit Strategy for
                 Dynamic Storage Allocation",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "388--403",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/65981.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Allocation/deallocation strategies. {\bf
                 D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Main memory.",
}

@Article{Anger:1989:LIC,
  author =       "Frank D. Anger",
  title =        "On {Lamport}'s Interprocessor Communication Model",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "404--417",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/65982.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; theory",
  subject =      "{\bf D.4.8}: Software, OPERATING SYSTEMS, Performance,
                 Modeling and prediction. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Mutual
                 exclusion. {\bf D.4.7}: Software, OPERATING SYSTEMS,
                 Organization and Design, Distributed systems. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Synchronization. {\bf D.4.4}: Software,
                 OPERATING SYSTEMS, Communications Management, Network
                 communication. {\bf F.2.2}: Theory of Computation,
                 ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY,
                 Nonnumerical Algorithms and Problems, Sequencing and
                 scheduling.",
}

@Article{Debray:1989:SIM,
  author =       "Saumya K. Debray",
  title =        "Static Inference of Modes and Data Dependencies in
                 Logic Programs",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "418--450",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/absint.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/65983.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance; theory;
                 verification",
  subject =      "{\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Logic
                 programming. {\bf I.2.4}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Knowledge Representation
                 Formalisms and Methods, Predicate logic. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf F.3.3}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs, Type
                 structure.",
}

@Article{Debray:1989:FCL,
  author =       "Saumya K. Debray and David S. Warren",
  title =        "Functional Computations in Logic Programs",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "451--481",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/65984.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance;
                 verification",
  subject =      "{\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Logic
                 programming. {\bf D.2.8}: Software, SOFTWARE
                 ENGINEERING, Metrics, Performance measures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Kennaway:1989:CSC,
  author =       "Richard Kennaway and Ronan Sleep",
  title =        "Corrigendum: ``{Director Strings as Combinators}''",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "482--482",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Kennaway:1988:DSC}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Krogh:1989:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "483--486",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 15:04:22 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1989:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "3",
  pages =        "487--490",
  month =        jul,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Aho:1989:CGU,
  author =       "Alfred V. Aho and Mahadevan Ganapathi and Steven W. K.
                 Tjiang",
  title =        "Code Generation Using Tree Matching and Dynamic
                 Programming",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "491--516",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 Database/Graefe.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/75700.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; comparison of alternative covers of
                 original expression; design; experimentation;
                 languages; matching multiple trees using finite state
                 automata; reduction rules: complex expression
                 $\rightarrow$ single instruction cost; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, twig. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Code generation. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nonprocedural languages. {\bf F.2.2}:
                 Theory of Computation, ANALYSIS OF ALGORITHMS AND
                 PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems, Pattern matching. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Parallel
                 rewriting systems. {\bf I.2.8}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Problem
                 Solving, Control Methods, and Search, Dynamic
                 programming.",
}

@Article{Nelson:1989:GDC,
  author =       "Greg Nelson",
  title =        "A Generalization of {Dijkstra}'s Calculus",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "517--561",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69559.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory.",
}

@Article{Barbosa:1989:CHL,
  author =       "Valmir Barbosa and Eli Gafni",
  title =        "Concurrency in Heavily Loaded Neighborhood-Constrained
                 Systems",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "562--584",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69560.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf F.2.2}: Theory of Computation, ANALYSIS OF
                 ALGORITHMS AND PROBLEM COMPLEXITY, Nonnumerical
                 Algorithms and Problems, Sequencing and scheduling.
                 {\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Parallelism and
                 concurrency. {\bf G.2.2}: Mathematics of Computing,
                 DISCRETE MATHEMATICS, Graph Theory, Network problems.
                 {\bf F.4.3}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Formal Languages, Decision
                 problems.",
}

@Article{Bagrodia:1989:SAP,
  author =       "Rajive Bagrodia",
  title =        "Synchronization of Asynchronous Processes in {CSP}",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "585--597",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69561.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; management",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.4.4}: Software, OPERATING SYSTEMS,
                 Communications Management, Message sending. {\bf
                 F.2.2}: Theory of Computation, ANALYSIS OF ALGORITHMS
                 AND PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems, Sequencing and scheduling. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Synchronization.",
}

@Article{Arvind:1989:SDS,
  author =       "Arvind and Rishiyur S. Nikhil and Keshav K. Pingali",
  title =        "{I}-Structures: Data Structures for Parallel
                 Computing",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "598--632",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 2 18:50:35 2000",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69562.html",
  abstract =     "It is difficult simultaneously to achieve elegance,
                 efficiency and parallelism in functional programs that
                 manipulate large data structures. We demonstrate this
                 through careful analysis of program examples using
                 three common functional data-structuring approaches -
                 lists using Cons and arrays using Update (both
                 fine-grained operators), and arrays using make-array (a
                 ``bulk'' operator). We then present I-structures as an
                 alternative, defining precisely the parallel
                 operational semantics of Id, a language with
                 I-structures. We show elegant, efficient and parallel
                 solutions for the program examples in Id. I-structures
                 make the language non-functional, but do not raise
                 determinancy issues. Finally, we show that even in the
                 context of purely functional languages, I-structures
                 are invaluable for implementing functional data
                 abstractions.",
  acknowledgement = ack-pb # " and " # ack-meo,
  annote =       "First appeared in Graph Reduction: Proceedings of a
                 Workshop at Santa F{\'e}, New Mexico, 1987, ISBN:
                 0-387-18420-1, pages 336--369 and as Cornell
                 University, Computer Science Department technical
                 report TR87-810, 1987.",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf E.1}: Data, DATA STRUCTURES, Arrays. {\bf E.1}:
                 Data, DATA STRUCTURES, Lists.",
  xxnote =       "Yes, the primary author has only a single name.",
}

@Article{Sijtsma:1989:PRL,
  author =       "Ben A. Sijtsma",
  title =        "{On the Productivity of Recursive List Definitions}",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "633--649",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Parallel/Pfpbib.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69563.html",
  abstract =     "Several related notions of the productivity are
                 presented for functional languages with lazy
                 evaluation. The notion of productivity captures the
                 idea of computability, of progress of infinite-list
                 programs. If an infinite-list program is {\em
                 productive}, then every element of the list can be
                 computed in finite ``time''. These notions are used to
                 study recursive list definitions, that is, lists
                 defined by $l$ where $l=fl$. Sufficient conditions are
                 given in terms of the function $f$ that either
                 guarantee the productivity of the list or its
                 unproductivity. Furthermore, a calculus is developed
                 that can be used in verifying that lists defined by $l
                 \mbox{\em where } l = fl$ are productive. The power and
                 the usefulness of our theory are demonstrated by
                 several nontrivial examples. Several observations are
                 given in conclusion.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; Circular Programs; languages",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Program and recursion schemes. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic, Computability theory. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative languages.",
}

@Article{Nicholson:1989:DSP,
  author =       "Tim Nicholson and Norman Foo",
  title =        "A Denotational Semantics for {Prolog}",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "650--665",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See also remarks in \cite{Finlay:1993:TCC}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/69564.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.4.1}: Theory
                 of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Prolog. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Logic programming.",
}

@Article{Sorkin:1989:TCS,
  author =       "Arthur Sorkin",
  title =        "Technical Correspondence: Some Comments on ``{A
                 Solution to a Problem with {Morel} and {Renvoise}'s
                 ``{Global Optimization by Suppression of Partial
                 Redundancies}''}''",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "666--668",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See \cite{Drechsler:1988:TCS}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214513.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Anonymous:1989:AI,
  author =       "Anonymous",
  title =        "1989 Author Index",
  journal =      j-TOPLAS,
  volume =       "11",
  number =       "4",
  pages =        "669--670",
  month =        oct,
  year =         "1989",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:00:28 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Clemm:1990:MEI,
  author =       "Geoffrey Clemm and Leon Osterweil",
  title =        "A Mechanism for Environment Integration",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "1--25",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Misc/scm.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77607.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation; languages; obms; odin; scm:;
                 sde",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.2}: Software,
                 SOFTWARE ENGINEERING, Tools and Techniques. {\bf
                 D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management.",
}

@Article{Horwitz:1990:ISU,
  author =       "Susan Horwitz and Thomas Reps and David Binkley",
  title =        "Interprocedural Slicing Using Dependence Graphs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "26--60",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77608.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Program and recursion schemes. {\bf G.2.2}: Mathematics
                 of Computing, DISCRETE MATHEMATICS, Graph Theory, Graph
                 algorithms. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types.",
}

@Article{Waddle:1990:PTC,
  author =       "Vance E. Waddle",
  title =        "Production Trees: {A} Compact Representation of Parsed
                 Programs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "61--83",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77609.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; measurement; theory",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing.",
}

@Article{Korach:1990:MTD,
  author =       "E. Korach and S. Kutten and S. Moran",
  title =        "A Modular Technique for the Design of Efficient
                 Distributed Leader Finding Algorithms",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "84--101",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77610.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf G.2.2}: Mathematics of Computing, DISCRETE
                 MATHEMATICS, Graph Theory, Network problems. {\bf
                 F.2.2}: Theory of Computation, ANALYSIS OF ALGORITHMS
                 AND PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems, Sequencing and scheduling. {\bf F.1.1}:
                 Theory of Computation, COMPUTATION BY ABSTRACT DEVICES,
                 Models of Computation, Unbounded-action devices.",
}

@Article{Huang:1990:DDD,
  author =       "Shing-Tsaan Huang",
  title =        "A Distributed Deadlock Detection Algorithm for
                 {CSP}-Like Communication",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "102--122",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77611.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance; theory",
  subject =      "{\bf D.4.7}: Software, OPERATING SYSTEMS, Organization
                 and Design, Distributed systems. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Deadlocks. {\bf
                 D.4.4}: Software, OPERATING SYSTEMS, Communications
                 Management, Message sending. {\bf G.2.2}: Mathematics
                 of Computing, DISCRETE MATHEMATICS, Graph Theory,
                 Network problems.",
}

@Article{Farmer:1990:CPC,
  author =       "William M. Farmer and John D. Ramsdell and Ronald J.
                 Watro",
  title =        "A Correctness Proof for Combinator Reduction with
                 Cycles",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "123--134",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/77612.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Lambda
                 calculus and related systems. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems. {\bf G.2.2}:
                 Mathematics of Computing, DISCRETE MATHEMATICS, Graph
                 Theory. {\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages.",
}

@Article{Burton:1990:TCT,
  author =       "F. Warren Burton",
  title =        "Technical Correspondence: Type Extension Through
                 Polymorphism",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "135--138",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See \cite{Volpano:1991:TCS,Burton:1991:RSQ}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214515.html;
                 http://www.acm.org/pubs/toc/Abstracts/0164-0925/77560.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Modules, packages.",
}

@Article{Parnas:1990:TCI,
  author =       "David L. Parnas",
  title =        "Technical Correspondence: On Iterative Constructs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "1",
  pages =        "139--141",
  month =        jan,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214517.html;
                 http://www.acm.org/pubs/toc/Abstracts/0164-0925/77613.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Myers:1990:CUI,
  author =       "Brad A. Myers",
  title =        "Creating User Interfaces Using Programming by Example,
                 Visual Programming, and Constraints",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "143--177",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78943.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; human factors",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, User interfaces. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments,
                 Interactive. {\bf I.3.6}: Computing Methodologies,
                 COMPUTER GRAPHICS, Methodology and Techniques,
                 Interaction techniques. {\bf H.1.2}: Information
                 Systems, MODELS AND PRINCIPLES, User/Machine Systems.
                 {\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 synthesis.",
}

@Article{Weihl:1990:LSA,
  author =       "William E. Weihl",
  title =        "Linguistic Support for Atomic Data Types",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "178--202",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78944.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; reliability",
  subject =      "{\bf H.2.4}: Information Systems, DATABASE MANAGEMENT,
                 Systems, Transaction processing. {\bf H.2.4}:
                 Information Systems, DATABASE MANAGEMENT, Systems,
                 Concurrency. {\bf H.2.4}: Information Systems, DATABASE
                 MANAGEMENT, Systems, Distributed systems. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Abstract data types. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Synchronization. {\bf D.4.5}: Software, OPERATING
                 SYSTEMS, Reliability, Fault-tolerance.",
}

@Article{Knapp:1990:EFD,
  author =       "Edgar Knapp",
  title =        "An Exercise in the Formal Derivation of Parallel
                 Programs: Maximum Flows in Graphs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "203--223",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78945.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Parallelism and
                 concurrency. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Alternation and
                 nondeterminism. {\bf G.2.2}: Mathematics of Computing,
                 DISCRETE MATHEMATICS, Graph Theory. {\bf F.2.2}: Theory
                 of Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems,
                 Sequencing and scheduling.",
}

@Article{Darlington:1990:SDG,
  author =       "Jared L. Darlington",
  title =        "Search Direction by Goal Failure in Goal-Oriented
                 Programming",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "224--252",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78946.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages",
  subject =      "{\bf I.2.3}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Deduction and Theorem Proving, Logic
                 programming. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming.",
}

@Article{Bossi:1990:MSL,
  author =       "A. Bossi and N. Cocco and S. Dulli",
  title =        "A Method for Specializing Logic Programs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "253--302",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/partial-eval.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Theory/CLiCS.bib;
                 Theory/partial-eval.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78947.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; verification",
  subject =      "{\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf I.2.3}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Deduction and Theorem Proving,
                 Logic programming. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness
                 proofs.",
}

@Article{Aggarwal:1990:ALP,
  author =       "S. Aggarwal and C. Courcoubetis and P. Wolper",
  title =        "Adding Liveness Properties to Coupled Finite-State
                 Machines",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "2",
  pages =        "303--339",
  month =        apr,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78948.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; verification",
  subject =      "{\bf C.2.2}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Protocols,
                 Protocol verification. {\bf F.1.1}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Models of
                 Computation, Automata. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Mechanical verification. {\bf D.2.4}: Software,
                 SOFTWARE ENGINEERING, Program Verification, Correctness
                 proofs. {\bf C.4}: Computer Systems Organization,
                 PERFORMANCE OF SYSTEMS, Modeling techniques.",
}

@Article{Burke:1990:IAE,
  author =       "Michael Burke",
  title =        "An Interval-Based Approach to Exhaustive and
                 Incremental Interprocedural Data-Flow Analysis",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "341--395",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/absint.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78963.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 G.2.2}: Mathematics of Computing, DISCRETE MATHEMATICS,
                 Graph Theory. {\bf F.3.3}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs.",
}

@Article{Lamport:1990:SWS,
  author =       "Leslie Lamport",
  title =        "{\sl win\/} and {\sl sin\/}: Predicate Transformers
                 for Concurrency",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "396--428",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78970.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Assertions. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Invariants. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming.",
}

@Article{Jones:1990:EEC,
  author =       "Larry G. Jones",
  title =        "Efficient Evaluation of Circular Attribute Grammars",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "429--462",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78971.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems.",
}

@Article{Herlihy:1990:LCC,
  author =       "Maurice P. Herlihy and Jeannette M. Wing",
  title =        "Linearizability: {A} Correctness Condition for
                 Concurrent Objects",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "463--492",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/78972.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; theory; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications. {\bf F.1.2}:
                 Theory of Computation, COMPUTATION BY ABSTRACT DEVICES,
                 Modes of Computation. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Krogh:1990:AAP,
  author =       "F. T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "493--496",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 14:04:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1990:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "3",
  pages =        "497--500",
  month =        jul,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:04:27 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Chow:1990:PBC,
  author =       "Fred C. Chow and John L. Hennessy",
  title =        "The Priority-Based Coloring Approach to Register
                 Allocation",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "501--536",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/88621.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 C.0}: Computer Systems Organization, GENERAL,
                 Hardware/software interfaces.",
}

@Article{Stamos:1990:RE,
  author =       "James W. Stamos and David K. Gifford",
  title =        "Remote Evaluation",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "537--565",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib; Object/Ooos.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/88631.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; performance",
  subject =      "{\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems.
                 {\bf C.2.1}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Architecture
                 and Design, Distributed networks. {\bf D.4.7}:
                 Software, OPERATING SYSTEMS, Organization and Design,
                 Distributed systems.",
}

@Article{Dewan:1990:ASA,
  author =       "Prasun Dewan and Marvin Solomon",
  title =        "An Approach to Support Automatic Generation of User
                 Interfaces",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "566--609",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214518.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.2}: Software,
                 SOFTWARE ENGINEERING, Tools and Techniques, User
                 interfaces. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features.",
}

@Article{Leiss:1990:KME,
  author =       "Hans Leiss",
  title =        "On {Kilbury}'s Modification of {Earley}'s Algorithm",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "610--640",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/88637.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types.",
}

@Article{Perry:1990:GEI,
  author =       "Dewayne E. Perry",
  title =        "{Guest Editor}'s Introduction",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "641--642",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Dillon:1990:USE,
  author =       "Laura K. Dillon",
  title =        "Using Symbolic Execution for Verification of {Ada}
                 Tasking Programs",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "643--669",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/96551.html",
  abstract =     "A method is presented for using symbolic execution to
                 generate the verification conditions required for
                 proving correctness of programs written in a tasking
                 subset of Ada. The symbolic execution rules are derived
                 from proof systems that allow tasks to be verified
                 independently in local proofs, which are then checked
                 for cooperation. The isolation nature of this approach
                 to symbolic execution of concurrent programs makes it
                 better suited to formal verification than the more
                 traditional interleaving approach, which suffers from
                 combinatorial problems. The criteria for correct
                 operation of a concurrent program include partial
                 correctness, as well as more general safety properties,
                 such as mutual exclusion and freedom from deadlock.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.2.5}:
                 Software, SOFTWARE ENGINEERING, Testing and Debugging,
                 Symbolic execution. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Ada. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming.",
}

@Article{Wileden:1990:CEO,
  author =       "Jack C. Wileden and Lori A. Clarke and Alexander L.
                 Wolf",
  title =        "A Comparative Evaluation of Object Definition
                 Techniques for Large Prototype Systems",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "670--699",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See corrigenda \cite{Wileden:1991:CCE}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/88639.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation; languages",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.m}: Software,
                 SOFTWARE ENGINEERING, Miscellaneous, Rapid prototyping.
                 {\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Abstract data types.",
}

@Article{Anonymous:1990:AI,
  author =       "Anonymous",
  title =        "1990 Author Index",
  journal =      j-TOPLAS,
  volume =       "12",
  number =       "4",
  pages =        "700--701",
  month =        oct,
  year =         "1990",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:05:08 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Quong:1991:LPI,
  author =       "Russell W. Quong and Mark A. Linton",
  title =        "Linking Programs Incrementally",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "1--20",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102804.html",
  abstract =     "Linking is traditionally a batch process that resolves
                 cross-references between object modules and run-time
                 libraries to produce a stand-alone executable image.
                 Because most program changes only involve a small part
                 of the program, we have implemented an incremental
                 linker, named Inclink, that processes only the changed
                 modules. Inclink generates a new executable in time
                 proportional to the size of change; in contrast, a
                 batch linker generates an executable in time
                 proportional to the size of the program. To minimize
                 updates to the executable, Inclink allocates extra
                 space for every module. By allocating 24 percent more
                 space in the executable for overflows, Inclink can
                 update a module in place over 97 percent of the time.
                 Measurements show that Inclink is more than an order of
                 magnitude faster than the UNIX [2] batch linker and
                 that 88 percent of all links will take less than 2~s of
                 CPU time on a MicroVAX-2, independent of program
                 size.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; measurement; performance",
  subject =      "{\bf D.4.9}: Software, OPERATING SYSTEMS, Systems
                 Programs and Utilities, Linkers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Run-time
                 environments. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages.",
}

@Article{Fradet:1991:CFL,
  author =       "Pascal Fradet and Daniel Le {M{\'e}tayer}",
  title =        "Compilation of Functional Languages by Program
                 Transformation",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "21--51",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/absint.bib; Compiler/Compiler.Lins.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102805.html",
  abstract =     "One of the most important issues concerning functional
                 languages is the efficiency and the correctness of
                 their implementation. We focus on sequential
                 implementations for conventional von Neumann computers.
                 The compilation process is described in terms of
                 program transformations in the functional framework.
                 The original functional expression is transformed into
                 a functional term that can be seen as a traditional
                 machine code. The two main steps are the compilation of
                 the computation rule by the introduction of
                 continuation functions and the compilation of the
                 environment management using combinators. The advantage
                 of this approach is that we do not have to introduce an
                 abstract machine, which makes correctness proofs much
                 simpler. As far as efficiency is concerned, this
                 approach is promising since many optimizations can be
                 described and formally justified in the functional
                 framework.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; verification",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf I.2.2}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Automatic Programming, Program transformation.",
}

@Article{Waters:1991:ATS,
  author =       "Richard C. Waters",
  title =        "Automatic Transformation of Series Expressions into
                 Loops",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "52--98",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102806.html",
  abstract =     "The benefits of programming in a functional style are
                 well known. In particular, algorithms that are
                 expressed as compositions of functions operating on
                 sequences/vectors/streams of data elements are easier
                 to understand and modify than equivalent algorithms
                 expressed as loops. Unfortunately, this kind of
                 expression is not used anywhere near as often as it
                 could be, for at least three reasons: (1) most
                 programmers are less familiar with this kind of
                 expression than with loops; (2) most programming
                 languages provide poor support for this kind of
                 expression; and (3) when support is provided, it is
                 seldom efficient.\par

                 In any programming language, the second and third
                 problems can be largely solved by introducing a data
                 type called {\em series}, a comprehensive set of
                 procedures operating on series, and a preprocessor (or
                 compiler extension) that automatically converts most
                 series expressions into efficient loops. A set of
                 restrictions specifies which series expressions can be
                 optimized. If programmers stay within the limits
                 imposed, they are guaranteed of high efficiency at all
                 times.\par

                 A common Lisp macro package supporting series has been
                 in use for some time. A prototype demonstrates that
                 series can be straightforwardly supported in Pascal.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors.",
}

@Article{Brogi:1991:CLS,
  author =       "Antonio Brogi and Paolo Ciancarini",
  title =        "The Concurrent Language, {Shared Prolog}",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "99--123",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102807.html",
  abstract =     "Shared Prolog is a new concurrent logic language. A
                 Shared Prolog system is composed of a set of parallel
                 agents that are Prolog programs extended by a guard
                 mechanism. The programmer controls the granularity of
                 parallelism, coordinating communication and
                 synchronization of the agents via a centralized data
                 structure. The communication mechanism is inherited
                 from the blackboard model of problem solving.
                 Intuitively, the granularity of the logic processes to
                 be elaborated in parallel is large, while the resources
                 shared on the blackboard can be very fined
                 grained.\par

                 An operational semantics for Shared Prolog is given in
                 terms of a distributed model. Through an abstract
                 notion of computation, the kinds of parallelism
                 supported by the language, as well as properties of
                 infinite computations, such as local deadlocks, are
                 studied.\par

                 The expressiveness of the language is shown with
                 respect to the specification of two classes of
                 applications: metaprogramming and blackboard systems.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications. {\bf I.2.3}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Deduction and Theorem Proving,
                 Logic programming. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Logic programming.",
}

@Article{Herlihy:1991:WFS,
  author =       "Maurice Herlihy",
  title =        "Wait-Free Synchronization",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "124--149",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102808.html",
  abstract =     "A {\em wait-free\/} implementation of a concurrent
                 data object is one that guarantees that any process can
                 complete any operation in a finite number of steps,
                 regardless of the execution speeds of the other
                 processes. The problem of constructing a wait-free
                 implementation of one data object from another lies at
                 the heart of much recent work in concurrent algorithms,
                 concurrent data structures, and multiprocessor
                 architectures. First, we introduce a simple and general
                 technique, based on reduction to a concensus protocol,
                 for proving statements of the form, ``there is no
                 wait-free implementation of $X$ by $Y$.'' We derive a
                 hierarchy of objects such that no object at one level
                 has a wait-free implementation in terms of objects at
                 lower levels. In particular, we show that atomic
                 read/write registers, which have been the focus of much
                 recent attention, are at the bottom of the hierarchy:
                 they cannot be used to construct wait-free
                 implementations of many simple and familiar data types.
                 Moreover, classical synchronization primitives such as
                 {\em test\&set\/} and {\em fetch\&add}, while more
                 powerful than {\em read\/} and {\em write}, are also
                 computationally weak, as are the standard
                 message-passing primitives. Second, nevertheless, we
                 show that there do exist simple universal objects from
                 which one can construct a wait-free implementation of
                 any sequential object.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; reliability; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Synchronization. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Concurrency.",
}

@Article{Ancona:1991:ECL,
  author =       "M. Ancona and G. Dodero and V. Gianuzzi and M.
                 Morgavi",
  title =        "Efficient Construction of {LR$(k)$} States and
                 Tables",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "150--178",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/102809.html",
  abstract =     "A new method for building LR($k$) states and parsing
                 tables is presented. The method aims at giving a
                 feasible construction of a collection of LR($k$)
                 parsing tables, especially when $k > 1$. for nontrivial
                 grammars. To this purpose, the algorithm first attempts
                 to build a set of {\em normal states\/} for the given
                 grammar, each one associated to a single parsing action
                 in {\em accept, reduce, shift}. When such an action
                 cannot be uniquely determined, that is, when up to $k$
                 input symbols have to be examined (inadequacy), further
                 states, belonging to a new type, called {\em
                 look-ahead\/} states, are computed. The action
                 associated with inadequate states is a new parsing
                 action, {\em look}. States are built without actual
                 computation of the FIRST${}_k$ and EFF${}_k$ functions;
                 that is, nonterminals are kept in the context string of
                 items composing each state, and their expansion to
                 terminals is deferred until indispensable to solve
                 inadequacy. The aforementioned method is illustrated;
                 then the canonical collection of states and the
                 canonical tables are compared with those obtained from
                 the proposed method. A sufficient condition is stated,
                 by which the size of parsing tables, obtained by
                 applying this new method, is smaller than that of
                 canonical tables. Experimental results show that such a
                 condition is verified by the grammars of several
                 programming languages and that significant speed is
                 gained by avoiding the computation of the FIRST${}_k$
                 function.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; languages; theory;
                 verification",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types.",
}

@Article{Wileden:1991:CCE,
  author =       "Jack C. Wileden and Lori A. Clarke and Alexander L.
                 Wolf",
  title =        "Corrigenda: ``{A Comparative Evaluation of Object
                 Definition Techniques for Large Prototype Systems}''",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "1",
  pages =        "179--179",
  month =        jan,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Wileden:1990:CEO}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wegman:1991:CPC,
  author =       "Mark N. Wegman and F. Kenneth Zadeck",
  title =        "Constant Propagation with Conditional Branches",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "2",
  pages =        "181--210",
  month =        apr,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/103136.html",
  abstract =     "Constant propagation is a well-known global flow
                 analysis problem. The goal of constant propagation is
                 to discover values that are constant on all possible
                 executions of a program and to propagate these constant
                 values as far forward through the program as possible.
                 Expressions whose operands are all constants can be
                 evaluated at compile time and the results propagated
                 further. Using the algorithms presented in this paper
                 can produce smaller and faster compiled programs. The
                 same algorithms can be used for other kinds of analyses
                 (e.g., type of determination). We present four
                 algorithms in this paper, all {\em conservative\/} in
                 the sense that all constants may not be found, but each
                 constant found is constant over all possible executions
                 of the program. These algorithms are among the
                 simplest, fastest, and most powerful global constant
                 propagation algorithms known. We also present a new
                 algorithm that performs a form of interprocedural data
                 flow analysis in which aliasing information is gathered
                 in conjunction with constant progagation. Several
                 variants of this algorithm are considered.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features.",
}

@Article{Yellin:1991:ILI,
  author =       "Daniel M. Yellin and Robert E. Strom",
  title =        "{INC}: {A} Language for Incremental Computations",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "2",
  pages =        "211--236",
  month =        apr,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/103137.html",
  abstract =     "An incremental computation is one that is performed
                 repeatedly on nearly identical inputs. Incremental
                 computations occur naturally in many environments, such
                 as compilers, language-based editors, spreadsheets, and
                 formatters. This article describes a proposed tool for
                 making it easy to write incremental programs. The tool
                 consists of a programming language, INC, and a set of
                 compile-time transformations for the primitive elements
                 of INC. A programmer defines an algorithm in INC
                 without regard to efficient incremental execution. The
                 transformations automatically convert this algorithm
                 into an efficient incremental algorithm. INC is a
                 functional language. The implementation of an INC
                 program is a network of processes. Each INC function is
                 transformed into a process that receives and transmits
                 messages describing changes to its inputs and outputs.
                 We give an overview to the language and illustrate the
                 incremental techniques employed by INC. We present the
                 static and incremental complexity bounds for the
                 primitive INC functions. We also present some example
                 programs illustrating INC's flexibility.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, INC. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.2.6}: Software, SOFTWARE ENGINEERING, Programming
                 Environments, Interactive.",
}

@Article{Abadi:1991:DTS,
  author =       "Mart{\'\i}n Abadi and Luca Cardelli and Benjamin
                 Pierce and Gordon Plotkin",
  title =        "Dynamic Typing in a Statically Typed Language",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "2",
  pages =        "237--268",
  month =        apr,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/103138.html",
  abstract =     "Statically typed programming languages allow earlier
                 error checking, better enforcement of disciplined
                 programming styles, and the generation of more
                 efficient object code than languages where all type
                 consistency checks are performed at run time. However,
                 even in statically typed languages, there is often the
                 need to deal with data whose type cannot be determined
                 at compile time. To handle such situations safely, we
                 propose to add a type Dynamic whose values are pairs of
                 a value $v$ and a type tag $T$ where $v$ has the type
                 denoted by $T$. Instances of Dynamic are built with an
                 explicit tagging construct and inspected with a type
                 safe typecase construct.\par

                 This paper explores the syntax, operational semantics,
                 and denotational semantics of a simple language that
                 includes the type Dynamic. We give examples of how
                 dynamically typed values can be used in programming.
                 Then we discuss an operational semantics for our
                 language and obtain a soundness theorem. We present two
                 formulations of the denotational semantics of this
                 language and relate them to the operational semantics.
                 Finally, we consider the implications of polymorphism
                 and some implementation issues.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf F.3.2}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Semantics of
                 Programming Languages.",
}

@Article{Hudak:1991:CIE,
  author =       "Paul Hudak and Jonathan Young",
  title =        "Collecting Interpretations of Expressions",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "2",
  pages =        "269--290",
  month =        apr,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/103139.html",
  abstract =     "A {\em collecting interpretation of expressions\/} is
                 an interpretation of a program that allows one to
                 answer questions of the sort: ``What are all possible
                 values to which an expression might evaluate during
                 program execution?'' Answering such questions in a
                 denotational framework is akin to traditional data flow
                 analysis and, when used in the context of abstract
                 interpretation, allows one to infer properties that
                 approximate the run-time behavior of expression
                 evaluation.\par

                 Exact collecting interpretations of expressions are
                 developed for three abstract functional languages: a
                 strict first-order language, a nonstrict first-order
                 language, and a nonstrict higher order language (the
                 full untyped lambda calculus with constants). It is
                 argued that the method is simple (in particular, no
                 powerdomains are needed), Natural (it captures the
                 intuitive operational behavior of a cache), yet more
                 expressive than existing methods (it is the first exact
                 collecting interpretation for either nonstrict higher
                 order languages). Correctness of the interpretations
                 with respect to the standard semantics is shown via a
                 generalization of the notion of strictness. It is
                 further shown how to form abstractions of these exact
                 interpretations, using as an example a collecting
                 strictness analysis which yields compile-time
                 information not previously captured by conventional
                 strictness analyses.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf F.4.2}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Grammars and Other Rewriting Systems. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Dhamdhere:1991:PAG,
  author =       "Dhananjay M. Dhamdhere",
  title =        "Practical Adaptation of the Global Optimization
                 Algorithm of {Morel} and {Renvoise}",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "2",
  pages =        "291--294",
  month =        apr,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/103161.html;
                 http://www.acm.org/pubs/toc/Abstracts/0164-0925/214520.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Borstler:1991:TCT,
  author =       "J{\"u}rgen B{\"o}rstler and Ulrich M{\"o}ncke and
                 Reinhard Wilhelm",
  title =        "Table Compression for Tree Automata",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "295--314",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/117013.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation; theory",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf F.1.1}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Models of Computation,
                 Automata. {\bf E.1}: Data, DATA STRUCTURES, Trees. {\bf
                 E.4}: Data, CODING AND INFORMATION THEORY, Data
                 compaction and compression.",
}

@Article{Hudson:1991:IAE,
  author =       "Scott E. Hudson",
  title =        "Incremental Attribute Evaluation: {A} Flexible
                 Algorithm for Lazy Update",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "315--341",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/117012.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf I.1.3}: Computing Methodologies, ALGEBRAIC
                 MANIPULATION, Languages and Systems, Evaluation
                 strategies. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf I.1.2}: Computing Methodologies,
                 ALGEBRAIC MANIPULATION, Algorithms, Nonalgebraic
                 algorithms.",
}

@Article{Morrison:1991:AHA,
  author =       "R. Morrison and A. Dearle and R. C. H. {Connor (or
                 Conner?)} and A. L. Brown",
  title =        "An Ad Hoc Approach to the Implementation of
                 Polymorphism",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "342--371",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/117017.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Napier88. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Run-time environments. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Abstract data types.",
}

@Article{Murtagh:1991:ISM,
  author =       "Thomas P. Murtagh",
  title =        "An Improved Storage Management Scheme for Block
                 Structured Languages",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "372--398",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/117016.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Structured programming. {\bf G.2.2}:
                 Mathematics of Computing, DISCRETE MATHEMATICS, Graph
                 Theory, Graph algorithms.",
}

@Article{Peng:1991:DFA,
  author =       "Wuxu Peng and S. Purushothaman",
  title =        "Data Flow Analysis of Communicating Finite State
                 Machines",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "399--442",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  note =         "See \cite{Purushothaman:1991:CFA}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/117015.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory; verification",
  subject =      "{\bf F.1.1}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Models of Computation,
                 Unbounded-action devices. {\bf F.2.2}: Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems,
                 Sequencing and scheduling. {\bf F.1.1}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Models of
                 Computation, Automata.",
}

@Article{Krogh:1991:AAP,
  author =       "Fred T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "443--446",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Misc/IMMD_IV.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1991:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "3",
  pages =        "447--450",
  month =        jul,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:07:30 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cytron:1991:ECS,
  author =       "Ron Cytron and Jeanne Ferrante and Barry K. Rosen and
                 Mark N. Wegman and F. Kenneth Zadeck",
  title =        "Efficiently Computing Static Single Assignment Form
                 and the Control Dependence Graph",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "451--490",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115320.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 I.1.2}: Computing Methodologies, ALGEBRAIC
                 MANIPULATION, Algorithms, Analysis of algorithms. {\bf
                 I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation.",
}

@Article{Choi:1991:TDP,
  author =       "Jong-Deok Choi and Barton P. Miller and Robert H. B.
                 Netzer",
  title =        "Techniques for Debugging Parallel Programs with
                 Flowback Analysis",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "491--530",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Ooos.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115324.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; measurement;
                 performance",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.2.5}: Software,
                 SOFTWARE ENGINEERING, Testing and Debugging, Monitors.
                 {\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Tracing. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Procedures, functions, and
                 subroutines. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Code generation. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Multiprocessing/multiprogramming. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, Parallel programming.",
}

@Article{Sheard:1991:AGU,
  author =       "Tim Sheard",
  title =        "Automatic Generation and Use of Abstract Structure
                 Operators",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "531--557",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115369.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Recursion. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming.",
}

@Article{Lycklama:1991:FCF,
  author =       "Edward A. Lycklama and Vassos Hadzilacos",
  title =        "A First-Come-First-Served Mutual-Exclusion Algorithm
                 with Small Communication Variables",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "558--576",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115370.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; theory",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Mutual exclusion. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Synchronization.
                 {\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems.",
}

@Article{Jagadeesan:1991:FAS,
  author =       "Radha Jagadeesan and Keshav Pingali and Prakash
                 Panangaden",
  title =        "A Fully Abstract Semantics for a First-Order
                 Functional Language with Logic Variables",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "577--625",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115371.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Logic programming. {\bf
                 D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming.",
}

@Article{Cohen:1991:TCT,
  author =       "Norman H. Cohen",
  title =        "Technical Correspondence: Type-Extension Type Tests
                 Can Be Performed In Constant Time",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "626--629",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 14:08:14 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Wirth:1988:TE,Wirth:1991:TCR}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/115297.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Procedures, functions, and
                 subroutines. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors. {\bf E.2}: Data, DATA STORAGE
                 REPRESENTATIONS, Linked representations. {\bf E.1}:
                 Data, DATA STRUCTURES, Lists.",
}

@Article{Wirth:1991:TCR,
  author =       "Nicklaus Wirth",
  title =        "Technical Correspondence: Reply to ``{Type}-Extension
                 Tests Can Be Performed In Constant Time''",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "630--630",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Wirth:1988:TE,Cohen:1991:TCT}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214521.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "performance",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.",
}

@Article{Volpano:1991:TCS,
  author =       "Dennis M. Volpano",
  title =        "Technical Correspondence: Subtypes and
                 Quantification",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "631--632",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Burton:1990:TCT,Burton:1991:RSQ}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214523.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure.",
}

@Article{Burton:1991:RSQ,
  author =       "F. Warren Burton",
  title =        "Technical Correspondence: Author's Reply to
                 ``{Subtypes and Quantification}'', by {D. M. Volpano}",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "633--633",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 6 14:12:08 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Burton:1990:TCT,Volpano:1991:TCS}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Purushothaman:1991:CFA,
  author =       "S. Purushothaman",
  title =        "Corrigendum: ``{Data Flow Analysis of Communicating
                 Finite State Machines}''",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "633--633",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Peng:1991:DFA}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1991:AI,
  author =       "Anonymous",
  title =        "1991 Author Index",
  journal =      j-TOPLAS,
  volume =       "13",
  number =       "4",
  pages =        "634--635",
  month =        oct,
  year =         "1991",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:14:37 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ungar:1992:ATP,
  author =       "David Ungar and Frank Jackson",
  title =        "An Adaptive Tenuring Policy for Generation
                 Scavengers",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "1",
  pages =        "1--27",
  month =        jan,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/116734.html",
  abstract =     "One of the more promising automatic storage
                 reclamation techniques, generation scavenging, suffers
                 poor performance if many objects live for a fairly long
                 time and then die. We have investigated the severity of
                 this problem by simulating a two-generation scavenger
                 using traces taken from actual 4-h sessions. There was
                 a wide variation in the sample runs, with
                 garbage-collection overhead ranging from insignificant,
                 during three of the runs, to severe, during a single
                 run. All runs demonstrated that performance could be
                 improved with two techniques: segregating large bitmaps
                 and strings, and adapting the scavenger's tenuring
                 policy according to demographic feedback. We therefore
                 incorporated these ideas into a commercial Smalltalk
                 implementation. These two improvements deserve
                 consideration for any storage reclamation strategy that
                 utilizes a generation scavenger.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; measurement; performance;
                 theory",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Allocation/deallocation strategies. {\bf
                 D.2.6}: Software, SOFTWARE ENGINEERING, Programming
                 Environments, Interactive. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications, Self.
                 {\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Smalltalk. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Run-time
                 environments.",
}

@Article{Solworth:1992:E,
  author =       "Jon A. Solworth",
  title =        "Epochs",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "1",
  pages =        "28--53",
  month =        jan,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/116785.html",
  abstract =     "To date, the implementation of message passing
                 languages has required the communications variables
                 (sometimes called ports) either to be limited to the
                 number of physical communications registers in the
                 machine or to be mapped to memory. Neither solution is
                 satisfactory. Limiting the number of variables
                 decreases modularity and efficiency of parallel
                 programs. Mapping variables to memory increases the
                 cost of communications and the granularity of
                 parallelism. We present here a new programming language
                 construct called {\em epochs}.\par

                 Epochs are a scoping mechanism within which the
                 programmer can declare communications variables, which
                 are live only during the scope of that epoch. To limit
                 the range of time a register has to be allocated for a
                 communications variable, the compiler ensures that all
                 processors enter an epoch simultaneously. The
                 programming style engendered fits somewhere between the
                 SIMD data parallel and the MIMD process spawning
                 models.\par

                 We describe an implementation for epochs including an
                 efficient synchronization mechanism, a means of
                 statically binding registers to communications
                 variables, and a method of fusing epochs to reduce
                 synchronization overhead.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf D.4.4}: Software,
                 OPERATING SYSTEMS, Communications Management, Message
                 sending. {\bf C.1.2}: Computer Systems Organization,
                 PROCESSOR ARCHITECTURES, Multiple Data Stream
                 Architectures (Multiprocessors). {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Synchronization.",
}

@Article{Hickey:1992:CAM,
  author =       "Timothy J. Hickey and Jacques Cohen and Hitofumi Hotta
                 and Thierry PetitJean",
  title =        "Computer-Assisted Microanalysis of Parallel Programs",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "1",
  pages =        "54--106",
  month =        jan,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/126699.html",
  abstract =     "This paper consists of two parts: the first provides
                 the theoretical foundations for analyzing parallel
                 programs and illustrates how the theory can be applied
                 to estimate the execution time of a class of parallel
                 programs being executed on a MIMD computer. The second
                 part describes a program analysis system, based on the
                 theoretical model, which allows a user to interactively
                 analyze the results of executing (or simulating the
                 execution) of such parallel programs. Several examples
                 illustrating the use of the tool are presented. A novel
                 contribution is the separation (both at the conceptual
                 and the implementation levels) of the
                 machine-independent and the machine-dependent parts of
                 the analysis. This separation enables the users of the
                 system to establish speed-up curves for machines having
                 varying characteristics.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance; theory",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Parallel programming. {\bf
                 D.2.8}: Software, SOFTWARE ENGINEERING, Metrics,
                 Performance measures. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Programmer
                 workbench. {\bf D.2.5}: Software, SOFTWARE ENGINEERING,
                 Testing and Debugging, Symbolic execution. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Prolog.",
}

@Article{Gudeman:1992:DSG,
  author =       "David A. Gudeman",
  title =        "Denotational Semantics of a Goal-Directed Language",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "1",
  pages =        "107--125",
  month =        jan,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/104659.html",
  abstract =     "Goal-directed evaluation is a very expressive
                 programming language paradigm that is supported in
                 relatively few languages. It is characterized by
                 evaluation of expressions in an attempt to meet some
                 goal, with resumption of previous expressions on
                 failure. This paradigm is found in SNOBL4 in its
                 pattern-matching facilities, and in Icon as a general
                 part of the language. This paper presents a
                 denotational semantics of Icon and shows how Icon is in
                 fact a combination of two distinct paradigms,
                 goal-directed evaluation and functional application.
                 The two paradigms are not supported separately in
                 different contexts, but integrated fully into a single
                 evaluation mechanism.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Nonprocedural
                 languages. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, ICON. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Control structures. {\bf F.3.3}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs, Control primitives.",
}

@Article{Boute:1992:EDF,
  author =       "Raymond T. Boute",
  title =        "The {Euclidean} Definition of the Functions div and
                 mod",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "127--144",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128862.html",
  abstract =     "The definitions of the functions div and mod in the
                 computer science literature and in programming
                 languages are either similar to the Algol of Pascal
                 definition (which is shown to be an unfortunate choice)
                 or based on division by truncation (T-definition) or
                 division by flooring as defined by Knuth
                 (F-definition). The differences between various
                 definitions that are in common usage are discussed, and
                 an additional one is proposed, which is based on
                 Euclid's theorem and therefore is called the {\em
                 Euclidean\/} definition (E-definition). Its
                 distinguishing feature is that $0 <= D \mod d < d$
                 irrespective of the signs of $D$ and $d$. It is argued
                 that the E- and F-definitions are superior to all other
                 ones in regularity and useful mathematical properties
                 and hence deserve serious consideration as the standard
                 convention at the applications and language level. It
                 is also shown that these definitions are the most
                 suitable ones for describing number representation
                 systems and the realization of arithmetic operations at
                 the architecture and hardware level.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; standardization; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf B.2.m}:
                 Hardware, ARITHMETIC AND LOGIC STRUCTURES,
                 Miscellaneous. {\bf D.3.0}: Software, PROGRAMMING
                 LANGUAGES, General, Standards. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Data types and structures. {\bf G.1.0}:
                 Mathematics of Computing, NUMERICAL ANALYSIS, General,
                 Computer arithmetic.",
}

@Article{Wolf:1992:GEI,
  author =       "Alexander L. Wolf",
  title =        "{Guest Editor}'s Introduction to the Special Section
                 on the {Third International Conference on Computer
                 Languages}",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "145--146",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 11:18:44 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128863.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "{\bf D.3.0}: Software, PROGRAMMING LANGUAGES, General.
                 {\bf F.3.0}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, General. {\bf F.4.0}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 General.",
}

@Article{Gomard:1992:SAP,
  author =       "Carsten K. Gomard",
  title =        "A Self-applicable Partial Evaluator for the Lambda
                 Calculus: Correctness and Pragmatics",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "147--172",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/absint.bib; Compiler/Compiler.Lins.bib;
                 Compiler/partial-eval.bib; Compiler/semantics.bib;
                 Compiler/TOPLAS.bib; Compiler/TOPPS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/partial-eval.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128864.html",
  abstract =     "We describe theoretical and a few practical aspects of
                 an implemented self-applicable partial evaluator for
                 the untyped lambda calculus with constants,
                 conditionals, and a fixed point operator.\par

                 The purpose of this paper is first to announce the
                 existence of (and to describe) a partial evaluator that
                 is both higher-order and self-applicable; second to
                 describe a surprisingly simple solution to the central
                 problem of binding time analysis, and third to prove
                 that the partial evaluator yields correct
                 answers.\par

                 While [lambda]-mix (the name of our system) seems to
                 have been the first higher-order self-applicable
                 partial evaluator to run on a computer, it was
                 developed mainly for research purposes. Two recently
                 developed systems are much more powerful for practical
                 use, but also much more complex: Similix[3,5] and
                 Schism[7].\par

                 Our partial evaluator is surprisingly simple,
                 completely automatic, and has been implemented in a
                 side effect-free subset of Scheme. It has been used to
                 compile, generate compilers and generate a compiler
                 generator.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "correctness; lambda calculus; languages; partial
                 evaluation; self-application; theory",
  semno =        "D-78",
  subject =      "{\bf I.1.3}: Computing Methodologies, ALGEBRAIC
                 MANIPULATION, Languages and Systems, Evaluation
                 strategies. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Lambda calculus and related systems. {\bf
                 F.3.2}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Translator writing
                 systems and compiler generators. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications.",
  summary =      "A partial evaluator for the Lambda Calculus is
                 described and proven correct. This means that programs
                 generated by the partial evaluator (including, e.g.,
                 the compilers obtained by self-application) are known
                 to be correct.",
}

@Article{Pollock:1992:IGR,
  author =       "Lori L. Pollock and Mary Lou Soffa",
  title =        "Incremental Global Reoptimization of Programs",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "173--200",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128865.html",
  abstract =     "Although optimizing compilers have been quite
                 successful in producing excellent code, two factors
                 that limit their usefulness are the accompanying long
                 compilation times and the lack of good symbolic
                 debuggers for optimized code. One approach to attaining
                 faster recompilations is to reduce the redundant
                 analysis that is performed for optimization in response
                 to edits, and in particulars, small maintenance
                 changes, without affecting the quality of the generated
                 code. Although modular programming with separate
                 compilation aids in eliminating unnecessary
                 recompilation and reoptimization, recent studies have
                 discovered that more efficient code can be generated by
                 collapsing a modular program through procedure
                 inlining. To avoid having to reoptimize the resultant
                 large procedures, this paper presents techniques for
                 incrementally incorporating changes into globally
                 optimized code. An algorithm is given for determining
                 which optimizations are no longer safe after a program
                 change, and for discovering which new optimizations can
                 be performed in order to maintain a high level of
                 optimization. An intermediate representation is
                 incrementally updated to reflect the current
                 optimizations in the program. Analysis is performed in
                 response to changes rather than in preparation for
                 possible changes, so analysis is not wasted if an edit
                 has no far-reaching effects. The techniques developed
                 in this paper have also been exploited to improve on
                 the current techniques for symbolic debugging of
                 optimized code.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques.",
}

@Article{Kaiser:1992:OBP,
  author =       "Gail E. Kaiser and Brent Hailpern",
  title =        "An Object-Based Programming Model for Shared Data",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "201--264",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128866.html",
  abstract =     "The classical object model supports private data
                 within objects and clean interfaces between objects,
                 and by definition does not permit sharing of data among
                 arbitrary objects. This is a problem for real-world
                 applications, such as advanced financial services and
                 integrated network management, where the same data
                 logically belong to multiple objects and may be
                 distributed over multiple nodes on the network. Rather
                 than give up the advantages of encapsulated objects in
                 modeling real-world entities, we propose a new object
                 model that supports shared data in a distributed
                 environment. The key is separating distribution of
                 computation units from information-hiding concerns.
                 Minimal units of data and control, called {\em facets},
                 may be shared among multiple {\em objects\/} and are
                 grouped into {\em processes}. Thus, a single object, or
                 information-hiding unit, may be distributed among
                 multiple processes, or computation units. In other
                 words, different facets of the same object may reside
                 in different address spaces on different machines. We
                 introduce our new object model, describe a motivating
                 example from the financial domain, and then explain
                 facets, objects, and processes, followed by timing and
                 synchronization concerns.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Distributed programming. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages. {\bf H.2.4}: Information Systems, DATABASE
                 MANAGEMENT, Systems, Distributed systems. {\bf E.2}:
                 Data, DATA STORAGE REPRESENTATIONS. {\bf E.1}: Data,
                 DATA STRUCTURES.",
}

@Article{Koopman:1992:CBC,
  author =       "Philip J. {Koopman, Jr.} and Peter Lee and Daniel P.
                 Siewiorek",
  title =        "Cache Behavior of Combinator Graph Reduction",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "2",
  pages =        "265--297",
  month =        apr,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:28:31 1996",
  bibsource =    "Compiler/Compiler.Lins.bib;
                 Compiler/garbage.collection.bib; Compiler/Heaps.bib;
                 Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/CLiCS.bib",
  note =         "Also see~\cite{Koopman:1992:CBC}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/128867.html",
  abstract =     "The results of cache-simulation experiments with an
                 abstract machine for reducing combinator graphs are
                 presented. The abstract machine, called TIGRE, exhibits
                 reduction rates that, for similar kinds of combinator
                 graphs on similar kinds of hardware, compare favorably
                 with previously reported techniques. Furthermore, TIGRE
                 maps easily and efficiently onto standard computer
                 architectures, particularly those that allow a
                 restricted form of self-modifying code. This provides
                 some indication that the conventional ``stored
                 program'' organization of computer systems is not
                 necessarily an inappropriate one for functional
                 programming language implementations.\par

                 This is not to say, however, that present day computer
                 systems are well equipped to reduce combinator graphs.
                 In particular, the behavior of the cache memory has a
                 significant effect on performance. In order to study
                 and quantify this effect, trace-driven cache
                 simulations of a TIGRE graph reducer running on a
                 reduced instruction-set computer are conducted. The
                 results of these simulations are presented with the
                 following hardware-cache parameters varied: cache size,
                 block size, associativity, memory update policy, and
                 write-allocation policy. To begin with, the cache
                 organization of a commercially available system is used
                 and then the performance sensitivity with respect to
                 variations of each parameter are measured. From the
                 results of the simulation study, a conclusion is made
                 that combinator-graph reduction using TIGRE runs most
                 efficiently when using a cache memory with an
                 allocate-on-write-miss strategy, moderately large block
                 size (preferably with subblock placement), and
                 copy-back memory updates.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory;
                 threading",
  sjb =          "In amongst all the cache stuff is a description of how
                 subroutine threading can form the basis for a
                 relatively efficient method of performing combinator
                 graph reduction.",
  subject =      "{\bf B.3.2}: Hardware, MEMORY STRUCTURES, Design
                 Styles, Cache memories. {\bf B.3.3}: Hardware, MEMORY
                 STRUCTURES, Performance Analysis and Design Aids,
                 Simulation. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Interpreters. {\bf G.2.1}: Mathematics of
                 Computing, DISCRETE MATHEMATICS, Combinatorics.",
}

@Article{Wall:1992:ESD,
  author =       "David W. Wall",
  title =        "Experience with a Software-Defined Machine
                 Architecture",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "299--338",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/129395.html",
  abstract =     "We have built a system in which the compiler back end
                 and the linker work together to present an abstract
                 machine at a considerably higher level than the actual
                 machine. The intermediate language translated by the
                 back end is the target language of all high-level
                 compilers and is also the only assembly language
                 generally available. This lets us do intermodule
                 register allocation, which would be harder if some of
                 the code in the program had come from a traditional
                 assembler, out of sight of the optimizer. We do
                 intermodule register allocation and pipeline
                 instruction scheduling at link time, using information
                 gathered by the compiler back end. The mechanism for
                 analyzing and modifying the program at link time is
                 also useful in a wide array of instrumentation tools.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 C.0}: Computer Systems Organization, GENERAL,
                 Instruction set design. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications, Macro
                 and assembly languages.",
}

@Article{Jaffar:1992:CLS,
  author =       "Joxan Jaffar and Spiro Michaylov and Peter J. Stuckey
                 and Roland H. C. Yap",
  title =        "The {CLP($\cal R$)} Language and System",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "339--395",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/129398.html",
  abstract =     "The CLP $(R)$ programming language is defined, its
                 underlying philosophy and programming methodology are
                 discussed, important implementation issues are explored
                 in detail, and finally, a prototype interpreter is
                 described.\par

                 CLP $(R)$is designed to be an instance of the
                 Constraint Logic Programming Scheme, a family of
                 rule-based constraint programming languages defined by
                 Jaffar and Lassez. The domain of computation $ R$of
                 this particular instance is the algebraic structure
                 consisting of uninterpreted functors over real numbers.
                 An important property of CLP $(R)$is that the
                 constraints are treated uniformly in the sense that
                 they are used to specify the input parameters to a
                 program, they are the only primitives used in the
                 execution of a program, and they are used to describe
                 the output of a program.\par

                 Implementation of a CLP language, and of CLP $(R)$ in
                 particular, raises new problems in the design of a
                 constraint-solver. For example, the constraint solver
                 must be incremental in the sense that solving
                 additional constraints must not entail the resolving of
                 old constraints. In our system, constraints are
                 filtered through an inference engine, an engine/solver
                 interface, an equation solver and an inequality solver.
                 This sequence of modules reflects a classification and
                 prioritization of the classes of constraints. Modules
                 solving higher priority constraints are isolated from
                 the complexities of modules solving lower priority
                 constraints. This multiple-phase solving of
                 constraints, together with a set of associated
                 algorithms, gives rise to a practical system.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.m}: Software, PROGRAMMING LANGUAGES,
                 Miscellaneous. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Interpreters. {\bf G.1.3}:
                 Mathematics of Computing, NUMERICAL ANALYSIS, Numerical
                 Linear Algebra, Linear systems (direct and iterative
                 methods). {\bf I.1.3}: Computing Methodologies,
                 ALGEBRAIC MANIPULATION, Languages and Systems. {\bf
                 D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf F.4.0}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, General.",
}

@Article{Widom:1992:TBN,
  author =       "Jennifer Widom and David Gries and F. B. Schneider",
  title =        "Trace-Based Network Proof Systems: Expressiveness and
                 Completeness",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "396--416",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See corrigendum \cite{Widom:1993:CNP}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/129396.html",
  abstract =     "We consider incomplete trace-based network proof
                 systems for safety properties, identifying extensions
                 that are necessary and sufficient to achieve relative
                 completeness. We investigate the expressiveness
                 required of any trace logic to encode these
                 extensions.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf F.3.1}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Proof theory.",
}

@Article{Shankar:1992:SRH,
  author =       "A. Udaya Shankar and Simon S. Lam",
  title =        "A Stepwise Refinement Heuristic for Protocol
                 Construction",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "417--461",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/Compiler.Lins.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/129394.html",
  abstract =     "A stepwise refinement heuristic to construct
                 distributed systems is presented. The heuristic is
                 based on a conditional refinement relation between
                 system specifications, and a ``Marking''. It is applied
                 to construct four sliding window protocols that provide
                 reliable data transfer over unreliable communication
                 channels. The protocols use modulo-$N$ sequence
                 numbers. The first protocol is for channels that can
                 only lose messages in transit. By refining this
                 protocol, we obtain three protocols for channels that
                 can lose, reorder, and duplicate messages in transit.
                 The protocols herein are less restrictive and easier to
                 implement than sliding window protocols previously
                 studied in the protocol verification literature.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; verification",
  subject =      "{\bf C.2.2}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Protocols,
                 Protocol verification. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Krogh:1992:AAP,
  author =       "Fred T. Krogh",
  title =        "{ACM} Algorithms Policy",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "462--465",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:1992:IA,
  author =       "Anonymous",
  title =        "Information for Authors",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "3",
  pages =        "466--469",
  month =        jul,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:15:24 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hansen:1992:SRF,
  author =       "Wilfred J. Hansen",
  title =        "Subsequence References: First-Class Values for
                 Substrings",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "471--489",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/133234.html",
  abstract =     "Arrays of characters are a basic data type in many
                 programming languages, but strings and substrings are
                 seldom accorded first-class status as parameters and
                 return values. Such status would enable a routine that
                 calls a search function to readily access context on
                 both sides of a return value. To enfranchise
                 substrings, this paper describes a new data type for
                 substrings as a special case of one for general
                 subsequences. The key idea is that values are not
                 sequences or references to positions in sequences, but
                 rather references to subsequences. Primitive operations
                 on the data type are constants, concatenation, and four
                 new functions --- {\em base}, {\em start}, {\em next},
                 and {\em extent\/} --- which map subsequence references
                 to subsequence references.\par

                 This paper informally presents the data type,
                 demonstrates its convenience for defining search
                 functions, and shows how it can be concisely
                 implemented. Examples are given in Ness, a language
                 incorporating the new data type, which is implemented
                 as part of the Andrew User Interface System.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf E.1}: Data, DATA STRUCTURES.",
}

@Article{Heering:1992:IGL,
  author =       "J. Heering and P. Klint and J. Rekers",
  title =        "Incremental Generation of Lexical Scanners",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "490--520",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/133240.html",
  abstract =     "It is common practice to specify textual patterns by
                 means of a set of regular expressions and to transform
                 this set into a finite automaton to be used for the
                 scanning of input strings. In many applications, the
                 cost of this preprocessing phase can be amortized over
                 many uses of the constructed automaton. In this paper
                 new techniques for lazy and incremental scanner
                 generation are presented. The lazy technique postpones
                 the construction of parts of the automaton until they
                 are really needed during the scanning of input. The
                 incremental technique allows modifications to the
                 original set of regular expressions to be made and
                 reuses major parts of the previous automaton. This is
                 interesting in applications such as environments for
                 the interactive development of language definitions in
                 which modifications to the definition of lexical syntax
                 and the uses of the generated scanners alternate
                 frequently.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.1.2}: Software, PROGRAMMING TECHNIQUES,
                 Automatic Programming. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Translator writing
                 systems and compiler generators.",
}

@Article{Morzenti:1992:MPR,
  author =       "Angelo Morzenti and Dino Mandrioli and Carlo Ghezzi",
  title =        "A Model Parametric Real-Time Logic",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "521--573",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/129397.html",
  abstract =     "TRIO is a formal notation for the logic-based
                 specification of real-time systems. In this paper the
                 language and its straightforward model-theoretic
                 semantics are briefly summarized. Then the need for
                 assigning a consistent meaning to TRIO specifications
                 is discussed, with reference to a variety of underlying
                 time structures such as infinite-time structures (both
                 dense and discrete) and finite-time structures. The
                 main motivation is the ability to validate formal
                 specifications. A solution to this problem is
                 presented, which gives a new, model-parametric
                 semantics to the language. An algorithm for
                 constructively verifying the satisfiability of formulas
                 in the decidable cases is defined, and several
                 important temporal properties of specifications are
                 characterized.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Languages. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Model theory. {\bf
                 D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Tools. {\bf D.4.7}:
                 Software, OPERATING SYSTEMS, Organization and Design,
                 Real-time and embedded systems.",
}

@Article{Katzenelson:1992:TMT,
  author =       "Jacob Katzenelson and Shlomit S. Pinter and Eugen
                 Schenfeld",
  title =        "Type Matching, Type-Graphs, and the {Schanuel}
                 Conjecture",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "574--588",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/133247.html",
  abstract =     "This work considers type systems that are defined by
                 type-graphs (tgraphs), which are rooted directed graphs
                 with order among the edges leaving each node. Tgraphs
                 are uniquely mapped into polynomials which, in turn,
                 are each evaluated at a special point to yield an
                 irrational number named the tgraph's {\em magic
                 number}. This special point is chosen using the
                 Schanuel conjecture. It is shown that each tgraph can
                 be uniquely represented by this magic number; namely,
                 types are equal if and only if the corresponding magic
                 numbers are equal. Since irrational numbers require
                 infinite precision, the algorithm for generating magic
                 numbers is carried out using a double-precision
                 floating-point approximation. This approximation is
                 viewed as a hashing scheme, mapping the infinite domain
                 of the irrational numbers into finite computer words.
                 The proposed hashing scheme was investigated
                 experimentally, with the conclusion that it is a good
                 and practical hashing method. In tests involving over a
                 million randomly chosen tgraphs, we have not
                 encountered a single collision. We conclude that this
                 method for representation and management of types is
                 practical, and offers novel possibilities for enforcing
                 strict type matching at link time among separately
                 compiled modules.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf E.2}: Data, DATA STORAGE REPRESENTATIONS,
                 Composite structures. {\bf I.1.1}: Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Expressions and
                 Their Representation, Representations (general and
                 polynomial). {\bf G.2.2}: Mathematics of Computing,
                 DISCRETE MATHEMATICS, Graph Theory. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors.",
}

@Article{Muller:1992:MLR,
  author =       "Robert Muller",
  title =        "{M-LISP}: {A} Representation-Independent Dialect of
                 {LISP} with Reduction Semantics",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "589--616",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/133254.html",
  abstract =     "In this paper we introduce M-LISP, a dialect of LISP
                 designed with an eye toward reconciling LISP's
                 metalinguistic power with the {\em structural\/} style
                 of operational semantics advocated by Plotkin [28]. We
                 begin by reviewing the original definition of LISP [20]
                 in an attempt to clarify the source of its
                 metalinguistic power. We find that it arises from a
                 problematic clause in this definition. We then define
                 the abstract syntax and operational semantics of
                 M-LISP, essentially a hybrid of M-expression LISP and
                 Scheme. Next, we tie the operational semantics to the
                 corresponding equational logic. As usual, provable
                 equality in the logic implies operational
                 equality.\par

                 Having established this framework we then extend M-LISP
                 with the metalinguistic {\em eval\/} and {\em reify\/}
                 operators (the latter is a nonstrict operator that
                 converts its argument to its metalanguage
                 representation). These operators encapsulate the
                 matalinguistic representation conversions that occur
                 globally in S-expression LISP. We show that the naive
                 versions of these operators render LISP's equational
                 logic inconsistent. On the positive side, we show that
                 a naturally restricted form of the {\em eval\/}
                 operator is confluent and therefore a conservative
                 extension of M-LISP. Unfortunately, we must weaken the
                 logic considerably to obtain a consistent theory of
                 reification.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Operational semantics. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, LISP. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors. {\bf F.3.3}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic, Lambda calculus and related
                 systems.",
}

@Article{Anonymous:1992:AI,
  author =       "Anonymous",
  title =        "1992 Author Index",
  journal =      j-TOPLAS,
  volume =       "14",
  number =       "4",
  pages =        "617--618",
  month =        oct,
  year =         "1992",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:00:28 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tel:1993:DDT,
  author =       "Gerard Tel and Friedmann Mattern",
  title =        "The Derivation of Distributed Termination Detection
                 Algorithms from Garbage Collection Schemes",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "1--35",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/garbage.collection.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Ooos.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151647.html",
  abstract =     "It is shown that the termination detection problem for
                 distributed computations can be modeled as an instance
                 of the garbage collection problem. Consequently,
                 algorithms for the termination detection problem are
                 obtained by applying transformations to garbage
                 collection algorithms. The transformation can be
                 applied to collectors of the ``mark-and-sweep'' type as
                 well as to reference-counting protocol of Lermen and
                 Maurer, the weighted-reference-counting protocol, the
                 local-reference-counting protocol, and Ben-Ari's
                 mark-and-sweep collector into termination detection
                 algorithms. Known termination detection algorithms as
                 well as new variants are obtained.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; theory; verification",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Distributed memories. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification. {\bf C.2.4}:
                 Computer Systems Organization, COMPUTER-COMMUNICATION
                 NETWORKS, Distributed Systems, Network operating
                 systems.",
}

@Article{Cleaveland:1993:CWS,
  author =       "Rance Cleaveland and Joachim Parrow and Bernhard
                 Steffen",
  title =        "The {Concurrency Workbench}: {A} Semantics-Based Tool
                 for the Verification of Concurrent Systems",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "36--72",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151648.html",
  abstract =     "The Concurrency Workbench is an automated tool for
                 analyzing networks of finite-state processes expressed
                 in Milner's Calculus of Communicating Systems. Its key
                 feature is its breadth: a variety of different
                 verification methods, including equivalence checking,
                 preorder checking, and model checking, are supported
                 for several different process semantics. One experience
                 from our work is that a large number of interesting
                 verification methods can be formulated as combinations
                 of a small number of primitive algorithms. The
                 Workbench has been applied to the verification of
                 communications protocols and mutual exclusion
                 algorithms and has proven a valuable aid in teaching
                 and research.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; reliability; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Specification techniques. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques,
                 Programmer workbench. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification. {\bf C.2.2}:
                 Computer Systems Organization, COMPUTER-COMMUNICATION
                 NETWORKS, Network Protocols, Protocol verification.",
}

@Article{Abadi:1993:CS,
  author =       "Mart{\'\i}n Abadi and Leslie Lamport",
  title =        "Composing Specifications",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "73--132",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib; Database/dbase.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151649.html",
  abstract =     "A rigorous modular specification method requires a
                 proof rule asserting that if each component behaves
                 correctly in isolation, then it behaves correctly in
                 concert with other components. Such a rule is subtle
                 because a component need behave correctly only when its
                 environment does, and each component is part of the
                 others' environments. We examine the precise
                 distinction between a system and its environment, and
                 provide the requisite proof rule when modules are
                 specified with safety and liveness properties.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming.",
}

@Article{Barbuti:1993:GFS,
  author =       "Roberto Barbuti and Roberto Giacobazzi and Giorgio
                 Levi",
  title =        "A General Framework for Semantics-Based Bottom-Up
                 Abstract Interpretation of Logic Programs",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "133--181",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/absint.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151650.html",
  abstract =     "The theory of abstract interpretation provides a
                 formal framework to develop advanced dataflow analysis
                 tools. The idea is to define a nonstandard semantics
                 which is able to compute, in finite time, an
                 approximated model of the program. In this paper, we
                 define an abstract interpretation framework based on a
                 fixpoint approach to the semantics. This leads to the
                 definition, by means of a suitable set of operators, of
                 an abstract fixpoint characterization of a model
                 associated with the program. Thus, we obtain a
                 specializable abstract framework for bottom-up abstract
                 interpretations of definite logic programs. The
                 specialization of the framework is shown on two
                 examples, namely, ground-dependence analysis and
                 depth-$k$ analysis.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages. {\bf
                 D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification. {\bf D.1.6}: Software, PROGRAMMING
                 TECHNIQUES, Logic Programming.",
}

@Article{Afek:1993:LC,
  author =       "Yehuda Afek and Geoffrey Brown and Michael Merritt",
  title =        "Lazy Caching",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "182--205",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Object/Ooos.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151651.html",
  abstract =     "This paper examines cache consistency conditions for
                 multiprocessor shared memory systems. It states and
                 motivates a weaker condition than is normally
                 implemented. An algorithm is presented that exploits
                 the weaker condition to achieve greater concurrency.
                 The algorithm is shown to satisfy the weak consistency
                 condition. Other properties of the algorithm and
                 possible extensions are discussed.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; reliability; verification",
  subject =      "{\bf D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Distributed memories. {\bf B.3.2}:
                 Hardware, MEMORY STRUCTURES, Design Styles, Cache
                 memories. {\bf B.3.2}: Hardware, MEMORY STRUCTURES,
                 Design Styles, Shared memory. {\bf B.3.4}: Hardware,
                 MEMORY STRUCTURES, Reliability, Testing, and
                 Fault-Tolerance.",
}

@Article{Finlay:1993:TCC,
  author =       "Alan Finlay and Lloyd Allison",
  title =        "Technical Correspondence: {A} Correction to the
                 Denotational Semantics for the {Prolog} of {Nicholson}
                 and {Foo}",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "206--208",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Nicholson:1989:DSP}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/151652.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.4.1}: Theory
                 of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Prolog. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Logic programming. {\bf
                 D.1.1}: Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory.",
}

@Article{Widom:1993:CNP,
  author =       "Jennifer Widom and David Gries and F. B. Schneider",
  title =        "Corrigendum: ``{Trace-Based Network Proof Systems:
                 Expressiveness and Completeness}''",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "1",
  pages =        "208--208",
  month =        jan,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 12:58:29 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Widom:1992:TBN}.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Appel:1993:Ea,
  author =       "Andrew W. Appel",
  title =        "Editorial",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "209--210",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:29:44 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Harper:1993:TSS,
  author =       "Robert Harper and John C. Mitchell",
  title =        "On the Type Structure of Standard {ML}",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "211--252",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/prog.lang.theory.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "Earlier version appears as ``The Essence of {ML}'' in
                 {\em Proc. 15th ACM Symp. on Principles of Programming
                 Languages}, 1988, pp. 28--46",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169696.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Abstract
                 data types. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Operational
                 semantics. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Lambda calculus and related systems. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, ML.",
}

@Article{Henglein:1993:TIP,
  author =       "Fritz Henglein",
  title =        "Type Inference with Polymorphic Recursion",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "253--289",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPPS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169692.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; ML; polymorphism;
                 semi-unification; theory; type inference",
  semno =        "D-127",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Lambda
                 calculus and related systems.",
  summary =      "It is shown that type inference for ML with
                 polymorphic recursion (Mycroft's extension) is
                 log-space equivalent to semi-unification. Since
                 semi-unification is undecidable so is type inference
                 with polymorphic recursion. Nonetheless reasons are
                 presented for its usability in practice.",
}

@Article{Kfoury:1993:TRP,
  author =       "A. J. Kfoury and J. Tiuryn and P. Urzyczyn",
  title =        "Type Recursion in the Presence of Polymorphic
                 Recursion",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "290--311",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169687.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs.
                 {\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory. {\bf D.3.2}: Software, PROGRAMMING LANGUAGES,
                 Language Classifications, Applicative languages. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic.",
}

@Article{Dhamdhere:1993:EAB,
  author =       "Dhananjay M. Dhamdhere and Harish Patil",
  title =        "An Elimination Algorithm for Bidirectional Data Flow
                 Problems Using Edge Placement",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "312--336",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169684.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 F.2.2}: Theory of Computation, ANALYSIS OF ALGORITHMS
                 AND PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems. {\bf F.3.3}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs.",
}

@Article{Katz:1993:SCC,
  author =       "Shmuel Katz",
  title =        "A Superimposition Control Construct for Distributed
                 Systems",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "337--356",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169682.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.1.3}: Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages.",
}

@Article{Copperman:1993:TCF,
  author =       "Max Copperman and Charles E. McDowell",
  title =        "Technical Correspondence: {A} Further Note on
                 {Hennessy}'s ``{Symbolic Debugging of Optimized
                 Code}''",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "2",
  pages =        "357--365",
  month =        apr,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:20:23 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Hennessy:1982:SDO}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/214526.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "performance; verification",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Symbolic execution. {\bf D.2.7}:
                 Software, SOFTWARE ENGINEERING, Distribution and
                 Maintenance. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding.",
}

@Article{Burke:1993:IOE,
  author =       "Michael Burke and Linda Torczon",
  title =        "Interprocedural Optimization: Eliminating Unnecessary
                 Recompilation",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "367--399",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/169678.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Chatterjee:1993:CND,
  author =       "Siddhartha Chatterjee",
  title =        "Compiling Nested Data-Parallel Programs for
                 Shared-Memory Multiprocessors",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "400--462",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174152.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Control structures. {\bf E.1}: Data, DATA
                 STRUCTURES. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf C.1.2}: Computer
                 Systems Organization, PROCESSOR ARCHITECTURES, Multiple
                 Data Stream Architectures (Multiprocessors).",
}

@Article{Consel:1993:PPE,
  author =       "Charles Consel and Siau Cheng Khoo",
  title =        "Parameterized Partial Evaluation",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "463--493",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/partial-eval.bib; Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 Theory/partial-eval.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174155.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors.",
}

@Article{Richardson:1993:DPL,
  author =       "Joel E. Richardson and Michael J. Carey and Daniel T.
                 Schuh",
  title =        "The Design of the {E} Programming Language",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "494--534",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174157.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, E. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Object-oriented
                 languages. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, C++. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features. {\bf H.2.3}: Information Systems,
                 DATABASE MANAGEMENT, Languages, Database (persistent)
                 programming languages.",
}

@Article{Odersky:1993:DCD,
  author =       "Martin Odersky",
  title =        "Defining Context-Dependent Syntax Without Using
                 Contexts",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "535--562",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174159.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Syntax. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Model theory. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Grammar types.
                 {\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing.",
}

@Article{Huang:1993:LEU,
  author =       "Shing-Tsaan Huang",
  title =        "Leader Election in Uniform Rings",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "3",
  pages =        "563--573",
  month =        jul,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174161.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; reliability; theory",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems. {\bf D.1.3}: Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management, Mutual
                 exclusion. {\bf D.4.5}: Software, OPERATING SYSTEMS,
                 Reliability, Fault-tolerance. {\bf F.1.2}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Modes of
                 Computation, Parallelism and concurrency.",
}

@Article{Amadio:1993:SRT,
  author =       "Roberto M. Amadio and Luca Cardelli",
  title =        "Subtyping Recursive Types",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "575--631",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155231.html",
  abstract =     "We investigate the interactions of subtyping and
                 recursive types, in a simply typed [lambda]-calculus.
                 The two fundamental questions here are whether two
                 (recursive)types are in the subtype relation and
                 whether a term has a type. To address the first
                 question, we relate various definitions of type
                 equivalence and subtyping that are induced by a model,
                 an ordering on infinite trees, an algorithm, and a set
                 of type rules. We show soundness and completeness among
                 the rules, the algorithm, and the tree semantics. We
                 also prove soundness and a restricted form of
                 completeness for the model. To address the second
                 question, we show that to every pair of types in the
                 subtype relation we can associate a term whose
                 denotation is the uniquely determined coercion map
                 between the two types. Moreover, we derive an algorithm
                 that, when given a term with implicit coercions, can
                 infer its least type whenever possible.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Program and recursion schemes. {\bf F.4.3}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Formal Languages, Classes defined by grammars or
                 automata. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Lambda calculus and related systems. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Recursion. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Abstract data types.",
}

@Article{Palem:1993:STC,
  author =       "Krishna V. Palem and Barbara B. Simons",
  title =        "Scheduling Time-Critical Instructions on {RISC}
                 Machines",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "632--658",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155190.html",
  abstract =     "We present a polynomial time algorithm for
                 constructing a minimum completion time schedule of
                 instructions from a basic block on RISC machines such
                 as the Sun SPARC, the IBM 801, the Berkeley RISC
                 machine, and the HP Precision Architecture. Our
                 algorithm can be used as a heuristic for RISC
                 processors with longer pipelines, for which there is no
                 known optimal algorithm. Our algorithm can also handle
                 time-critical instructions, which are instructions that
                 have to be completed by a specific time. Time-critical
                 instructions occur in some real-time computations, and
                 can also be used to make shared resources such as
                 registers quickly available for reuse. We also prove
                 that in the absence of time-critical constraints, a
                 greedy scheduling algorithm always produces a schedule
                 for a target machine with multiple identical pipelines
                 that has a length less than twice that of an optimal
                 schedule. The behavior of the heuristic is of interest
                 because, as we show, the instruction scheduling problem
                 becomes NP-hard for arbitrary length pipelines, even
                 when the basic block of code being input consists of
                 only several independent streams of straightline code,
                 and there are no time-critical constraints. Finally, we
                 prove that the problem becomes NP-hard even for small
                 pipelines, no time-critical constraints, and input of
                 several independent streams of straightline code if
                 either there is only a single register or if no two
                 instructions are allowed to complete simultaneously
                 because of some shared resource such as a bus.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance",
  subject =      "{\bf F.2.2}: Theory of Computation, ANALYSIS OF
                 ALGORITHMS AND PROBLEM COMPLEXITY, Nonnumerical
                 Algorithms and Problems, Sequencing and scheduling.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf C.1.1}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Single Data Stream Architectures, RISC.
                 {\bf F.1.3}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Complexity Classes, Reducibility and
                 completeness.",
}

@Article{Gupta:1993:APE,
  author =       "Gopal Gupta and Bharat Jayaraman",
  title =        "Analysis of {Or}-Parallel Execution Models",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "659--680",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155220.html",
  abstract =     "We discuss fundamental limitations of or-parallel
                 execution models of nondeterministic programming
                 languages. Or-parallelism corresponds to the execution
                 of different nondeterministic computational paths in
                 parallel. A natural way to represent the state of
                 (parallel) execution of a nondeterministic program is
                 by means of an or-parallel tree. We identify three
                 important criteria that underlie the design of
                 or-parallel implementations based on the or-parallel
                 tree: constant-time access to variables, constant-time
                 task creation, and constant-time task switching, where
                 the term {\em constant-time\/} means that the time for
                 these operations is independent of the number of nodes
                 in the or-parallel tree, as well as the size of each
                 node. We prove that all three criteria cannot be
                 simultaneously satisfied by any or-parallel execution
                 model based on a finite number of processors but
                 unbounded memory. We discuss in detail the application
                 of our result to the class of logic programming
                 languages and show how our result can serve as a useful
                 way to categorize the various or-parallel methods
                 proposed in this field. We also discuss the suitability
                 of different or-parallel implementation strategies for
                 different parallel architectures.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Run-time environments. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nondeterministic languages. {\bf
                 I.2.8}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Problem Solving, Control Methods, and
                 Search, Backtracking. {\bf C.1.2}: Computer Systems
                 Organization, PROCESSOR ARCHITECTURES, Multiple Data
                 Stream Architectures (Multiprocessors),
                 Multiple-instruction-stream, multiple-data-stream
                 processors (MIMD). {\bf D.1.6}: Software, PROGRAMMING
                 TECHNIQUES, Logic Programming.",
}

@Article{Fidge:1993:FDP,
  author =       "C. J. Fidge",
  title =        "A Formal Definition of Priority in {CSP}",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "681--705",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155221.html",
  abstract =     "The process models of Ada and occam are formally based
                 on the CSP process algebra. However, for fine-tuning
                 real-time performance, they include ``prioritized''
                 constructs that have no counterparts in CSP. These
                 constructs therefore lack any formal definition, a
                 situation that leaves room for misunderstandings. We
                 extend CSP with a formal definition of the notion of
                 priority. The definition is then used to assess the
                 transputer implementation of priority in occam and the
                 definition of priority in Ada.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, CSP. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, OCCAM. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Ada. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Concurrent programming structures. {\bf
                 F.3.2}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Operational semantics.",
}

@Article{Abadi:1993:CAC,
  author =       "Mart{\'\i}n Abadi and Michael Burrows and Butler
                 Lampson and Gordon Plotkin",
  title =        "A Calculus for Access Control in Distributed Systems",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "706--734",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155225.html",
  abstract =     "We study some of the concepts, protocols, and
                 algorithms for access control in distributed systems,
                 from a logical perspective. We account for how a
                 principal may come to believe that another principal is
                 making a request, either on his own or on someone
                 else's behalf. We also provide a logical language for
                 access control lists and theories for deciding whether
                 requests should be granted.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "security; theory; verification",
  subject =      "{\bf D.4.6}: Software, OPERATING SYSTEMS, Security and
                 Protection, Access controls. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic. {\bf D.4.6}: Software, OPERATING
                 SYSTEMS, Security and Protection, Authentication. {\bf
                 D.4.6}: Software, OPERATING SYSTEMS, Security and
                 Protection, Verification. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems.",
}

@Article{Ghosh:1993:ASP,
  author =       "Sukumar Ghosh",
  title =        "An Alternative Solution to a Problem on
                 Self-Stabilization",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "4",
  pages =        "735--742",
  month =        sep,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/155228.html",
  abstract =     "Dijkstra [4, 5] introduced the problem of
                 self-stabilization in distributed systems as an
                 interesting exercise for achieving global convergence
                 through local actions. In [4] he presented three
                 solutions to a specific version of the
                 self-stabilization problem, one of which was proved in
                 [6]. This paper presents an alternative solution of his
                 self-stabilization problem with four-state machines.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Distributed applications. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management,
                 Synchronization.",
}

@Article{Appel:1993:Eb,
  author =       "A. W. Appel and S. L. Graham",
  title =        "Editorial",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "743--744",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Herlihy:1993:MIH,
  author =       "Maurice Herlihy",
  title =        "A Methodology for Implementing Highly Concurrent Data
                 Objects",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "745--770",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/161469.html",
  abstract =     "A {\em concurrent object\/} is a data structure shared
                 by concurrent processes. Conventional techniques for
                 implementing concurrent objects typically rely on {\em
                 critical sections\/}; ensuring that only one process at
                 a time can operate on the object. Nevertheless,
                 critical sections are poorly suited for asynchronous
                 systems: if one process is halted or delayed in a
                 critical section, other, nonfaulty processes will be
                 unable to progress. By contrast, a concurrent object
                 implementation is {\em lock free\/} if it always
                 guarantees that some process will complete an operation
                 in a finite number of steps, and it is {\em wait
                 free\/} if it guarantees that {\em each\/} process will
                 complete an operation in a finite number of steps. This
                 paper proposes a new methodology for constructing
                 lock-free and wait-free implementations of concurrent
                 objects. The object's representation and operations are
                 written as stylized sequential programs, with no
                 explicit synchronization. Each sequential operation is
                 automatically transformed into a lock-free or wait-free
                 operation using novel synchronization and memory
                 management algorithms. These algorithms are presented
                 for a multiple instruction/multiple data (MIMD)
                 architecture in which $n$ processes communicate by
                 applying atomic {\em read, write, load\_linked,\/} and
                 {\em store\_conditional\/} operations to a shared
                 memory.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.1.3}: Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming. {\bf D.4.2}:
                 Software, OPERATING SYSTEMS, Storage Management.",
}

@Article{Leivent:1993:MFT,
  author =       "Jonathan I. Leivent and Ronald J. Watro",
  title =        "Mathematical Foundations for {Time Warp} Systems",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "771--794",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:24:08 1997",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/161470.html",
  abstract =     "We develop a simple formal model of the Time Warp
                 approach to distributed computation, prove several
                 important properties of the model, and devise some
                 extensions to Time Warp that provide improved
                 termination behavior. Our model consists of processes
                 that communicate solely via message passing. One of the
                 basic process steps is a rollback operation that
                 includes message retraction via transmission of
                 antimessages. In the model, we consider three problems:
                 safety, progress, and termination. By safety, we mean
                 that for a given system of processes, if a run of the
                 system terminates, then the final system state of the
                 run is identical to the final system state of a
                 rollback-free run. We give premises that imply safety,
                 and a counterexample that shows how safety can fail. By
                 progress, we mean that, as a run of a system proceeds,
                 the minimum timestamp of an unprocessed message always
                 eventually increases. We state three axioms that imply
                 the progress property. By termination, we mean that, if
                 all rollback-free runs of a system terminate, then all
                 runs terminate. The termination property is generally
                 false in existing implementations of Time Warp systems
                 due to the possibility of Time Warp vortices. We define
                 additional mechanisms that can guarantee the
                 termination property for most Time Warp applications.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf I.6.1}: Computing Methodologies, SIMULATION AND
                 MODELING, Simulation Theory. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Synchronization. {\bf F.1.2}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Modes of
                 Computation, Parallelism and concurrency.",
}

@Article{Bowman:1993:RAN,
  author =       "Mic Bowman and Saumya K. Debray and Larry L.
                 Peterson",
  title =        "Reasoning About Naming Systems",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "795--825",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/161471.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; theory",
  subject =      "{\bf H.3.4}: Information Systems, INFORMATION STORAGE
                 AND RETRIEVAL, Systems and Software, Question-answering
                 (fact retrieval) systems. {\bf H.2.3}: Information
                 Systems, DATABASE MANAGEMENT, Languages, Query
                 languages. {\bf H.2.4}: Information Systems, DATABASE
                 MANAGEMENT, Systems, Query processing. {\bf H.3.3}:
                 Information Systems, INFORMATION STORAGE AND RETRIEVAL,
                 Information Search and Retrieval, Selection process.",
}

@Article{Debray:1993:CAL,
  author =       "Saumya K. Debray and Nai-Wei Lin",
  title =        "Cost Analysis of Logic Programs",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "826--875",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/161472.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.2.8}: Software, SOFTWARE ENGINEERING, Metrics,
                 Performance measures. {\bf D.1.6}: Software,
                 PROGRAMMING TECHNIQUES, Logic Programming. {\bf D.2.8}:
                 Software, SOFTWARE ENGINEERING, Metrics, Complexity
                 measures. {\bf D.3.2}: Software, PROGRAMMING LANGUAGES,
                 Language Classifications, Nonprocedural languages. {\bf
                 I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Automatic analysis
                 of algorithms.",
}

@Article{Lin:1993:PIA,
  author =       "Huimin Lin",
  title =        "Procedural Implementation of Algebraic Specification",
  journal =      j-TOPLAS,
  volume =       "15",
  number =       "5",
  pages =        "876--895",
  month =        nov,
  year =         "1993",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/161473.html",
  abstract =     "An implementation of an algebraic specification in an
                 imperative programming language consists of a
                 representation type, together with an invariant and an
                 equivalence relation over it, and a procedure for each
                 operator in the specification. A formal technique is
                 developed to check the correctness of an implementation
                 with respect to its specification. Here ``correctness''
                 means that the implementation satisfies the axioms and
                 preserves the behavior of the specification. Within
                 legal representing value space, a correct
                 implementation behaves like a desirable model of the
                 specification. A notion of implementation refinement is
                 also proposed, and it is shown that the correctness
                 relation between implementations and specifications is
                 preserved by implementation refinement. In the extreme
                 case the procedures in an implementation may be
                 pre-post-condition pairs. Such abstract implementations
                 can be refined into executable code by refining the
                 abstract procedures in it. In this way a formal link
                 between the algebraic and the pre-post-condition
                 specification techniques is established.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; theory; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques,
                 Top-down programming. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Abstract
                 data types. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages. {\bf D.3.3}: Software, PROGRAMMING LANGUAGES,
                 Language Constructs and Features, Procedures,
                 functions, and subroutines. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf D.2.1}: Software,
                 SOFTWARE ENGINEERING, Requirements/Specifications,
                 Spec.",
}

@Article{Appel:1994:PS,
  author =       "Andrew Appel",
  title =        "Purpose and Scope",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "1",
  pages =        "1--2",
  month =        jan,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tick:1994:DTN,
  author =       "E. Tick and M. Korsloot",
  title =        "Determinacy Testing for Nondeterminate Logic
                 Programming Languages",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "1",
  pages =        "3--34",
  month =        jan,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174626.html",
  abstract =     "This paper describes an algorithm for the code
                 generation of determinacy testing for nondeterminate
                 flat concurrent logic programming languages. Languages
                 such as Andorra and Pandora require that procedure
                 invocations suspend if there is more than one candidate
                 clause potentially satisfying the goal. The algorithm
                 described has been developed specifically for a variant
                 of flat Pandora based on FGHC, although the concepts
                 are general. We have extended Kliger and Shapiro's
                 decision-graph construction algorithm to compile
                 ``don't-know'' procedures that must suspend for
                 nondeterminate goal invocation. The determinacy test is
                 compiled into a decision graph quite different from
                 those of committed-choice procedures: They are more
                 similar to decision trees optimized by code sharing. We
                 present both empirical data of compilation results
                 (code size and graph characteristics), and a
                 correctness proof for our code-generation algorithm.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf D.1.6}: Software,
                 PROGRAMMING TECHNIQUES, Logic Programming. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{LeCharlier:1994:EEG,
  author =       "Baudouin {Le Charlier} and Pascal {Van Hentenryck}",
  title =        "Experimental Evaluation of a Generic Abstract
                 Interpretation Algorithm for {PROLOG}",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "1",
  pages =        "35--101",
  month =        jan,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:59:10 1998",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174627.html",
  abstract =     "Abstract interpretation of PROLOG programs has
                 attracted many researchers in recent years, partly
                 because of the potential for optimization in PROLOG
                 compilers and partly because of the declarative nature
                 of logic programming languages that make them more
                 amenable to optimization than procedural languages.
                 Most of the work, however, has remained at the
                 theoretical level, focusing on the developments of
                 frameworks and the definition of abstract
                 domains.\par

                 This paper reports our effort to verify experimentally
                 the practical value of this area of research. It
                 describes the design and implementation of the generic
                 abstract interpretation algorithm GAIA that we
                 originally proposed in Le Charlier et al. [1991], its
                 instantiation to a sophisticated abstract domain
                 (derived from Bruynooghe and Janssens [1988])
                 containing modes, types, sharing, and aliasing, and its
                 evaluation both in terms of performance and accuracy.
                 The overall implementation (over 5000 lines of Pascal)
                 has been systematically analyzed on a variety of
                 programs and compared with the complexity analysis of
                 Le Charlie et al. [1991] and the specific analysis
                 systems of Hickey and Mudambi [1989], Taylor [1989;
                 1990], Van Roy and Despain [1990], and Warren et al.
                 [1988].",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Prolog.",
}

@Article{Waters:1994:CBP,
  author =       "Richard C. Waters",
  title =        "Clich{\'e}-Based Program Editors",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "1",
  pages =        "102--150",
  month =        jan,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174628.html",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; experimentation",
  subject =      "{\bf D.2.3}: Software, SOFTWARE ENGINEERING, Coding,
                 Program editors. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Programmer
                 workbench. {\bf D.2.2}: Software, SOFTWARE ENGINEERING,
                 Tools and Techniques, Software libraries. {\bf D.2.3}:
                 Software, SOFTWARE ENGINEERING, Coding, Pretty
                 printers. {\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf I.2.2}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Program synthesis. {\bf K.6.3}: Computing
                 Milieux, MANAGEMENT OF COMPUTING AND INFORMATION
                 SYSTEMS, Software Management, Software development.
                 {\bf K.6.3}: Computing Milieux, MANAGEMENT OF COMPUTING
                 AND INFORMATION SYSTEMS, Software Management, Software
                 maintenance. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Computer-aided
                 software engineering (CASE).",
}

@Article{Purtilo:1994:PSB,
  author =       "James M. Purtilo",
  title =        "The {POLYLITH} Software Bus",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "1",
  pages =        "151--174",
  month =        jan,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174629.html",
  abstract =     "We describe a system called POLYLITH that helps
                 programmers prepare and interconnect mixed-language
                 software components for execution in heterogeneous
                 environments. POLYLITH's principal benefit is that
                 programmers are free to implement functional
                 requirements separately from their treatment of
                 interfacing requirements; this means that once an
                 application has been developed for use in one execution
                 environment (such as a distributed network) it can be
                 adapted for reuse in other environments (such as a
                 shared-memory multiprocessor) by automatic techniques.
                 This flexibility is provided without loss of
                 performance. We accomplish this by creating a new
                 run-time organization for software. An abstract
                 decoupling agent, called the {\em software bus}, is
                 introduced between the system components. Heterogeneity
                 in language and architecture is accommodated since
                 program units are prepared to interface directly to the
                 bus and not to other program units. Programmers specify
                 application structure in terms of a module
                 interconnection language (MIL); POLYLITH uses this
                 specification to guide {\em packaging\/} (static
                 interfacing activities such as stub generation, source
                 program adaptation, compilation, and linking). At run
                 time, an implementation of the bus abstraction may
                 assist in message delivery, name service, or system
                 reconfiguration.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors.",
}

@Article{Harrold:1994:ECI,
  author =       "Mary Jean Harrold and Mary Lou Soffa",
  title =        "Efficient Computation of Interprocedural
                 Definition-Use Chains",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "2",
  pages =        "175--204",
  month =        mar,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174663.html",
  abstract =     "The dependencies that exist among definitions and uses
                 of variables in a program are required by many
                 language-processing tools. This paper considers the
                 computation of definition-use and use-definition chains
                 that extend across procedure boundaries at call and
                 return sites. Intraprocedural definition and use
                 information is abstracted for each procedure and is
                 used to construct an interprocedural flow graph. This
                 intraprocedural data-flow information is then
                 propagated throughout the program via the
                 interprocedural flow graph to obtain sets of reaching
                 definitions and/or reachable uses for reach
                 interprocedural control point, including procedure
                 entry, exit, call, and return. Interprocedural
                 definition-use and/or use-definition chains are
                 computed from this reaching information. The technique
                 handles the interprocedural effects of the data flow
                 caused by both reference parameters and global
                 variables, while preserving the calling context of
                 called procedures. Additionally, recursion, aliasing,
                 and separate compilation are handled. The technique has
                 been implemented using a Sun-4 Workstation and
                 incorporated into an interprocedural data-flow tester.
                 Results from experiments indicate the practicality of
                 the technique, both in terms of the size of the
                 interprocedural flow graph and the size of the
                 data-flow sets.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.2.5}: Software,
                 SOFTWARE ENGINEERING, Testing and Debugging. {\bf
                 D.2.6}: Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers.",
}

@Article{Mulkers:1994:LSD,
  author =       "Anne Mulkers and William Winsborough and Maurice
                 Bruynooghe",
  title =        "Live-Structure Dataflow Analysis for {Prolog}",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "2",
  pages =        "205--258",
  month =        mar,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174664.html",
  abstract =     "For the class of applicative programming languages,
                 efficient methods for reclaiming the memory occupied by
                 released data structures constitute an important aspect
                 of current implementations. The present article
                 addresses the problem of memory reuse for logic
                 programs through program analysis rather than by
                 run-time garbage collection. The aim is to derive
                 run-time properties that can be used at compile time to
                 specialize the target code for a program according to a
                 given set of queries and to automatically introduce
                 destructive assignments in a safe and transparent way
                 so that fewer garbage cells are created.\par

                 The dataflow analysis is constructed as an application
                 of abstract interpretation for logic programs. An
                 abstract domain for describing structure-sharing and
                 liveness properties is developed as are primitive
                 operations that guarantee a sound and terminating
                 global analysis. We explain our motivation for the
                 design of the abstract domain, make explicit the
                 underlying implementation assumptions, and discuss the
                 precision of the results obtained by a prototype
                 analyzer.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Prolog. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf I.2.3}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving, Logic programming.",
}

@Article{Jonsson:1994:CSV,
  author =       "Bengt Jonsson",
  title =        "Compositional Specification and Verification of
                 Distributed Systems",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "2",
  pages =        "259--303",
  month =        mar,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/174665.html",
  abstract =     "We present a method for specification and verification
                 of distributed systems that communicate via
                 asynchronous message passing. The method handles both
                 safety and liveness properties. It is compositional,
                 i.e., a specification of a composite system can be
                 obtained from specifications of its components.
                 Specifications are given as labeled transition systems
                 with fairness properties, using a program-like notation
                 with guarded multiple assignments. Compositionality is
                 attained by partitioning the labels of a transition
                 system into input events, which intuitively denote
                 message receptions, and output events, which
                 intuitively denote message transmissions. A
                 specification denotes a set of allowed sequences of
                 message transmissions and receptions, in analogy with
                 the way finite automata are used as acceptors of finite
                 strings. A lower-level specification implements a
                 higher-level one. We present a verification technique
                 which reduces the problem of verifying the correctness
                 of an implementation to classical verification
                 conditions. Safety properties are verified by
                 establishing a simulation relation between transition
                 systems. Liveness properties are verified using methods
                 for proving termination under fairness assumptions.
                 Since specifications can be given at various levels of
                 abstraction, the method is suitable in a development
                 process where a detailed implementation is developed
                 from an abstract specification through a sequence of
                 refinement steps. As an application of the method, an
                 algorithm by Thomas for updating a distributed database
                 is specified and verified.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf C.2.2}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Network Protocols,
                 Protocol verification. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications,
                 Methodologies. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness
                 proofs.",
}

@Article{Pinter:1994:POP,
  author =       "Shlomit S. Pinter and Ron Y. Pinter",
  title =        "Program Optimization and Parallelization Using
                 Idioms",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "305--327",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177494.html",
  abstract =     "Programs in languages such as Fortran, Pascal, and C
                 were designed and written for a sequential machine
                 model. During the last decade, several methods to
                 vectorize such programs and recover other forms of
                 parallelism that apply to more advanced machine
                 architectures have been developed (particularly for
                 Fortran, due to its pointer-free semantics). We propose
                 and demonstrate a more powerful translation technique
                 for making such programs run efficiently on parallel
                 machines which support facilities such as parallel
                 prefix operations as well as parallel and vector
                 capabilities. This technique, which is global in nature
                 and involves a modification of the traditional
                 definition of the program dependence graph (PDG), is
                 based on the extraction of parallelizable program
                 structures (``idioms'') from the given (sequential)
                 program. The benefits of our technique extend beyond
                 the above-mentioned architectures and can be viewed as
                 a general program optimization method, applicable in
                 many other situations. We show a few examples in which
                 our method indeed outperforms existing analysis
                 techniques.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Optimization.",
}

@Article{Bloss:1994:PAO,
  author =       "Adrienne Bloss",
  title =        "Path Analysis and the Optimization of Nonstrict
                 Functional Languages",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "328--369",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177497.html",
  abstract =     "The functional programming style is increasingly
                 popular in the research world, but functional languages
                 still execute slowly relative to imperative languages.
                 This is largely because the power and flexibility of
                 functional languages restrict the amount of information
                 readily available to the compiler, hindering its
                 ability to generate good code. This article
                 demonstrates that information about {\em order of
                 evaluation of expressions\/} can be statically inferred
                 for nonstrict functional programs and that
                 optimizations based on this information can provide
                 substantial speedups at runtime. We present an exact,
                 nonstandard semantics called {\em path semantics\/}
                 that models order of evaluation in a nonstrict,
                 sequential functional language, and its computable
                 abstraction, {\em path analysis}. We show how the
                 information inferred by path analysis can be used to
                 implement destructive aggregate updating, in which
                 updates on functional aggregates that are provably not
                 live are done destructively. We also demonstrate a new
                 approach to strictness analysis and show that
                 strictness analysis is subsumed by path analysis.
                 Benchmarks are presented.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; performance",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf E.1}: Data, DATA STRUCTURES, Arrays.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics.",
}

@Article{Gupta:1994:ERA,
  author =       "Rajiv Gupta and Mary Lou Soffa and Denise Ombres",
  title =        "Efficient Register Allocation via Coloring Using
                 Clique Separators",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "370--386",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177499.html",
  abstract =     "Although graph coloring is widely recognized as an
                 effective technique for register allocation, memory
                 demands can become quite high for large interference
                 graphs that are needed in coloring. In this paper we
                 present an algorithm that uses the notion of clique
                 separators to improve the space overhead of coloring.
                 The algorithm, based on a result by R. Tarjan regarding
                 the colorability of graphs, partitions program code
                 into code segments using clique separators. The
                 interference graphs for the code partitions are
                 constructed one at a time and colored independently.
                 The colorings for the partitions are combined to obtain
                 a register allocation for the entire program. This
                 approach can be used to perform register allocation in
                 a space-efficient manner. For straight-line code (e.g.,
                 local register allocation), an optimal allocation can
                 be obtained from optimal allocations for individual
                 code partitions. Experimental results are presented
                 demonstrating memory demand reductions for interference
                 graphs when allocating registers using clique
                 separators.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf C.0}: Computer Systems
                 Organization, GENERAL, Hardware/software interfaces.",
}

@Article{Copperman:1994:DOC,
  author =       "Max Copperman",
  title =        "Debugging Optimized Code Without Being Misled",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "387--427",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177517.html",
  abstract =     "Correct optimization can change the behavior of an
                 incorrect program; therefore at times it is necessary
                 to debug optimized code. However, optimizing compilers
                 produce code that impedes source-level
                 debugging.\par

                 Optimization can cause an inconsistency between where
                 the user expects a breakpoint to be located and the
                 breakpoint's actual location. This article describes a
                 mapping between statements and breakpoint locations
                 that ameliorates this problem. The mapping enables
                 debugger behavior on optimized code that approximates
                 debugger behavior on unoptimized code sufficiently
                 closely for the user to use traditional debugging
                 strategies.\par

                 Optimization can also cause the value of a variable to
                 be {\em noncurrent\/}---to differ from the value that
                 would be predicted by a close reading of the source
                 code. This article presents a method of determining
                 when this has occurred, and shows how a debugger can
                 describe the relevant effects of optimization. The
                 determination method is more general than previously
                 published methods; it handles global optimization and
                 many flow graph transformations, and it is not tightly
                 coupled to optimizations performed by a particular
                 compiler. Necessary compiler support is also
                 described.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "performance; verification",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Code generation. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Briggs:1994:IGC,
  author =       "Preston Briggs and Keith D. Cooper and Linda Torczon",
  title =        "Improvements to Graph Coloring Register Allocation",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "428--455",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177575.html",
  abstract =     "We describe two improvements to Chaitin-style graph
                 coloring register allocators. The first, {\em
                 optimistic coloring}, uses a stronger heuristic to find
                 a $k$-coloring for the interference graph. The second
                 extends Chaitin's treatment of {\em
                 rematerialization\/} to handle a larger class of
                 values. These techniques are complementary. Optimistic
                 coloring decreases the number of procedures that
                 require spill code and reduces the amount of spill code
                 when spilling is unavoidable. Rematerialization lowers
                 the cost of spilling some values. This paper describes
                 both of the techniques and our experience building and
                 using register allocators that incorporate them. It
                 provides a detailed description of optimistic coloring
                 and rematerialization. It presents experimental data to
                 show the performance of several versions of the
                 register allocator on a suite of FORTRAN programs. It
                 discusses several insights that we discovered only
                 after repeated implementation of these allocators.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Jagannathan:1994:MBB,
  author =       "Suresh Jagannathan",
  title =        "Metalevel Building Blocks for Modular Systems",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "456--492",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177578.html",
  abstract =     "The formal definition of any namespace device found in
                 a programming language can be given in terms of
                 transformations on a semantic environment. It is
                 worthwhile, therefore, to consider the implications of
                 incorporating environments as bona fide data objects in
                 a programming system.\par

                 In this article, we propose a treatment of environments
                 and the mechanism by which they are reified and
                 manipulated, that addresses these concerns. The
                 language described below (Rascal) permits environments
                 to be reified into data structures, and data structures
                 to be reflected into environments, but gives users
                 great flexibility to constrain the extent and scope of
                 these processes. We argue that the techniques and
                 operators developed define a cohesive basis for
                 building large-scale modular systems using reflective
                 programming techniques.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.2}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Denotational semantics.",
}

@Article{Kennaway:1994:AGR,
  author =       "J. R. Kennaway and J. W. Klop and M. R. Sleep and F.
                 J. {De Vries}",
  title =        "On the Adequacy of Graph Rewriting for Simulating Term
                 Rewriting",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "493--523",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177577.html",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems. {\bf F.1.1}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Models of Computation.
                 {\bf F.4.1}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic.",
}

@Article{Crowl:1994:PPC,
  author =       "Lawrence A. Crowl and Thomas J. LeBlanc",
  title =        "Parallel Programming with Control Abstraction",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "524--576",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177584.html",
  abstract =     "Parallel programming involves finding the potential
                 parallelism in an application and mapping it to the
                 architecture at hand. Since a typical application has
                 more potential parallelism than any single architecture
                 can exploit effectively, programmers usually limit
                 their focus to the parallelism that the available
                 control constructs express easily and that the given
                 architecture exploits efficiently. This approach
                 produces programs that exhibit much less parallelism
                 that exists in the application, and whose performance
                 depends critically on the underlying hardware and
                 software.\par

                 We argue for an alternative approach based on {\em
                 control abstraction}. Control abstraction is the
                 process by which programmers define new control
                 constructs, specifying constraints on statement
                 ordering separately from an implementation of that
                 ordering. With control abstraction programmers can
                 define and use a rich variety of control constructs to
                 represent an algorithm's potential
                 parallelism.\par

                 Since control abstraction separates the definition of a
                 construct from its implementation, a construct may have
                 several different implementations, each exploiting a
                 different subset of the parallelism admitted by the
                 construct. By selecting an implementation for each
                 control construct using annotations, a programmer can
                 vary the parallelism in a program to best exploit the
                 underlying hardware without otherwise changing the
                 source code. This approach produces programs that
                 exhibit most of the potential parallelism in an
                 algorithm, and whose performance can be tuned simply by
                 choosing among the various implementations for the
                 control constructs in use.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.1.3}: Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming, Parallel
                 programming. {\bf D.2.m}: Software, SOFTWARE
                 ENGINEERING, Miscellaneous, Reusable software. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Abstract
                 data types. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Control
                 structures. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features,
                 Procedures, functions, and subroutines. {\bf F.3.3}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs, Control primitives.",
}

@Article{Foster:1994:CAS,
  author =       "Ian Foster and Stephen Taylor",
  title =        "A Compiler Approach to Scalable Concurrent-Program
                 Design",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "577--604",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177612.html",
  abstract =     "We describe a compilation system for the concurrent
                 programming language Program Composition Notation
                 (PCN). This notation provides a {\em single-assignment
                 programming model\/} that permits
                 concurrent-programming concerns such as decomposition,
                 communication, synchronization, mapping, granularity,
                 and load balancing to be addressed separately in a
                 design. PCN is also extensible with {\em
                 programmer-defined operators}, allowing common
                 abstractions to be encapsulated and reused in different
                 contexts.\par

                 The compilation system incorporates a {\em
                 concurrent-transformation system\/} that allows
                 abstractions to be defined through concurrent
                 source-to-source transformations; these convert
                 programmer-defined operators into a core notation. {\em
                 Run-time techniques\/} allow the core notation to be
                 compiled into a simple concurrent abstract machine
                 which can be implemented in a portable fashion using a
                 run-time library. The abstract machine provides a
                 uniform treatment of single-assignment and mutable data
                 structures, allowing data sharing between concurrent
                 and sequential program segments and permitting
                 integration of sequential C and Fortran code into
                 concurrent programs.\par

                 This compilation system forms part of a program
                 development toolkit that operates on a wide variety of
                 networked workstations, multicomputers, and
                 shared-memory multiprocessors. The toolkit has been
                 used both to develop substantial applications and to
                 teach introductory concurrent-programming classes,
                 including a freshman course at Caltech.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.2.10}: Software, SOFTWARE ENGINEERING, Design,
                 Methodologies. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Run-time environments.",
}

@Article{Arbab:1994:SCD,
  author =       "Bijan Arbab and Daniel Berry",
  title =        "Some Comments on ``{A} Denotational Semantics for
                 {Prolog}''",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "605--606",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177605.html",
  abstract =     "Two independently derived denotational semantics for
                 Prolog are contrasted, Arbab and Berry's for the full
                 language and Nicholson and Foo's for a databaseless
                 language. Using the ideas suggested by the former, the
                 latter can be easily extended to include the database
                 operations.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Logic programming.",
}

@Article{Marriott:1994:DAI,
  author =       "Kim Marriott and Harald S{\o}ndergaard and Neil D.
                 Jones",
  title =        "Denotational Abstract Interpretation of Logic
                 Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "607--648",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib; Compiler/TOPPS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177650.html",
  abstract =     "Logic-programming languages are based on a principle
                 of separation ``logic'' and ``control.''. This means
                 that they can be given simple model-theoretic semantics
                 without regard to any particular execution mechanism
                 (or proof procedure, viewing execution as theorem
                 proving). Although the separation is desirable from a
                 semantical point of view, it makes sound, efficient
                 implementation of logic-programming languages
                 difficult. The lack of ``control information'' in
                 programs calls for complex data-flow analysis
                 techniques to guide execution. Since data-flow analysis
                 furthermore finds extensive use in error-finding and
                 transformation tools, there is a need for a simple and
                 powerful theory of data-flow analysis of logic
                 programs.\par

                 This paper offers such a theory, based on F. Nielson's
                 extension of P. Cousot and R. Cousot's {\em abstract
                 interpretation}. We present a denotational definition
                 of the semantics of definite logic programs. This
                 definition is of interest in its own right because of
                 its compactness. Stepwise we develop the definition
                 into a generic data-flow analysis that encompasses a
                 large class of data-flow analyses based on the SLD
                 execution model. We exemplify one instance of the
                 definition by developing a provably correct groundness
                 analysis to predict how variables may be bound to
                 ground terms during execution. We also discuss
                 implementation issues and related work.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract interpretation; flow analysis; languages;
                 logical relations; Prolog; theory",
  semno =        "D-94",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.3.3}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic, Logic programming.",
  summary =      "A framework is established for the static analysis of
                 prolog programs. The framework is quite general and is
                 solidly based in a formal semantics, thus enabling
                 rigorous correctness proofs of various analyses. The
                 methods used include an adaptation of logical relations
                 as applied by Nielson and Nielson.",
}

@Article{Codish:1994:SAC,
  author =       "Michael Codish and Moreno Falaschi and Kim Marriott",
  title =        "Suspension Analyses for Concurrent Logic Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "649--686",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177656.html",
  abstract =     "Concurrent logic languages specify reactive systems
                 which consist of collections of communicating
                 processes. The presence of unintended suspended
                 computations is a common programming error which is
                 difficult to detect using standard debugging and
                 testing techniques. We develop a number of analyses,
                 based on abstract interpretation, which succeed if a
                 program is definitely suspension free. If an analysis
                 fails, the program may, or may not, be suspension free.
                 Examples demonstrate that the analyses are practically
                 useful. They are conceptually simple and easy to
                 justify because they are based directly on the
                 transition system semantics of concurrent logic
                 programs. A naive analysis must consider {\em all
                 scheduling policies}. However, it is proven that for
                 our analyses it suffices to consider only {\em one\/}
                 scheduling policy, allowing for efficient
                 implementation.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Assertions. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Invariants. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Concurrent,
                 distributed, and parallel languages. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Operational semantics.",
}

@Article{Apt:1994:OCF,
  author =       "Krzysztof R. Apt and Alessando Pellegrini",
  title =        "On the Occur-Check-Free {Prolog} Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "687--726",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177673.html",
  abstract =     "In most PROLOG implementations, for efficiency
                 occur-check is omitted from the unification algorithm.
                 This paper provides natural syntactic conditions that
                 allow the occur-check to be safely omitted. The
                 established results apply to most well-known PROLOG
                 programs, including those that use difference lists,
                 and seem to explain why this omission does not lead in
                 practice to any complications. When applying these
                 results to general programs, we show their usefulness
                 for proving absence of floundering. Finally, we propose
                 a program transformation that transforms every program
                 into a program for which only the calls to the built-in
                 unification predicate need to be resolved by a
                 unification algorithm with the occur-check.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Prolog. {\bf F.4.1}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Mathematical Logic, Logic programming. {\bf F.4.1}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Mechanical theorem
                 proving. {\bf D.2.4}: Software, SOFTWARE ENGINEERING,
                 Program Verification, Correctness proofs. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Preprocessors.",
}

@Article{Garlan:1994:TAM,
  author =       "David Garlan and Charles W. Krueger and Barbara S.
                 Lerner",
  title =        "{TransformGen}: Automating the Maintenance of
                 Structure-Oriented Environments",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "727--774",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177697.html",
  abstract =     "A serious problem for programs that use persistent
                 data is that information created and maintained by the
                 program becomes invalid if the persistent types used in
                 the program are modified in a new release.
                 Unfortunately, there has been little systematic
                 treatment of the problem; current approaches are
                 manual, ad hoc, and time consuming both for programmers
                 and users. In this article we present a new approach.
                 Focusing on the special case of managing abstract
                 syntax trees in structure-oriented environments, we
                 show how automatic transformers can be generated in
                 terms of an implementor's changes to the grammar of
                 these environments.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments. {\bf D.2.2}: Software,
                 SOFTWARE ENGINEERING, Tools and Techniques. {\bf
                 D.2.6}: Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.2.7}: Software, SOFTWARE
                 ENGINEERING, Distribution and Maintenance. {\bf H.2.1}:
                 Information Systems, DATABASE MANAGEMENT, Logical
                 Design, Schema and subschema.",
}

@Article{Yu:1994:LTS,
  author =       "Lin Yu and Daniel J. Rosenkrantz",
  title =        "A Linear-Time Scheme for Version Reconstruction",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "775--797",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177705.html",
  abstract =     "An efficient scheme to store and reconstruct versions
                 of sequential files is presented. The reconstruction
                 scheme involves building a data structure representing
                 a complete version, and then successively modifying
                 this data structure by applying a sequence of specially
                 formatted differential files to it. Each application of
                 a differential file produces a representation of an
                 intermediate version, with the final data structure
                 representing the requested version.\par

                 The scheme uses a linked list to represent an
                 intermediate version, instead of a sequential array, as
                 is used traditionally. A new format for differential
                 files specifying changes to this linked list data
                 structure is presented. The specification of each
                 change points directly to where the change is to take
                 place, thereby obviating a search. Algorithms are
                 presented for using such a new format differential file
                 to transform the representation of a version, and for
                 reconstructing a requested version. Algorithms are also
                 presented for generating the new format differential
                 files, both for the case of a forward differential
                 specifying how to transform the representation of an
                 old version to the representation of a new version, and
                 for the case of a reverse differential specifying how
                 to transform the representation of a new version to the
                 representation of an old version.\par

                 The new version reconstruction scheme takes time linear
                 in the sum of the size of the initial complete version
                 and the sizes of the file differences involved in
                 reconstructing the requested version. In contrast, the
                 classical scheme for reconstructing versions takes time
                 proportional to the sum of the sizes of the sequence of
                 versions involved in the reconstruction, and therefore
                 has a worst-case time that is quadratic in the sum of
                 the size of the initial complete version and the sizes
                 of the file differences. The time cost of the new
                 differential file generation scheme is comparable to
                 the time cost of the classical differential file
                 generation scheme.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf H.2.5}: Information Systems, DATABASE MANAGEMENT,
                 Heterogeneous Databases, Program translation. {\bf
                 H.3.2}: Information Systems, INFORMATION STORAGE AND
                 RETRIEVAL, Information Storage, File organization. {\bf
                 H.2.1}: Information Systems, DATABASE MANAGEMENT,
                 Logical Design. {\bf H.2.0}: Information Systems,
                 DATABASE MANAGEMENT, General, Security, integrity, and
                 protection. {\bf H.2.5}: Information Systems, DATABASE
                 MANAGEMENT, Heterogeneous Databases, Data translation.
                 {\bf D.2.7}: Software, SOFTWARE ENGINEERING,
                 Distribution and Maintenance.",
}

@Article{Rao:1994:RAP,
  author =       "Josyula R. Rao",
  title =        "Reasoning about Probabilistic Parallel Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "798--842",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177724.html",
  abstract =     "The use of randomization in the design and analysis of
                 algorithms promises simple and efficient algorithms to
                 difficult problems, some of which may not have a
                 deterministic solution. This gain in simplicity,
                 efficiency, and solvability results in a trade-off of
                 the traditional notion of absolute correctness of
                 algorithms for a more quantitative notion: correctness
                 with a probability between 0 and 1. The addition of the
                 notion of parallelism to the already unintuitive idea
                 of randomization makes reasoning about probabilistic
                 parallel programs all the more tortuous and
                 difficult.\par

                 In this paper we address the problem of specifying and
                 deriving properties of probabilistic parallel programs
                 that either hold deterministically or with probability
                 1. We present a proof methodology based on existing
                 proof systems for probabilistic algorithms, the theory
                 of the predicate transformer, and the theory of UNITY.
                 Although the proofs of probabilistic programs are
                 slippery at best, we show that such programs can be
                 derived with the same rigor and elegance that we have
                 seen in the derivation of sequential and parallel
                 programs. By applying this methodology to derive
                 probabilistic programs, we hope to develop tools and
                 techniques that would make randomization a useful
                 paradigm in algorithm design.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming,
                 Parallel programming. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Correctness proofs.
                 {\bf D.2.10}: Software, SOFTWARE ENGINEERING, Design,
                 Methodologies. {\bf G.3}: Mathematics of Computing,
                 PROBABILITY AND STATISTICS, Probabilistic algorithms
                 (including Monte Carlo).",
}

@Article{Grumberg:1994:MCM,
  author =       "Orna Grumberg and David E. Long",
  title =        "Model Checking and Modular Verification",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "843--871",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177725.html",
  abstract =     "We describe a framework for compositional verification
                 of finite-state processes. The framework is based on
                 two ideas: a subset of the logic CTL for which
                 satisfaction is preserved under composition, and a
                 preorder on structures which captures the relation
                 between a component and a system containing the
                 component. Satisfaction of a formula in the logic
                 corresponds to being below a particular structure (a
                 tableau for the formula) in the preorder. We show how
                 to do assume-guarantee-style reasoning within this
                 framework. Additionally, we demonstrate efficient
                 methods for model checking in the logic and for
                 checking the preorder in several special cases. We have
                 implemented a system based on these methods, and we use
                 it to give a compositional verification of a CPU
                 controller.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Computer-aided software engineering (CASE).
                 {\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Decision tables. {\bf D.2.4}: Software,
                 SOFTWARE ENGINEERING, Program Verification. {\bf
                 F.1.1}: Theory of Computation, COMPUTATION BY ABSTRACT
                 DEVICES, Models of Computation, Relations among
                 models.",
}

@Article{Lamport:1994:TLA,
  author =       "Leslie Lamport",
  title =        "The Temporal Logic of Actions",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "872--923",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177726.html",
  abstract =     "The temporal logic of actions (TLA) is a logic for
                 specifying and reasoning about concurrent systems.
                 Systems and their properties are represented in the
                 same logic, so the assertion that a system meets its
                 specification and the assertion that one system
                 implements another are both expressed by logical
                 implication. TLA is very simple; its syntax and
                 complete formal semantics are summarized in about a
                 page. Yet, TLA is not just a logician's toy; it is
                 extremely powerful, both in principle and in practice.
                 This report introduces TLA and describes how it is used
                 to specify and verify concurrent algorithms. The use of
                 TLA to specify and reason about open systems will be
                 described elsewhere.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs.",
}

@Article{Broy:1994:AFC,
  author =       "Manfred Broy and Greg Nelson",
  title =        "Adding Fair Choice to {Dijkstra}'s Calculus",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "924--938",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177727.html",
  abstract =     "The paper studies the incorporation of a fair
                 nondeterministic choice operator into a generalization
                 of Dijkstra's calculus of guarded commands. The
                 generalization drops the law of the excluded miracle to
                 allow commands that correspond to partial relations.
                 Because of fairness, the new operator is not monotonic
                 for the orderings that are generally used for proving
                 the existence of least fixed points for recursive
                 definitions. To prove the existence of fixed points it
                 is necessary to consider several orderings at once, and
                 to restrict the class of recursive definitions.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Alternation and
                 nondeterminism.",
}

@Article{Afek:1994:BFF,
  author =       "Yehuda Afek and Danny Dolev and Eli Gafni and Michael
                 Merritt and Nir Shavit",
  title =        "A Bounded First-In, First-Enabled Solution to the
                 $\ell$-Exclusion Problem",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "939--953",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177731.html",
  abstract =     "This article presents a solution to the first-come,
                 first-enabled $\ell$-exclusion problem of Fischer et
                 al. [1979]. Unlike their solution, this solution does
                 not use powerful read-modify-write synchronization
                 primitives and requires only bounded shared memory. Use
                 of the concurrent timestamp system of Dolev and Shavir
                 [1989] is key in solving the problem within bounded
                 shared memory.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; reliability",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Mutual exclusion.",
}

@Article{Joung:1994:CFO,
  author =       "Yuh-Jzer Joung and Scott A. Smolka",
  title =        "Coordinating First-Order Multiparty Interactions",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "954--985",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177739.html",
  abstract =     "A {\em first-order multiparty interaction\/} is an
                 abstraction mechanism that defines communication among
                 a set of {\em formal process roles}. Actual processes
                 participate in a first-order interaction by {\em
                 enroling\/} into roles, and execution of the
                 interaction can proceed when all roles are filled by
                 distinct processes. As in CSP, enrolement statements
                 can serve as guards in alternative commands. The {\em
                 enrolement guard-scheduling problem\/} then is to
                 enable the execution of first-order interactions
                 through the judicious scheduling of roles to processes
                 that are currently ready to execute enrolement
                 guards.\par

                 We present a fully distributed and message-efficient
                 algorithm for the enrolement guard-scheduling problem,
                 the first such solution of which we are aware. We also
                 describe several extensions of the algorithm,
                 including: {\em generic roles; dynamically changing
                 environments}, where processes can be created and
                 destroyed at run time; and {\em nested-enrolement},
                 which allows interactions to be nested.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Synchronization. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Scheduling. {\bf
                 D.1.3}: Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Concurrent
                 programming structures. {\bf D.4.4}: Software,
                 OPERATING SYSTEMS, Communications Management,
                 Input/Output. {\bf D.4.7}: Software, OPERATING SYSTEMS,
                 Organization and Design, Distributed systems.",
}

@Article{Reiter:1994:HSR,
  author =       "Michael K. Reiter and Kenneth P. Birman",
  title =        "How to Securely Replicate Services",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "986--1009",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177745.html",
  abstract =     "We present a method for constructing replicated
                 services that retain their availability and integrity
                 despite several servers and clients being corrupted by
                 an intruder, in addition to others failing benignly. We
                 also address the issue of maintaining a causal order
                 among client requests. We illustrate a security breach
                 resulting from an intruder's ability to effect a
                 violation of causality in the sequence of requests
                 processed by the service and propose an approach to
                 counter this attack. An important and novel feature of
                 our techniques is that the client need not be able to
                 identify or authenticate even a single server. Instead,
                 the client is required to possess only a single public
                 key for the service. We demonstrate the performance of
                 our techniques with a service we have implemented using
                 one of our protocols.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "reliability; security",
  subject =      "{\bf D.4.5}: Software, OPERATING SYSTEMS, Reliability,
                 Fault-tolerance. {\bf C.2.0}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS, General,
                 Security and protection. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems. {\bf D.4.5}: Software, OPERATING
                 SYSTEMS, Reliability, Fault-tolerance. {\bf D.4.6}:
                 Software, OPERATING SYSTEMS, Security and Protection,
                 Authentication. {\bf D.4.6}: Software, OPERATING
                 SYSTEMS, Security and Protection, Cryptographic
                 controls. {\bf K.6.5}: Computing Milieux, MANAGEMENT OF
                 COMPUTING AND INFORMATION SYSTEMS, Security and
                 Protection, Authentication.",
}

@Article{Heering:1994:LIP,
  author =       "J. Heering and P. Klint and J. Rekers",
  title =        "Lazy and Incremental Program Generation",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "1010--1023",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177750.html",
  abstract =     "Current program generators usually operate in a {\em
                 greedy\/} manner in the sense that a program must be
                 generated in its entirety before it can be used. If
                 generation time is scarce, or if the input to the
                 generator is subject to modification, it may be better
                 to be more cautious and to generate only those parts of
                 the program that are indispensable for processing the
                 particular data at hand. We call this {\em lazy program
                 generation}. Another, closely related strategy is {\em
                 incremental program generation}. When its input is
                 modified, an incremental generator will try to make a
                 corresponding modification in its output rather than
                 generate a completely new program. It may be
                 advantageous to use a combination of both strategies in
                 program generators that have to operate in a highly
                 dynamic and/or interactive environment.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance",
  subject =      "{\bf D.1.2}: Software, PROGRAMMING TECHNIQUES,
                 Automatic Programming. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Parsing. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators.",
}

@Article{Thorup:1994:CGA,
  author =       "Mikkel Thorup",
  title =        "Controlled Grammatic Ambiguity",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "1024--1050",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177759.html",
  abstract =     "A new approach to ambiguity of context-free grammars
                 is presented, and within this approach the LL and LR
                 techniques are generalized to solve the following
                 problems for large classes of ambiguous
                 grammars:\par

                 \begin{itemize} \item Construction of a parser that
                 accepts all sentences generated by the grammar, and
                 which always terminates in linear time.\par

                 \item Identification of the structural ambiguity: a
                 finite set of pairs of partial parse trees is
                 constructed; if for each pair the two partial parse
                 trees are semantically equivalent, the ambiguity of the
                 grammar is semantically irrelevant.\par

                 \end{itemize} The user may control the parser
                 generation so as to get a parser which finds some
                 specific parse trees for the sentences. The generalized
                 LL and LR techniques will still guarantee that the
                 resulting parser accepts all sentences and terminates
                 in linear time on all input.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages.",
}

@Article{Bates:1994:RSL,
  author =       "Joseph Bates and Alon Lavie",
  title =        "Recognizing Substrings of {LR$(k)$} Languages in
                 Linear Time",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "3",
  pages =        "1051--1077",
  month =        may,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177768.html",
  abstract =     "LR parsing techniques have long been studied as being
                 efficient and powerful methods for processing
                 context-free languages. A linear-time algorithm for
                 recognizing languages representable by LR(k) grammars
                 has long been known. Recognizing substrings of a
                 context-free language is at least as hard as
                 recognizing full strings of the language, since the
                 latter problem easily reduces to the former. In this
                 article we present a linear-time algorithm for
                 recognizing substrings of LR(k) languages, thus showing
                 that the substring recognition problem for these
                 languages is no harder than the full string recognition
                 problem. An interesting data structure, the
                 Forest-Structured Stack, allows the algorithm to track
                 all possible parses of a substring without loosing the
                 efficiency of the original LR parser. We present the
                 algorithm, prove its correctness, analyze its
                 complexity, and mention several applications that have
                 been constructed.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf F.4.2}: Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Grammars and Other Rewriting
                 Systems, Parsing. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Parsing.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Grammar types. {\bf F.4.3}:
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Formal Languages, Classes defined by
                 grammars or automata.",
}

@Article{Appel:1994:E,
  author =       "Andrew Appel and Charles Fischer",
  title =        "Editorial",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1079--1079",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "Compiler/TOPLAS.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bossi:1994:TAP,
  author =       "Annalisa Bossi and Sandro Etalle",
  title =        "Transforming Acyclic Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1081--1096",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183434.html",
  abstract =     "An unfold/fold transformation system is a
                 source-to-source rewriting methodology devised to
                 improve the efficiency of a program. Any such
                 transformation should preserve the main properties of
                 the initial program: among them, termination. In the
                 field of logic programming, the class of acyclic
                 programs plays an important role in this respect, since
                 it is closely related to the one of terminating
                 programs. The two classes coincide when negation is not
                 allowed in the bodies of the clauses.\par

                 We prove that the Unfold/Fold transformation system
                 defined by Tamaki and Sato preserves the acyclicity of
                 the initial program. From this result, it follows that
                 when the transformation is applied to an acyclic
                 program, then the finite failure set for definite
                 programs is preserved; in the case of normal programs,
                 all major declarative and operational semantics are
                 preserved as well. These results cannot be extended to
                 the class of left-terminating programs without
                 modifying the definition of the transformation.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf F.4.1}: Theory
                 of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Logic programming. {\bf
                 I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf I.2.3}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Deduction and Theorem Proving,
                 Logic programming.",
}

@Article{Choi:1994:SSP,
  author =       "Jong-Deok Choi and Jeanne Ferrante",
  title =        "Static Slicing in the Presence of Goto Statements",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1097--1113",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183438.html",
  abstract =     "A static program slice is an extract of a program
                 which can help our understanding of the behavior of the
                 program; it has been proposed for use in debugging,
                 optimization, parallelization, and integration of
                 programs. This article considers two types of static
                 slices: executable and nonexecutable. Efficient and
                 well-founded methods have been developed to construct
                 executable slices for programs without goto statements;
                 it would be tempting to assume these methods would
                 apply as well in programs with arbitrary goto
                 statements. We show why previous methods do not work in
                 this more general setting, and describe our solutions
                 that correctly and efficiently compute executable
                 slices for programs even with arbitrary goto
                 statements. Our conclusion is that goto statements can
                 be accommodated in generating executable static
                 slices.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments.",
}

@Article{Wolfe:1994:DDD,
  author =       "Michael Wolfe",
  title =        "The Definition of Dependence Distance",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1114--1116",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183440.html",
  abstract =     "Several definitions of dependence distance can be
                 found in the literature. A single coherent definition
                 is the vector distance between the iteration vectors of
                 two iterations involved in a dependence relation.
                 Different ways to associate iteration vectors with
                 iterations can give different dependence distances to
                 the same program, and have different advantages.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Knoop:1994:OCM,
  author =       "Jens Knoop and Oliver {R\"uthing} and Bernhard
                 Steffen",
  title =        "Optimal Code Motion: Theory and Practice",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1117--1155",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183443.html",
  abstract =     "An implementation-oriented algorithm for {\em lazy
                 code motion\/} is presented that minimizes the number
                 of computations in programs while suppressing any
                 unnecessary code motion in order to avoid superfluous
                 register pressure. In particular, this variant of the
                 original algorithm for lazy code motion works on
                 flowgraphs whose nodes are basic blocks rather than
                 single statements, since this format is standard in
                 optimizing compilers. The theoretical foundations of
                 the modified algorithm are given in the first part,
                 where $t$-refined flowgraphs are introduced for
                 simplifying the treatment of flow graphs whose nodes
                 are basic blocks. The second part presents the ``basic
                 block'' algorithm in standard notation and gives
                 directions for its implementation in standard compiler
                 environments.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf F.2.2}: Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems.",
}

@Article{Freudenberger:1994:ASC,
  author =       "Stefan Freudenberger and Thomas R. Gross and P.
                 Geoffrey Lowney",
  title =        "Avoidance and Suppression of Compensation Code in a
                 Trace Scheduling Compiler",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1156--1214",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183446.html",
  abstract =     "Trace scheduling is an optimization technique that
                 selects a sequence of basic blocks as a trace and
                 schedules the operations from the trace together. If an
                 operation is moved across basic block boundaries, one
                 or more compensation copies may be required in the
                 off-trace code. This article discusses the generation
                 of compensation code in a trace scheduling compiler and
                 presents techniques for limiting the amount of
                 compensation code: avoidance (restricting code motion
                 so that no compensation code is required) and
                 suppression (analyzing the global flow of the program
                 to detect when a copy is redundant). We evaluate the
                 effectiveness of these techniques based on measurements
                 for the SPEC89 suite and the Livermore Fortran Kernels,
                 using our implementation of trace scheduling for a
                 Multiflow Trace 7/300. The article compares different
                 compiler models contrasting the performance of trace
                 scheduling with the performance obtained from typical
                 RISC compilation techniques.\par

                 There are two key results of this study. First, the
                 amount of compensation code generated is not large. For
                 the SPEC89 suite, the average code size increase due to
                 trace scheduling is 6\%. Avoidance is more important
                 than suppression, although there are some kernels that
                 benefit significantly from compensation code
                 suppression. Since compensation code is not a major
                 issue, a compiler can be more aggressive in code motion
                 and loop unrolling. Second, compensation code is not
                 critical to obtain the benefits of trace scheduling.
                 Our implementation of trace scheduling improves the
                 SPEC mark rating by 30\% over basic block scheduling,
                 but restricting trace scheduling so that no
                 compensation code is required improves the rating by
                 25\%. This indicates that most basic block scheduling
                 techniques can be extended to trace scheduling without
                 requiring any complicated compensation code
                 bookkeeping.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers.",
}

@Article{Hannan:1994:OSD,
  author =       "John Hannan",
  title =        "Operational Semantics-Directed Compilers and Machine
                 Architectures",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1215--1247",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183458.html",
  abstract =     "We consider the task of automatically constructing
                 intermediate-level machine architectures and compilers
                 generating code for these architectures, given
                 operational semantics for source languages. We use
                 operational semantics in the form of abstract machines
                 given by rewrite systems in which the rewrite rules
                 operate on terms representing states of computations.
                 To construct compilers and new architectures we employ
                 a particular strategy called pass separation, a form of
                 staging transformation, that takes a program $p$ and
                 constructs a pair of programs $p_{1}, p_{2}$ such that
                 $p(x, y) = p_{2}(p_{1}(x), y)$ for all $x,y$. If $p$
                 represents an operational semantics for a language,
                 with arguments $x$ and $y$ denoting a source program
                 and its input data, then pass separation constructs
                 programs $p_{1}$ and $p_{2}$ corresponding to a
                 compiler and an executor.\par

                 The compiler translates the source language into an
                 intermediate-level target language, and the executor
                 provides the definition for this language. Our use of
                 pass separation supports the automatic definition of
                 target languages or architectures, and the structure of
                 these architectures is directed by the structure of the
                 given source semantics. These architectures resemble
                 abstract machine languages found in hand-crafted
                 compilers. Our method is restricted to a limited class
                 of abstract machines given as term-rewriting systems,
                 but we argue that this class encompasses a large set of
                 language definitions derived from more natural
                 operational semantics. We provide two examples of our
                 method by constructing compilers and target
                 architectures for a simple functional language and a
                 simple imperative language. Though we construct these
                 architectures automatically, they bear a striking
                 resemblance to existing architectures constructed by
                 hand.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages,
                 Operational semantics.",
}

@Article{Pugh:1994:SAU,
  author =       "William Pugh and David Wonnacott",
  title =        "Static Analysis of Upper and Lower Bounds on
                 Dependences and Parallelism",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1248--1278",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183525.html",
  abstract =     "Existing compilers often fail to parallelize
                 sequential code, even when a program can be manually
                 transformed into parallel form by a sequence of
                 well-understood transformations (as in the case for
                 many of the Perfect Club Benchmark programs). These
                 failures can occur for several reasons: the code
                 transformations implemented in the compiler may not be
                 sufficient to produce parallel code, the compiler may
                 not find the proper sequence of transformations, or the
                 compiler may not be able to prove that one of the
                 necessary transformations is legal.\par

                 When a compiler fails to extract sufficient parallelism
                 from a program, the programmer may try to extract
                 additional parallelism. Unfortunately, the programmer
                 is typically left to search for parallelism without
                 significant assistance. The compiler generally does not
                 give feedback about which parts of the program might
                 contain additional parallelism, or about the types of
                 transformations that might be needed to realize this
                 parallelism. Standard program transformations and
                 dependence abstractions cannot be used to provide this
                 feedback.\par

                 In this paper, we propose a two-step approach to the
                 search for parallelism in sequential programs. In the
                 first step, we construct several sets of constraints
                 that describe, for each statement, which iterations of
                 that statement can be executed concurrently. By
                 constructing constraints that correspond to different
                 assumptions about which dependences might be eliminated
                 through additional analysis, transformations, and user
                 assertions, we can determine whether we can expose
                 parallelism by eliminating dependences. In the second
                 step of our search for parallelism, we examine these
                 constraint sets to identify the kinds of
                 transformations needed to exploit scalable parallelism.
                 Our tests will identify conditional parallelism and
                 parallelism that can be exposed by combinations of
                 transformations that reorder the iteration space (such
                 as loop interchange and loop peeling).\par

                 This approach lets us distinguish inherently sequential
                 code from code that contains unexploited parallelism.
                 It also produces information about the kinds of
                 transformations needed to parallelize the code, without
                 worrying about the order of application of the
                 transformations. Furthermore, when our dependence test
                 is inexact we can identify which unresolved dependences
                 inhibit parallelism by comparing the effects of
                 assuming dependence or independence. We are currently
                 exploring the use of this information in
                 programmer-assisted parallelization.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Ait-Kaci:1994:FPC,
  author =       "Hassan A{\"\i}t-Kaci and Andreas Podelski",
  title =        "Functions as Passive Constraints in {LIFE}",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1279--1318",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183526.html",
  abstract =     "LIFE is a programming language proposing to integrate
                 logic programming, functional programming, and
                 object-oriented programming. It replaces first-order
                 terms with [psi]-terms, data structures that allow
                 computing with partial information. These are
                 approximation structures denoting sets of values. LIFE
                 further enriches the expressiveness of [psi]-terms with
                 functional dependency constraints. We must explain the
                 meaning and use of functions in LIFE declaratively, as
                 solving partial information constraints. These
                 constraints do not attempt to generate their solutions
                 but behave as demons filtering out anything else. In
                 this manner, LIFE functions act as declarative
                 coroutines. We need to show that the [psi]-term's
                 approximation semantics is congruent with an
                 operational semantics viewing functional reduction as
                 an effective enforcing of passive constraints. In this
                 article, we develop a general formal framework for
                 entailment and disentailment of constraints based on a
                 technique called relative simplification. We study its
                 operational and semantical properties, and we use it to
                 account for functional application over [psi]-terms in
                 LIFE.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Syntax. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Concurrent,
                 distributed, and parallel languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nonprocedural languages. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Concurrent programming structures. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Coroutines. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Data types and structures. {\bf E.1}:
                 Data, DATA STRUCTURES, Graphs. {\bf E.1}: Data, DATA
                 STRUCTURES, Trees. {\bf D.1.0}: Software, PROGRAMMING
                 TECHNIQUES, General.",
}

@Article{Ball:1994:OPT,
  author =       "Thomas Ball and James R. Larus",
  title =        "Optimally Profiling and Tracing Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1319--1360",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183527.html",
  abstract =     "This paper describes algorithms for inserting
                 monitoring code to profile and trace programs. These
                 algorithms greatly reduce the cost of measuring
                 programs with respect to the commonly used technique of
                 placing code in each basic block. Program profiling
                 counts the number of times each basic block in a
                 program executes. Instruction tracing records the
                 sequence of basic blocks traversed in a program
                 execution. The algorithms optimize the placement of
                 counting/tracing code with respect to the expected or
                 measured frequency of each block or edge in a program's
                 control-flow graph. We have implemented the algorithms
                 in a profiling/tracing tool, and they substantially
                 reduce the overhead of profiling and tracing.\par

                 We also define and study the hierarchy of profiling
                 problems. These problems have two dimensions: what is
                 profiled (i.e., vertices (basic blocks) or edges in a
                 control-flow graph) and where the instrumentation code
                 is placed (in blocks or along edges). We compare the
                 optimal solutions to the profiling problems and
                 describe a new profiling problem: basic-block profiling
                 with edge counters. This problem is important because
                 an optimal solution to any other profiling problem (for
                 a given control-flow graph) is never better than an
                 optimal solution to this problem. Unfortunately,
                 finding an optimal placement of edge counters for
                 vertex profiling appears to be a hard problem in
                 general. However, our work shows that edge profiling
                 with edge counters works well in practice because it is
                 simple and efficient and finds optimal counter
                 placements in most cases. Furthermore, it yields more
                 information than a vertex profile. Tracing also
                 benefits from placing instrumentation code along edges
                 rather than on vertices.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; measurement",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Tracing. {\bf C.4}: Computer Systems
                 Organization, PERFORMANCE OF SYSTEMS, Measurement
                 techniques. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Programmer
                 workbench. {\bf D.2.5}: Software, SOFTWARE ENGINEERING,
                 Testing and Debugging, Diagnostics.",
}

@Article{Brogi:1994:MLP,
  author =       "Antonio Brogi and Paolo Mancarella and Dino Pedreschi
                 and Franco Turini",
  title =        "Modular Logic Programming",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "4",
  pages =        "1361--1398",
  month =        jul,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/183528.html",
  abstract =     "Modularity is a key issue in the design of modern
                 programming languages. When designing modular features
                 for declarative languages in general, and for logic
                 programming languages in particular, the challenge lies
                 in avoiding the superimposition of a complex syntactic
                 and semantic structure over the simple structure of the
                 basic language. The modular framework defined here for
                 logic programming consists of a small number of
                 operations over modules which are (meta-) logically
                 defined and semantically justified in terms of the
                 basic logic programming semantics. The operations enjoy
                 a number of algebraic properties, thus yielding an
                 algebra of modules. Despite its simplicity, the suite
                 of operations is shown capable of capturing the core
                 features of modularization: information hiding,
                 import/export relationships, and construction of module
                 hierarchies. A metalevel implementation and a
                 compilation-oriented implementation of the operations
                 are provided and proved sound with respect to the
                 semantics. The compilation-oriented implementation is
                 based on manipulation of name spaces and provides the
                 basis for an efficient implementation.",
  acknowledgement = ack-nhfb # " and " # ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques, Modules and
                 interfaces. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Modules,
                 packages. {\bf F.3.2}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Logic programming.",
}

@Article{Ball:1994:ECP,
  author =       "Thomas Ball",
  title =        "Efficiently Counting Program Events with Support for
                 On-Line Queries",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1399--1410",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186027.html",
  abstract =     "The ability to count events in a program's execution
                 is required by many program analysis applications. We
                 represent an instrumentation method for efficiently
                 counting events in a program's execution, with support
                 for on-line queries of the event count. Event counting
                 differs from basic block profiling in that an aggregate
                 count of events is kept rather than a set of counters.
                 Due to this difference, solutions to basic block
                 profiling are not well suited to event counting. Our
                 algorithm finds a subset of points in a program to
                 instrument, while guaranteeing that accurate event
                 counts can be obtained efficiently at every point in
                 the execution.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf C.4}: Computer Systems Organization, PERFORMANCE
                 OF SYSTEMS, Measurement techniques. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques.",
}

@Article{Laufer:1994:PTI,
  author =       "Konstantin L{\"a}ufer and Martin Odersky",
  title =        "Polymorphic Type Inference and Abstract Data Types",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1411--1430",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186031.html",
  abstract =     "Many statically typed programming languages provide an
                 abstract data type construct, such as the module in
                 Modula-2. However, in most of these languages,
                 implementations of abstract data types are not
                 first-class values. Thus, they cannot be assigned to
                 variables, passed as function parameters, or returned
                 as function results. Several higher-order functional
                 languages feature strong and static type systems,
                 parametric polymorphism, algebraic data types, and
                 explicit type variables. Most of them rely on
                 Hindley-Milner type inference instead of requiring
                 explicit type declarations for identifiers. Although
                 some of these languages support abstract data types, it
                 appears that none of them directly provides
                 light-weight abstract data types whose implementations
                 are first-class values. We show how to add significant
                 expressive power to statically typed functional
                 languages with explicit type variables by incorporating
                 first-class abstract types as an extension of algebraic
                 data types. Furthermore, we extend record types to
                 allow abstract components. The components of such
                 abstract records are selected using the dot notation.
                 Following Mitchell and Plotkin, we formalize abstract
                 types in terms of existentially quantified types. We
                 give a syntactically sound and complete type inference
                 algorithm and prove that our type system is
                 semantically sound with respect to standard
                 denotational semantics.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Modules, packages. {\bf
                 F.3.2}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Type structure. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf F.3.3}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs, Type structure.",
}

@Article{Ashley:1994:FCP,
  author =       "J. Michael Ashley and Charles Consel",
  title =        "Fixpoint Computation for Polyvariant Static Analyses
                 of Higher-Order Applicative Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1431--1448",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186037.html",
  abstract =     "This paper presents an optimized general-purpose
                 algorithm for polyvariant, static analyses of
                 higher-order applicative programs. A polyvariant
                 analysis is a very accurate form of analysis that
                 produces many more abstract descriptions for a program
                 than does a conventional analysis. It may also compute
                 intermediate abstract descriptions that are irrelevant
                 to the final result of the analysis. The optimized
                 algorithm addresses this overhead while preserving the
                 accuracy of the analysis. The algorithm is also
                 parameterized over both the abstract domain and degree
                 of polyvariance. We have implemented an instance of our
                 algorithm and evaluated its performance compared to the
                 unoptimized algorithm. Our implementation runs
                 significantly faster on average than the other
                 algorithm for benchmarks reported here.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing.",
}

@Article{Beemster:1994:SOG,
  author =       "Marcel Beemster",
  title =        "Strictness Optimization for Graph Reduction Machines
                 ({Why} id Might Not Be Strict)",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1449--1466",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186040.html",
  abstract =     "Strictness optimizations in the implementation of lazy
                 functional languages are not always valid. In
                 nonoptimized graph reduction, evaluation always takes
                 place at the request of case analysis or a primitive
                 operation. Hence, the result of a reduction is always a
                 data value and never a function. This implies that in
                 an implementation no argument satisfaction check is
                 required. But in the presence of strict arguments,
                 ``premature'' reduction may take place outside the
                 scope of a case or primitive operation. This causes
                 problems in graph reducers that use an {\em aggressive
                 take}. Two solutions are presented, one based on a
                 run-time argument satisfaction check, the other on a
                 weakened strictness analyzer. Experimental results are
                 used to compare the two solutions and show that the
                 cost of the aggressive take can be arbitrarily high for
                 specific programs. The experimental results enable a
                 trade-off to be made by the reduction machine
                 designer.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative languages. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Run-time
                 environments. {\bf F.1.1}: Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Models of Computation,
                 Relations among models.",
}

@Article{Ramalingam:1994:UA,
  author =       "G. Ramalingam",
  title =        "The Undecidability of Aliasing",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1467--1471",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186041.html",
  abstract =     "Alias analysis is a prerequisite for performing most
                 of the common program analyses such as
                 reaching-definitions analysis or live-variables
                 analysis. Landi [1992] recently established that it is
                 impossible to compute statically precise alias
                 information---either may-alias or must-alias---in
                 languages with if statements, loops, dynamic storage,
                 and recursive data structures: more precisely, he
                 showed that the may-alias relation is not recursive,
                 while the must-alias relation is not even recursively
                 enumerable. This article presents simpler proofs of the
                 same results.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 F.4.1}: Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Mathematical Logic, Computability
                 theory. {\bf F.4.3}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Formal
                 Languages, Decision problems. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Procedures, functions, and subroutines.",
}

@Article{Khedker:1994:GTB,
  author =       "Uday P. Khedker and Dhananjay M. Dhamdhere",
  title =        "A Generalized Theory of Bit Vector Data Flow
                 Analysis",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1472--1511",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186043.html",
  abstract =     "The classical theory of data flow analysis, which has
                 its roots in unidirectional flows, is inadequate to
                 characterize bidirectional data flow problems. We
                 present a generalized theory of bit vector data flow
                 analysis which explains the known results in
                 unidirectional and bidirectional data flows and
                 provides a deeper insight into the process of data flow
                 analysis. Based on the theory, we develop a
                 worklist-based generic algorithm which is uniformly
                 applicable to unidirectional and bidirectional data
                 flow problems. It is simple, versatile, and easy to
                 adapt for a specific problem. We show that the theory
                 and the algorithm are applicable to all bounded
                 monotone data flow problems which possess the property
                 of the separability of solution.\par

                 The theory yields valuable information about the
                 complexity of data flow analysis. We show that the
                 complexity of worklist-based iterative analysis is the
                 same for unidirectional and bidirectional problems. We
                 also define a measure of the complexity of round-robin
                 iterative analysis. This measure, called {\em width},
                 is uniformly applicable to unidirectional and
                 bidirectional problems and provides a tighter bound for
                 unidirectional problems than the traditional measure of
                 {\em depth}. Other applications include explanation of
                 isolated results in efficient solution techniques and
                 motivation of new techniques for bidirectional flows.
                 In particular, we discuss edge splitting and edge
                 placement and develop a feasibility criterion for
                 decomposition of a bidirectional flow into a sequence
                 of unidirectional flows.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf F.2.2}: Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems,
                 Complexity of proof procedures. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Clarke:1994:MCA,
  author =       "Edmund M. Clarke and Orna Grumberg and David E. Long",
  title =        "Model Checking and Abstraction",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1512--1542",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186051.html",
  abstract =     "We describe a method for using abstraction to reduce
                 the complexity of temporal-logic model checking. Using
                 techniques similar to those involved in abstract
                 interpretation, we construct an abstract model of a
                 program without ever examining the corresponding
                 unabstracted model. We show how this abstract model can
                 be used to verify properties of the original program.
                 We have implemented a system based on these techniques,
                 and we demonstrate their practicality using a number of
                 examples, including a program representing a pipelined
                 ALU circuit with over $10^{1300}$ states.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 B.5.2}: Hardware, REGISTER-TRANSFER-LEVEL
                 IMPLEMENTATION, Design Aids, Verification. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory.",
}

@Article{Abadi:1994:OFR,
  author =       "Mart{\'\i}n Abadi and Leslie Lamport",
  title =        "An Old-Fashioned Recipe for Real Time",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1543--1571",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186058.html",
  abstract =     "Traditional methods for specifying and reasoning about
                 concurrent systems work for real-time systems. Using
                 TLA (the temporal logic of actions), we illustrate how
                 they work with the examples of a queue and of a
                 mutual-exclusion protocol. In general, two problems
                 must be addressed: avoiding the real-time programming
                 version of Zeno's paradox, and coping with
                 circularities when composing real-time
                 assumption/guarantee specifications. Their solutions
                 rest on properties of machine closure and
                 realizability.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs.",
}

@Article{Micallef:1994:EAG,
  author =       "Josephine Micallef and Gail E. Kaiser",
  title =        "Extending Attribute Grammers to Support
                 Programming-in-the-Large",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1572--1612",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186091.html",
  abstract =     "Attribute grammars add specification of static
                 semantic properties to context-free grammars, which, in
                 turn, describe the syntactic structure of program
                 units. However, context-free grammars cannot express
                 programming-in-the-large features common in modern
                 programming languages, including unordered collections
                 of units, included units, and sharing of included
                 units. We present extensions to context-free grammars,
                 and corresponding extensions to attribute grammars,
                 suitable for defining such features. We explain how
                 batch and incremental attribute-evaluation algorithms
                 can be adapted to support these extensions, resulting
                 in a uniform approach to intraunit and interunit static
                 semantic analysis and translation of multiunit
                 programs.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.2.6}: Software, SOFTWARE ENGINEERING,
                 Programming Environments, Interactive. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Syntax. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Modules, packages. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Translator writing systems and compiler generators.
                 {\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.2.3}:
                 Software, SOFTWARE ENGINEERING, Coding. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, GRAMPS.",
}

@Article{Breuer:1994:DET,
  author =       "Peter T. Breuer and Jonathan P. Bowen",
  title =        "Decompilation: The Enumeration of Types and Grammers",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1613--1647",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186093.html",
  abstract =     "While a compiler produces low-level object code from
                 high-level source code, a decompiler produces
                 high-level code from low-level code and has
                 applications in the testing and validation of
                 safety-critical software. The decompilation of an
                 object code provides an independent demonstration of
                 correctness that is hard to better for industrial
                 purposes (an alternative is to prove the compiler
                 correct). But, although compiler compilers are in
                 common use in the software industry, a decompiler
                 compiler is much more unusual.\par

                 It turns out that a data type specification for a
                 programming-language grammar can be remolded into a
                 functional program that enumerates all of the abstract
                 syntax trees of the grammar. This observation is the
                 springboard for a general method for compiling
                 decompilers from the specifications of (nonoptimizing)
                 compilers.\par

                 This paper deals with methods and theory, together with
                 an application of the technique. The correctness of a
                 decompiler generated from a simple occam-like compiler
                 specification is demonstrated. The basic problem of
                 enumerating the syntax trees of grammars, and then
                 stopping, is shown to have no recursive solution, but
                 methods of abstract interpretation can be used to
                 guarantee the adequacy and completeness of our
                 technique in practical instances, including the
                 decompiler for the language presented here.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf F.4.3}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Formal
                 Languages, Operations on languages. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming. {\bf D.1.6}: Software,
                 PROGRAMMING TECHNIQUES, Logic Programming. {\bf D.3.1}:
                 Software, PROGRAMMING LANGUAGES, Formal Definitions and
                 Theory, Semantics. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Syntax.",
}

@Article{Whalley:1994:AIC,
  author =       "David B. Whalley",
  title =        "Automatic Isolation of Compiler Errors",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "5",
  pages =        "1648--1659",
  month =        sep,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/186103.html",
  abstract =     "This paper describes a tool called {\em vpoiso\/} that
                 was developed to isolate errors automatically in the
                 {\em vpo\/} compiler system. The two general types of
                 compiler errors isolated by this tool are optimization
                 and nonoptimization errors. When isolating optimization
                 errors, {\em vpoiso\/} relies on the {\em vpo\/}
                 optimizer to identify sequences of changes, referred to
                 as transformations, that result in semantically
                 equivalent code and to provide the ability to stop
                 performing {\em improving\/} (or unnecessary)
                 transformations after a specified number have been
                 performed. A compilation of a typical program by {\em
                 vpo\/} often results in thousands of {\em improving\/}
                 transformations being performed. The {\em vpoiso\/}
                 tool can automatically isolate the first {\em
                 improving\/} transformation that causes incorrect
                 output of the execution of the compiled programs by
                 using a binary search that varies the number of {\em
                 improving\/} transformation performed. Not only is the
                 illegal transformation automatically isolated, but {\em
                 vpoiso\/} also identifies the location and instant the
                 transformation is performed in {\em vpo}.
                 Nonoptimization errors occur from problems in the front
                 end, code generator, and {\em necessary\/}
                 transformations in the optimizer. If another compiler
                 is available that can produce correct (but perhaps more
                 inefficient) code, then {\em vpoiso\/} can isolate
                 nonoptimization errors to a single function. Automatic
                 isolation of compiler errors facilitates retargeting a
                 compiler to a new machine, maintenance of the compiler,
                 and supporting experimentation with new
                 optimizations.",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Zic:1994:TBS,
  author =       "J. J. {\v{Z}}ic",
  title =        "Time-Constrained Buffer Specifications in {CSP+T} and
                 Timed {CSP}",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1661--1674",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197322.html",
  abstract =     "A finite buffer with time constraints on the rate of
                 accepting inputs, producing outputs, and message
                 latency is specified using both Timed CSP and a new
                 real-time specification language, CSP + T, which adds
                 expressive power to some of the sequential aspects of
                 CSP and allows the description of complex event timings
                 from within a single sequential process. On the other
                 hand, Timed CSP encourages event-timing descriptions to
                 be built up in a constraint-oriented manner with the
                 parallel composition of several processes. Although
                 these represent two complementary specification styles,
                 both provide valuable insights into the specification
                 of complex event timings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; performance",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Languages. {\bf B.4.4}:
                 Hardware, INPUT/OUTPUT AND DATA COMMUNICATIONS,
                 Performance Analysis and Design Aids, Formal models.",
}

@Article{Bohm:1994:TIP,
  author =       "A. P. W. B{\"o}hm and R. R. Oldehoeft",
  title =        "Two Issues in Parallel Language Design",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1675--1683",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197325.html",
  abstract =     "In this article, we discuss two programming language
                 features that have value for expressibility and
                 efficiency: nonstrictness and nondeterminism. Our work
                 arose while assessing ways to enhance a currently
                 successful language, SISAL [McGraw et al. 1985]. The
                 questions of how best to include these features, if at
                 all, has led not to conclusions but to an impetus to
                 explore the answers in an objective way. We will retain
                 strictness for efficiency reasons and explore the
                 limits it may impose, and we will experiment with a
                 carefully controlled form of nondeterminism to assess
                 its expressive power.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, SISAL. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Concurrent, distributed, and parallel languages. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures.",
}

@Article{Brandis:1994:SGS,
  author =       "M. M. Brandis and H. Moessenboeck",
  title =        "Single-Pass Generation of Static Single-Assignment
                 Form for Structured Languages",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1684--1698",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197331.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Code generation. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf E.1}: Data, DATA STRUCTURES,
                 Trees.",
}

@Article{Appel:1994:ABG,
  author =       "A. W. Appel",
  title =        "Axiomatic Bootstrapping: {A} Guide for Compiler
                 Hackers",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1699--1718",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197336.html",
  abstract =     "If a compiler for language $L$ is implemented in $L$,
                 then it should be able to compile itself. But for
                 systems used interactively commands are compiled and
                 immediately executed, and these commands may invoke the
                 compiler; so there is the question of how ever to
                 cross-compile for another architecture. Also, where the
                 compiler writes binary files of static type information
                 that must then be read in by the bootstrapped
                 interactive compiler, how can one ever change the
                 format of digested type information in binary
                 files?\par

                 Here I attempt an axiomatic clarification of the
                 bootstrapping technique, using {\em Standard ML of New
                 Jersey\/} as a case study. This should be useful to
                 implementors of any self-applicable interactive
                 compiler with nontrivial object-file and runtime-system
                 compatibility problems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "verification",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments, Interactive. {\bf D.4.9}: Software,
                 OPERATING SYSTEMS, Systems Programs and Utilities,
                 Linkers. {\bf D.4.9}: Software, OPERATING SYSTEMS,
                 Systems Programs and Utilities, Loaders.",
}

@Article{Haines:1994:CFT,
  author =       "N. Haines and D. Kindred and J. G. Morrisett and S. M.
                 Nettles",
  title =        "Composing First-Class Transactions",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1719--1736",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197346.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; reliability",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Modules, packages. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Procedures, functions, and subroutines. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Mutual
                 exclusion. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Synchronization. {\bf D.4.5}:
                 Software, OPERATING SYSTEMS, Reliability,
                 Fault-tolerance.",
}

@Article{Misra:1994:PSP,
  author =       "J. Misra",
  title =        "Powerlist: {A} Structure for Parallel Recursion",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1737--1767",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197356.html",
  abstract =     "Many data-parallel algorithms---Fast Fourier
                 Transform, Batcher's sorting schemes, and the
                 prefix-sum---exhibit recursive structure. We propose a
                 data structure called {\em powerlist\/} that permits
                 succinct descriptions of such algorithms, highlighting
                 the roles of both parallelism and recursion. Simple
                 algebraic properties of this data structure can be
                 exploited to derive properties of these algorithms and
                 to establish equivalence of different algorithms that
                 solve the same problem.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Recursion.
                 {\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Parallel programming.",
}

@Article{Carr:1994:IRM,
  author =       "S. Carr and K. Kennedy",
  title =        "Improving the Ratio of Memory Operations in
                 Floating-Point Operations in Loops",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1768--1810",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197366.html",
  abstract =     "Over the past decade, microprocessor design strategies
                 have focused on increasing the computational power on a
                 single chip. Because computations often require more
                 data from cache per floating-point operation than a
                 machine can deliver and because operations are
                 pipelined, idle computational cycles are common when
                 scientific applications are executed. To overcome these
                 bottlenecks, programmers have learned to use a coding
                 style that ensures a better balance between memory
                 references and floating-point operations. In our view,
                 this is a step in the wrong direction because it makes
                 programs more machine-specific. A programmer should not
                 be required to write a new program version for each new
                 machine; instead, the task of specializing a program to
                 a target machine should be left to the
                 compiler.\par

                 But is our view practical? Can a sophisticated
                 optimizing compiler obviate the need for the myriad of
                 programming tricks that have found their way into
                 practice to improve the performance of the memory
                 hierarchy? In this paper we attempt to answer that
                 question. To do so, we develop and evaluate techniques
                 that automatically restructure program loops to achieve
                 high performance on specific target architectures.
                 These methods attempt to balance computation and memory
                 accesses and seek to eliminate or reduce pipeline
                 interlock. To do this, they estimate statically the
                 balance between memory operations and floating-point
                 operations for each loop in a particular program and
                 use these estimates to determine whether to apply
                 various loop transformations.\par

                 Experiments with our automatic techniques show that
                 integer-factor speedups are possible on kernels.
                 Additionally, the estimate of the balance between
                 memory operations and computation, and the application
                 of the estimate are very accurate---experiments reveal
                 little difference between the balance achieved by our
                 automatic system that is made possible by hand
                 optimization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Liskov:1994:BNS,
  author =       "B. H. Liskov and J. M. Wing",
  title =        "A Behavioral Notion of Subtyping",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1811--1841",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197383.html",
  abstract =     "The use of hierarchy is an important component of
                 object-oriented design. Hierarchy allows the use of
                 type families, in which higher level supertypes capture
                 the behavior that all of their subtypes have in common.
                 For this methodology to be effective, it is necessary
                 to have a clear understanding of how subtypes and
                 supertypes are related. This paper takes the position
                 that the relationship should ensure that any property
                 proved about supertype objects also holds for its
                 subtype objects. It presents two ways of defining the
                 subtype relation, each of which meets this criterion,
                 and each of which is easy for programmers to use. The
                 subtype relation is based on the specifications of the
                 sub- and supertypes; the paper presents a way of
                 specifying types that makes it convenient to define the
                 subtype relation. The paper also discusses the
                 ramifications of this notion of subtyping on the design
                 of type families.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; verification",
  subject =      "{\bf D.2.1}: Software, SOFTWARE ENGINEERING,
                 Requirements/Specifications, Methodologies. {\bf
                 D.1.5}: Software, PROGRAMMING TECHNIQUES,
                 Object-oriented Programming. {\bf D.2.1}: Software,
                 SOFTWARE ENGINEERING, Requirements/Specifications,
                 Languages. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Invariants. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Type structure.",
}

@Article{VonBank:1994:UMP,
  author =       "D. G. {Von Bank} and C. M. Shub and R. W. Sebesta",
  title =        "A Unified Model of Pointwise Equivalence of Procedural
                 Computations",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1842--1874",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:59:06 1998",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197402.html",
  abstract =     "The execution of a program on a processor is viewed as
                 a representation of that program going through a
                 sequence of states. Each state change is manifested by
                 the execution of a single instruction. Models that
                 depend on this perspective are presented. The first is
                 a static model of a description of a procedural
                 computation. This model formalizes the description of
                 the information in an executable module. Following this
                 dynamic model of a procedural computation is given.
                 This second model describes how a computation
                 transitions from state to state and how the states of a
                 computation are represented. Next, the state of a
                 procedural computation is defined at certain
                 well-defined points in its progression. These points
                 represent potential points of correspondence to another
                 instance of the computation. Then, the equivalence of
                 these well-defined computation states is described.
                 This refinement eliminates the nonmatching potential
                 correspondences. The remaining points describe where
                 the two computations are in the same state. These are
                 precisely the points of equivalence of procedural
                 computations. This final model of pointwise equivalence
                 can be applied to the problem of migrating a
                 computation from one processor to another (possibly
                 architecturally dissimilar) processor.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf F.1.1}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Models of
                 Computation, Relations among models. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques.",
}

@Article{Berzins:1994:SMS,
  author =       "V. Berzins",
  title =        "Software Merge: Semantics of Combining Changes to
                 Programs",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1875--1903",
  month =        nov,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/197403.html",
  abstract =     "We present a language-independent semantic model of
                 the process of combining changes to programs. This
                 model extends the domains used in denotational
                 semantics (complete partial orders) to Boolean
                 algebras, and represents incompatible modifications as
                 well as compatible extensions. The model is used to
                 define the intended semantics of change-merging
                 operations on programs and to establish some general
                 properties of software merging. We determine conditions
                 under which changes to subprograms of a software system
                 can be merged independently and illustrate cases where
                 this is not possible.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Denotational semantics. {\bf D.2.7}:
                 Software, SOFTWARE ENGINEERING, Distribution and
                 Maintenance, Enhancement. {\bf D.2.7}: Software,
                 SOFTWARE ENGINEERING, Distribution and Maintenance,
                 Version control. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 modification. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 synthesis. {\bf I.2.2}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 transformation.",
}

@Article{Anonymous:1994:AI,
  author =       "Anonymous",
  title =        "1994 Author Index",
  journal =      j-TOPLAS,
  volume =       "16",
  number =       "6",
  pages =        "1904--1907",
  month =        oct,
  year =         "1994",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:21:36 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Larcheveque:1995:OIP,
  author =       "J.-M. Larchev{\^{e}}que",
  title =        "Optimal Incremental Parsing",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "1--15",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/200996.html",
  abstract =     "This communication sets the problem of incremental
                 parsing in the context of a complete incremental
                 compiling system. It turns out that, according to the
                 incrementally paradigm of the attribute evaluator and
                 data-flow analyzer to be used, two definitions of
                 optimal incrementality in a parser are possible.
                 Algorithms for achieving both forms of optimality are
                 given, both of them based on ordinary LALR(1) parse
                 tables. Optimality and correctness proofs, which are
                 merely outlined in this communication, are made
                 intuitive thanks to the concept of a {\em well-formed
                 list of threaded trees}, a natural extension of the
                 concept of {\em threaded tree\/} found in earlier works
                 on incremental parsing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments, Interactive.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf E.1}: Data, DATA
                 STRUCTURES, Trees.",
}

@Article{Tsay:1995:DFP,
  author =       "Yih-Kuen Tsay and Rajive L. Bagrodia",
  title =        "Deducing Fairness Properties in {UNITY} Logic --- {A}
                 New Completeness Result",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "16--27",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/200997.html",
  abstract =     "We explore the use of UNITY logic in specifying and
                 verifying fairness properties of UNITY and UNITY-like
                 programs whose semantics can be modeled by weakly fair
                 transition systems. For such programs, strong fairness
                 properties in the form of ``if $p$ holds infinitely
                 often then $q$ also holds infinitely often
                 $\Box\Diamond p\mapsto\Box\Diamond q$, can be expressed
                 as conditional UNITY properties of the form of
                 ``Hypothesis: {\em true\/} $\mapsto p$ Conclusion: {\em
                 true\/} $\mapsto q$''. We show that UNITY logic is
                 relatively complete for proving such properties; in the
                 process, a simple inference rule is derived.
                 Specification and verification of weak fairness
                 properties are also discussed.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs.",
}

@Article{Codish:1995:IAI,
  author =       "Michael Codish and Anne Mulkers and Maurice Bruynooghe
                 and Maria Garcia de la Banda and Manuel Hermenegildo",
  title =        "Improving Abstract Interpretations by Combining
                 Domains",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "28--44",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/200998.html",
  abstract =     "This article considers static analysis based on
                 abstract interpretation of logic programs over combined
                 domains. It is known that analyses over combined
                 domains provide more information potentially than
                 obtained by the independent analyses. However, the
                 construction of a combined analysis often requires
                 redefining the basic operations for the combined
                 domain. A practical approach to maintain precision in
                 combined analyses of logic programs which reuses the
                 individual analyses and does not redefine the basic
                 operations is illustrated. The advantages of the
                 approach are that (1) proofs of correctness for the new
                 domains are not required and (2) implementations can be
                 reused. The approach is demonstrated by showing that a
                 combined sharing analysis---constructed from ``old''
                 proposals---compares well with other ``new'' proposals
                 suggested in recent literature both from the point of
                 view of efficiency and accuracy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf F.3.1}: Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Assertions. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Invariants.",
}

@Article{Skudlarek:1995:NMI,
  author =       "Joseph P. Skudlarek",
  title =        "Notes on ``{A Methodology for Implementing Highly
                 Concurrent Data Objects}''",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "45--46",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/200999.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory",
  subject =      "{\bf D.1.0}: Software, PROGRAMMING TECHNIQUES,
                 General.",
}

@Article{Palsberg:1995:CAC,
  author =       "Jens Palsberg",
  title =        "Closure Analysis in Constraint Form",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "47--62",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201001.html",
  abstract =     "Flow analyses of untyped higher-order functional
                 programs have in the past decade been presented by
                 Ayers, Bondorf, Consel, Jones, Heintze, Sestoft,
                 Shivers, Steckler, Wand, and others. The analyses are
                 usually defined as abstract interpretations and are
                 used for rather different tasks such as type recovery,
                 globalization, and binding-time analysis. The analyses
                 all contain a global {\em closure analysis\/} that
                 computes information about higher-order control-flow.
                 Sestoft proved in 1989 and 1991 that closure analysis
                 is correct with respect to call-by-name and
                 call-by-value semantics, but it remained open if
                 correctness holds for arbitrary
                 beta-reduction.\par

                 This article answers the question; both closure
                 analysis and others are correct with respect to
                 arbitrary beta-reduction. We also prove a
                 subject-reduction result: closure information is still
                 valid after beta-reduction. The core of our proof
                 technique is to define closure analysis using a
                 constraint system. The constraint system is equivalent
                 to the closure analysis of Bondorf, which in turn is
                 based on Sestoft's.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf F.3.1}:
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Logics of programs. {\bf F.4.3}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Formal
                 Languages, Operations on languages. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Operational
                 semantics. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Optimization.",
}

@Article{Aiken:1995:SST,
  author =       "Alexander Aiken and John H. Williams and Edward L.
                 Wimmers",
  title =        "Safe: {A} Semantic Technique for Transforming Programs
                 in the Presence of Errors",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "63--84",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201002.html",
  abstract =     "Language designers and implementors have avoided
                 specifying and preserving the meaning of programs that
                 produce errors. This is apparently because being forced
                 to preserve error behavior limits severely the scope of
                 program optimization, even for correct programs.
                 However, error behavior preservation is desirable for
                 debugging, and error behavior must be preserved in any
                 language that permits user-generated errors (i.e.,
                 exceptions).\par

                 This article presents a technique for expressing
                 general program transformations for languages that
                 possess a rich collection of distinguishable error
                 values. This is accomplished by defining a higher-order
                 function called {\bf Safe}, which can be used to
                 annotate those portions of a program that are
                 guaranteed not to produce errors. It is shown that this
                 facilitates the expression of very general program
                 transformations, effectively giving program
                 transformations in a language with many error values
                 the same power and generality as program
                 transformations in a language with only a single error
                 value.\par

                 Using the semantic properties of {\bf Safe}, it is
                 possible to provide some useful sufficient conditions
                 for establishing the correctness of transformations in
                 the presence of errors. In particular, a
                 Substitutability theorem is proven, which can be used
                 to justify ``in-context'' optimizations:
                 transformations that alter the meanings of
                 subexpressions without changing the meaning of the
                 whole program. Finally, the effectiveness of the
                 technique is demonstrated by some examples of its use
                 in an optimizing compiler.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics.",
}

@Article{Gerlek:1995:BIV,
  author =       "Michael P. Gerlek and Eric Stoltz and Michael Wolfe",
  title =        "Beyond Induction Variables: Detecting and Classifying
                 Sequences Using a Demand-Driven {SSA} Form",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "85--122",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201003.html",
  abstract =     "Linear induction variable detection is usually
                 associated with the strength reduction optimization.
                 For restructuring compilers, effective data dependence
                 analysis requires that the compiler detect and
                 accurately describe linear and nonlinear induction
                 variables as well as more general sequences. In this
                 article we present a practical technique for detecting
                 a broader class of linear induction variables than is
                 usually recognized, as well as several other sequence
                 forms, including periodic, polynomial, geometric,
                 monotonic, and wrap-around variables. Our method is
                 based on Factored Use-Def (FUD) chains, a demand-driven
                 representation of the popular Static Single Assignment
                 (SSA) form. In this form, strongly connected components
                 of the associated SSA graph correspond to sequences in
                 the source program: we describe a simple yet efficient
                 algorithm for detecting and classifying these
                 sequences. We have implemented this algorithm in
                 Nascent, our restructuring Fortran 90+ compiler, and we
                 present some results showing the effectiveness of our
                 approach.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Chatterjee:1995:OEA,
  author =       "Siddhartha Chatterjee and John R. Gilbert and Robert
                 Schreiber and Shang-Hua Teng",
  title =        "Optimal Evaluation of Array Expressions on Massively
                 Parallel Machines",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "123--156",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201004.html",
  abstract =     "We investigate the problem of evaluating Fortran
                 90-style array expressions on massively parallel
                 distributed-memory machines. On such a machine, an
                 elementwise operation can be performed in constant time
                 for arrays whose corresponding elements are in the same
                 processor. If the arrays are not aligned in this
                 manner, the cost of aligning them is part of the cost
                 of evaluating the expression tree. The choice of where
                 to perform the operation then affects this cost.\par

                 We describe the communication cost of the parallel
                 machine theoretically as a metric space; we model the
                 alignment problem as that of finding a minimum-cost
                 embedding of the expression tree into this space. We
                 present algorithms based on dynamic programming that
                 solve the embedding problem optimally for several
                 communication cost metrics: multidimensional grids and
                 rings, hypercubes, fat-trees, and the discrete metric.
                 We also extend our approach to handle operations that
                 change the shape of the arrays.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf C.1.2}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors), Interconnection architectures. {\bf
                 C.1.2}: Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors), Single-instruction-stream,
                 multiple-data-stream processors (SIMD). {\bf C.1.2}:
                 Computer Systems Organization, PROCESSOR ARCHITECTURES,
                 Multiple Data Stream Architectures (Multiprocessors),
                 Multiple-instruction-stream, multiple-data-stream
                 processors (MIMD). {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf E.1}: Data, DATA STRUCTURES, Arrays.
                 {\bf G.2.2}: Mathematics of Computing, DISCRETE
                 MATHEMATICS, Graph Theory, Trees.",
}

@Article{Charron-Bost:1995:LTP,
  author =       "Bernadette Charron-Bost and Carole Delporte-Gallet and
                 Hugues Fauconnier",
  title =        "Local and Temporal Predicates in Distributed Systems",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "157--179",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201005.html",
  abstract =     "The definitions of the predicates Possibly $\phi$ and
                 Definitely $\phi$, where $\phi$ is a global predicate
                 of a distributed computation, lead to the definitions
                 of two predicate transformers $p$ and $D$. We show that
                 $p$ plays the same role with respect to {\em time\/} as
                 the predicate transformers $K_{i}$ in knowledge theory
                 play with respect to {\em space}. Pursuing this
                 analogy, we prove that local predicates are exactly the
                 fixed points of the $K_{i}$'s while the stable
                 predicates are the fixed points of p. In terms of the
                 predicate transformers $p$ and $D$, we define a new
                 class of predicates that we call {\em
                 observer-independent\/} predicates and for which the
                 detection of Possibly $\phi$ and Definitely $\phi$ is
                 quite easy. Finally, we establish a temporal
                 counterpart to the knowledge change theorem of Chandy
                 and Misra which formally proves that the global view of
                 a distributed system provided by its various
                 observations does not differ too much from its truth
                 behavior.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf C.2.4}:
                 Computer Systems Organization, COMPUTER-COMMUNICATION
                 NETWORKS, Distributed Systems, Distributed
                 applications. {\bf D.2.4}: Software, SOFTWARE
                 ENGINEERING, Program Verification, Assertion checkers.
                 {\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids.",
}

@Article{Qian:1995:CON,
  author =       "Xiaolei Qian and Allen Goldberg",
  title =        "Corrigendum: ``{Referential Opacity in
                 Nondeterministic Data Refinement}''",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "1",
  pages =        "180--180",
  month =        jan,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 11:28:41 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See {\em ACM Lett. Program. Lang. Syst.} 2, 1--4
                 (Mar.--Dec. 1993), 233--241.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Click:1995:CAC,
  author =       "Cliff Click and Keith D. Cooper",
  title =        "Combining Analyses, Combining Optimizations",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "181--196",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201061.html",
  abstract =     "Modern optimizing compilers use several passes over a
                 program's intermediate representation to generate good
                 code. Many of these optimizations exhibit a
                 phase-ordering problem. Getting the best code may
                 require iterating optimizations until a fixed point is
                 reached. Combining these phases can lead to the
                 discovery of more facts about the program, exposing
                 more opportunities for optimization. This article
                 presents a framework for describing optimizations. It
                 shows how to combine two such frameworks and how to
                 reason about the properties of the resulting framework.
                 The structure of the frame work provides insight into
                 when a combination yields better results. To make the
                 ideas more concrete, this article presents a framework
                 for combining constant propagation, value numbering,
                 and unreachable-code elimination. It is an open
                 question as to what other frameworks can be combined in
                 this way.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Venkatesh:1995:ERD,
  author =       "G. A. Venkatesh",
  title =        "Experimental Results from Dynamic Slicing of {C}
                 Programs",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "197--216",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201062.html",
  abstract =     "{\em Program slicing\/} is a program analysis
                 technique that has been studied in the context of
                 several different applications in the construction,
                 optimization, maintenance, testing, and debugging of
                 programs. Algorithms are available for constructing
                 slices for a particular execution of a program (dynamic
                 slices), as well as to approximate a subset of the
                 behavior over all possible executions of a program
                 (static slices). However, these algorithms have been
                 studied only in the context of small abstract
                 languages. Program slicing is bound to remain an
                 academic exercise unless one can not only demonstrate
                 the feasibility of building a slicer for nontrivial
                 programs written in a real programming language, but
                 also verify that a type of slice is sufficiently thin,
                 on the average, for the application for which it is
                 chosen. In this article, we present results from using
                 {\em SLICE}, a dynamic program slicer for C programs,
                 designed and implemented to experiment with several
                 different kinds of program slices and to study them
                 both qualitatively and quantitatively. Several
                 application programs, ranging in size (i.e., number of
                 lines of code) over two orders of magnitude, were
                 sliced exhaustively to obtain average worst-case
                 metrics for the size of program slices.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages; performance",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments,
                 Interactive. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Chin:1995:ROA,
  author =       "Wei-Ngan Chin and Eak-Khoon Goh",
  title =        "A Reexamination of ``{Optimization of Array Subscript
                 Range Checks''}",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "217--227",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201063.html",
  abstract =     "Jonathan Asuru proposed recently an enhanced method
                 for optimizing array subscript range checks. The
                 proposed method is however unsafe and may generate
                 optimized programs whose behavior is different from the
                 original program. Two main flaws in Asuru's method are
                 described, together with suggested remedies and
                 improvements.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; reliability",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.5}: Software, SOFTWARE
                 ENGINEERING, Testing and Debugging, Error handling and
                 recovery. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization.",
}

@Article{Wu:1995:WCC,
  author =       "Pei-Chi Wu and Feng-Jian Wang",
  title =        "A Worst Case of Circularity Test Algorithms for
                 Attribute Grammars",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "228--232",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201064.html",
  abstract =     "Although the circularity test problem for {\em
                 attribute grammars\/} (AGs) has been proven to be
                 intrinsically exponential, to date, a worst case for
                 the existing circularity test algorithms has yet to be
                 presented. This note presents a worst-case AG in which
                 the number of incomparable dependency graphs induced at
                 the root is exponential. The worst case can help to
                 clarify the complexity of the problem.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems, Decision problems.",
}

@Article{Rogers:1995:SDD,
  author =       "Anne Rogers and Martin C. Carlisle and John H. Reppy
                 and L. J. Hendren",
  title =        "Supporting Dynamic Data Structures on
                 Distributed-Memory Machines",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "233--263",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201065.html",
  abstract =     "Compiling for distributed-memory machines has been a
                 very active research area in recent years. Much of this
                 work has concentrated on programs that use arrays as
                 their primary data structures. To date, little work has
                 been done to address the problem of supporting programs
                 that use pointer-based dynamic data structures. The
                 techniques developed for supporting SPMD execution of
                 array-based programs rely on the fact that arrays are
                 statically defined and directly addressable. Recursive
                 data structures do not have these properties, so new
                 techniques must be developed. In this article, we
                 describe an execution model for supporting programs
                 that use pointer-based dynamic data structures. This
                 model uses a simple mechanism for migrating a thread of
                 control based on the layout of heap-allocated data and
                 introduces parallelism using a technique based on
                 futures and lazy task creation. We intend to exploit
                 this execution model using compiler analyses and
                 automatic parallelization techniques. We have
                 implemented a prototype system, which we call {\em
                 Olden}, that runs on the Intel iPSC/860 and the
                 Thinking Machines CM-5. We discuss our implementation
                 and report on experiments with five benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages; measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Run-time environments. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, Parallel programming. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Dynamic storage management.",
}

@Article{Palsberg:1995:EIA,
  author =       "Jens Palsberg and Cun Xiao and Karl Lieberherr",
  title =        "Efficient Implementation of Adaptive Software",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "264--292",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201066.html",
  abstract =     "Adaptive programs compute with objects, just like
                 object-oriented programs. Each task to be accomplished
                 is specified by a so-called propagation pattern which
                 traverses the receiver object. The object traversal is
                 a recursive descent via the instance variables where
                 information is collected or propagated along the way. A
                 propagation pattern consists of (1) a name for the
                 task, (2) a succinct specification of the parts of the
                 receiver object that should be traversed, and (3) code
                 fragments to be executed when specific object types are
                 encountered. The propagation patterns need to be
                 complemented by a class graph which defines the
                 detailed object structure. The separation of structure
                 and behavior yields a degree of flexibility and
                 understandability not present in traditional
                 object-oriented languages. For example, the class graph
                 can be changed without changing the adaptive program at
                 all. We present an efficient implementation of adaptive
                 programs. Given an adaptive program and a class graph,
                 we generate an efficient object-oriented program, for
                 example, in C++. Moreover, we prove the correctness of
                 the core of this translation. A key assumption in the
                 theorem is that the traversal specifications are
                 consistent with the class graph. We prove the soundness
                 of a proof system for conservatively checking
                 consistency, and we show how to implement it
                 efficiently.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.2.m}: Software, SOFTWARE ENGINEERING,
                 Miscellaneous, Reusable software. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Object-oriented languages. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Webber:1995:OFP,
  author =       "Adam Webber",
  title =        "Optimization of Functional Programs by Grammar
                 Thinning",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "293--330",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201067.html",
  abstract =     "We describe a new technique for optimizing first-order
                 functional programs. Programs are represented as graph
                 grammars, and optimization proceeds by counterexample:
                 when a graph generated by the grammar is found to
                 contain an unnecessary computation, the optimizer
                 attempts to reformulates the grammar so that it never
                 again generates any graph that contains that
                 counterexample. This kind of program reformulation
                 corresponds to an interesting problem on context-free
                 grammars. Our reformulation technique is derived from
                 an (approximate) solution to this CFG problem. An
                 optimizer called Thinner is the proof of concept for
                 this technique. Thinner is a fully automatic,
                 source-to-source optimizer for a Lisp-like language of
                 purely functional, first-order programs. Thinner
                 rediscovers a wide variety of common compiler
                 optimizations. It also finds other more exotic
                 transformations, including the well-known Fibonacci
                 reformulation and the Knuth-Morris-Pratt
                 optimization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative languages. {\bf F.4.2}: Theory of
                 Computation, MATHEMATICAL LOGIC AND FORMAL LANGUAGES,
                 Grammars and Other Rewriting Systems, Grammar types.",
}

@Article{Debray:1995:CDA,
  author =       "Saumya K. Debray",
  title =        "On the Complexity of Dataflow Analysis of Logic
                 Programs",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "331--365",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201068.html",
  abstract =     "It is widely held that there is a correlation between
                 complexity and precision in dataflow analysis, in the
                 sense that the more precise an analysis algorithm, the
                 more computationally expensive it must be. The details
                 of this relationship, however, appear to not have been
                 explored extensively. This article reports some results
                 on this correlation in the context of logic programs. A
                 formal notion of the ``precision'' of an analysis
                 algorithm is proposed, and this is used to characterize
                 the worst-case computational complexity of a number of
                 dataflow analyses with different degrees of precision.
                 While this article considers the analysis of logic
                 programs, the technique proposed, namely the use of
                 ``exactness sets'' to study relationships between
                 complexity and precision of analyses, is not specific
                 to logic programming in any way, and is equally
                 applicable to flow analyses of other language
                 families.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf F.2.2}: Theory of Computation, ANALYSIS OF
                 ALGORITHMS AND PROBLEM COMPLEXITY, Nonnumerical
                 Algorithms and Problems, Complexity of proof
                 procedures. {\bf D.1.6}: Software, PROGRAMMING
                 TECHNIQUES, Logic Programming. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Nonprocedural languages. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Walicki:1995:CCM,
  author =       "Michal Walicki and Sigurd Meidal",
  title =        "A Complete Calculus for the Multialgebraic and
                 Functional Semantics of Nondeterminism",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "366--393",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201070.html",
  abstract =     "The current algebraic models for nondeterminism focus
                 on the notion of {\em possibility\/} rather than {\em
                 necessity\/} and consequently equate (nondeterministic)
                 terms that one would intuitively not consider equal.
                 Furthermore, existing models for nondeterminism depart
                 radically from the standard models for (equational)
                 specifications of deterministic operators. One would
                 prefer that a specification language for
                 nondeterministic operators be based on an extension of
                 the standard model concepts, preferably in such a way
                 that the reasoning system for (possibly
                 nondeterministic) operators becomes the standard
                 equational one whenever restricted to the deterministic
                 operators---the objective should be to {\em minimize\/}
                 the departure from the standard frameworks. In this
                 article we define a specification language for
                 nondeterministic operators and multialgebraic
                 semantics. The first {\em complete\/} reasoning system
                 for such specifications is introduced. We also define a
                 transformation of specifications of nondeterministic
                 operators into derived specifications of deterministic
                 ones, obtaining a ``computational'' semantics of
                 nondeterministic specification by adopting the standard
                 semantics of the derived specification as the semantics
                 of the original one. This semantics turns out to be a
                 refinement of multialgebra semantics. The calculus is
                 shown to be sound and complete also with respect to the
                 new semantics.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Alternation and
                 nondeterminism. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nonprocedural languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nondeterministic languages. {\bf
                 D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Specification techniques. {\bf F.3.2}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Semantics of Programming Languages, Algebraic
                 approaches to semantics. {\bf I.1.3}: Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Languages and
                 Systems, Nonprocedural languages. {\bf I.1.3}:
                 Computing Methodologies, ALGEBRAIC MANIPULATION,
                 Languages and Systems, Substitution mechanisms. {\bf
                 F.1.2}: Theory of Computation, COMPUTATION BY ABSTRACT
                 DEVICES, Modes of Computation, Relations among modes.
                 {\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Alternation and
                 nondeterminism.",
}

@Article{Carle:1995:MIE,
  author =       "Alan Carle and Lori Pollock",
  title =        "Matching-Based Incremental Evaluators for Hierarchical
                 Attribute Grammar Dialects",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "2",
  pages =        "394--429",
  month =        mar,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201071.html",
  abstract =     "Although attribute grammars have been very effective
                 for defining individual modules of language
                 translators, they have been rather ineffective for
                 specifying large program-transformational systems.
                 Recently, several new attribute grammar ``dialects''
                 have been developed that support the modular
                 specification of these systems by allowing modules,
                 each described by an attribute grammar, to be composed
                 to form a complete system. Acceptance of these new {\em
                 hierarchical\/} attribute grammar dialects requires the
                 availability of efficient batch and incremental
                 evaluators for hierarchical specifications. This paper
                 addresses the problem of developing efficient
                 incremental evaluators for hierarchical specifications.
                 A matching-based approach is taken in order to exploit
                 existing optimal change propagation algorithms for
                 nonhierarchical attribute grammars. A sequence of four
                 new matching algorithms is presented, each increasing
                 the number of previously computed attribute values that
                 are made available for reuse during the incremental
                 update.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding, Program editors. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Castagna:1995:CCC,
  author =       "Giuseppe Castagna",
  title =        "Covariance and Contravariance: Conflict without a
                 Cause",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "431--447",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/203096.html",
  abstract =     "In type-theoretic research on object-oriented
                 programming, the issue of ``covariance versus
                 contravariance'' is a topic of continuing debate. In
                 this short note we argue that covariance and
                 contravariance appropriately characterize two distinct
                 and independent mechanisms. The so-called
                 contravariance rule correctly captures the {\em
                 subtyping\/} relation (that relation which establishes
                 which sets of functions can replace another given set
                 in {\em every context\/}). A covariant relation,
                 instead, characterizes the {\em specialization\/} of
                 code (i.e., the definition of new code which replaces
                 old definitions {\em in some particular cases\/}).
                 Therefore, covariance and contravariance are not
                 opposing views, but distinct concepts that each have
                 their place in object-oriented systems. Both can (and
                 should) be integrated in a type-safe manner in
                 object-oriented languages. We also show that the
                 independence of the two mechanisms is not
                 characteristic of a particular model but is valid in
                 general, since covariant specialization is present in
                 record-based models, although it is hidden by a
                 deficiency of all existing calculi that realize this
                 model. As an aside, we show that the $\lambda$-calculus
                 can be taken as the basic calculus for both an
                 overloading-based and a record-based model. Using this
                 approach, one not only obtains a more uniform vision of
                 object-oriented type theories, but in the case of the
                 record-based approach, one also gains multiple
                 dispatching, a feature that existing record-based
                 models do not capture",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Object-oriented
                 languages.",
}

@Article{Carlisle:1995:TCC,
  author =       "W. H. Carlisle",
  title =        "Type Checking Concurrent {I/O}",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "448--460",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/203097.html",
  abstract =     "In parallel programming languages multityped data
                 structures may be shared by two or more processes.
                 Process I/O to these structures is assumed to be
                 physically interleaved but logically parallel. This
                 article addresses a syntactic mechanism to specify a
                 type for such structures and extends an example
                 language and its type-checking algorithm to these
                 structures.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Data types
                 and structures. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Concurrent,
                 distributed, and parallel languages.",
}

@Article{Proebsting:1995:BAG,
  author =       "Todd A. Proebsting",
  title =        "{BURS} Automata Generation",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "461--486",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/203098.html",
  abstract =     "A simple and efficient algorithm for generating
                 bottom-up rewrite system (BURS) tables is described. A
                 small code-generator generator implementation produces
                 BURS tables efficiently, even for complex instruction
                 set descriptions. The algorithm does not require novel
                 data structures or complicated algorithmic techniques.
                 Previously published methods for on-the-fly elimination
                 of states are generalized and simplified to create a
                 new method, triangle trimming, that is employed in the
                 algorithm. A prototype implementation, burg, generates
                 BURS tables very efficiently.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Code generation. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Cytron:1995:ECO,
  author =       "Ron K. Cytron and Jeanne Ferrante",
  title =        "Efficiently Computing $\phi$-Nodes On-The-Fly",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "487--506",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 11:49:48 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/203099.html",
  abstract =     "Recently, Static Single-Assignment Form and Sparse
                 Evaluation Graphs have been advanced for the efficient
                 solution of program optimization problems. Each method
                 is provided with an initial set of flow graph nodes
                 that inherently affect a problem's solution. Other
                 relevant nodes are those where potentially disparate
                 solutions must combine. Previously, these so-called
                 $\phi$-nodes were found by computing the iterated
                 dominance frontiers of the initial set of nodes, a
                 process that could take worst-case quadratic time with
                 respect to the input flow graph. In this article we
                 present an almost-linear algorithm for determining
                 exactly the same set of $\phi$-nodes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Control structures. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 F.2.2}: Theory of Computation, ANALYSIS OF ALGORITHMS
                 AND PROBLEM COMPLEXITY, Nonnumerical Algorithms and
                 Problems, Computations on discrete structures. {\bf
                 G.2.2}: Mathematics of Computing, DISCRETE MATHEMATICS,
                 Graph Theory, Graph algorithms. {\bf I.1.2}: Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Algorithms,
                 Analysis of algorithms. {\bf I.2.2}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Program transformation.",
}

@Article{Abadi:1995:CS,
  author =       "Martin Abadi and Leslie Lamport",
  title =        "Conjoining Specifications",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "507--534",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/201069.html",
  abstract =     "We show how to specify components of concurrent
                 systems. The specification of a system is the
                 conjunction of its components' specifications.
                 Properties of the system are proved by reasoning about
                 its components. We consider both the decomposition of a
                 given system into parts, and the composition of given
                 parts to form a system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Specification techniques.
                 {\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs.",
}

@Article{Choy:1995:EFA,
  author =       "Manhoi Choy and Ambuj K. Singh",
  title =        "Efficient Fault-Tolerant Algorithms for Distributed
                 Resource Allocation",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "3",
  pages =        "535--559",
  month =        may,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/203101.html",
  abstract =     "Solutions to resource allocation problems and other
                 related synchronization problems in distributed systems
                 are examined with respect to the measures of {\em
                 response time, message complexity, {\em and\/} failure
                 locality}. Response time measures the time it takes for
                 an algorithm to respond to the requests of a process;
                 message complexity measures the number of messages sent
                 and received by a process; and failure locality
                 characterizes the size of the network that is affected
                 by the failure of a single process. An algorithm for
                 the resource allocation problem that achieves a
                 constant failure locality of four along with a
                 quadratic response time and a quadratic message
                 complexity is presented. Applications of the algorithm
                 to other process synchronization problems in
                 distributed systems are also demonstrated.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.4.5}: Software, OPERATING SYSTEMS, Reliability,
                 Fault-tolerance. {\bf C.2.4}: Computer Systems
                 Organization, COMPUTER-COMMUNICATION NETWORKS,
                 Distributed Systems. {\bf D.1.3}: Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Concurrent programming structures. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Concurrency. {\bf D.4.1}: Software,
                 OPERATING SYSTEMS, Process Management, Mutual
                 exclusion. {\bf D.4.1}: Software, OPERATING SYSTEMS,
                 Process Management, Synchronization.",
}

@Article{Fricker:1995:ICB,
  author =       "Christine Fricker and Olivier Temam and William
                 Jalby",
  title =        "Influence of Cross-Interferences on Blocked Loops: {A}
                 Case Study with Matrix-Vector Multiply",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "4",
  pages =        "561--575",
  month =        jul,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/210185.html",
  abstract =     "State-of-the art data locality optimizing algorithms
                 are targeted for local memories rather than for cache
                 memories. Recent work on cache interferences seems to
                 indicate that these phenomena can severely affect
                 blocked algorithms cache performance. Because of cache
                 conflicts, it is not possible to know the precise gain
                 brought by blocking. It is even difficult to determine
                 for which problem sizes blocking is useful. Computing
                 the actual optimal block size is difficult because
                 cache conflicts are highly irregular. In this article,
                 we illustrate the issue of precisely evaluating
                 cross-interferences in blocked loops with blocked
                 matrix-vector multiply. Most significant interference
                 phenomena are captured because unusual parameters such
                 as array base addresses are being considered. The
                 techniques used allow us to compute the precise
                 improvement due to blocking and the threshold value of
                 problem parameters for which the blocked loop should be
                 preferred. It is also possible to derive an expression
                 of the optimal block size as a function of problem
                 parameters. Finally, it is shown that a precise rather
                 than an approximate evaluation of cache conflicts is
                 sometimes necessary to obtain near-optimal
                 performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "measurement; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf C.4}: Computer Systems
                 Organization, PERFORMANCE OF SYSTEMS, Modeling
                 techniques. {\bf B.3.2}: Hardware, MEMORY STRUCTURES,
                 Design Styles, Cache memories.",
}

@Article{Palsberg:1995:TSE,
  author =       "Jens Palsberg and Patrick O'Keefe",
  title =        "A Type System Equivalent to Flow Analysis",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "4",
  pages =        "576--599",
  month =        jul,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/210187.html",
  abstract =     "Flow-based safety analysis of higher-order languages
                 has been studied by Shivers, and Palsberg and
                 Schwartzbach. Open until now is the problem of finding
                 a type system that accepts exactly the same programs as
                 safety analysis. In this article we prove that Amadio
                 and Cardelli's type system with subtyping and recursive
                 types accepts the same programs as a certain safety
                 analysis. The proof involves mappings from types to
                 flow information and back. As a result, we obtain an
                 inference algorithm for the type system, thereby
                 solving an open problem.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf F.4.3}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Formal
                 Languages, Operations on languages.",
}

@Article{Girkar:1995:ETP,
  author =       "Milind Girkar and Constantine D. Polychronopoulos",
  title =        "Extracting Task-Level Parallelism",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "4",
  pages =        "600--634",
  month =        jul,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/210189.html",
  abstract =     "Automatic detection of {\em task-level parallelism\/}
                 (also referred to as functional, DAG, unstructured, or
                 thread parallelism) at various levels of program
                 granularity is becoming increasingly important for
                 parallelizing and back-end compilers. Parallelizing
                 compilers detect iteration-level or coarser granularity
                 parallelism which is suitable for parallel computers;
                 detection of parallelism at the statement-or
                 operation-level is essential for most modern
                 microprocessors, including superscalar and VLIW
                 architectures. In this article we study the problem of
                 detecting, expressing, and optimizing task-level
                 parallelism, where ``task'' refers to a program
                 statement of arbitrary granularity. Optimizing the
                 amount of functional parallelism (by allowing
                 synchronization between arbitrary nodes) in sequential
                 programs requires the notion of {\em precedence\/} in
                 terms of paths in graphs which incorporate control and
                 data dependences. Precedences have been defined before
                 in a different context; however, the definition was
                 dependent on the ideas of parallel execution and time.
                 We show that the problem of determining precedences
                 statically is NP-complete. Determining precedence
                 relationships is useful in finding the essential data
                 dependences. We show that there exists a unique minimum
                 set of essential data dependences; finding this minimum
                 set is NP-hard and NP-easy. We also propose a heuristic
                 algorithm for finding the set of essential data
                 dependences. Static analysis of a program in the
                 Perfect Benchmarks was done, and we present some
                 experimental results.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 F.1.3}: Theory of Computation, COMPUTATION BY ABSTRACT
                 DEVICES, Complexity Classes, Reducibility and
                 completeness. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Code generation.",
}

@Article{Hentenryck:1995:BTC,
  author =       "Pascal {Van Hentenryck} and Viswanath Ramachandran",
  title =        "Backtracking without Trailing in {CLP(${\cal
                 R}_{\hbox{Lin}}$)}",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "4",
  pages =        "635--671",
  month =        jul,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:59:04 1998",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/210192.html",
  abstract =     "Existing CLP languages support backtracking by
                 generalizing traditional Prolog implementations:
                 modifications to the constraint system are trailed and
                 restored on backtracking. Although simple and
                 efficient, trailing may be very demanding in memory
                 space, since the constraint system may potentially be
                 saved at each choice point.\par

                 This article proposes a new implementation scheme for
                 backtracking in CLP languages over linear (rational or
                 real) arithmetic. The new scheme, called {\em semantic
                 backtracking}, does not use trailing but rather
                 exploits the semantics of the constraints to undo the
                 effect of newly added constraints. Semantic
                 backtracking reduces the space complexity compared to
                 implementations based on trailing by making it
                 essentially independent of the number of choice points.
                 In addition, semantic backtracking introduces
                 negligible space and time overhead on deterministic
                 programs. The price for this improvement is an increase
                 in backtracking time, although constraint-solving time
                 may actually decrease. The scheme has been implemented
                 as part of a complete CLP system CLP ($R_{\mbox{Lin}}$)
                 and compared analytically and experimentally with
                 optimized trailing implementations. Experimental
                 results on small and real-life problems indicate that
                 semantic backtracking produces significant reduction in
                 memory space, while keeping the time overhead
                 reasonably small.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages; performance",
  subject =      "{\bf D.1.1}: Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nonprocedural languages. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.1.6}: Software,
                 PROGRAMMING TECHNIQUES, Logic Programming.",
}

@Article{McKenzie:1995:ERS,
  author =       "Bruce J. McKenzie and Corey Yeatman and Lorraine {De
                 Vere}",
  title =        "Error Repair in Shift-Reduce Parsers",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "4",
  pages =        "672--689",
  month =        jul,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jul 26 07:49:28 1999",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See failure report \cite{Bertsch:1999:FPT}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/210193.html",
  abstract =     "Local error repair of strings during CFG parsing
                 requires the insertion and deletion of symbols in the
                 region of a syntax error to produce a string that is
                 error free. Rather than precalculating tables at parser
                 generation time to assist in finding such repairs, this
                 article shows how such repairs can be found during
                 shift-reduce parsing by using the parsing tables
                 themselves. This results in a substantial space saving
                 over methods that require precalculated tables.
                 Furthermore, the article shows how the method can be
                 integrated with lookahead to avoid finding repairs that
                 immediately result in further syntax errors. The
                 article presents the results of experiments on a
                 version of the LALR(1)-based parser generator {\em
                 Bison\/} to which the algorithm was added.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Parsing. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Translator writing systems and
                 compiler generators. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.2.5}:
                 Software, SOFTWARE ENGINEERING, Testing and Debugging,
                 Error handling and recovery.",
}

@Article{Sloane:1995:EAG,
  author =       "Anthony M. Sloane",
  title =        "An Evaluation of an Automatically Generated Compiler",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "5",
  pages =        "691--703",
  month =        sep,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/213980.html",
  abstract =     "Compilers or language translators can be generated
                 using a variety of formal specification techniques.
                 Whether generation is worthwhile depends on the effort
                 required to specify the translation task and the
                 quality of the generated compiler. A systematic
                 comparison was conducted between a hand-coded
                 translator for the Icon programming language and one
                 generated by the Eli compiler construction system. A
                 direct comparison could be made since the generated
                 program performs the same translation as the hand-coded
                 program. The results of the comparison show that
                 efficient compilers can be generated from
                 specifications that are much smaller and more problem
                 oriented than the equivalent source code. We also found
                 that further work must be done to reduce the dynamic
                 memory usage of the generated compilers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages; performance",
  subject =      "{\bf C.4}: Computer Systems Organization, PERFORMANCE
                 OF SYSTEMS, Measurement techniques. {\bf D.2.m}:
                 Software, SOFTWARE ENGINEERING, Miscellaneous, Reusable
                 software. {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators.",
}

@Article{Cejtin:1995:HDO,
  author =       "Henry Cejtin and Suresh Jagannathan and Richard
                 Kelsey",
  title =        "Higher-Order Distributed Objects",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "5",
  pages =        "704--739",
  month =        sep,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/213986.html",
  abstract =     "We describe a distributed implementation of Scheme
                 that permits efficient transmission of higher-order
                 objects such as closures and continuations. The
                 integration of distributed communication facilities
                 within a higher-order programming language engenders a
                 number of new abstractions and paradigms for
                 distributed computing. Among these are user-specified
                 load-balancing and migration policies for threads,
                 incrementally linked distributed computations, and
                 parameterized client-server applications. To our
                 knowledge, this is the first distributed dialect of
                 Scheme (or a related language) that addresses
                 lightweight communication abstractions for higher-order
                 objects.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages",
  subject =      "{\bf D.1.3}: Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Distributed programming. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Extensible languages. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Concurrent programming structures. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, SCHEME.",
}

@Article{Kurlander:1995:EIS,
  author =       "Steven M. Kurlander and Todd A. Proebsting and Charles
                 N. Fischer",
  title =        "Efficient Instruction Scheduling for Delayed-Load
                 Architectures",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "5",
  pages =        "740--776",
  month =        sep,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/213987.html",
  abstract =     "A fast, optimal code-scheduling algorithm for
                 processors with a delayed load of one instruction cycle
                 is described. The algorithm minimizes both execution
                 time and register use and runs in time proportional to
                 the size of the expression-tree. An extension that
                 spills registers when too few registers are available
                 is also presented. The algorithm also performs very
                 well for delayed loads of greater than one instruction
                 cycle. A heuristic that schedules DAGs and is based on
                 our optimal expression-tree-scheduling algorithm is
                 presented and compared with Goodman and Hsu's algorithm
                 Integrated Prepass Scheduling (IPS). Both schedulers
                 perform well on benchmarks with small basic blocks, but
                 on large basic blocks our scheduler outperforms IPS and
                 is significantly faster.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Masticola:1995:LFM,
  author =       "Stephen P. Masticola and Thomas J. Marlowe and Barbara
                 G. Ryder",
  title =        "Lattice Frameworks for Multisource and Bidirectional
                 Data Flow Problems",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "5",
  pages =        "777--803",
  month =        sep,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jan 5 07:58:42 MST 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/213989.html",
  abstract =     "{\em Multisource\/} data flow problems involve
                 information which may enter nodes independently through
                 different classes of edges. In some cases, dissimilar
                 meet operations appear to be used for different types
                 of nodes. These problems include {\em bidirectional\/}
                 and {\em flow-sensitive\/} problems as well as many
                 static analyses of concurrent programs with
                 synchronization. {\em K-tuple frameworks}, a type of
                 standard data flow framework, provide a natural
                 encoding for multisource problems using a single meet
                 operator. Previously, the solution of these problems
                 has been described as the fixed point of a set of data
                 flow equations. Using our $k$-tuple representation, we
                 can access the general results of standard data flow
                 frameworks concerning convergence time and solution
                 precision for these problems. We demonstrate this for
                 the bidirectional component of partial redundancy
                 suppression and two problems on the program summary
                 graph. An interesting subclass of $k$-tuple frameworks,
                 the {\em join-of-meets\/} frameworks, is useful for
                 reachability problems, especially those stemming from
                 analyses of explicitly parallel programs. We give
                 results on function space properties for join-of-meets
                 frameworks that indicate precise solutions for most of
                 them will be difficult to obtain.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors.",
}

@Article{Chambers:1995:TMM,
  author =       "Craig Chambers and Gary T. Leavens",
  title =        "Typechecking and Modules for Multimethods",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "6",
  pages =        "805--843",
  month =        nov,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Feb 02 09:05:25 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/218571.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; theory",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Modules, packages. {\bf
                 D.1.5}: Software, PROGRAMMING TECHNIQUES,
                 Object-oriented Programming. {\bf F.2.0}: Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, General. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Type structure.",
}

@Article{Ohori:1995:PRC,
  author =       "Atsushi Ohori",
  title =        "A Polymorphic Record Calculus and Its Compilation",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "6",
  pages =        "844--895",
  month =        nov,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Feb 02 09:05:25 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/218572.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Lambda calculus and related systems.",
}

@Article{Sekar:1995:FSA,
  author =       "R. Sekar and I. V. Ramakrishnan",
  title =        "Fast Strictness Analysis Based on Demand Propagation",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "6",
  pages =        "896--937",
  month =        nov,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Feb 02 09:05:25 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/218573.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.1}: Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory.
                 {\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative languages.",
}

@Article{Anonymous:1995:AI,
  author =       "Anonymous",
  title =        "1995 Author Index",
  journal =      j-TOPLAS,
  volume =       "17",
  number =       "6",
  pages =        "938--940",
  month =        nov,
  year =         "1995",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 06 14:21:36 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-pb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Murer:1996:IAS,
  author =       "Stephan Murer and Stephen Omohundro and David
                 Stoutamire and Clemens Szyperski",
  title =        "Iteration abstraction in {Sather}",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "1",
  pages =        "1--15",
  month =        jan,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/225541.html",
  abstract =     "Sather extends the notion of an iterator in a powerful
                 new way. We argue that iteration abstractions belong in
                 class interfaces on an equal footing with routines.
                 Sather iterators were derived from CLU iterators but
                 are much more flexible and better suited for
                 object-oriented programming. We retain the property
                 that iterators are {\em structured}, i.e., strictly
                 bound to a controlling structured statement. We
                 motivate and describe the construct along with several
                 simple examples. We compare it with iteration based on
                 CLU iterators, cursors, riders, streams, series,
                 generators, coroutines, blocks, closures, and lambda
                 expressions. Finally, we describe experiences with
                 iterators in the Sather compiler and libraries.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf D.1.5}: Software, PROGRAMMING TECHNIQUES,
                 Object-oriented Programming. {\bf D.3.3}: Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Coroutines. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Control primitives. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Control structures.",
}

@Article{Carle:1996:OCP,
  author =       "Alan Carle and Lori Pollock",
  title =        "On the optimality of change propagation for
                 incremental evaluation of hierarchical attribute
                 grammars",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "1",
  pages =        "16--29",
  month =        jan,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/225542.html",
  abstract =     "Several new attribute grammar dialects have recently
                 been developed, all with the common goal of allowing
                 large, complex language translators to be specified
                 through a modular composition of smaller attribute
                 grammars. We refer to the class of dialects as {\em
                 hierarchical attribute grammars}. In this short
                 article, we present a characterization of optimal
                 incremental evaluation that indicates the unsuitability
                 of change propagation as the basis of an optimal
                 incremental evaluator for hierarchical attribute
                 grammars. This result lends strong support to the use
                 of incremental evaluators based on more applicative
                 approaches to attribute evaluation, such as Carle and
                 Pollock's evaluator based on more applicative
                 approaches to attribute evaluation, such as Carle and
                 Pollock's evaluator based on caching of partially
                 attributed subtree, Pugh's evaluator based on function
                 caching of semantic functions, and Swierstra and Vogt's
                 evaluator based on functions, and Swierstra and Vogt's
                 evaluator based on function caching of visit
                 sequences.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf D.2.3}: Software, SOFTWARE
                 ENGINEERING, Coding, Program editors. {\bf D.2.6}:
                 Software, SOFTWARE ENGINEERING, Programming
                 Environments. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Translator writing systems and
                 compiler generators. {\bf D.3.1}: Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Syntax. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics.",
}

@Article{VanderZanden:1996:IAS,
  author =       "Brad {Vander Zanden}",
  title =        "An incremental algorithm for satisfying hierarchies of
                 multiway dataflow constraints",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "1",
  pages =        "30--72",
  month =        jan,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See corrigendum \cite{VanderZanden:1996:CIA}.",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/225543.html",
  abstract =     "One-way dataflow constraints have gained popularity in
                 many types of interactive systems because of their
                 simplicity, efficiency, and manageability. Although it
                 is widely acknowledged that multiway dataflow
                 constraint could make it easier to specify certain
                 relationships in these applications, concerns about
                 their predictability and efficiency have impeded their
                 acceptance. Constraint hierarchies have been developed
                 to address the predictability problem, and incremental
                 algorithms have been developed to address the
                 efficiency problem. However, existing incremental
                 algorithms for satisfying constraint hierarchies
                 encounter two difficulties: (1) they are incapable of
                 guaranteeing an acyclic solution if a constraint
                 hierarchy has one or more cyclic solutions and (2) they
                 require worst-case exponential time to satisfy systems
                 of multioutput constraints. This article surmounts
                 these difficulties by presenting an incremental
                 algorithm called QuickPlan that satisfies in worst-case
                 $O(N^2)$ time any hierarchy of multiway, multioutput
                 dataflow constraint that has at least one acyclic
                 solution, where $N$ is the number of constraints. With
                 benchmarks and real problems that can be solved
                 efficiently using existing algorithms, its performance
                 is competitive or superior. With benchmarks and real
                 problems that cannot be solved using existing
                 algorithms or that cannot be solved efficiently,
                 QuickPlan finds solutions and does so efficiently,
                 typically in $O(N)$ time or less. QuickPlan is based on
                 the strategy of propagation of degrees of freedom. The
                 only restriction it imposes is that every constraint
                 method must use all of the variables in the constraint
                 as either an input or an output variable. This
                 requirement is met in every constraint-based,
                 interactive application that we have developed or
                 seen.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, User interfaces. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments. {\bf
                 I.1.3}: Computing Methodologies, ALGEBRAIC
                 MANIPULATION, Languages and Systems, Evaluation
                 strategies. {\bf I.1.2}: Computing Methodologies,
                 ALGEBRAIC MANIPULATION, Algorithms, Nonalgebraic
                 algorithms.",
}

@Article{Boyland:1996:CAG,
  author =       "John Tang Boyland",
  title =        "Conditional attribute grammars",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "1",
  pages =        "73--108",
  month =        jan,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/225544.html",
  abstract =     "Attribute grammars are a useful formalism for the
                 specification of computations on structured terms. The
                 classical definition of attribute grammars, however,
                 has no way of treating conditionals nonstrictly.
                 Consequently, the natural way of expressing many
                 otherwise well-behaved computations involves a
                 circularity. This article presents {\em conditional
                 attribute grammars}, and extension of attribute
                 grammars that enables more precise analysis of
                 conditionals. In conditional attribute grammars,
                 attribute equations may have guards. Equations are
                 active only when their guards are satisfied. The
                 standard attribute grammar evaluation classes are
                 definable for conditional attribute grammars, and the
                 corresponding evaluation techniques can be easily
                 adapted. However, determining membership in standard
                 evaluation classes such as 1-SWEEP, OAG, and SNC is
                 NP-hard.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators. {\bf F.4.2}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Grammars and
                 Other Rewriting Systems. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers.",
}

@Article{Hall:1996:TCH,
  author =       "Cordelia V. Hall and Kevin Hammond and Simon L.
                 {Peyton Jones} and Philip L. Wadler",
  title =        "Type classes in {Haskell}",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "2",
  pages =        "109--138",
  month =        mar,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/227700.html",
  abstract =     "This article defines a set of type inference rules for
                 resolving overloading introduced by type classes, as
                 used in the functional programming language Haskell.
                 Programs including type classes are transformed into
                 ones which may be typed by standard Hindley-Milner
                 inference rules. In contrast to other work on type
                 classes, the rules presented here relate directly to
                 Haskell programs. An innovative aspect of this work is
                 the use of second-order lambda calculus to record type
                 information in the transformed program.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Haskell. {\bf
                 D.1.1}: Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming.",
}

@Article{Hauser:1996:HFE,
  author =       "John R. Hauser",
  title =        "Handling floating-point exceptions in numeric
                 programs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "2",
  pages =        "139--174",
  month =        mar,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/227701.html",
  abstract =     "There are a number of schemes for handling arithmetic
                 exceptions that can be used to improve the speed (or
                 alternatively the reliability) of numeric code.
                 Overflow and underflow are the most troublesome
                 exceptions, and depending on the context in which the
                 exception can occur, they may be addressed either: (1)
                 through a ``brute force'' reevaluation with extended
                 range, (2) by reevaluating using a technique known as
                 {\em scaling}, (3) by substituting an infinity or zero,
                 or (4) in the case of underflow, with gradual
                 underflow. In the first two of these cases, the
                 offending computation is simply reevaluated using a
                 safer but slower method. The latter two cases are
                 cheaper, more automated schemes that ideally are built
                 in as options within the computer system. Other
                 arithmetic exceptions can be handled with similar
                 methods. These and some other techniques are examined
                 with an eye toward determining the support programming
                 languages and computer systems ought to provide for
                 floating-point exception handling. It is argued that
                 the cheapest short-term solution would be to give full
                 support to most of the {\em required\/} (as opposed to
                 recommended) special features of the IEC/IEEE Standard
                 for Binary Floating-Point Arithmetic. An essential part
                 of this support would include standardized access from
                 high-level languages to the exception flags defined by
                 the standard. Some possibilities outside the IEEE
                 Standard are also considered, and a few thought on
                 possible better-structured support within programming
                 languages are discussed.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; performance;
                 standardization",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.0}: Software, PROGRAMMING LANGUAGES, General,
                 Standards. {\bf G.1.0}: Mathematics of Computing,
                 NUMERICAL ANALYSIS, General, Computer arithmetic. {\bf
                 G.1.0}: Mathematics of Computing, NUMERICAL ANALYSIS,
                 General, Numerical algorithms.",
}

@Article{Sands:1996:TCL,
  author =       "David Sands",
  title =        "Total correctness by local improvement in the
                 transformation of functional programs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "2",
  pages =        "175--234",
  month =        mar,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/227716.html",
  abstract =     "The goal of program transformation is to improve
                 efficiency while preserving meaning. One of the
                 best-known transformation techniques is Burstall and
                 Darlington's unfold-fold method. Unfortunately the
                 unfold-fold method itself guarantees neither
                 improvement in efficiency nor total correctness. The
                 correctness problem for unfold-fold is an instance of a
                 strictly more general problem: transformation by
                 locally equivalence-preserving steps does not
                 necessarily preserve (global) equivalence. This article
                 presents a condition for the total correctness of
                 transformations on recursive programs, which, for the
                 first time, deals with higher-order functional
                 languages (both strict and nonstrict) including lazy
                 data structures. The main technical result is an {\em
                 improvement theorem\/} which says that if the local
                 transformation steps are guided by certain optimization
                 concerns (a fairly natural condition for a
                 transformation), then correctness of the transformation
                 follows. The improvement theorem makes essential use of
                 a formalized improvement theory; as a rather pleasing
                 corollary it also guarantees that the transformed
                 program is a formal improvement over the original. The
                 theorem has immediate practical consequences: it is a
                 powerful tool for proving the correctness of existing
                 transformation methods for higher-order functional
                 programs, without having to ignore crucial factors such
                 as {\em memoization\/} or {\em folding}, and it yields
                 a simple syntactic method for guiding and constraining
                 the unfold-fold method in the general case so that
                 total correctness (and improvement) is always
                 guaranteed.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; verification",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Correctness proofs. {\bf D.1.1}:
                 Software, PROGRAMMING TECHNIQUES, Applicative
                 (Functional) Programming. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Liao:1996:SAD,
  author =       "Stan Liao and Srinivas Devadas and Kurt Keutzer and
                 Steven Tjiang and Albert Wang",
  title =        "Storage assignment to decrease code size",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "235--253",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/229543.html",
  abstract =     "DSP architectures typically provide indirect
                 addressing modes with autoincrement and decrement. In
                 addition, indexing mode is generally not available, and
                 there are usually few, if any, general-purpose
                 registers. Hence, it is necessary to use address
                 registers and perform address arithmetic to access
                 automatic variables. Subsuming the address arithmetic
                 into autoincrement and decrement modes improves the
                 size of the generated code. In this article we present
                 a formulation of the problem of optimal storage
                 assignment such that explicit instructions for address
                 arithmetic are minimized. We prove that for the case of
                 a single address register the decision problem is
                 NP-complete, even for a single basic block. We then
                 generalize the problem to multiple address registers.
                 For both cases heuristic algorithms are given, and
                 experimental results are presented.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; management; measurement;
                 theory",
  subject =      "{\bf B.5.2}: Hardware, REGISTER-TRANSFER-LEVEL
                 IMPLEMENTATION, Design Aids, Optimization. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors. {\bf
                 G.2.2}: Mathematics of Computing, DISCRETE MATHEMATICS,
                 Graph Theory. {\bf F.4.1}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Proof theory.",
}

@Article{Smith:1996:PTV,
  author =       "Geoffrey Smith and Dennis Volpano",
  title =        "Polymorphic typing of variables and references",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "254--267",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/229544.html",
  abstract =     "In this article we consider the polymorphic type
                 checking of an imperative language. Our language
                 contains {\em variables}, first-class {\em
                 references\/} (pointers), and first-class functions.
                 Variables, as in traditional imperative languages, are
                 implicitly dereferenced, and their addresses
                 ($L$-values) are not first-class values. Variables are
                 easier to type check than references and, in many
                 cases, lead to more general polymorphic types. We
                 present a polymorphic type system for our language and
                 prove that it is sound. Programs that use variables
                 sometimes require weak types, as in Tofte's type system
                 for Standard ML, but such weak types arise far less
                 frequently with variables than with references",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques. {\bf D.3.0}:
                 Software, PROGRAMMING LANGUAGES, General.",
}

@Article{Knoop:1996:PFE,
  author =       "Jens Knoop and Bernhard Steffen and J{\"u}rgen
                 Vollmer",
  title =        "Parallelism for free: efficient and optimal bitvector
                 analyses for parallel programs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "268--299",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/229545.html",
  abstract =     "We consider parallel programs with shared memory and
                 interleaving semantics, for which we show how to
                 construct for unidirectional bitvector problems optimal
                 analysis algorithms that are as efficient as their
                 purley sequential counterparts and that can easily be
                 implemented. Whereas the complexity result is rather
                 obvious, our optimality result is a consequence of a
                 new Kam/Ullman-style Coincidence Theorem. Thus using
                 our method, the standard algorithms for sequential
                 programs computing liveness, availability, very
                 busyness, reaching definitions, definition-use chains,
                 or the analyses for performing code motion, assignment
                 motion, partial dead-code elimination or strength
                 reduction, can straightforward be transferred to the
                 parallel setting at almost no cost.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; performance; theory",
  subject =      "{\bf F.1.2}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Modes of Computation, Parallelism and
                 concurrency. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Concurrent,
                 distributed, and parallel languages. {\bf D.2.2}:
                 Software, SOFTWARE ENGINEERING, Tools and Techniques.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs. {\bf D.4.1}: Software, OPERATING
                 SYSTEMS, Process Management, Synchronization.",
}

@Article{George:1996:IRC,
  author =       "Lal George and Andrew W. Appel",
  title =        "Iterated register coalescing",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "300--324",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/229546.html",
  abstract =     "An important function of any register allocator is to
                 target registers so as to eliminate copy instructions.
                 Graph-coloring register allocation is an elegant
                 approach to this problem. If the source and destination
                 of a move instruction do not interfere, then their
                 nodes can be coalesced in the interference graph.
                 Chaitin's coalescing heuristic could make a graph
                 uncolorable (i.e., introduce spills); Briggs et al.
                 demonstrated a conservative coalescing heuristic that
                 preserves colorability. But Briggs's algorithm is {\em
                 too\/} conservative and leaves too many move
                 instructions in our programs. We show how to interleave
                 coloring reductions with Briggs's coalescing heuristic,
                 leading to an algorithm that is safe but much more
                 aggressive.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; measurement;
                 performance",
  subject =      "{\bf B.5.2}: Hardware, REGISTER-TRANSFER-LEVEL
                 IMPLEMENTATION, Design Aids, Optimization. {\bf I.2.8}:
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Problem Solving, Control Methods, and Search, Heuristic
                 methods. {\bf G.2.2}: Mathematics of Computing,
                 DISCRETE MATHEMATICS, Graph Theory, Graph algorithms.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization.",
}

@Article{Morgan:1996:PPT,
  author =       "Carroll Morgan and Annabelle McIver and Karen Seidel",
  title =        "Probabilistic predicate transformers",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "325--353",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 13 11:46:35 MDT 1996",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/229547.html",
  abstract =     "Probabilistic predicates generalize standard
                 predicates over a state space; with probabilistic
                 predicate transformers one thus reasons about
                 imperative programs in terms of probabilistic pre- and
                 postconditions. Probabilistic healthiness conditions
                 generalize the standard ones, characterizing ``real''
                 probabilistic programs, and are based on a connection
                 with an underlying relational model for probabilistic
                 execution; in both contexts demonic nondeterminism
                 coexists with probabilistic choice. With the
                 healthiness conditions, the associated
                 weakest-precondition calculus seems suitable for
                 exploring the rigorous derivation of small
                 probabilistic programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs. {\bf G.3}: Mathematics of
                 Computing, PROBABILITY AND STATISTICS. {\bf G.1.0}:
                 Mathematics of Computing, NUMERICAL ANALYSIS, General,
                 Condition (and ill-condition). {\bf F.1.2}: Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Modes of
                 Computation, Probabilistic computation. {\bf D.2.4}:
                 Software, SOFTWARE ENGINEERING, Program Verification.",
}

@Article{VanderZanden:1996:CIA,
  author =       "Brad {Vander Zanden}",
  title =        "Corrigendum: ``{An incremental algorithm for
                 satisfying hierarchies of multiway dataflow
                 constraints}''",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "3",
  pages =        "354--354",
  month =        may,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Aug 31 15:57:33 1996",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{VanderZanden:1996:IAS}.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Holzle:1996:RRP,
  author =       "Urs H{\"o}lzle and David Ungar",
  title =        "Reconciling Responsiveness with Performance in Pure
                 Object-Oriented Languages",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "4",
  pages =        "355--400",
  month =        jul,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/233562.html",
  abstract =     "Dynamically dispatched calls often limit the
                 performance of object-oriented programs, since
                 object-oriented programming encourages factoring code
                 into small, reusable units, thereby increasing the
                 frequency of these expensive operations. Frequent calls
                 not only slow down execution with the dispatch overhead
                 per se, but more importantly they hinder optimization
                 by limiting the range and effectiveness of standard
                 global optimizations. In particular, dynamically
                 dispatched calls prevent standard interprocedual
                 optimizations that depend on the availability of a
                 static call graph. The SELF implementation described
                 here offers tow novel approaches to optimization. {\em
                 Type feedback\/} speculatively inlines dynamically
                 dispatched calls based on profile information that
                 predicts likely receiver classes. {\em Adaptive
                 optimization\/} reconciles optimizing compilation with
                 interactive performance by incrementally optimizing
                 only the frequently executed parts of a program. When
                 combined, these two techniques result in a system that
                 can execute programs significantly faster than previous
                 systems while retaining much of the interactiveness of
                 an interpreted system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.1.5}: Software, PROGRAMMING TECHNIQUES,
                 Object-oriented Programming. {\bf D.2.6}: Software,
                 SOFTWARE ENGINEERING, Programming Environments,
                 Interactive. {\bf D.2.6}: Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.2.m}:
                 Software, SOFTWARE ENGINEERING, Miscellaneous, Rapid
                 prototyping. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Interpreters. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Run-time environments. {\bf
                 D.4.7}: Software, OPERATING SYSTEMS, Organization and
                 Design, Interactive systems.",
}

@Article{Abadi:1996:SM,
  author =       "Mart{\'\i}n Abadi and Luca Cardelli",
  title =        "On Subtyping and Matching",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "4",
  pages =        "401--423",
  month =        jul,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/233563.html",
  abstract =     "A relation between recursive object types, called {\em
                 matching}, has been proposed as a generalization of
                 subtyping. Unlike subtyping, matching does not support
                 subsumption, but it does support inheritance of binary
                 methods. We argue that matching is a good idea, but
                 that it should not be regarded as a form of F-bounded
                 subtyping (as was originally intended). We show that a
                 new interpretation of matching as higher-order
                 subtyping has better properties. Matching turns out to
                 be a third-order construction, possibly the only one to
                 have been proposed for general use in programming.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf D.1.5}: Software,
                 PROGRAMMING TECHNIQUES, Object-oriented Programming.",
}

@Article{McKinley:1996:IDL,
  author =       "Kathryn S. McKinley and Steve Carr and Chau-Wen
                 Tseng",
  title =        "Improving Data Locality with Loop Transformations",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "4",
  pages =        "424--453",
  month =        jul,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/233564.html",
  abstract =     "In the past decade, processor speed has become
                 significantly faster than memory speed. Small, fast
                 cache memories are designed to overcome this
                 discrepancy, but they are only effective when programs
                 exhibit {\em data locality}. In the this article, we
                 present compiler optimizations to improve data locality
                 based on a simple yet accurate cost model. The model
                 computes both {\em temporal\/} and {\em spatial\/}
                 reuse of cache lines to find desirable loop
                 organizations. The cost model drives the application of
                 compound transformations consisting of loop
                 permutation, loop fusion, loop distribution, and loop
                 reversal. To validate our optimization strategy, we
                 implemented our algorithms and ran experiments on a
                 large collection of scientific programs and kernels.
                 Experiments illustrate that for kernels our model and
                 algorithm can select and achieve the best loop
                 structure for a nest. For over 30 complete
                 applications, we executed the original and transformed
                 versions and simulated cache hit rates. We collected
                 statistics about the inherent characteristics of these
                 programs and our ability to improve their data
                 locality. To our knowledge, these studies are the first
                 of such breadth and depth. We found performance
                 improvements were difficult to achieve because
                 benchmark programs typically have high hit rates even
                 for small data caches; however, our optimizations
                 significantly improved several programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers.",
}

@Article{Foster:1996:CPP,
  author =       "Ian Foster",
  title =        "Compositional Parallel Programming Languages",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "4",
  pages =        "454--476",
  month =        jul,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/233565.html",
  abstract =     "In task-parallel programs, diverse activities can take
                 place concurrently, and communication and
                 synchronization patterns are complex and not easily
                 predictable. Previous work has identified {\em
                 compositionality\/} as an important design principle
                 for task-parallel programs. In this article, we discuss
                 alternative approaches to the realization of this
                 principle, which holds that properties of program
                 components should be preserved when those components
                 are composed in parallel with other program components.
                 We review two programming languages, Strand and Program
                 Composition Notation, that support compositionality via
                 a small number of simple concepts, namely, monotone
                 operations on shared objects, a uniform addressing
                 mechanism, and parallel composition. Both languages
                 have been used extensively for large-scale application
                 development, allowing us to provide an informed
                 assessment of both their strengths and their
                 weaknesses. We observe that while compositionality
                 simplifies development of complex applications, the use
                 of specialized languages hinders reuse of existing code
                 and tools and the specification of domain decomposition
                 strategies. This suggests an alternative approach based
                 on small extensions to existing sequential languages.
                 We conclude the article with a discussion of two
                 languages that realized this strategy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Concurrent
                 programming structures.",
}

@Article{Haghighat:1996:SAP,
  author =       "Mohammad R. Haghighat and Constantine D.
                 Polychronopoulos",
  title =        "Symbolic Analysis for Parallelizing Compilers",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "4",
  pages =        "477--518",
  month =        jul,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/233568.html",
  abstract =     "The notion of dependence captures that most important
                 properties of a program for efficient execution on
                 parallel computers. The dependence structure of a
                 program defines that necessary constraints of the order
                 of execution of the program components and provides
                 sufficient information for the exploitation of the
                 available parallelism. Static discovery and management
                 of the dependence structure of programs save a
                 tremendous amount of execution time, and dynamic
                 utilization of dependence information results in a
                 significant performance gain on parallel computers.
                 However, experiments with parallel computers indicate
                 that existing multiprocessing environments are unable
                 to deliver the desired performance over a wide range of
                 real applications, mainly due to lack of precision of
                 their dependence information. This calls for an
                 effective compilation scheme capable of understanding
                 the dependence structure of complicated application
                 programs. This article describes a methodology for
                 capturing analyzing program properties that are
                 essential in the effective detection and efficient
                 exploitation of parallelism on parallel computers.
                 Based on this methodology, a symbolic analysis
                 framework is developed for the Parafrase-2
                 parallelizing compiler. This framework extends the
                 scope of a variety of important program analysis
                 problems and solves them in a unified way. The attained
                 solution space of these problems is much larger than
                 that handled by existing compiler technology. Such a
                 powerful approach is required for the effective
                 compilation of a large class of application
                 programs.\par

                 programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; languages; performance",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 D.4.1}: Software, OPERATING SYSTEMS, Process
                 Management, Scheduling. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs.
                 {\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf G.2.1}: Mathematics of Computing,
                 DISCRETE MATHEMATICS, Combinatorics, Recurrences and
                 difference equations. {\bf I.1.4}: Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Applications.
                 {\bf I.2.2}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Automatic analysis
                 of algorithms.",
}

@Article{Palsberg:1996:CTT,
  author =       "Jens Palsberg and Scott Smith",
  title =        "Constrained types and their expressiveness",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "5",
  pages =        "519--527",
  month =        sep,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/232715.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/232715.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/235454.html",
  abstract =     "A constrained type consists of both a standard type
                 and a constraint set. Such types enable efficient type
                 inference for object-oriented languages with
                 polymorphism and subtyping, as demonstrated by Eifrig,
                 Smith, and Trifonov. Until now, it has been unclear how
                 expressive constrained types are. In this article we
                 study constrained types without universal
                 quantification. We prove that they accept the same
                 programs as the type system of Amadio and Cardelli with
                 subtyping and recursive types. This result gives a
                 precise connection between constrained types and the
                 standard notion of types.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.3}: Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features. {\bf
                 D.3.2}: Software, PROGRAMMING LANGUAGES, Language
                 Classifications.",
}

@Article{Dawson:1996:PPU,
  author =       "Steven Dawson and C. R. Ramakrishnan and Steven Skiena
                 and Terrance Swift",
  title =        "Principles and practice of unification factoring",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "5",
  pages =        "528--563",
  month =        sep,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/232722.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/232722.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/235455.html",
  abstract =     "The efficiency of resolution-based logic programming
                 languages, such as Prolog, depends critically on
                 selecting and executing sets of applicable clause heads
                 to resolve against subgoals. Traditional approaches to
                 this problem have focused on using indexing to
                 determine the smallest possible applicable set. Despite
                 their usefulness, these approaches ignore the
                 nondeterminism inherent in many programming languages
                 to the extent that they do not attempt to optimize
                 execution {\em after\/} the applicable set has been
                 determined. Unification factoring seeks to rectify this
                 omission by regarding the indexing and unification
                 phases of clause resolution as a single process. This
                 article formalizes that process through the
                 construction of {\em factoring automata}. A
                 polynomial-time algorithm is given for constructing
                 optimal factoring automata that preserve the clause
                 selection strategy of Prolog. More generally, when the
                 clause selection strategy is not fixed, constructing
                 such an optimal automaton is shown to be NP-complete,
                 solving an open trie minimization problem. Unification
                 factoring is implemented through a source code
                 transformation that preserves the full semantics of
                 Prolog. This transformation is specified in the
                 article, and using it, several well-known programs show
                 significant performance improvements across several
                 different systems. A prototype of unification factoring
                 is available by anonymous ftp.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; measurement; theory;
                 verification",
  subject =      "{\bf F.1.1}: Theory of Computation, COMPUTATION BY
                 ABSTRACT DEVICES, Models of Computation, Automata. {\bf
                 D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf F.2.2}: Theory of Computation,
                 ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY,
                 Nonnumerical Algorithms and Problems. {\bf F.1.3}:
                 Theory of Computation, COMPUTATION BY ABSTRACT DEVICES,
                 Complexity Classes. {\bf I.2.2}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Program transformation. {\bf D.3.4}:
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf F.1.1}: Theory
                 of Computation, COMPUTATION BY ABSTRACT DEVICES, Models
                 of Computation, Automata. {\bf F.2.2}: Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems,
                 Pattern matching.",
}

@Article{delaBanda:1996:GAC,
  author =       "M. Garcia {de la Banda} and M. Hermenegildo and M.
                 Bruynooghe and V. Dumortier and G. Janssens and W.
                 Simoens",
  title =        "Global analysis of constraint logic programs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "5",
  pages =        "564--614",
  month =        sep,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/232734.html",
  abstract =     "This article presents and illustrates a practical
                 approach to the dataflow analysis of constraint logic
                 programming languages using abstract interpretation. It
                 is first argued that, from the framework point of view,
                 it suffices to propose relatively simple extensions of
                 traditional analysis methods which have already been
                 proved useful and practical and for which efficient
                 fixpoint algorithms exist. This is shown by proposing a
                 simple extension of Bruynooghe's traditional framework
                 which allows it to analyze constraint logic programs.
                 Then, and using this generalized framework, two
                 abstract domains and their required abstract functions
                 are presented: the first abstract domain approximates
                 definiteness information and the second one freeness.
                 Finally, an approach for combining those domains is
                 proposed. The two domains and their combination have
                 been implemented and used in the analysis of CLP($R$)
                 and Prolog-III applications. Results form this
                 implementation showing its performance and accuracy are
                 also presented.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.1.m}: Software, PROGRAMMING
                 TECHNIQUES, Miscellaneous. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Nonprocedural languages. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{GarciaDeLaBanda:1996:GAC,
  author =       "M. {Garcia De La Banda} and M. Hermenegildo and M.
                 Bruynooghe and V. Dumortier and G. Janssens and W.
                 Simoens",
  title =        "Global analysis of constraint logic programs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "5",
  pages =        "564--614",
  month =        sep,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235456.html",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages; measurement",
  subject =      "{\bf D.1.6}: Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.2.2}: Software, SOFTWARE
                 ENGINEERING, Tools and Techniques. {\bf F.3.1}: Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Piquer:1996:IDG,
  author =       "Jos{\'e} M. Piquer",
  title =        "Indirect distributed garbage collection: Handling
                 object migration",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "5",
  pages =        "615--647",
  month =        sep,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/0164-0925/232711.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/232711.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/235457.html",
  abstract =     "In new distributed systems, object mobility is usually
                 allowed and is sometimes used by the underlying object
                 manager system to benefit from object access locality.
                 On the other hand, in-transit references to objects can
                 exist at any moment in asynchronous distributed
                 systems. In the presence of object mobility and
                 in-transit references, many garbage collector (GC)
                 algorithms fail to operate correctly. Others need to
                 use the system's object finder to find the objects
                 while performing their work. As a general principle, a
                 GC should never interfere with object manager polices
                 (such as forcing migration or fixing an object to a
                 given processor). However, if the GC uses the object
                 finder, it will change the access pattern of the
                 system, and eventually it could foul the global
                 allocation policy. In this article we propose a new GC
                 family, Indirect Garbage Collectors, allowing to
                 separate the problems of object management (placement,
                 replication, and retrieval) from garbage collection.
                 This property allows our algorithms to be implemented
                 on top of almost any existent distributed object
                 system, without having to use the object finder.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; management; performance;
                 verification",
  subject =      "{\bf C.2.4}: Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems,
                 Network operating systems. {\bf D.1.3}: Software,
                 PROGRAMMING TECHNIQUES, Concurrent Programming. {\bf
                 D.4.2}: Software, OPERATING SYSTEMS, Storage
                 Management, Distributed memories. {\bf D.4.2}:
                 Software, OPERATING SYSTEMS, Storage Management,
                 Allocation/deallocation strategies.",
}

@Article{Sreedhar:1996:ILU,
  author =       "Vugranam C. Sreedhar and Guang R. Gao and Yong-Fong
                 Lee",
  title =        "Identifying loops using {DJ} graphs",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "649--658",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235827.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236115.html",
  abstract =     "Loop identification is a necessary step in loop
                 transformations for high-performance architectures. One
                 classical technique for detecting loops is Tarjan's
                 interval-finding algorithm. The intervals identified by
                 Tarjan's method are single-entry, strongly connected
                 subgraphs that closely reflect a program's loop
                 structure. We present a simple algorithm for
                 identifying both reducible and irreducible loops using
                 DJ graphs. Our method is a generalization of Tarjan's
                 method, as it identifies nested intervals (or loops)
                 even in the presence of irreducibility.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 E.1}: Data, DATA STRUCTURES, Graphs. {\bf E.1}: Data,
                 DATA STRUCTURES, Trees.",
}

@Article{Skeppstedt:1996:UDA,
  author =       "Jonas Skeppstedt and Per Stenstr{\"o}m",
  title =        "Using dataflow analysis techniques to reduce ownership
                 overhead in cache coherence protocols",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "659--682",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235828.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236116.html",
  abstract =     "In this article, we explore the potential of classical
                 dataflow analysis techniques in removing overhead in
                 write-invalidate cache coherence protocols for
                 shared-memory multiprocessors. We construct three
                 compiler algorithms with varying degree of
                 sophistication that detect loads followed by stores to
                 the same address. Such loads are marked and constitute
                 a hint to the cache to obtain an exclusive copy of the
                 block so that the subsequent store does not introduce
                 access penalties. The simplest of the three compiler
                 algorithms analyzes the existence of load-store
                 sequences within each basic blocks of code whereas the
                 other two analyze load-store sequences across basic
                 blocks at the intraprocedural level. The algorithms
                 have been incorporated into an optimizing C compiler,
                 and we have evaluated their efficiencies by compiling
                 and executing seven parallel programs on a simulated
                 multiprocessor. Our results show that the detection
                 efficiency of the most aggressive algorithm is 96\% or
                 higher for four of the seven programs studied. We also
                 compare the efficiency of these static algorithms with
                 that of dynamic hardware-based algorithms that reduce
                 ownership overhead. We find that the static analysis
                 using classical dataflow analysis results in similar
                 performance improvements as dynamic hardware-based
                 approaches.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf B.3.2}: Hardware, MEMORY
                 STRUCTURES, Design Styles, Cache memories. {\bf C.1.2}:
                 Computer Systems Organization, PROCESSOR ARCHITECTURES,
                 Multiple Data Stream Architectures (Multiprocessors),
                 Multiple-instruction-stream, multiple-data-stream
                 processors (MIMD). {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers.",
}

@Article{Proebsting:1996:DRA,
  author =       "Todd A. Proebsting and Charles N. Fischer",
  title =        "Demand-driven register allocation",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "683--710",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235829.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236117.html",
  abstract =     "A new global register allocation technique, {\em
                 demand-driven register allocation}, is described.
                 Demand-driven register allocation quantifies the costs
                 and benefits of allocating variables to registers over
                 live ranges so that high-quality allocations can be
                 made. Local allocation is done first, and then global
                 allocation is done iteratively beginning in the most
                 deeply nested loops. Because local allocation precedes
                 global allocation, demand-driven allocation does not
                 interfere with the use of well-known, high-quality
                 local register allocation and instruction-scheduling
                 techniques.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.",
}

@Article{Attali:1996:NSE,
  author =       "Isabelle Attali and Denis Caromel and Sidi Ould
                 Ehmety",
  title =        "A natural semantics for {Eiffel} dynamic binding",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "711--729",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235830.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236118.html",
  abstract =     "This article formally defines Eiffel dynamic binding
                 in presence of renaming and redefinition. Message
                 passing, inheritance, and polymorphism are expressed in
                 an operational style using natural semantics. From the
                 formal specification, we derive an algorithm to
                 determine the appropriate version of a feature to apply
                 to a given object. This algorithm, based only on the
                 class hierarchy and not using any intermediate
                 structure, gives a practical approach to the
                 understanding of inheritance, renaming, and
                 redefinition in Eiffel.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Operational semantics. {\bf D.1.5}:
                 Software, PROGRAMMING TECHNIQUES, Object-oriented
                 Programming. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications, Languages.
                 {\bf D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.2}:
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Eiffel.",
}

@Article{Danvy:1996:EDT,
  author =       "Olivier Danvy and Karoline Malmkj{\ae}r and Jens
                 Palsberg",
  title =        "Eta-expansion does the trick",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "730--751",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jan 9 11:33:28 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235831.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236119.html",
  abstract =     "Partial-evaluation folklore has it that massaging
                 one's source programs can make them specialize better.
                 In Jones, Gomard, and Sestoft's recent textbook, a
                 whole chapter is dedicated to listing such
                 ``binding-time improvements'': nonstandard use of
                 continuation-passing style, eta-expansion, and a
                 popular transformation called ``The Trick.'' We provide
                 a unified view of these binding-time improvements, from
                 a typing perspective. Just as a proper treatment of
                 product values in partial evaluation requires partially
                 static values, a proper treatment of disjoint sums
                 requires moving static contexts across dynamic case
                 expressions. This requirement precisely accounts for
                 the nonstandard use of continuation-passing style
                 encountered in partial evaluation. Eta-expansion thus
                 acts as a uniform binding-time coercion between values
                 and contexts, be they of function type, product type,
                 or disjoint-sum type. For the latter case, it enables
                 ``The Trick.'' In this article, we extend Gomard and
                 Jones' partial evaluator for the [lambda]-calculus,
                 [lambda]-Mix, with products and disjoint sums; we point
                 out how eta-expansion for (finite) disjoint sums enable
                 The Trick; we generalize our earlier work by
                 identifying the eta-expansion can be obtained in the
                 binding-time analysis simple by adding two coercion
                 rules; and we specify and prove the correctness of our
                 extension to [lambda]-Mix.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Procedures, functions, and
                 subroutines. {\bf D.1.1}: Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Translator writing systems and compiler generators.
                 {\bf F.3.2}: Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages,
                 Operational semantics. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Functional constructs. {\bf
                 F.4.1}: Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Mathematical Logic, Lambda calculus
                 and related systems. {\bf I.1.3}: Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Languages and
                 Systems, Evaluation strategies. {\bf I.2.2}: Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Automatic analysis of algorithms.",
}

@Article{Zhou:1996:PPC,
  author =       "Neng-Fa Zhou",
  title =        "Parameter passing and control stack management in
                 {Prolog} implementation revisited",
  journal =      j-TOPLAS,
  volume =       "18",
  number =       "6",
  pages =        "752--779",
  month =        nov,
  year =         "1996",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:57:57 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/toc/Abstracts/toplas/235832.html;
                 http://www.acm.org/pubs/toc/Abstracts/toplas/236120.html",
  abstract =     "Parameter passing and control stack management are two
                 of the crucial issues in Prolog implementation. In the
                 Warren Abstract Machine (WAM), the most widely used
                 abstract machine for Prolog implementation, arguments
                 are passed through argument registers, and the
                 information associated with procedure calls is stored
                 in possibly two frames. Although accessing registers is
                 faster than accessing memory, this scheme requires the
                 argument registers to be saved and restored for back
                 tracking and makes it difficult to implement full tail
                 recursion elimination. These disadvantages may far
                 outweigh the advantage in emulator-based
                 implementations because registers are actually
                 simulated by using memory. In this article, we
                 reconsider the two crucial issues and describe a new
                 abstract machine called ATOAM (yet Another
                 Tree-Oriented Abstract Machine). The ATOAM differs from
                 the WAM mainly in that (1) arguments are passed
                 directly into stack frames, (2) only one frame is used
                 for each procedure call, and (3) procedures are
                 translated into matching trees is possible, and clauses
                 in each procedure are indexed on all input arguments.
                 The above-mentioned inefficiencies of the WAM do not
                 exist in the ATOAM because backtracking requires less
                 bookkeeping operations, and tail recursion can be
                 handled in most cases like a loop statement in
                 procedural languages. An ATOAM-emulator-based Prolog
                 system called B-Prolog has been implemented, which is
                 available through anonymous ftp from {\tt
                 ftp.kyutech.ac.jp (131.206.1.101)} in the directory
                 {\tt pub/Language/prolog}. B-Prolog is comparable in
                 performance with and can sometimes be significantly
                 faster than emulated SICStus-Prolog. By measuring the
                 numbers of memory and register references made in both
                 systems, we found that passing arguments in stack is no
                 worse than passing arguments in registers even if
                 accessing memory is four times as expensive as
                 accessing registers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; languages",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.1.6}: Software,
                 PROGRAMMING TECHNIQUES, Logic Programming. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features.",
}

@Article{Horwitz:1997:PFM,
  author =       "Susan Horwitz",
  title =        "Precise Flow-Insensitive May-Alias Analysis is
                 {NP-Hard}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "1--6",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p1-horwitz/",
  abstract =     "Determining aliases is one of the fundamental static
                 analysis problems, in part because the precision with
                 which this problem is solved can affect the precision
                 of other analyses such as live variables, available
                 expressions, and constant propagation. Previous work
                 has investigated the complexity of flow-sensitive alias
                 analysis. In this article we show that precise
                 flow-{\em insensitive\/} may-alias analysis is NP-hard
                 given arbitrary levels of pointers and arbitrary
                 pointer dereferencing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 F.4.1}: Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Mathematical Logic, Computability
                 theory. {\bf F.4.3}: Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Formal
                 Languages, Decision problems.",
}

@Article{Cortesi:1997:CAI,
  author =       "Agostino Cortesi and Gilberto File and Roberto
                 Giacobazzi and Catuscia Palamidessi and Francesco
                 Ranzato",
  title =        "Complementation in Abstract Interpretation",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "7--47",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p7-cortesi/",
  abstract =     "Reduced product of abstract domains is a rather
                 well-known operation for domain composition in abstract
                 interpretation. In this article, we study its inverse
                 operation, introducing a notion of domain
                 complementation in abstract interpretation.
                 Complementation provides as systematic way to design
                 new abstract domains, and it allows to systematically
                 decompose domains. Also, such an operation allows to
                 simplify domain verification problems, and it yields
                 space-saving representations for complex domains. We
                 show that the complement exists in most cases, and we
                 apply complementation to three well-know abstract
                 domains, notably to Cousot and Cousot's interval domain
                 for integer variable analysis, to Cousot and Cousot's
                 domain for comportment analysis of functional
                 languages, and to the domain {\em Sharing\/} for
                 aliasing analysis of logic languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 D.3.1}: Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics.",
}

@Article{Steckler:1997:LCC,
  author =       "Paul A. Steckler and Mitchell Wand",
  title =        "Lightweight Closure Conversion",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "48--86",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p48-steckler/",
  abstract =     "We consider the problem of lightweight closure
                 conversion, in which multiple procedure call protocols
                 may coexist in the same code. A lightweight closure
                 omits bindings for some of the free variables of the
                 procedure that is represents. Flow analysis is used to
                 match the protocol expected by each procedure and the
                 protocol used at its possible call sites. We formulate
                 the flow analysis as a deductive system that generates
                 a labeled transition system and a set of constraints.
                 We show that any solution to the constraints justifies
                 the resulting transformation. Some of the techniques
                 used are similar to those of abstract interpretation,
                 but others appear to be novel.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf F.3.2}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Operational semantics. {\bf D.3.3}:
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features, Procedures, functions, and subroutines.
                 {\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Assertions. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions.",
}

@Article{Wright:1997:PST,
  author =       "Andrew K. Wright and Robert Cartwright",
  title =        "A Practical Soft Type System for {Scheme}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "87--152",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p87-wright/",
  abstract =     "A {\em soft type system\/} infers types for the
                 procedures and data structures of dynamically typed
                 programs. Like conventional static types, soft types
                 express program invariants and thereby provide valuable
                 information for program optimization and debugging. A
                 soft type {\em checker\/} uses the types inferred by a
                 soft type system to eliminate run-time checks that are
                 provably unnecessary; any remaining run-time checks are
                 flagged as potential program errors. {\em Soft
                 Scheme\/} is a practical soft type checker for R4RS
                 Scheme. Its underlying type system generalizes
                 conventional Hindley-Milner type inference by
                 incorporating recursive types and a limited form of
                 union type. Soft Scheme accommodates all of R4RS Scheme
                 including uncurried procedures of fixed and variable
                 arity, assignment, and continuations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "performance; reliability",
  subject =      "{\bf F.3.3}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Studies of Program Constructs,
                 Type structure. {\bf D.3.2}: Software, PROGRAMMING
                 LANGUAGES, Language Classifications, Applicative
                 languages. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Optimization.",
}

@Article{Baumgartner:1997:ISC,
  author =       "Gerald Baumgartner and Vincent F. Russo",
  title =        "Implementing Signatures for {C++}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "153--187",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p153-baumgartner/",
  abstract =     "We outline the design and detail the implementation of
                 a language extension for abstracting types and for
                 decoupling subtyping and inheritance in C++. This
                 extension gives the user more of the flexibility of
                 dynamic typing while retaining the efficiency and
                 security of static typing. After a brief discussion of
                 syntax and semantics of this language extension and
                 examples of its use, we present and analyze three
                 different implementation techniques: a preprocessor to
                 a C++ compiler, an implementation in the front end of a
                 C++ compiler, and a low-level implementation with
                 back-end support. We follow with an analysis of the
                 performance of the three implementation techniques and
                 show that our extension actually allows subtype
                 polymorphism to be implemented more efficiently than
                 with virtual functions. We conclude with a discussion
                 of the lessons we learned for future programming
                 language design.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; measurement; performance",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Abstract data types. {\bf
                 D.2.2}: Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Modules and interfaces. {\bf D.1.5}:
                 Software, PROGRAMMING TECHNIQUES, Object-oriented
                 Programming. {\bf D.3.4}: Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers.",
}

@Article{Calder:1997:ESB,
  author =       "Brad Calder and Dirk Grunwald and Michael Jones and
                 Donald Lindsay and James Martin and Michael Mozer and
                 Benjamin Zorn",
  title =        "Evidence-Based Static Branch Prediction Using Machine
                 Learning",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "1",
  pages =        "188--222",
  month =        jan,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 12 08:06:48 MST 1997",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-1/p188-calder/",
  abstract =     "Correctly predicting the direction that branches will
                 take is increasingly important in today's wide-issue
                 computer architectures. The name {\em program-based\/}
                 branch prediction is given to static branch prediction
                 techniques that base their prediction on a program's
                 structure. In this article, we investigate a new
                 approach to program-based branch prediction that uses a
                 body of existing programs to predict the branch
                 behavior in a new program. We call this approach to
                 program-based branch prediction {\em evidence-based
                 static prediction}, or ESP. The main idea of ESP is
                 that the behavior of a corpus of programs can be used
                 to infer the behavior of new programs. In this article,
                 we use neural networks and decision trees to map static
                 features associated with each branch to a prediction
                 that the branch will be taken. ESP shows significant
                 advantages over other prediction mechanisms.
                 Specifically, it is a program-based technique; it is
                 effective across a range of programming languages and
                 programming styles; and it does not rely on the use of
                 expert-defined heuristics. In this article, we describe
                 the application of ESP to the problem of static branch
                 prediction and compare our results to existing
                 program-based branch predictors. We also investigate
                 the applicability of ESP across computer architectures,
                 programming languages, compilers, and run-time systems.
                 We provide results showing how sensitive ESP is to the
                 number and type of static features and programs
                 included in the ESP training sets, and we compare the
                 efficacy of static branch prediction for subroutine
                 libraries. Averaging over a body of 43 C and Fortran
                 programs, ESP branch prediction results in a miss rate
                 of 20\%, as compared with the 25\% miss rate obtained
                 using the best existing program-based heuristics.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; measurement; performance",
  subject =      "{\bf I.2.6}: Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Learning, Parameter learning. {\bf C.4}:
                 Computer Systems Organization, PERFORMANCE OF SYSTEMS,
                 Measurement techniques. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf I.2.6}: Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Learning, Connectionism and
                 neural nets.",
}

@Article{Pippenger:1997:PVI,
  author =       "Nicholas Pippenger",
  title =        "Pure versus impure {Lisp}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "223--238",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p223-pippenger/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "language constructs and features. {\bf f.3.3}: theory
                 of computation; logics and meanings of programs;
                 program and recursion schemes.; programming languages;
                 studies of program constructs; {\bf d.3.3}: software",
  subject =      "{\bf D.3.3}: Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.3}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Program and recursion schemes.",
}

@Article{Sreedhar:1997:ICD,
  author =       "Vugranam C. Sreedhar and Guang R. Gao and Yong-Fong
                 Lee",
  title =        "Incremental computation of dominator trees",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "239--252",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p239-sreedhar/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "compilers. {\bf d.3.4}: software; data structures;
                 graphs. {\bf e.1}: data; optimization. {\bf e.1}: data;
                 processors; programming languages; trees.; {\bf d.3.4}:
                 software",
  subject =      "{\bf D.3.4}: Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 E.1}: Data, DATA STRUCTURES, Graphs. {\bf E.1}: Data,
                 DATA STRUCTURES, Trees.",
}

@Article{Dams:1997:AIR,
  author =       "Dennis Dams and Rob Gerth and Orna Grumberg",
  title =        "Abstract interpretation of reactive systems",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "253--291",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p253-dams/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "logics and meanings of programs; logics of programs.;
                 mechanical verification. {\bf f.3.1}: theory of
                 computation; program verification; software
                 engineering; specifying and verifying and reasoning
                 about programs; validation. {\bf f.3.1}: theory of
                 computation; {\bf d.2.4}: software",
  subject =      "{\bf D.2.4}: Software, SOFTWARE ENGINEERING, Program
                 Verification, Validation. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Mechanical verification. {\bf F.3.1}: Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Logics of programs.",
}

@Article{Yellin:1997:PSC,
  author =       "Daniel M. Yellin and Robert E. Strom",
  title =        "Protocol specifications and component adaptors",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "292--333",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p292-yellin/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency.; concurrent programming. {\bf d.2.1}:
                 software; general; operating systems; process
                 management; programming techniques;
                 requirements/specifications. {\bf d.4.1}: software;
                 software engineering; systems specification
                 methodology. {\bf d.1.3}: software; {\bf c.0}: computer
                 systems organization",
  subject =      "{\bf C.0}: Computer Systems Organization, GENERAL,
                 Systems specification methodology. {\bf D.1.3}:
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming. {\bf D.2.1}: Software, SOFTWARE
                 ENGINEERING, Requirements/Specifications. {\bf D.4.1}:
                 Software, OPERATING SYSTEMS, Process Management,
                 Concurrency.",
}

@Article{Sansom:1997:FBP,
  author =       "Patrick M. Sansom and Simon L. {Peyton Jones}",
  title =        "Formally based profiling for higher-order functional
                 languages",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "334--385",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p334-sansom/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "applicative languages. {\bf d.3.4}: software;
                 compilers. {\bf d.3.4}: software; debugging aids. {\bf
                 d.3.2}: software; language classifications; logics and
                 meanings of programs; operational semantics.;
                 optimization. {\bf f.3.2}: theory of computation;
                 processors; programming languages; semantics of
                 programming languages; software engineering; testing
                 and debugging; {\bf d.2.5}: software",
  subject =      "{\bf D.2.5}: Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.3.2}: Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative languages. {\bf D.3.4}: Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4}: Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf F.3.2}: Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Semantics of
                 Programming Languages, Operational semantics.",
}

@Article{Yang:1997:SMC,
  author =       "Jin Yang and Aloysius K. Mok and Farn Wang",
  title =        "Symbolic model checking for event-driven real-time
                 systems",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "2",
  pages =        "386--412",
  month =        mar,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed May 14 09:00:40 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-2/p386-yang/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "computational logic.; logics and meanings of programs;
                 mathematical logic; mathematical logic and formal
                 languages; mechanical verification. {\bf f.3.1}: theory
                 of computation; specification techniques. {\bf f.4.1}:
                 theory of computation; specifying and verifying and
                 reasoning about programs; {\bf f.3.1}: theory of
                 computation",
  subject =      "{\bf F.3.1}: Theory of Computation, LOGICS AND
                 MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 F.3.1}: Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Specification techniques. {\bf F.4.1}: Theory
                 of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic, Computational logic.",
}

@Article{Clarke:1997:URE,
  author =       "Charles L. A. Clarke and Gordon V. Cormack",
  title =        "On the use of Regular Expressions for Searching Text",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "413--426",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p413-clarke/",
  abstract =     "The use of regular expressions for text search is
                 widely known and well understood. It is then surprising
                 that the standard techniques and tools prove to be of
                 limited use for searching structured text formatted
                 with SGML or similar markup languages. Our experience
                 with structured text search has caused us to reexamine
                 the current practice. The generally accepted rule of
                 ``leftmost longest match'' is an unfortunate choice and
                 is at the root of the difficulties. We instead propose
                 a rule which is semantically cleaner. This rule is
                 generally applicable to a variety of text search
                 applications, including source code analysis, and has
                 interesting properties in its own right. We have
                 written a publicly available search tool implementing
                 the theory in the article, which has proved valuable in
                 a variety of circumstances.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms",
  subject =      "{\bf D.3.2} Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Specialized application languages",
}

@Article{Kozen:1997:KAT,
  author =       "Dexter Kozen",
  title =        "{Kleene} Algebra with Tests",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "427--443",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p427-kozen/",
  abstract =     "We introduce Kleene algebra with tests, an equational
                 system for manipulating programs. We give a purely
                 equational proof, using Kleene algebra with tests and
                 commutativity conditions, of the following classical
                 result: every {\bf while} program can be simulated by a
                 while program can be simulated by a {\bf while} program
                 with at most one {\bf while} loop. The proof
                 illustrates the use of Kleene algebra with tests and
                 commutativity conditions in program equivalence
                 proofs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf D.2.2} Software, SOFTWARE ENGINEERING, Tools and
                 Techniques, Structured programming. {\bf D.2.4}
                 Software, SOFTWARE ENGINEERING, Program Verification,
                 Correctness proofs. {\bf D.3.3} Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features, Control
                 structures. {\bf F.3.1} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Assertions. {\bf F.3.1}
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Invariants. {\bf F.3.1} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 F.3.1} Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Specifying and Verifying and Reasoning about
                 Programs, Mechanical verification. {\bf F.3.1} Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Pre- and post-conditions. {\bf F.3.1} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Specification techniques. {\bf F.3.2} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Algebraic approaches to
                 semantics. {\bf F.3.3} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs, Control primitives. {\bf I.1.1} Computing
                 Methodologies, ALGEBRAIC MANIPULATION, Expressions and
                 Their Representation, Simplification of expressions.
                 {\bf I.1.3} Computing Methodologies, ALGEBRAIC
                 MANIPULATION, Languages and Systems, Special-purpose
                 algebraic systems. {\bf I.2.2} Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 modification. {\bf I.2.2} Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 synthesis; program transformation; program
                 verification",
}

@Article{Hu:1997:FDE,
  author =       "Zhenjiang Hu and Hideya Iwasaki and Masato Takechi",
  title =        "Formal Derivation of Efficient Parallel Programs by
                 Construction of List Homomorphisms",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "444--461",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p444-hu/",
  abstract =     "It has been attracting much attention to make use of
                 list homomorphisms in parallel programming because they
                 ideally suit the divide-and-conquer parallel paradigm.
                 However, they have been usually treated rather
                 informally and ad hoc in the development of efficient
                 parallel programs. What is worse is that some
                 interesting functions, e.g., the maximum segment sum
                 problem, are basically not list homomorphisms. In this
                 article, we propose a systematic and formal way for the
                 construction of a list homomorphism for a given problem
                 so that an efficient parallel program is derived. We
                 show, with several well-known but nontrivial problems,
                 how a straightforward, and ``obviously'' correct, but
                 quite inefficient solution to the problem can be
                 successfully turned into a semantically equivalent
                 ``almost list homomorphism.'' The derivation is based
                 on two transformations, namely tupling and fusion,
                 which are defined according to the specific recursive
                 structures of list homomorphisms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.1.1} Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.1.3}
                 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, Parallel programming. {\bf F.3.3} Theory
                 of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Studies of Program Constructs, Program and recursion
                 schemes. {\bf I.2.2} Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Automatic Programming, Program
                 transformation and derivation",
}

@Article{Pingali:1997:OCD,
  author =       "Keshav Pingali and Gianfranco Bilardi",
  title =        "Optimal Control Dependence Computation and the {Roman}
                 Chariots Problem",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "462--491",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p462-pingali/",
  abstract =     "The control dependence relation plays a fundamental
                 role in program restructuring and optimization. The
                 usual representation of this relation is the control
                 dependence graph (CDG), but the size of the CDG can
                 grow quadratically with the input programs, even for
                 structured programs. In this article, we introduce the
                 augmented postdominator tree {\em (APT)}, a data
                 structure which can be constructed in space and time
                 proportional to the size of the program and which
                 supports enumeration of a number of useful control
                 dependence sets in time proportional to their size.
                 Therefore, {\em APT\/} provides an optimal
                 representation of control dependence. Specifically, the
                 {\em APT\/} data structure supports enumeration of the
                 set cd(e), which is the set of statements control
                 dependent on control-flow edge e, of the set {\bf
                 conds}(w), which is the set of edges on which statement
                 $w$ is dependent, and of the set {\bf cdequiv}($w$),
                 which is the set of statements having the same control
                 dependences as {\em w}. Technically, {\em APT\/} can be
                 viewed as a factored representation of the CDG where
                 queries are processed using an approach known as
                 filtering search.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 I.1.2} Computing Methodologies, ALGEBRAIC MANIPULATION,
                 Algorithms, Analysis of algorithms",
}

@Article{Ramsey:1997:SRM,
  author =       "Norman Ramsey and Mary F. Fern{\'a}ndez",
  title =        "Specifying Representations of Machine Instructions",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "492--524",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "This article was written using the {\tt noweb}
                 literate programming system.",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p492-ramsey/",
  abstract =     "We present SLED, a specification language for Encoding
                 and Decoding, which describes, abstract, binary, and
                 assembly-language representations of machine
                 instructions. Guided by a SLED specification, the New
                 Jersey Machine-Code Toolkit generates bit-manipulating
                 code for use in applications that process machine code.
                 Programmers can write such applications at an assembly
                 language level of abstraction, and the toolkit enables
                 the applications to recognize and emit the binary
                 representations used by the hardware. SLED is suitable
                 for describing both CISC and RISC machines; we have
                 specified representations of MIPS R3000, SPARC, Alpha,
                 and Intel Pentium instructions, and toolkit users have
                 written specifications for the Power PC and Motorola
                 68000. The article includes representative excerpts
                 from our SPARC and Pentium specifications. SLED uses
                 four elements; {\em fields\/} and {\em tokens\/}
                 describe parts of instructions; {\em patterns\/}
                 describe binary representations of instructions or
                 group of instructions; and {\em constructors\/} map
                 between the abstract and binary levels. By combining
                 the elements in different ways, SLED supports
                 machine-independent implementations of machine-level
                 concepts like conditional assembly, span-dependent
                 instructions, relocatable addresses, object code,
                 sections, and relocation. SLED specifications can be
                 checked automatically for consistency with existing
                 assemblers. The implementation of the toolkit is
                 largely determined by our representations of patterns
                 and constructors. We use a normal form that facilitates
                 construction of encoders and decoders. The article
                 describes the normal form and its use. The toolkit has
                 been used to help build several applications. We have
                 built a retargetable debugger and a retargetable,
                 optimizing linker. Colleagues have built a dynamic code
                 generator, a decompiler, and an execution-time
                 analyzer. The toolkit generates efficient code; for
                 example, the linker emits binary up to 15\% faster than
                 it emits assembly language, making it 1.7-2 times
                 faster to produce an a.out directly than by using the
                 assembler.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf C.0} Computer Systems Organization, GENERAL,
                 Systems specification methodology. {\bf D.3.2}
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Specialized application languages.
                 {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Translator writing systems and compiler
                 generators",
}

@Article{Gerber:1997:SRT,
  author =       "Richard Gerber and Seongsoo Hong",
  title =        "Slicing real-time programs for enhanced
                 schedulability",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "3",
  pages =        "525--555",
  month =        may,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 11 18:32:35 MDT 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1997-19-3/p525-gerber/",
  abstract =     "In this article we present a compiler-based technique
                 to help develop correct real-time systems. The domain
                 we consider is that of multiprogrammed real-time
                 applications, in which periodic tasks control physical
                 systems via interacting with external sensors and
                 actuators. While a system is up and running, these
                 operations must be performed as specified---otherwise
                 the system may fail. Correctness depends not only on
                 each program individually, but also on the
                 time-multiplexed behavior of all of the programs
                 running together. Errors due to overloaded resources
                 are exposed very late in a development process, and
                 often at runtime. They are usually remedied by
                 human-intensive activities such as instrumentation,
                 measurement, code tuning and redesign. We describe a
                 static alternative to this process, which relies on
                 well-accepted technologies from optimizing compilers
                 and fixed-priority scheduling. Specifically, when a set
                 of tasks are found to be overloaded, a scheduling
                 analyzer determines candidate tasks to be transformed
                 via program slicing. The slicing engine decomposes each
                 of the selected tasks into two fragments: one that is
                 ``time critical'' and the other ``unobservable.'' The
                 unobservable part is then spliced to the end of the
                 time-critical code, with the external semantics being
                 maintained. The benefit is that the scheduler may
                 postpone the unobservable code beyond its original
                 deadline, which can enhance overall schedulability.
                 While the optimization is completely local, the
                 improvement is realized globally, for the entire task
                 set.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages",
  subject =      "{\bf C.3} Computer Systems Organization,
                 SPECIAL-PURPOSE AND APPLICATION-BASED SYSTEMS,
                 Real-time systems. {\bf D.3.4} Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 J.7} Computer Applications, COMPUTERS IN OTHER SYSTEMS,
                 Real time",
}

@Article{Havlak:1997:NRI,
  author =       "Paul Havlak",
  title =        "Nesting of Reducible and Irreducible Loops",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "4",
  pages =        "557--567",
  month =        jul,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-4/p557-havlak/",
  abstract =     "Recognizing and transforming loops are essential steps
                 in any attempt to improve the running time of a
                 program. Aggressive restructuring techniques have been
                 developed for single-entry (reducible) loops, but
                 restructurers and the dataflow and dependence analysis
                 they rely on often give up in the presence of
                 multientry (irreducible) loops. Thus one irreducible
                 loop can prevent the improvement of all loops in a
                 procedure. This article give an algorithm to build a
                 loop nesting tree for a procedure with arbitrary
                 control flow. The algorithm uses definitions of
                 reducible and irreducible loops which allow either kind
                 of loop to be nested in the other. The tree
                 construction algorithm, an extension of Tarjan's
                 algorithm for testing reducibility, runs in almost
                 linear time. In the presence of irreducible loops, the
                 loop nesting tree can depend on the depth-first
                 spanning tree used to build it. In particular, the
                 header node representing a reducible loop in one
                 version of the loop nesting tree can be the
                 representative of an irreducible loop in another. We
                 give a normalization method that maximizes the set of
                 reducible loops discovered, independent of the
                 depth-first spanning tree used. The normalization
                 require the insertion of at most one node and one edge
                 per reducible loop.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages",
  subject =      "{\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 F.3.3} Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Studies of Program Constructs. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Debray:1997:ICF,
  author =       "Saumya K. Debray and Todd A. Proebsting",
  title =        "Interprocedural Control Flow Analysis of First-Order
                 Programs with Tail-Call Optimization",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "4",
  pages =        "568--585",
  month =        jul,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-4/p568-debray/",
  abstract =     "Knowledge of low-level control flow is essential for
                 many compiler optimizations. In systems with tail-call
                 optimization, the determination of interprocedural
                 control flow is complicated by the fact that because of
                 tail-call optimization, control flow at procedure
                 returns is not readily evident from the call graph of
                 the program. This article shows how interprocedural
                 control-flow analysis of first-order programs can be
                 carried out using well-known concepts from parsing
                 theory. In particular, we show that context-insensitive
                 (or zeroth-order) control-flow analysis corresponds to
                 the notion of FOLLOW sets in context-free grammars,
                 while context-sensitive (or first-order) control-flow
                 analysis corresponds to the notion of LR(1) items. The
                 control-flow information so obtained can be used to
                 improve the precision of interprocedural dataflow
                 analyses as well as to extend certain low-level code
                 optimizations across procedure boundaries.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; languages; management",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.3} Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features.",
}

@Article{Breuer:1997:RCS,
  author =       "Peter T. Breuer and Carlos Delgado Kloos and
                 Andr{\'e}s Mar{\'i}n L{\'o}pez and Natividad
                 Mart{\'i}nez Madrid and Luis S{\'a}nchez
                 Fern{\'a}ndez",
  title =        "A Refinement Calculus for the Synthesis of Verified
                 Hardware Descriptions in {VHDL}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "4",
  pages =        "586--616",
  month =        jul,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-4/p586-breuer/",
  abstract =     "A formal refinement calculus targeted at system-level
                 descriptions in the IEEE standard hardware description
                 language VHDL is described here. Refinement can be used
                 to develop hardware description code that is ``correct
                 by construction''. the calculus is closely related to a
                 Hoare-style programming logic for VHDL and real-time
                 systems in general. That logic and a semantics for a
                 core subset of VHDL are described. The programming
                 logic and the associated refinement calculus are shown
                 to be {\em complete.\/} This means that if there is a
                 code that can be shown to implement a given
                 specification, then it will be derivable from the
                 specification via the calculus.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf B.6.3} Hardware, LOGIC DESIGN, Design Aids,
                 Hardware description languages. {\bf D.1.6} Software,
                 PROGRAMMING TECHNIQUES, Logic Programming. {\bf B.1.4}
                 Hardware, CONTROL STRUCTURES AND MICROPROGRAMMING,
                 Microprogram Design Aids, Languages and compilers.",
}

@Article{Emerson:1997:USW,
  author =       "E. A. Emerson and A. P. Sistla",
  title =        "Utilizing Symmetry when Model-Checking under Fairness
                 Assumptions: An Automata-Theoretic Approach",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "4",
  pages =        "617--638",
  month =        jul,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-4/p617-emerson/",
  abstract =     "One useful technique for combating the state explosion
                 problem is to exploit symmetry when performing temporal
                 logic model checking. In previous work it is shown how,
                 using some basic notions of group theory, symmetry may
                 be exploited for the full range of correctness
                 properties expressible in the very expressive temporal
                 logic CTL*. Surprisingly, while fairness properties are
                 readily expressible in CTL*, these methods are not
                 powerful enough to admit any amelioration of state
                 explosion, when fairness assumptions are involved. We
                 show that it is nonetheless possible to handle fairness
                 efficiently by trading some group theory for automata
                 theory. Our automata-theoretic approach depends on
                 detecting fair paths subtly encoded in a quotient
                 structure whose arcs are annotated with permutations,
                 by using a threaded structure that reflects coordinate
                 shifts caused by the permutations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; theory; verification",
  subject =      "{\bf F.3.1} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs. {\bf F.1.1} Theory of Computation,
                 COMPUTATION BY ABSTRACT DEVICES, Models of Computation.
                 {\bf D.2.4} Software, SOFTWARE ENGINEERING,
                 Software/Program Verification.",
}

@Article{Bergstra:1997:TCT,
  author =       "J. A. Bergstra and T. B. Dinesh and J. Field and J.
                 Heering",
  title =        "Toward a Complete Transformational Toolkit for
                 Compilers",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "5",
  pages =        "639--684",
  month =        sep,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-5/p639-bergstra/",
  abstract =     "PIM is an equational logic designed to function as a
                 ``transformational toolkit'' for compilers and other
                 programming tools that analyze and manipulate
                 imperative languages. It has been applied to such
                 problems as program slicing, symbolic evaluation,
                 conditional constant propagation, and dependence
                 analysis. PIM consists of the untyped lambda calculus
                 extended with an algebraic data type that characterizes
                 the behavior of lazy stores and generalized
                 conditionals. A graph form of PIM terms is by design
                 closely related to several intermediate representations
                 commonly used in optimizing compilers. In this article,
                 we show that PIM's core algebraic component. PIMt,
                 possesses a {\em complete\/} equational axiomatization
                 (under the assumption of certain reasonable
                 restrictions on term formation). This has the practical
                 consequence of guaranteeing that every
                 semantics-preserving transformation on a program
                 representable in PIMt can be derived by application of
                 PIMt rules. We systematically derive the complete PIMt
                 logic as the culmination of a sequence of increasingly
                 powerful equational systems starting from a
                 straightforward ``interpreter'' for closed PIMt terms.
                 This work is an intermediate step in a larger program
                 to develop a set of well-founded tools for manipulation
                 of imperative programs by compilers and other systems
                 that perform program analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf F.3.2} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Algebraic approaches to
                 semantics.",
}

@Article{Boer:1997:PCC,
  author =       "Frank S. {De Boer} and Maurizio Gabbrielli and Elena
                 Marchiori and Catuscia Palamidessi",
  title =        "Proving Concurrent Constraint Programs Correct",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "5",
  pages =        "685--725",
  month =        sep,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-5/p685-de_boer/",
  abstract =     "We introduce a simple compositional proof system for
                 proving (partial) correctness of concurrent constraint
                 programs (CCP). The proof system is based on a
                 denotational approximation of the strongest
                 postcondition semantics of CCP programs. The proof
                 system is proved to be correct for full CCP and
                 complete for the class of programs in which the
                 denotational semantics characterizes exactly the
                 strongest postcondition. This class includes the
                 so-called confluent CCP, a special case of which is
                 constraint logic programming with dynamic scheduling.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.1.3} Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.3.1} Software,
                 PROGRAMMING LANGUAGES, Formal Definitions and Theory,
                 Semantics. {\bf F.3.1} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Logics of programs. {\bf
                 F.3.2} Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Denotational semantics.",
}

@Article{Clarke:1997:VPN,
  author =       "E. M. Clarke and O. Grumberg and S. Jha",
  title =        "Verifying Parameterized Networks",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "5",
  pages =        "726--750",
  month =        sep,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-5/p726-clarke/",
  abstract =     "This article describes a technique based on network
                 grammars and abstraction t verify families of
                 state-transition systems. The family of
                 state-transition systems is represented by a
                 context-free network grammar. Using the structure of
                 the network grammar our technique constructs a process
                 invariant that {\em simulates\/} all the
                 state-transition systems in the family. A novel idea
                 introduced in this article is the use of {\em regular
                 languages\/} to express state properties. We have
                 implemented our techniques and verified two nontrivial
                 examples.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf B.6.2} Hardware, LOGIC DESIGN, Reliability and
                 Testing**. {\bf D.2.4} Software, SOFTWARE ENGINEERING,
                 Software/Program Verification. {\bf F.3.1} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Jensen:1997:DPA,
  author =       "Thomas Jensen",
  title =        "Disjunctive Program Analysis for Algebraic Data
                 Types",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "5",
  pages =        "751--803",
  month =        sep,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Oct 26 07:58:06 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-5/p751-jensen/",
  abstract =     "We describe how binding-time data-flow, and strictness
                 analyses for languages with higher-order functions and
                 algebraic data types can be obtained by instantiating a
                 generic program logic and axiomatization of the
                 properties analyzed for. A distinctive feature of the
                 analyses is that disjunctions of program properties are
                 represented exactly. This yields analyses of high
                 precision and provides a logical characterization of
                 abstract interpretations involving tensor products and
                 uniform properties of recursive data structures. An
                 effective method for proving properties of a program
                 based on fixed-point iteration is obtained by grouping
                 logically equivalent formulae of the same type into
                 equivalence classes, obtaining a lattice of properties
                 of that type, and then defining an abstract
                 interpretation over these lattices. We demonstrate this
                 in the case of strictness analysis by proving that the
                 strictness abstract interpretation of a program is the
                 equivalence class containing the strongest property
                 provable of the program in the strictness logic.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf D.2.7} Software, SOFTWARE ENGINEERING,
                 Distribution, Maintenance, and Enhancement, SOFTLIB.
                 {\bf D.3.1} Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Semantics. {\bf D.3.2}
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative (functional) languages.
                 {\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Procedures, functions, and
                 subroutines. {\bf D.3.4} Software, PROGRAMMING
                 LANGUAGES, Processors, Compilers. {\bf E.1} Data, DATA
                 STRUCTURES, Lists, stacks, and queues. {\bf F.3.1}
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about Programs,
                 Logics of programs. {\bf F.3.2} Theory of Computation,
                 LOGICS AND MEANINGS OF PROGRAMS, Semantics of
                 Programming Languages, Denotational semantics.",
}

@Article{VanRoy:1997:MOD,
  author =       "Peter {Van Roy} and Seif Haridi and Per Brand and Gert
                 Smolka and Michael Mehl and Ralf Scheidhauer",
  title =        "Mobile Objects in {Distributed Oz}",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "5",
  pages =        "804--851",
  month =        sep,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Dec 3 16:28:05 MST 1997",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-5/p804-van_roy/",
  abstract =     "Some of the most difficult questions to answer when
                 designing a distributed application are related to
                 mobility: what information to transfer between sites
                 and when and how to transfer it. Network-transparent
                 distribution, the property that a program's behavior is
                 independent of how it is partitioned among sites, does
                 not directly address these questions. Therefore we
                 propose to extend all language entities with a network
                 behavior that enables {\em efficient\/} distributed
                 programming by giving the programmer a simple and
                 predictable control over network communication
                 patterns. In particular, we show how to give object an
                 arbitrary mobility behavior that is independent of the
                 object definition. In this way, the syntax and
                 semantics of objects are the same regardless of whether
                 they are used as stationary servers, mobile agents, or
                 simply as caches. These ideas have been implemented in
                 Distributed Oz, a concurrent object-oriented language
                 that is state aware and has dataflow synchronization.
                 We prove that the implementation of objects in
                 Distributed Oz is network transparent. To satisfy the
                 predictability condition, the implementation avoids
                 forwarding chains through intermediate sites. The
                 implementation is an extension to the publicly
                 available DFKI Oz 2.0 system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.1.3} Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Distributed programming. {\bf
                 D.3.2} Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf F.3.2} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Semantics of Programming
                 Languages, Operational semantics.",
}

@Article{Moon:1997:PNC,
  author =       "Soo-Mook Moon and Kemal Ebcio{\u{g}}lu",
  title =        "Parallelizing nonnumerical code with selective
                 scheduling and software pipelining",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "853--898",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p853-moon/",
  abstract =     "Instruction-level parallelism (ILP) in nonnumerical
                 code is regarded as scarce and hard to exploit due to
                 its irregularity. In this article, we introduce a new
                 code-scheduling technique for irregular ILP called
                 ``selective scheduling'' which can be used as a
                 component for superscalar and VLIW compilers. Selective
                 scheduling can compute a wide set of independent
                 operations across {\em all\/} execution paths based on
                 renaming and forward-substitution and can compute
                 available operations across loop iterations if combined
                 with software pipelining. This scheduling approach has
                 better heuristics for determining the usefulness of
                 moving one operation versus moving another and can
                 successfully find useful code motions without resorting
                 to branch profiling. The compile-time overhead of
                 selective scheduling is low due to its incremental
                 computation technique and its controlled code
                 duplication. We parallelized the SPEC integer
                 benchmarks and five AIX utilities without using branch
                 probabilities. The experiments indicate that a fivefold
                 speedup is achievable on realistic resources with a
                 reasonable overhead in compilation time and code
                 expansion and that a solid speedup increase is also
                 obtainable on machines with fewer resources. These
                 results improve previously known characteristics of
                 irregular ILP.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; languages",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Raja:1997:CFC,
  author =       "N. Raja and R. K. Shyamasundar",
  title =        "Combinatory formulations of concurrent languages",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "899--915",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p899-raja/",
  abstract =     "We design a system with six {\em Basic Combinators\/}
                 and prove that it is powerful enough to embed the full
                 asynchronous $\pi$-calculus, including replication. Our
                 theory for constructing {\em Combinatory Versions\/} of
                 concurrent languages is based on a method, used by
                 Quine and Bernays, for the general elimination of
                 variables in linguistic formalisms. Our combinators are
                 designed to eliminate the requirement of {\em names\/}
                 that are {\em bound\/} by an{\em input prefix}. They
                 also eliminate the need for input prefix, output
                 prefix, and the accompanying mechanism of {\em
                 substitution}. We define a notion of {\em
                 bisimulation\/} for the combinatory version and show
                 that the combinatory version preserves the semantics of
                 the original calculus. One of the distinctive features
                 of the approach is that it can be used to rework
                 several process algebras in order to derive equivalent
                 combinatory versions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf F.4.1} Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Lambda
                 calculus and related systems. {\bf I.1.3} Computing
                 Methodologies, SYMBOLIC AND ALGEBRAIC MANIPULATION,
                 Languages and Systems, Substitution mechanisms**. {\bf
                 F.1.2} Theory of Computation, COMPUTATION BY ABSTRACT
                 DEVICES, Modes of Computation, Parallelism and
                 concurrency.",
}

@Article{Sabry:1997:RC,
  author =       "Amr Sabry and Philip Wadler",
  title =        "A reflection on a call-by-value",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "916--941",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p916-sabry/",
  abstract =     "One way to model a sound and complete translation from
                 a source calculus into a target calculus is with an
                 {\em adjoint\/} or a {\em Galois connection}. In the
                 special case of a {\em reflection}, one also has that
                 the target calculus is isomorphic to a subset of the
                 source. We show that three widely studied translations
                 form reflections. We use as our source language Moggi's
                 computational lambda calculus, which is an extension of
                 Plotkin's call-by-value calculus. We show that
                 Plotkin's CPS translation, Moggi's monad translation,
                 and Girard's translation to linear logic can all be
                 regarded as reflections form this source language, and
                 we put forward the computational lambda calculus as a
                 model of call-by-value computation that improves on the
                 traditional call-by-value calculus. Our work
                 strengthens Plotkin's and Moggi's original results and
                 improves on recent work based on{\em equational
                 correspondence}, which uses equations rather than
                 reductions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.1.1} Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf F.3.2} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages. {\bf
                 F.4.1} Theory of Computation, MATHEMATICAL LOGIC AND
                 FORMAL LANGUAGES, Mathematical Logic.",
}

@Article{Rinard:1997:CAN,
  author =       "Martin C. Rinard and Pedro C. Diniz",
  title =        "Commutativity analysis: a new analysis technique for
                 parallelizing compilers",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "942--991",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p942-rinard/",
  abstract =     "This article presents a new analysis technique,
                 commutativity analysis, for automatically parallelizing
                 computations that manipulate dynamic, pointer-based
                 data structures. Commutativity analysis views the
                 computation as composed of operations on objects. It
                 then analyzes the program at this granularity to
                 discover when operations commute (i.e., generate the
                 same final result regardless of the order in which they
                 execute). If all of the operations required to perform
                 a given computation commute, the compiler can
                 automatically generate parallel code. We have
                 implemented a prototype compilation system that uses
                 commutativity analysis as its primary analysis
                 technique. We have used this system to automatically
                 parallelize three complete scientific computations: the
                 Barnes--Hut N-body solver, the Water liquid simulation
                 code, and the String seismic simulation code. This
                 article presents performance results for the generate
                 parallel code running on the Stanford DASH machine.
                 These results provided encouraging evidence that
                 commutativity analysis can serve as the basis for a
                 successful parallelizing compiler. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors.",
}

@Article{Duesterwald:1997:PFD,
  author =       "Evelyn Duesterwald and Rajiv Gupta and Mary Lou
                 Soffa",
  title =        "A practical framework for demand-driven
                 interprocedural data flow analysis",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "992--1030",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p992-duesterwald/",
  abstract =     "The high cost and growing importance of
                 interprocedural data flow analysis have led to an
                 increased interest in demand-driven algorithms. In this
                 article, we present a general framework for developing
                 demand-driven interprocedural data flow analyzers and
                 report our experience in evaluating the performance of
                 this approach. A demand for data flow information is
                 modeled as a set of queries. The framework includes a
                 generic demand-driven algorithm that determines the
                 response to query by iteratively applying a system of
                 query propagation rules. The propagation rules yield
                 precise responses for the class of distributive finite
                 data flow problems. We also describe a two-phase
                 framework variation to accurately handle
                 nondistributive problems. A performance evaluation of
                 our demand-driven approach is presented for two data
                 flow problems, namely, reaching-definitions and copy
                 constant propagation. Our experiments show that
                 demand-driven analysis performs well in practice,
                 reducing both time and space requirements when compared
                 with exhaustive analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; performance",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.2.2} Software, SOFTWARE
                 ENGINEERING, Design Tools and Techniques. {\bf H.3.4}
                 Information Systems, INFORMATION STORAGE AND RETRIEVAL,
                 Systems and Software, Question-answering (fact
                 retrieval) systems**.",
}

@Article{Janssen:1997:MGR,
  author =       "Johan Janssen and Henk Corporaal",
  title =        "Making graphs reducible with controlled node
                 splitting",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "1031--1052",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p1031-janssen/",
  abstract =     "Several compiler optimizations, such as data flow
                 analysis, the exploitation of instruction-level
                 parallelism (ILP), loop transformations, and memory
                 disambiguation, require programs with reducible control
                 flow graphs. However, not all programs satisfy this
                 property. A new method for transforming irreducible
                 control flow graphs to reducible control flow graphs,
                 called Controlled Node Splitting (CNS), is presented.
                 CNS duplicates nodes of the control flow graph to
                 obtain reducible control flow graphs. CNS results in a
                 minimum number of splits and a minimum number of
                 duplicates. Sine the computation time to find the
                 optimal split sequence is large, a heuristic has been
                 developed. The results of this heuristic are close to
                 the optimum. Straightforward application of node
                 splitting resulted in an average code size increase of
                 235\% per procedure of our benchmark programs. CNS with
                 the heuristic limits this increase to only 3\%. The
                 impact on the total code size of the complete programs
                 is 13.6\% for a straightforward application of node
                 splitting. However, when CNS is used, with the
                 heuristic the average growth in code size of a complete
                 program dramatically reduces to 0.2\%",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf E.1} Data, DATA STRUCTURES,
                 Graphs and networks.",
}

@Article{Whitfield:1997:AEC,
  author =       "Deborah L. Whitfield and Mary Lou Soffa",
  title =        "An approach for exploring code improving
                 transformations",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "1053--1084",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p1053-whitfield/",
  abstract =     "Although code transformations are routinely applied to
                 improve the performance of programs for both scalar and
                 parallel machines, the properties of code-improving
                 transformations are not well understood. In this
                 article we present a framework that enables the
                 exploration, both analytically and experimentally, of
                 properties of code-improving transformations. The major
                 component of the framework is a specification language,
                 Gospel, for expressing the conditions needed to safely
                 apply a transformation and the actions required to
                 change the code to implement the transformation. The
                 framework includes a technique that facilitates an
                 analytical investigation of code-improving
                 transformations using the Gospel specifications. It
                 also contains a tool, Genesis, that automatically
                 produces a transformer that implements the
                 transformation specified in Gospel. We demonstrate the
                 usefulness of the framework by exploring the enabling
                 and disabling properties of transformations. We first
                 present analytical results on the enabling and
                 disabling properties of a set of code transformations,
                 including both traditional and parallelizing
                 transformations, and then describe experimental results
                 showing the types of transformations and the enabling
                 and disabling interactions actually found in a set of
                 programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; performance",
  subject =      "{\bf D.2.2} Software, SOFTWARE ENGINEERING, Design
                 Tools and Techniques. {\bf D.3.1} Software, PROGRAMMING
                 LANGUAGES, Formal Definitions and Theory, Semantics.
                 {\bf D.3.1} Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory, Syntax. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Code generation.
                 {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Translator writing systems and compiler generators.",
}

@Article{Yu:1997:NCI,
  author =       "Ting Yu and Owen Kaser",
  title =        "A note on ``On the conversion of indirect to direct
                 recursion''",
  journal =      j-TOPLAS,
  volume =       "19",
  number =       "6",
  pages =        "1085--1087",
  month =        nov,
  year =         "1997",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Mar 11 18:11:48 MST 1998",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1997-19-6/p1085-yu/",
  abstract =     "In the article ``On the conversion of indirect to
                 direct recursion''(ACM Lett. Program. Lang. 2, 1-4. pp.
                 151-164), a method was introduced to convert indirect
                 to direct recursion. It was claimed that for any call
                 graph, there is a mutual-recursion elimination sequence
                 if and only if no strongly connected component contains
                 two node-disjoint circuits. We first give a
                 counterexample and then provide a correction.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers.",
}

@Article{Sagiv:1998:SSP,
  author =       "Mooly Sagiv and Thomas Reps and Reinhard Wilhelm",
  title =        "Solving shape-analysis problems in languages with
                 destructive updating",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "1",
  pages =        "1--50",
  month =        jan,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-1/p1-sagiv/",
  abstract =     "This article concerns the static analysis of programs
                 that perform destructive updating on heap-allocated
                 storage. We give an algorithm that uses finite shape
                 graphs to approximate conservatively the possible
                 ``shapes'' that heap-allocated structures in a program
                 can take on. For certain programs, our technique is
                 able to determine such properties as (1) when the input
                 to the program is a list, the output is also a list and
                 (2) when the input to the program is a tree, the output
                 is also a tree. For example, the method can determine
                 that ``listness'' is preserved by (1) a program that
                 performs list reversal via destructive updating of the
                 input list and (2) a program that searches a list and
                 splices a new element into the list. None of the
                 previously known methods that use graphs to model the
                 program's store are capable of determining that
                 ``listness'' is preserved on these examples (or
                 examples of similar complexity). In contrast with most
                 previous work, our shape analysis algorithm is even
                 accurate for certain programs that update cyclic data
                 structures; that is, it is sometimes able to show that
                 when the input to the program is a circular list, the
                 output is also a circular list. For example, the
                 shape-analysis algorithm can determine that an
                 insertion into a circular list preserves ``circular
                 listness.''",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory; verification",
  subject =      "{\bf F.3.2} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Semantics of Programming Languages,
                 Program analysis. {\bf D.2.5} Software, SOFTWARE
                 ENGINEERING, Testing and Debugging, Symbolic execution.
                 {\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf E.1} Data, DATA
                 STRUCTURES, Graphs and networks. {\bf F.3.3} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Type structure. {\bf E.1} Data,
                 DATA STRUCTURES, Lists, stacks, and queues. {\bf E.1}
                 Data, DATA STRUCTURES, Trees. {\bf E.2} Data, DATA
                 STORAGE REPRESENTATIONS, Linked representations.",
}

@Article{Attie:1998:SCS,
  author =       "Paul C. Attie and E. Allen Emerson",
  title =        "Synthesis of concurrent systems with many similar
                 processes",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "1",
  pages =        "51--115",
  month =        jan,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-1/p51-attie/",
  abstract =     "Methods for synthesizing concurrent programs from
                 temporal logic specifications based on the use of a
                 decision procedure for testing temporal satisfiability
                 have been proposed by Emerson and Clarke and by Manna
                 and Wolper. An important advantage of these synthesis
                 methods is that they obviate the need to manually
                 compose a program and manually construct a proof of its
                 correctness. One only has to formulate a precise
                 problem specification; the synthesis method then
                 mechanically constructs a correct solution. A serious
                 drawback of these methods in practice, however, is that
                 they suffer from the state explosion problem. To
                 synthesize a concurrent system consisting of $K$
                 sequential processes, each having $N$ states in its
                 local transition diagram, requires construction of the
                 global product-machine having about {\em NK\/} global
                 states in general. This exponential growth in $K$ makes
                 it infeasible to synthesize systems composed of more
                 than 2 or 3 processes. In this article, we show how to
                 synthesize concurrent systems consisting of many (i.e.,
                 a finite but arbitrarily large number $K$ of) similar
                 sequential processes. Our approach avoids construction
                 of the global product-machine for $K$ processes;
                 instead, it constructs a two-process product-machine
                 for a single pair of generic sequential processes. The
                 method is uniform in {\em K}, providing a simple
                 template that can be instantiated for each process to
                 yield a solution for any fixed {\em K}. The method is
                 also illustrated on synchronization problems from the
                 literature.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf C.2.4} Computer Systems Organization,
                 COMPUTER-COMMUNICATION NETWORKS, Distributed Systems.
                 {\bf D.1.2} Software, PROGRAMMING TECHNIQUES, Automatic
                 Programming. {\bf D.1.3} Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming. {\bf D.2.4}
                 Software, SOFTWARE ENGINEERING, Software/Program
                 Verification. {\bf F.3.1} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs, Mechanical verification. {\bf
                 I.2.2} Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 synthesis.",
}

@Article{Dujardin:1998:FAC,
  author =       "Eric Dujardin and Eric Amiel and Eric Simon",
  title =        "Fast algorithms for compressed multimethod dispatch
                 table generation",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "1",
  pages =        "116--165",
  month =        jan,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-1/p116-dujardin/",
  abstract =     "The efficiency of dynamic dispatch is a major
                 impediment to the adoption of multimethods in
                 object-oriented languages. In this article, we propose
                 a simple multimethod dispatch scheme based on
                 compressed dispatch tables. This scheme is applicable
                 to any object-oriented language using a method
                 precedence order that satisfies a specific monotonous
                 property (e.g., as Cecil and Dylan) and guarantees that
                 dynamic dispatch is performed in constant time, the
                 latter being a major requirement for some languages and
                 applications. We provide efficient algorithms to build
                 the dispatch tables, provide their worst-case
                 complexity, and demonstrate the effectiveness of our
                 scheme by real measurements performed on two large
                 object-oriented applications. Finally, we provide a
                 detailed comparison of our technique with other
                 existing techniques.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; measurement; performance",
  subject =      "{\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Control structures. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf D.3.3} Software, PROGRAMMING
                 LANGUAGES, Language Constructs and Features,
                 Procedures, functions, and subroutines. {\bf E.1} Data,
                 DATA STRUCTURES. {\bf E.2} Data, DATA STORAGE
                 REPRESENTATIONS.",
}

@Article{Wright:1998:PSE,
  author =       "Andrew K. Wright and Suresh Jagannathan",
  title =        "Polymorphic splitting: an effective polyvariant flow
                 analysis",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "1",
  pages =        "166--207",
  month =        jan,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-1/p166-wright/",
  abstract =     "This article describes a general-purpose program
                 analysis that computes global control-flow and
                 data-flow information for higher-order, call-by-value
                 languages. The analysis employs a novel form of
                 polyvariance called polymorphic splitting that uses
                 let-expressions as syntactic clues to gain precision.
                 The information derived from the analysis is used both
                 to eliminate run-time checks and to inline procedures.
                 The analysis and optimizations have been applied to a
                 suite of Scheme programs. Experimental results obtained
                 from the prototype implementation indicate that the
                 analysis is extremely precise and has reasonable cost.
                 Compared to monovariant flow analyses such as 0CFA, or
                 analyses based on type inference such as soft typing,
                 the analysis eliminates significantly more run-time
                 checks. Run-time check elimination and inlining
                 together typically yield a 20 to 40\% performance
                 improvement for the benchmark suite, with some programs
                 running four times as fast.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "experimentation; performance",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf D.3.2} Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Applicative (functional) languages.",
}

@Article{Leuschel:1998:CGP,
  author =       "Michael Leuschel and Bern Martens and Danny {De
                 Schreye}",
  title =        "Controlling generalization and polyvariance in partial
                 deduction of normal logic programs",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "1",
  pages =        "208--258",
  month =        jan,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jul 26 15:58:11 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-1/p208-leuschel/",
  abstract =     "Given a program and some input data, partial deduction
                 computes a specialized program handling any remaining
                 input more efficiently. However, controlling the
                 process well is a rather difficult problem. In this
                 article, we elaborate global control for partial
                 deduction: for which atoms, among possibly infinitely
                 many, should specialized relations be produced,
                 meanwhile guaranteeing correctness as well as
                 termination. Our work is based on two ingredients.
                 First, we use the concept of a characteristic tree,
                 encapsulating specialization behavior rather than
                 syntactic structure, to guide generalization and
                 polyvariance, and we show how this can be done in a
                 correct and elegant way. Second, we structure
                 combinations of atoms and associated characteristic
                 trees in global trees registering ``causal''
                 relationships among such pairs. This allows us to spot
                 looming nontermination and perform proper
                 generalization in order to avert the danger, without
                 having to impose a depth bound on characteristic trees.
                 The practical relevance and benefits of the work are
                 illustrated through extensive experiments. Finally, a
                 similar approach may improve upon current (on-line)
                 control strategies for program transformation in
                 general such as (positive) supercompilation of
                 functional programs. It also seems valuable in the
                 context of abstract interpretation to handle infinite
                 domains of infinite height with more precision.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf D.1.2} Software, PROGRAMMING TECHNIQUES,
                 Automatic Programming. {\bf I.2.3} Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving, Logic programming. {\bf D.1.6}
                 Software, PROGRAMMING TECHNIQUES, Logic Programming.
                 {\bf F.4.1} Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Logic and
                 constraint programming. {\bf I.2.2} Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming.",
}

@Article{Reps:1998:MTL,
  author =       "Thomas Reps",
  title =        "``Maximal-munch'' tokenization in linear time",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "259--273",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p259-reps/",
  abstract =     "The lexical-analysis (or scanning) phase of a compiler
                 attempts to partition an input string into a sequence
                 of tokens. The convention in most languages is that the
                 input is scanned left to right, and each token
                 identified is a ``maximal munch'' of the remaining
                 input---the {\em longest\/} prefix of the remaining
                 input that is a token of the language. Although most of
                 the standard compiler textbooks present a way to
                 perform maximal-munch tokenization, the algorithm they
                 describe is one that, for certain sets of token
                 definitions, can cause the scanner to exhibit quadratic
                 behavior in the worst case. In the article, we show
                 that maximal-munch tokenization can always be performed
                 in time linear in the size of the input.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf F.1.1} Theory of
                 Computation, COMPUTATION BY ABSTRACT DEVICES, Models of
                 Computation, Automata. {\bf F.2.2} Theory of
                 Computation, ANALYSIS OF ALGORITHMS AND PROBLEM
                 COMPLEXITY, Nonnumerical Algorithms and Problems,
                 Pattern matching. {\bf I.5.4} Computing Methodologies,
                 PATTERN RECOGNITION, Applications, Text processing.",
}

@Article{Lang:1998:SAE,
  author =       "Jun Lang and David B. Stewart",
  title =        "A study of the applicability of existing
                 exception-handling techniques to component-base
                 real-time software technology",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "274--301",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p274-lang/",
  abstract =     "This study focuses on the current state of
                 error-handling technology and concludes with
                 recommendations for further research in error handling
                 for component-based real-time software. With real-time
                 programs growing in size and complexity, the quality
                 and cost of developing and maintaining them are still
                 deep concerns to embedded software industries.
                 Component-based software is a promising approach in
                 reducing development cost while increasing quality and
                 reliability. As with any other real-time software,
                 component-based software needs exception detection and
                 handling mechanisms to satisfy reliability
                 requirements. The current lack of suitable
                 error-handling techniques can make an application
                 composed of reusable software nondeterministic and
                 difficult to understand in the presence of errors.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design; languages; performance; standardization",
  subject =      "{\bf D.2.10} Software, SOFTWARE ENGINEERING, Design**.
                 {\bf D.2.3} Software, SOFTWARE ENGINEERING, Coding
                 Tools and Techniques. {\bf D.2.6} Software, SOFTWARE
                 ENGINEERING, Programming Environments. {\bf D.3.3}
                 Software, PROGRAMMING LANGUAGES, Language Constructs
                 and Features. {\bf D.4.1} Software, OPERATING SYSTEMS,
                 Process Management. {\bf D.4.7} Software, OPERATING
                 SYSTEMS, Organization and Design, Real-time systems and
                 embedded systems. {\bf D.4.8} Software, OPERATING
                 SYSTEMS, Performance. {\bf D.4.9} Software, OPERATING
                 SYSTEMS, Systems Programs and Utilities.",
}

@Article{Jackson:1998:IME,
  author =       "Daniel Jackson and Somesh Jha and Craig A. Damon",
  title =        "Isomorph-free model enumeration: a new method for
                 checking relational specifications",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "302--343",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p302-jackson/",
  abstract =     "Software specifications often involve data structures
                 with huge numbers of value, and consequently they
                 cannot be checked using standard state exploration or
                 model-checking techniques. Data structures can be
                 expressed with binary relations, and operations over
                 such structures can be expressed as formulae involving
                 relational variables. Checking properties such as
                 preservation of an invariant thus reduces to
                 determining the validity of a formula or, equivalently,
                 finding a model (of the formula's negation). A new
                 method for finding relational models is presented. It
                 exploits the permutation invariance of models---if two
                 interpretations are isomorphic, then neither is a
                 model, or both are---by partitioning the space into
                 equivalence classes of symmetrical interpretations.
                 Representatives of these classes are constructed
                 incrementally by using the symmetry of the partial
                 interpretation to limit the enumeration of new relation
                 values. The notion of symmetry depends on the type
                 structure of the formula; by picking the weakest
                 typing, larger equivalence classes (and thus fewer
                 representatives) are obtained. A more refined notion of
                 symmetry that exploits the meaning of the relational
                 operators is also described. The method typically leads
                 to exponential reductions; in combination with other,
                 simpler, reductions it makes automatic analysis of
                 relational specifications possible for the first
                 time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; verification",
  subject =      "{\bf D.2.4} Software, SOFTWARE ENGINEERING,
                 Software/Program Verification. {\bf D.2.1} Software,
                 SOFTWARE ENGINEERING, Requirements/Specifications. {\bf
                 D.2.5} Software, SOFTWARE ENGINEERING, Testing and
                 Debugging. {\bf F.3.1} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Specifying and Verifying and
                 Reasoning about Programs.",
}

@Article{Douence:1998:SSF,
  author =       "R{\'e}mi Douence and Pascal Fradet",
  title =        "A systematic study of functional language
                 implementations",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "344--387",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p344-douence/",
  abstract =     "We introduce a unified framework to describe, relate,
                 compare, and classify functional language
                 implementations. The compilation process is expressed
                 as a succession of program transformations in the
                 common framework. At each step, different
                 transformations model fundamental choices. A benefit of
                 this approach is to structure and decompose the
                 implementation process. The correctness proofs can be
                 tackled independently for each step and amount to
                 proving program transformations in the functional
                 world. This approach also paves the way to formal
                 comparisons by making it possible to estimate the
                 complexity of individual transformations or
                 compositions of them. Our study aims at covering the
                 whole known design space of sequential functional
                 language implementations. In particular, we consider
                 call-by-value, call-by-name, call-by-need reduction
                 strategies as well as environment- and graph-based
                 implementations. We describe for each compilation step
                 the diverse alternatives as program transformations. In
                 some cases, we illustrate how to compare or relate
                 compilation techniques, express global optimizations,
                 or hybrid implementations. We also provide a
                 classification of well-known abstract machines.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory; verification",
  subject =      "{\bf D.1.1} Software, PROGRAMMING TECHNIQUES,
                 Applicative (Functional) Programming. {\bf D.2.4}
                 Software, SOFTWARE ENGINEERING, Software/Program
                 Verification, Correctness proofs. {\bf D.2.8} Software,
                 SOFTWARE ENGINEERING, Metrics, Complexity measures.
                 {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Code generation. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf F.4.1} Theory of Computation,
                 MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
                 Logic, Lambda calculus and related systems.",
}

@Article{Sreedhar:1998:NFE,
  author =       "Vugranam C. Sreedhar and Guang R. Gao and Yong-Fong
                 Lee",
  title =        "A New Framework for Elimination-Based Data Flow
                 Analysis Using {DJ} Graphs",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "388--435",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Jan 2 10:46:05 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p388-sreedhar/",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization. {\bf
                 E.1} Data, DATA STRUCTURES, Graphs and networks. {\bf
                 E.1} Data, DATA STRUCTURES, Trees.",
}

@Article{Kobayashi:1998:PDF,
  author =       "Naoki Kobayashi",
  title =        "A Partially Deadlock-Free Typed Process Calculus",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "2",
  pages =        "436--482",
  month =        mar,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-2/p436-kobayashi/",
  abstract =     "We propose a novel static type system for a process
                 calculus, which ensures both partial deadlock-freedom
                 and partial confluence. The key novel ideas are (1)
                 introduction to the order of channel use as type
                 information, and (2) classification of communication
                 channels into reliable and unreliable channels based on
                 their usage and a guarantee of the usage by the type
                 system. We can ensure that communication on reliable
                 channels never causes deadlock and also that certain
                 reliable channels never introduce nondeterminism. After
                 presenting the type system and formal proofs of its
                 correctness, we show encodings of the
                 $\lambda$-calculus and typical concurrent objects in
                 the deadlock-free fragment of the calculus and
                 demonstrate how type information can be used for
                 reasoning about program behavior.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.1} Software, PROGRAMMING LANGUAGES, Formal
                 Definitions and Theory. {\bf D.3.3} Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features.",
}

@Article{Rinard:1998:DIE,
  author =       "Martin C. Rinard and Monica S. Lam",
  title =        "The Design, Implementation, and Evaluation of {Jade}",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "3",
  pages =        "483--545",
  month =        may,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-3/p483-rinard/",
  abstract =     "Jade is a portable, implicitly parallel language
                 designed for exploiting task-level concurrency.Jade
                 programmers start with a program written in a standard
                 serial, imperative language, then use Jade constructs
                 to declare how parts of the program access data. The
                 Jade implementation uses this data access information
                 to automatically extract the concurrency and map the
                 application onto the machine at hand. The resulting
                 parallel execution preserves the semantics of the
                 original serial program. We have implemented Jade as an
                 extension to C, and Jade implementations exist for
                 shared-memory multiprocessors, homogeneous
                 message-passing machines, and heterogeneous networks of
                 workstations. In this article we discuss the design
                 goals and decisions that determined the final form of
                 Jade and present an overview of the Jade
                 implementation. We also present our experience using
                 Jade to implement several complete scientific and
                 engineering applications. We use this experience to
                 evaluate how the different Jade language features were
                 used in practice and how well Jade as a whole supports
                 the process of developing parallel applications. We
                 find that the basic idea of preserving the serial
                 semantics simplifies the program development process,
                 and that the concept of using data access
                 specifications to guide the parallelization offers
                 significant advantages over more traditional
                 control-based approaches. We also find that the Jade
                 data model can interact poorly with concurrency
                 patterns that write disjoint pieces of a single
                 aggregate data structure, although this problem arises
                 in only one of the applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.1.3} Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Parallel programming. {\bf
                 D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Concurrent programming
                 structures.",
}

@Article{Liu:1998:SCI,
  author =       "Yanhong A. Liu and Scott D. Stoller and Tim
                 Teitelbaum",
  title =        "Static Caching for Incremental Computation",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "3",
  pages =        "546--585",
  month =        may,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-3/p546-liu/",
  abstract =     "A systematic approach is given for deriving
                 incremental programs that exploit caching. The
                 cache-and-prune method presented in the article
                 consists of three stages: (I) the original program is
                 extended to cache the results of all its intermediate
                 subcomputations as well as the final result, (II) the
                 extended program is incrementalized so that computation
                 on a new input can use all intermediate results on an
                 old input, and (III) unused results cached by the
                 extended program and maintained by the incremental
                 program are pruned away, leaving a pruned extended
                 program that caches only useful intermediate results
                 and a pruned incremental program that uses and
                 maintains only useful results. All three stages utilize
                 static analyses and semantics-preserving
                 transformations. Stages I and III are simple, clean,
                 and fully automatable. The overall method has a kind of
                 optimality with respect to the techniques used in Stage
                 II. The method can be applied straightforwardly to
                 provide a systematic approach to program improvement
                 via caching.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf I.2.2} Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Automatic analysis of algorithms. {\bf
                 D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features. {\bf F.3.3} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs. {\bf I.2.2} Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Automatic
                 Programming, Program transformation.",
}

@Article{Sagonas:1998:AMT,
  author =       "Konstantinos Sagonas and Terrance Swift",
  title =        "An Abstract Machine for Tabled Execution of
                 Fixed-Order Stratified Logic Programs",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "3",
  pages =        "586--634",
  month =        may,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-3/p586-sagonas/",
  abstract =     "SLG resolution uses tabling to evaluate nonfloundering
                 normal logic programs according to the well-founded
                 semantics. The SLG-WAM, which forms the engine of the
                 XSB system, can compute in-memory recursive queries an
                 order of magnitude faster than current deductive
                 databases. At the same time, the SLG-WAM tightly
                 integrates Prolog code with tabled SLG code, and
                 executes Prolog code with minimal overhead compared to
                 the WAM. As a result, the SLG-WAM brings to logic
                 programming important termination and complexity
                 properties of deductive databases. This article
                 describes the architecture of the SLG-WAM for a
                 powerful class of programs, the class of fixed-order
                 dynamically stratified programs. We offer a detailed
                 description of the algorithms, data structures, and
                 instructions that the SLG-WAM adds to the WAM, and a
                 performance analysis of engine overhead due to the
                 extensions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; performance",
  subject =      "{\bf D.1.6} Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.1.2} Software, PROGRAMMING
                 TECHNIQUES, Automatic Programming. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors, Compilers.
                 {\bf F.4.1} Theory of Computation, MATHEMATICAL LOGIC
                 AND FORMAL LANGUAGES, Mathematical Logic, Logic and
                 constraint programming. {\bf I.2.3} Computing
                 Methodologies, ARTIFICIAL INTELLIGENCE, Deduction and
                 Theorem Proving, Logic programming. {\bf I.2.3}
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Deduction and Theorem Proving, Nonmonotonic reasoning
                 and belief revision. {\bf D.3.4} Software, PROGRAMMING
                 LANGUAGES, Processors, Interpreters. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf I.2.3} Computing Methodologies,
                 ARTIFICIAL INTELLIGENCE, Deduction and Theorem Proving,
                 Resolution.",
}

@Article{Pugh:1998:CAD,
  author =       "William Pugh and David Wonnacott",
  title =        "Constraint-Based Array Dependence Analysis",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "3",
  pages =        "635--678",
  month =        may,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-3/p635-pugh/",
  abstract =     "Traditional array dependence analysis, which detects
                 potential memory aliasing of array references is a key
                 analysis technique for automatic parallelization.
                 Recent studies of benchmark codes indicate that
                 limitations of analysis cause many compilers to
                 overlook large amounts of potential parallelism, and
                 that exploiting this parallelism requires algorithms to
                 answer new question about array references, not just
                 get better answers to the old questions of aliasing. We
                 need to ask about the flow of values in arrays, to
                 check the legality of array privatization, and about
                 the conditions under which a dependence exists, to
                 obtain information about conditional parallelism. In
                 some cases, we must answer these questions about code
                 containing nonlinear terms in loop bounds or
                 subscripts. This article describes techniques for
                 phrasing these questions in terms of systems of
                 constraints. Conditional dependence analysis can be
                 performed with a constraint operation we call the
                 ``gist'' operation. When subscripts and loop bounds are
                 affine, questions about the flow of values in array
                 variables can be phrased in terms of Presburger
                 Arithmetic. When the constraints describing a
                 dependence are not affine, we introduce uninterpreted
                 function symbols to represent the nonaffine terms. Our
                 constraint language also provides a rich language for
                 communication with the dependence analyzer, by either
                 the programmer or other phases of the compiler. This
                 article also documents our investigations of the
                 practicality of our approach. The worst-case complexity
                 of Presburger Arithmetic indicates that it might be
                 unsuitable for any practical application. However, we
                 have found that analysis of benchmark programs does not
                 cause the exponential growth in the number of
                 constraints that could occur in the worst case. We have
                 studied the constraints produced during our analysis,
                 and identified characteristics that keep our algorithms
                 free of exponential behavior in practice.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Fokkink:1998:WAR,
  author =       "Wan Fokkink and Jasper Kamperman and Pum Walters",
  title =        "Within {ARM}'s Reach: Compilation of Left-Linear
                 Rewrite Systems via Minimal Rewrite Systems",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "3",
  pages =        "679--706",
  month =        may,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-3/p679-fokkink/",
  abstract =     "A new compilation technique for left-linear
                 term-rewriting systems is presented, where rewrite
                 rules are transformed into so-called minimal rewrite
                 rules. These minimal rules have such a simple form that
                 they can be viewed as instructions for an abstract
                 rewriting machine (ARM).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Optimization.",
}

@Article{Lee:1998:PAF,
  author =       "Oukseh Lee and Kwangkeun Yi",
  title =        "Proofs about a Folklore Let-Polymorphic Type Inference
                 Algorithm",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "4",
  pages =        "707--723",
  month =        jul,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-4/p707-lee/",
  abstract =     "The Hindley/Milner let-polymorphic type inference
                 system has two different algorithms: one is the de
                 facto standard Algorithm *** that is bottom-up (or
                 context-insensitive), and the other is a ``folklore''
                 algorithm that is top-down (or context-sensitive).
                 Because the latter algorithm has not been formally
                 presented with its soundness and completeness proofs,
                 and its relation with the *** algorithm has not been
                 rigorously investigated, its use in place of (or in
                 combination with) *** is not well founded. In this
                 article, we formally define the context-sensitive,
                 top-down type inference algorithm (named ``***''),
                 prove its soundness and completeness, and show a
                 distinguishing property that *** always stops earlier
                 than *** if the input program is ill typed. Our proofs
                 can be seen as theoretical justifications for various
                 type-checking strategies being used in practice.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Data types and structures.
                 {\bf F.3.3} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs, Type
                 structure.",
}

@Article{Tofte:1998:RIA,
  author =       "Mads Tofte and Lars Birkedal",
  title =        "A Region Inference Algorithm",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "4",
  pages =        "724--767",
  month =        jul,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-4/p724-tofte/",
  abstract =     "Region Inference is a program analysis which infers
                 lifetimes of values. It is targeted at a runtime model
                 in which the store consists of a stack of regions and
                 memory management predominantly consists of pushing and
                 popping regions, rather than performing garbage
                 collection. Region Inference has previously been
                 specified by a set of inference rules which formalize
                 when regions may be allocated and deallocated. This
                 article presents an algorithm which implements the
                 specification. We prove that the algorithm is sound
                 with respect to the region inference rules and that it
                 always terminates even though the region inference
                 rules permit polymorphic recursion in regions. The
                 algorithm is the result of several years of experiments
                 with region inference algorithms in the ML Kit, a
                 compiler from Standard ML to assembly language. We
                 report on practical experience with the algorithm and
                 give hints on how to implement it.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; reliability; theory",
  subject =      "{\bf D.3.3} Software, PROGRAMMING LANGUAGES, Language
                 Constructs and Features, Dynamic storage management.
                 {\bf F.3.3} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs, Functional
                 constructs. {\bf F.3.3} Theory of Computation, LOGICS
                 AND MEANINGS OF PROGRAMS, Studies of Program
                 Constructs, Type structure.",
}

@Article{Alpuente:1998:PEF,
  author =       "Mar{\'\i}a Alpuente and Moreno Falaschi and Germ{\'a}n
                 Vidal",
  title =        "Partial Evaluation of Functional Logic Programs",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "4",
  pages =        "768--844",
  month =        jul,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-4/p768-alpuente/",
  abstract =     "Languages that integrate functional and logic
                 programming with a complete operational semantics are
                 based on narrowing, a unification-based goal-solving
                 mechanism which subsumes the reduction principle of
                 functional languages and the resolution principle of
                 logic languages. In this article, we present a partial
                 evaluation scheme for functional logic languages based
                 on an automatic unfolding algorithm which builds
                 narrowing trees. The method is formalized within the
                 theoretical framework established by Lloyd and
                 Shepherdson for the partial deduction of logic
                 programs, which we have generalized for dealing with
                 functional computations. A generic specialization
                 algorithm is proposed which does not depend on the
                 eager or lazy nature of the narrower being used. To the
                 best of our knowledge, this is the first generic
                 algorithm for the specialization of functional logic
                 programs. We also discuss the relation to work on
                 partial evaluation in functional programming,
                 term-rewriting systems, and logic programming. Finally,
                 we present some experimental results with an
                 implementation of the algorithm which show in practice
                 that the narrowing-driven partial evaluator effectively
                 combines the propagation of partial data structures (by
                 means of logical variables and unification) with better
                 opportunities for optimization (thanks to the
                 functional dimension).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance; theory",
  subject =      "{\bf D.1.6} Software, PROGRAMMING TECHNIQUES, Logic
                 Programming. {\bf D.1.1} Software, PROGRAMMING
                 TECHNIQUES, Applicative (Functional) Programming. {\bf
                 I.2.2} Computing Methodologies, ARTIFICIAL
                 INTELLIGENCE, Automatic Programming, Program
                 transformation. {\bf D.3.2} Software, PROGRAMMING
                 LANGUAGES, Language Classifications.",
}

@Article{Ashley:1998:PFF,
  author =       "J. Michael Ashley and R. Kent Dybvig",
  title =        "A Practical and Flexible Flow Analysis for
                 Higher-Order Languages",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "4",
  pages =        "845--868",
  month =        jul,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-4/p845-ashley/",
  abstract =     "A flow analysis collects data-flow and control-flow
                 information about programs. A compiler can use this
                 information to enable optimizations. The analysis
                 described in this article unifies and extends previous
                 work on flow analysis for higher-order languages
                 supporting assignment and control operators. The
                 analysis is abstract interpretation based and is
                 parameterized over two polyvariance operators and a
                 projection operator. These operators are used to
                 regulate the speed and accuracy of the analysis. An
                 implementation of the analysis is incorporated into and
                 used in a production Scheme compiler. The analysis can
                 process any legal Scheme program without modification.
                 Others have demonstrated that a 0CFA analysis can
                 enables the optimizations, but a 0CFA analysis is
                 $O(n^3)$. An $O(n)$ instantiation of our analysis
                 successfully enables the optimization of closure
                 representations and procedure calls. Experiments with
                 the cheaper instantiation show that it is as effective
                 as 0CFA for these optimizations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization.",
}

@Article{Kennedy:1998:ADL,
  author =       "Ken Kennedy and Ulrich Kremer",
  title =        "Automatic Data Layout for Distributed-Memory
                 Machines",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "4",
  pages =        "869--916",
  month =        jul,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-4/p869-kennedy/",
  abstract =     "The goal of languages like Fortran D or High
                 Performance Fortran (HPF) is to provide a simple yet
                 efficient machine-independent parallel programming
                 model. After the algorithm selection, the data layout
                 choice is the key intellectual challenge in writing an
                 efficient program in such languages. The performance of
                 a data layout depends on the target compilation system,
                 the target machine, the problem size, and the number of
                 available processors. This makes the choice of a good
                 layout extremely difficult for most users of such
                 languages. If languages such as HPF are to find general
                 acceptance, the need for data layout selection support
                 has to be addressed. We believe that the appropriate
                 way to provide the needed support is through a tool
                 that generates data layout specifications
                 automatically. This article discusses the design and
                 implementation of a data layout selection tool that
                 generates HPF-style data layout specifications
                 automatically. Because layout is done in a tool that is
                 not embedded in the target compiler and hence will be
                 run only a few times during the tuning phase of an
                 application, it can use techniques such as integer
                 programming that may be considered too computationally
                 expensive for inclusion in production compilers. The
                 proposed framework for automatic data layout selection
                 builds and examines search spaces of candidate data
                 layouts. A candidate layout is an efficient layout for
                 some part of the program. After the generation of
                 search spaces, a single candidate layout is selected
                 for each program part, resulting in a data layout for
                 the entire program. A good overall data layout may
                 require the remapping of arrays between program parts.
                 A performance estimator based on a compiler model, an
                 execution model, and a machine model are needed to
                 predict the execution time of each candidate layout and
                 the costs of possible remappings between candidate data
                 layouts. In the proposed framework, instances of
                 NP-complete problems are solved during the construction
                 of candidate layout search spaces and the final
                 selection of candidate layouts from each search space.
                 Rather than resorting to heuristics, the framework
                 capitalizes on state-of-the-art 0-1 integer programming
                 technology to compute optimal solutions of these
                 NP-complete problems. A prototype data layout assistant
                 tool based on our framework has been implemented as
                 part of the D system currently under development at
                 Rice University. The article reports preliminary
                 experimental results. The results indicate that the
                 framework is efficient and allows the generation of
                 data layouts of high quality.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf C.1.2} Computer Systems
                 Organization, PROCESSOR ARCHITECTURES, Multiple Data
                 Stream Architectures (Multiprocessors). {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization. {\bf E.1} Data, DATA STRUCTURES, Arrays.
                 {\bf G.1.6} Mathematics of Computing, NUMERICAL
                 ANALYSIS, Optimization, Integer programming. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Optimization.",
}

@Article{Juan:1998:CVC,
  author =       "Eric Y. T. Juan and Jeffrey J. P. Tsai and Tadao
                 Murata",
  title =        "Compositional Verification of Concurrent Systems Using
                 {Petri}-Net-Based Condensation Rules",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "5",
  pages =        "917--979",
  month =        sep,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-5/p917-juan/",
  abstract =     "The state-explosion problem of formal verification has
                 obstructed its application to large-scale software
                 systems. In this article, we introduce a set of new
                 condensation theories: IOT-failure equivalence,
                 IOT-state equivalence, and firing-dependence theory to
                 cope with this problem. Our condensation theories are
                 much weaker than current theories used for the
                 compositional verification of Petri nets. More
                 significantly, our new condensation theories can
                 eliminate the interleaved behaviors caused by
                 asynchronously sending actions. Therefore, our
                 technique provides a much more powerful means for the
                 compositional verification of asynchronous processes.
                 Our technique can efficiently analyze several
                 state-based properties: boundedness, reachable
                 markings, reachable submarkings, and deadlock states.
                 Based on the notion of our new theories, we develop a
                 set of condensation rules for efficient verification of
                 large-scale software systems. The experimental results
                 show a significant improvement in the analysis
                 large-scale concurrent systems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; experimentation; reliability; theory;
                 verification",
  subject =      "{\bf D.2.4} Software, SOFTWARE ENGINEERING,
                 Software/Program Verification, Programming by contract.
                 {\bf F.3.1} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Specifying and Verifying and Reasoning
                 about Programs, Mechanical verification.",
}

@Article{Wagner:1998:EFI,
  author =       "Tim A. Wagner and Susan L. Graham",
  title =        "Efficient and Flexible Incremental Parsing",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "5",
  pages =        "980--1013",
  month =        sep,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-5/p980-wagner/",
  abstract =     "Previously published algorithms for LR ($k$)
                 incremental parsing are inefficient, unnecessarily
                 restrictive, and in some cases incorrect. We present a
                 simple algorithm based on parsing LR($k$) sentential
                 forms that can incrementally parse an arbitrary number
                 of textual and/or structural modifications in optimal
                 time and with no storage overhead. The central role of
                 {\em balanced sequences\/} in achieving truly
                 incremental behavior from analysis algorithms is
                 described, along with automated methods to support
                 balancing during parse table generation and parsing.
                 Our approach extends the theory of sentential-form
                 parsing to allow for {\em ambiguity\/} in the grammar,
                 exploiting it for notational convenience, to denote
                 sequences, and to construct compact (``abstract'')
                 syntax trees directly. Combined, these techniques make
                 the use of automatically generated incremental parsers
                 in interactive software development environments both
                 practical and effective. In addition, we address {\em
                 information preservation\/} in these environments:
                 Optimal node reuse is defined; previous definitions are
                 shown to be insufficient; and a method for detecting
                 node reuse is provided that is both simpler and faster
                 than existing techniques. A program representation
                 based on {\em self-versioning documents\/} is used to
                 detect changes in the program, generate efficient
                 change reports for subsequent analyses, and allow the
                 parsing transformation itself to be treated as a
                 reversible modification in the edit log.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf D.2.6} Software, SOFTWARE ENGINEERING,
                 Programming Environments, Interactive environments.
                 {\bf D.2.7} Software, SOFTWARE ENGINEERING,
                 Distribution, Maintenance, and Enhancement, Version
                 control. {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Parsing. {\bf D.3.4}
                 Software, PROGRAMMING LANGUAGES, Processors, Translator
                 writing systems and compiler generators. {\bf E.1}
                 Data, DATA STRUCTURES, Trees.",
}

@Article{Apt:1998:AIL,
  author =       "Krzsztof R. Apt and Jacob Brunekreef and Vincent
                 Partington and Andrea Schaerf",
  title =        "{Alma-O}: An Imperative Language that Supports
                 Declarative Programming",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "5",
  pages =        "1014--1066",
  month =        sep,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-5/p1014-apt/",
  abstract =     "We describe here an implemented small programming
                 language, called Alma-O, that augments the expressive
                 power of imperative programming by a limited number of
                 features inspired by the logic programming paradigm.
                 These additions encourage declarative programming and
                 make it a more attractive vehicle for problems that
                 involve search. We illustrate the use of Alma-O by
                 presenting solutions to a number of classical problems,
                 including [alpha]-[beta] search, STRIPS planning,
                 knapsack, and Eight Queens. These solutions are
                 substantially simpler than their counterparts written
                 in the imperative or in the logic programming style and
                 can be used for different purposes without any
                 modification. We also discuss here the implementation
                 of Alma-O and an operational, executable, semantics of
                 a large subset of the language.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages",
  subject =      "{\bf D.3.2} Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Nondeterministic languages**. {\bf
                 F.3.2} Theory of Computation, LOGICS AND MEANINGS OF
                 PROGRAMS, Semantics of Programming Languages,
                 Operational semantics. {\bf F.3.3} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Studies
                 of Program Constructs, Control primitives. {\bf I.2.8}
                 Computing Methodologies, ARTIFICIAL INTELLIGENCE,
                 Problem Solving, Control Methods, and Search,
                 Backtracking. {\bf I.5.5} Computing Methodologies,
                 PATTERN RECOGNITION, Implementation, Special
                 architectures.",
}

@Article{Giacobazzi:1998:LMR,
  author =       "Roberto Giacobazzi and Francesca Scozzari",
  title =        "A Logical Model for Relational Abstract Domains",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "5",
  pages =        "1067--1109",
  month =        sep,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 1 10:04:11 MST 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-5/p1067-giacobazzi/",
  abstract =     "In this article we introduce the notion of Heyting
                 completion in abstract interpretation. We prove that
                 Heyting completion provides a model for Cousot's
                 reduced cardinal power of abstract domains and that it
                 supplies a logical basis to specify relational domains
                 for program analysis and abstract interpretation. We
                 study the algebraic properties of Heyting completion in
                 relation with other well-known domain transformers,
                 like reduced product and disjunctive completion. This
                 provides a uniform algebraic setting where complex
                 abstract domains can be specified by simple logic
                 formulas, or as solutions of recursive abstract domain
                 equations, involving few basic operations for domain
                 construction, all characterized by a clean logical
                 interpretation. We apply our framework to characterize
                 directionality and condensing and in downward closed
                 analysis of (constraint) logic programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization. {\bf F.3.2} Theory of
                 Computation, LOGICS AND MEANINGS OF PROGRAMS, Semantics
                 of Programming Languages, Program analysis. {\bf F.4.1}
                 Theory of Computation, MATHEMATICAL LOGIC AND FORMAL
                 LANGUAGES, Mathematical Logic.",
}

@Article{Dhamdhere:1998:DCD,
  author =       "D. M. Dhamdhere and K. V. Sankaranarayanan",
  title =        "Dynamic currency determination in optimized programs",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1111--1130",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1111-dhamdhere/",
  abstract =     "Compiler optimizations pose many problems to
                 source-level debugging of an optimized program due to
                 reordering, insertion, and deletion of code. On such
                 problem is to determine whether the value of a variable
                 is {\em current\/} at a breakpoint---that is, whether
                 its actual value is the same as its expected value. We
                 use the notion of {\em dynamic currency\/} of a
                 variable in source-level debugging and propose the use
                 of a {\em minimal unrolled graph\/} to reduce the
                 run-time overhead of dynamic currency determination. We
                 prove that the minimal unrolled graph is an adequate
                 basis for performing bit-vector data flow analyses at a
                 breakpoint. This property is used to perform dynamic
                 currency determination. It is also shown to help in
                 recovery of a dynamically noncurrent variable.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance; theory",
  subject =      "{\bf D.2.5} Software, SOFTWARE ENGINEERING, Testing
                 and Debugging, Debugging aids. {\bf D.2.5} Software,
                 SOFTWARE ENGINEERING, Testing and Debugging, Symbolic
                 execution. {\bf D.2.5} Software, SOFTWARE ENGINEERING,
                 Testing and Debugging, Tracing. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Compilers. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Debuggers. {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Run-time environments.",
}

@Article{Hassen:1998:TDP,
  author =       "Saniya Ben Hassen and Henri E. Bal and Ceriel J. H.
                 Jacobs",
  title =        "A task- and data-parallel programming language based
                 on shared objects",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1131--1170",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1131-ben_hassen/",
  abstract =     "Many programming languages support either task
                 parallelism, but few languages provide a uniform
                 framework for writing applications that need both types
                 of parallelism or data parallelism. We present a
                 programming language and system that integrates task
                 and data parallelism using shared objects. Shared
                 objects may be stored on one processor or may be
                 replicated. Objects may also be partitioned and
                 distributed on several processors. Task parallelism is
                 achieved by forking processes remotely and have them
                 communicate and synchronize through objects. Data
                 parallelism is achieved by executing operations on
                 partitioned objects in parallel. Writing task-and
                 data-parallel applications with shared objects has
                 several advantages. Programmers use the objects as if
                 they were stored in a memory common to all processors.
                 On distributed-memory machines, if objects are remote,
                 replicated, or partitioned, the system takes care of
                 many low-level details such as data transfers and
                 consistency semantics. In this article, we show how to
                 write task-and data-parallel programs with our shared
                 object model. We also describe a portable
                 implementation of the model. To assess the performance
                 of the system, we wrote several applications that use
                 task and data parallelism and executed them on a
                 collection of Pentium Pros connected by Myrinet. The
                 performance of these applications is also discussed in
                 this article.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.1.3} Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming, Distributed programming. {\bf
                 D.1.3} Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, Parallel programming. {\bf D.3.2}
                 Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Concurrent, distributed, and parallel
                 languages. {\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf D.3.4} Software,
                 PROGRAMMING LANGUAGES, Processors, Run-time
                 environments.",
}

@Article{Alur:1998:FF,
  author =       "Rajeev Alur and Thomas A. Henzinger",
  title =        "Finitary fairness",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1171--1194",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1171-alur/",
  abstract =     "Fairness is a mathematical abstraction: in a
                 multiprogramming environment, fairness abstracts the
                 details of admissible (``fair'') schedulers; in a
                 distributed environment, fairness abstracts the
                 relative speeds of processors. We argue that the
                 standard definition of fairness often is unnecessarily
                 weak and can be replaced by the stronger, yet still
                 abstract, notion of finitary fairness. While standard
                 weak fairness requires that no enabled transition is
                 postponed forever, finitary weak fairness requires that
                 for every computation of a system there is an unknown
                 bound $k$ such that no enabled transition is postponed
                 more than $k$ consecutive times. In general, the {\em
                 finitary restriction fin\/}({\em F\/}) of any given
                 fairness requirement $F$is the union of all
                 \omega-regular safety properties contained in {\em F}.
                 The adequacy of the proposed abstraction is shown in
                 two ways. Suppose we prove a program property under the
                 assumption of finitary fairness. In a multiprogramming
                 environment, the program then satisfies the property
                 for all fair finite-state schedulers. In a distributed
                 environment, the program then satisfies the property
                 for all choices of lower and upper bounds on the speeds
                 (or timings) of processors. The benefits of finitary
                 fairness are twofold. First, the proof rules for
                 verifying liveness properties of concurrent programs
                 are simplified: well-founded induction over the natural
                 numbers is adequate to prove termination under finitary
                 fairness. Second, the fundamental problem of consensus
                 in a faulty asynchronous distributed environment can be
                 solved assuming finitary fairness.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "theory; verification",
  subject =      "{\bf D.1.3} Software, PROGRAMMING TECHNIQUES,
                 Concurrent Programming. {\bf D.2.4} Software, SOFTWARE
                 ENGINEERING, Software/Program Verification. {\bf F.3.1}
                 Theory of Computation, LOGICS AND MEANINGS OF PROGRAMS,
                 Specifying and Verifying and Reasoning about
                 Programs.",
}

@Article{Yang:1998:SSE,
  author =       "Tao Yang and Cong Fu",
  title =        "Space\slash time-efficient scheduling and execution of
                 parallel irregular computations",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1195--1222",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1195-yang/",
  abstract =     "In this article we investigate the trade-off between
                 time and space efficiency in scheduling and executing
                 parallel irregular computations on distributed-memory
                 machines. We employ acyclic task dependence graphs to
                 model irregular parallelism with mixed granularity, and
                 we use direct remote memory access to support fast
                 communication. We propose new scheduling techniques and
                 a run-time active memory management scheme to improve
                 memory utilization while retaining good time
                 efficiency, and we provide a theoretical analysis on
                 correctness and performance. This work is implemented
                 in the context of the RAPID system which uses an
                 inspector/executor approach to parallelize irregular
                 computations at run-time. We demonstrate the
                 effectiveness of the proposed techniques on several
                 irregular applications such as sparse matrix code and
                 the fast multipole method for particle simulation. Our
                 experimental results on Cray-T3E show that problems
                 large sizes can be solved under limited space capacity,
                 and that the loss of execution efficiency caused by the
                 extra memory management overhead is reasonable.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; design; experimentation; performance",
  subject =      "{\bf C.1.2} Computer Systems Organization, PROCESSOR
                 ARCHITECTURES, Multiple Data Stream Architectures
                 (Multiprocessors). {\bf D.1.3} Software, PROGRAMMING
                 TECHNIQUES, Concurrent Programming, Parallel
                 programming. {\bf D.3.4} Software, PROGRAMMING
                 LANGUAGES, Processors, Run-time environments. {\bf
                 G.2.2} Mathematics of Computing, DISCRETE MATHEMATICS,
                 Graph Theory, Graph algorithms.",
}

@Article{Anonymous:1998:OCC,
  author =       "Andrew D. Kelly and Kim Marriott and Andrew MacDonald
                 and Peter J. Stuckey and Roland Yap",
  title =        "Optimizing compilation of {CLP({\cal R})}",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1223--1250",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1223-kelly/",
  abstract =     "Constraint Logic Programming (CLP) languages extend
                 logic programming by allowing the use of constraints
                 from different domains such as real numbers or Boolean
                 functions. They have proved to be ideal for expressing
                 problems that require interactive mathematical modeling
                 and complex combinatorial optimization problems.
                 However, CLP languages have mainly been considered as
                 research systems, useful for rapid prototyping, by not
                 really competitive with more conventional programming
                 languages where efficiency is a more important
                 consideration. One promising approach to improving the
                 performance of CLP systems is the use of powerful
                 program optimizations to reduce the cost of constraint
                 solving. We extend work in this area by describing a
                 new optimizing compiler for the CLP language CLP({\em R
                 \/}). The compiler implements six powerful
                 optimizations: reordering of constraints, removal of
                 redundant variables, and specialization of constraints
                 which cannot fail. Each program optimization is
                 designed to remove the overhead of constraint solving
                 when possible and keep the number of constraints in the
                 store as small as possible. We systematically evaluate
                 the effectiveness of each optimization in isolation and
                 in combination. Our empirical evaluation of the
                 compiler verifies that optimizing compilation can be
                 made efficient enough to allow compilation of
                 real-world programs and that it is worth performing
                 such compilation because it gives significant time and
                 space performance improvements.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "languages; performance",
  subject =      "{\bf D.3.2} Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Constraint and logic languages. {\bf
                 D.3.4} Software, PROGRAMMING LANGUAGES, Processors,
                 Compilers.",
}

@Article{Palsberg:1998:EFA,
  author =       "Jens Palsberg",
  title =        "Equality-based flow analysis versus recursive types",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1251--1264",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1251-palsberg/",
  abstract =     "Equality-based control-flow analysis has been studied
                 by Henglein, Bondorf and J{\o}rgensen, DeFouw, Grove,
                 and Chambers, and others. It is faster than the
                 subset-based-0-CFA, but also more approximate. Heintze
                 asserted in 1995 that a program can be safety checked
                 with an equality-based control-flow analysis if and
                 only if it can be typed with recursive types. In this
                 article we falsify Heintze's assertion, and we present
                 a type system equivalent to equality-based control-flow
                 analysis. The new type system contains both recursive
                 types and an unusual notion of subtyping. We have $s
                 \leq t$ if $s$ and $t$ unfold to the same regular tree,
                 and we have $\bottom \leq t \leq \top$ where $t$ is a
                 function type. In particular, there is no nontrivial
                 subtyping between function types.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; theory",
  subject =      "{\bf D.3.2} Software, PROGRAMMING LANGUAGES, Language
                 Classifications, Applicative (functional) languages.
                 {\bf F.3.3} Theory of Computation, LOGICS AND MEANINGS
                 OF PROGRAMS, Studies of Program Constructs, Type
                 structure.",
}

@Article{Buchsbaum:1998:NSL,
  author =       "Adam L. Buchsbaum and Haim Kaplan and Anne Rogers and
                 Jeffery R. Westbrook",
  title =        "A new, simpler linear-time dominators algorithm",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1265--1296",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See corrigendum \cite{Buchsbaum:2005:CNS}.",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1265-buchsbaum/",
  abstract =     "We present a new linear-time algorithm to find the
                 immediate dominators of all vertices in a flowgraph.
                 Our algorithm is simpler than previous linear-time
                 algorithms: rather than employ complicated data
                 structures, we combine the use of microtrees and
                 memoization with new observations on a restricted class
                 of path compressions. We have implemented our
                 algorithm, and we report experimental results that show
                 that the constant factors are low. Compared to the
                 standard, slightly superlinear algorithm of Lengauer
                 and Tarjan, which has much less overhead, our algorithm
                 runs 10--20\% slower on real flowgraphs of reasonable
                 size and only a few percent slower on very large
                 flowgraphs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; languages; performance; theory",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Compilers. {\bf E.1} Data, DATA STRUCTURES,
                 Graphs and networks. {\bf F.2.2} Theory of Computation,
                 ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY,
                 Nonnumerical Algorithms and Problems, Computations on
                 discrete structures. {\bf G.2.2} Mathematics of
                 Computing, DISCRETE MATHEMATICS, Graph Theory, Graph
                 algorithms.",
}

@Article{Hailperin:1998:CCM,
  author =       "Max Hailperin",
  title =        "Cost-optimal code motion",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1297--1322",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org:80/pubs/citations/journals/toplas/1998-20-6/p1297-hailperin/",
  abstract =     "We generalize Knoop et al.'s Lazy Code Motion (LCM)
                 algorithm for partial redundancy elimination so that
                 the generalized version also performs strength
                 reduction. Although Knoop et al. have themselves
                 extended LCM to strength reduction with their Lazy
                 Strength Reduction algorithm, our approach differs
                 substantially from theirs and results in a broader
                 class of candidate expressions, stronger safety
                 guarantees, and the elimination of the potential for
                 performance loss instead of gain. Also, our general
                 framework is not limited to traditional strength
                 reduction, but rather can also handle a wide variety of
                 optimizations in which data-flow information enables
                 the replacement of a computation with a less expensive
                 one. As a simple example, computations can be hoisted
                 to points where they are constant foldable. Another
                 example we sketch is the hoisting of polymorphic
                 operations to points where type analysis provides
                 leverage for optimization. Our general approach
                 consists of placing computations so as to minimize
                 their cost, rather than merely their number. So long as
                 the cost differences between flowgraph nodes obey a
                 certain natural constraint, a cost-optimal code motion
                 transformation that does not unnecessarily prolong the
                 lifetime of temporary variables can be found using
                 techniques completely analogous to LCM. Specifically,
                 the cost differences can be discovered using a wide
                 variety of forward data-flow analyses in a manner which
                 we describe.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "algorithms; performance",
  subject =      "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
                 Processors, Optimization",
}

@Article{Anonymous:1998:AI,
  author =       "Anonymous",
  title =        "1998 Author Index",
  journal =      j-TOPLAS,
  volume =       "20",
  number =       "6",
  pages =        "1323--1325",
  month =        nov,
  year =         "1998",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 21 14:24:56 MDT 1999",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bertsch:1999:FPT,
  author =       "Eberhard Bertsch and Mark-Jan Nederhof",
  title =        "On Failure of the Pruning Technique in {``Error Repair
                 in Shift-Reduce Parsers''}",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "1",
  pages =        "1--10",
  month =        jan,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{McKenzie:1995:ERS}.",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-1/p1-bertsch/",
  abstract =     "A previous article presented a technique to compute
                 the least-cost error repair by incrementally generating
                 configurations that result from inserting and deleting
                 tokens a syntactically incorrect input. An additional
                 mechanism to improve the run-time efficiency of this
                 algorithm by pruning some of the configurations was
                 discussed as well. In this communication we show that
                 the pruning mechanism may lead to suboptimal repairs or
                 may block {\em all\/} repairs. Certain grammatical
                 errors in a common construct of the Java programming
                 language also lead to the above kind of failure.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages",
  keywords =     "error repair",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Parsing}",
}

@Article{Duggan:1999:DTD,
  author =       "Dominic Duggan",
  title =        "Dynamic Typing for Distributed Programming in
                 Polymorphic Languages",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "1",
  pages =        "11--45",
  month =        jan,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-1/p11-duggan/",
  abstract =     "While static typing is widely accepted as being
                 necessary for secure program execution, dynamic typing
                 is also viewed as being essential in some applications,
                 particularly for distributed programming environments.
                 {\em Dynamics\/} have been proposed as a language
                 construct for dynamic typing, based on experience with
                 languages such as CLU, Cedar/Mesa, and Modula-3.
                 However proposals for incorporating dynamic typing into
                 languages with parametric polymorphism have serious
                 shortcomings. A new approach is presented to extending
                 polymorphic languages with dynamic typing. At the heart
                 of the approach is the use of dynamic type dispatch,
                 where polymorphic functions may analyze the structure
                 of their type arguments. This approach solves several
                 open problems with the traditional approach to adding
                 dynamic typing to polymorphic languages. An explicitly
                 typed language XMLdyn is presented; this language uses
                 {\em refinement kinds\/} to ensure that dynamic type
                 dispatch does not fail at run-time. {\em Safe
                 dynamics\/} are a new form of dynamics that use
                 refinement kinds to statically check the use of
                 run-time dynamic typing. Run-time errors are isolated
                 to a separate construct for performing run-time type
                 checks",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages",
  keywords =     "dynamic typing; marshalling; parametric polmorphism;
                 static typing",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1): {\bf Semantics};
                 Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Data types and
                 structures}; Software --- Programming Techniques ---
                 Concurrent Programming (D.1.3)",
}

@Article{Liu:1999:SVF,
  author =       "Zhiming Liu and Mathai Joseph",
  title =        "Specification and Verification of Fault-Tolerance,
                 Timing, and Scheduling",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "1",
  pages =        "46--89",
  month =        jan,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-1/p46-liu/",
  abstract =     "Fault-tolerance and timing have often been considered
                 to be implementation issues of a program, quite
                 distinct from the functional safety and liveness
                 properties. Recent work has shown how these
                 non-functional and functional properties can be
                 verified in a similar way. However, the more practical
                 question of determining whether a real-time program
                 will meet its deadlines, i.e., showing that there is a
                 feasible schedule, is usually done using scheduling
                 theory, quite separately from the verification of other
                 properties of the program. This makes it hard to use
                 the results of scheduling analysis in the design, or
                 redesign, of fault-tolerant and real-time programs.
                 This article shows how fault-tolerance, timing, and
                 schedulability can be specified and verified using a
                 single notation and model. This allows a unified view
                 to be taken of the functional and nonfunctional
                 properties of programs and a simple transformational
                 method to be used to combine these properties. It also
                 permits results from scheduling theory to be
                 interpreted and used within a formal proof framework.
                 The notation and model are illustrated using a simple
                 example.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Theory; Verification",
  keywords =     "fault-tolerance; real time; schedulability;
                 specification; transformation; verification",
  subject =      "Software --- Software Engineering --- Software/Program
                 Verification (D.2.4); Software --- Programming
                 Techniques --- Concurrent Programming (D.1.3); Software
                 --- Operating Systems --- Organization and Design
                 (D.4.7): {\bf Real-time systems and embedded systems};
                 Software --- Operating Systems --- Reliability (D.4.5):
                 {\bf Fault-tolerance}; Software --- Operating Systems
                 --- Reliability (D.4.5); Software --- Operating Systems
                 --- Process Management (D.4.1): {\bf Scheduling};
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Specifying and Verifying and Reasoning
                 about Programs (F.3.1)",
}

@Article{Stata:1999:TSJ,
  author =       "Raymie Stata and Martin Abadi",
  title =        "A Type System for {Java} Bytecode Subroutines",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "1",
  pages =        "90--137",
  month =        jan,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-1/p90-stata/",
  abstract =     "Java is typically compiled into an intermediate
                 language, JVML, that is interpreted by the Java Virtual
                 Machine. Because mobile JVML code is not always
                 trusted, a bytecode verifier enforces static
                 constraints that prevent various dynamic errors. Given
                 the importance of the bytecode verifier for security,
                 its current descriptions are inadequate. This article
                 proposes using typing rules to describe the bytecode
                 verifier because they are more precise than prose,
                 clearer than code, and easier to reason about than
                 either. JVML has a subroutine construct which is used
                 for the compilation of Java's try-finally statement.
                 Subroutines are a major source of complexity for the
                 bytecode verifier because they are not obviously
                 last-in/first-out and because they require a kind of
                 polymorphism. Focusing on subroutines, we isolate an
                 interesting, small subset of JVML. We give typing rules
                 for this subset and prove their correctness. Our type
                 system constitutes a sound basis for bytecode
                 verification and a rational reconstruction of a
                 delicate part of Sun's bytecode verifier.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "bytecode verification; Java; languages; security;
                 theory; verification",
  subject =      "Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Java}; Software ---
                 Programming Languages --- Formal Definitions and Theory
                 (D.3.1): {\bf Semantics}; Software --- Operating
                 Systems --- Security and Protection (D.4.6): {\bf
                 Invasive software}; Theory of Computation --- Logics
                 and Meanings of Programs --- Semantics of Programming
                 Languages (F.3.2): {\bf Operational semantics}; Theory
                 of Computation --- Logics and Meanings of Programs ---
                 Semantics of Programming Languages (F.3.2): {\bf
                 Program analysis}; Theory of Computation --- Logics and
                 Meanings of Programs --- Studies of Program Constructs
                 (F.3.3): {\bf Type structure}",
}

@Article{Narlikar:1999:SES,
  author =       "Girija J. Narlikar and Guy E. Blelloch",
  title =        "Space-Efficient Scheduling of Nested Parallelism",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "1",
  pages =        "138--173",
  month =        jan,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-1/p138-narlikar/",
  abstract =     "Many of today's high-level parallel languages support
                 dynamic, fine-grained parallelism. These languages
                 allow the user to expose all the parallelism in the
                 program, which is typically of a much higher degree
                 than the number of processors. Hence an efficient
                 scheduling algorithm is required to assign computations
                 to processors at runtime. Besides having low overheads
                 and good load balancing, it is important for the
                 scheduling algorithm to minimize the space usage of the
                 parallel program. This article presents an on-line
                 scheduling algorithm that is provably space efficient
                 and time efficient for nested-parallel languages. For a
                 computation with depth $D$ and serial space requirement
                 $S_1$, the algorithm generates a schedule that requires
                 at most $S_1 + O(K\cdot D\cdot p)$ space (including
                 scheduler space) on $p$ processors. Here, $K$ is a
                 user-adjustable runtime parameter specifying the net
                 amount of memory that a thread may allocate before it
                 is preempted by the scheduler. Adjusting the value of
                 $K$ provides a trade-off between the running time and
                 the memory requirement of a parallel computation. To
                 allow the scheduler to scale with the number of
                 processors we also parallelize the scheduler and
                 analyze the space and time bounds of the computation to
                 include scheduling costs. In addition to showing that
                 the scheduling algorithm is space and time efficient in
                 theory, we demonstrate that it is effective in
                 practice. We have implemented a runtime system that
                 uses our algorithm to schedule lightweight parallel
                 threads. The results of executing parallel programs on
                 this system show that our scheduling algorithm
                 significantly reduces memory usage compared to previous
                 techniques, without compromising performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance",
  keywords =     "dynamic scheduling; multithreading; nested
                 parallelism; parallel language implementation; space
                 efficiency",
  subject =      "Software --- Programming Techniques --- Concurrent
                 Programming (D.1.3): {\bf Parallel programming};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Run-time environments}; Theory of
                 Computation --- Analysis of Algorithms and Problem
                 Complexity --- General (F.2.0)",
}

@Article{Ramalingam:1999:ILA,
  author =       "G. Ramalingam",
  title =        "Identifying loops in almost linear time",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "175--188",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p175-ramalingam/",
  abstract =     "Loop identification is an essential step in performing
                 various loop optimizations and transformations. The
                 classical algorithm for identifying loops is Tarjan's
                 interval-finding algorithm, which is restricted to
                 reducible graphs. More recently, several people have
                 proposed extensions to Tarjan's algorithm to deal with
                 irreducible graphs. Havlak presents one such extension,
                 which constructs a loop-nesting forest for an arbitrary
                 flow graph. We show that the running time of this
                 algorithm is quadratic in the worst-case, and not
                 almost linear as claimed. We then show how to modify
                 the algorithm to make it run in almost linear time. We
                 next consider the quadratic algorithm presented by
                 Sreedhar et al. which constructs a loop-nesting forest
                 different from the one constructed by Havlak algorithm.
                 We show that this algorithm too can be adapted to run
                 in almost linear time. We finally consider an algorithm
                 due to Steensgaard, which constructs yet another
                 loop-nesting forest. We show how this algorithm can be
                 made more efficient by borrowing ideas from the other
                 algorithms discussed earlier.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages",
  keywords =     "irreducible flowgraphs; loops",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Optimization}; Software --- Programming
                 Languages --- Processors (D.3.4); Data --- Data
                 Structures (E.1): {\bf Graphs and networks}; Data ---
                 Data Structures (E.1); Mathematics of Computing ---
                 Discrete Mathematics --- Graph Theory (G.2.2): {\bf
                 Graph algorithms}; Mathematics of Computing ---
                 Discrete Mathematics --- Graph Theory (G.2.2)",
}

@Article{Bueno:1999:EAI,
  author =       "Francisco Bueno and Mar{\'\i}a Garc{\'\i}a de la Banda
                 and Manuel Hermenegildo",
  title =        "Effectiveness of abstract interpretation in automatic
                 parallelization: a case study in logic programming",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "189--239",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p189-bueno/",
  abstract =     "We report on a detailed study of the application and
                 effectiveness of program analysis based on abstract
                 interpretation of automatic program parallelization. We
                 study the case of parallelizing logic programs using
                 the notion of strict independence. We first propose and
                 prove correct a methodology for the application in the
                 parallelization task of the information inferred by
                 abstract interpretation, using a parametric domain. The
                 methodology is generic in the sense of allowing the use
                 of different analysis domains. A number of well-known
                 approximation domains are then studied and the
                 transformation into the parametric domain defined. The
                 transformation directly illustrates the relevance and
                 applicability of each abstract domain for the
                 application. Both local and global analyzers are then
                 built using these domains and embedded in a complete
                 parallelizing compiler. Then, the performance of the
                 domains in this context is assessed through a number of
                 experiments. A comparatively wide range of aspects is
                 studied, from the resources needed by the analyzers in
                 terms of time and memory to the actual benefits
                 obtained from the information inferred. Such benefits
                 are evaluated both in terms of the characteristics of
                 the parallelized code and of the actual speedups
                 obtained from it. The results show that data flow
                 analysis plays an important role in achieving efficient
                 parallelizations, and that the cost of such analysis
                 con be reasonable even for quite sophisticated abstract
                 domains. Furthermore, the results also offer
                 significant insight into the characteristics of the
                 domains, the demands of the application, and the
                 trade-offs involved.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Performance",
  keywords =     "abstract interpretation; automatic parallelization;
                 data flow analysis; logic programming; parallelism",
  subject =      "Software --- Programming Techniques --- Automatic
                 Programming (D.1.2); Software --- Programming
                 Techniques --- Concurrent Programming (D.1.3): {\bf
                 Parallel programming}; Software --- Programming
                 Techniques --- Logic Programming (D.1.6); Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Theory of Computation --- Logics and
                 Meanings of Programs --- Specifying and Verifying and
                 Reasoning about Programs (F.3.1): {\bf Logics of
                 programs}; Theory of Computation --- Logics and
                 Meanings of Programs --- Specifying and Verifying and
                 Reasoning about Programs (F.3.1); Computing
                 Methodologies --- Artificial Intelligence --- Automatic
                 Programming (I.2.2): {\bf Automatic analysis of
                 algorithms}; Computing Methodologies --- Artificial
                 Intelligence --- Automatic Programming (I.2.2);
                 Computing Methodologies --- Artificial Intelligence ---
                 Automatic Programming (I.2.2): {\bf Program
                 transformation}",
}

@Article{Greiner:1999:PTE,
  author =       "John Greiner and Guy E. Blelloch",
  title =        "A provably time-efficient parallel implementation of
                 full speculation",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "240--285",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p240-greiner/",
  abstract =     "Speculative evaluation, including leniency and
                 futures, is often used to produce high degrees of
                 parallelism. Understanding the performance
                 characteristics of such evaluation, however, requires
                 having a detailed understanding of the implementation.
                 For example, the particular implementation technique
                 used to suspend and reactivate threads can have an
                 asymptotic effect on performance. With the goal of
                 giving the users some understanding of performance
                 without requiring them to understand the
                 implementation, we present a provable implementation
                 bound for a language based on speculative evaluation.
                 The idea is (1) to supply the users with a semantics
                 for a language that defines abstract costs for
                 measuring or analyzing the performance of computations,
                 (2) to supply the users with a mapping of these costs
                 onto runtimes on various machine models, and (3) to
                 describe an implementation strategy of the language and
                 prove that it meets these mappings. For this purpose we
                 consider a simple language based on speculative
                 evaluation. For every computation, the semantics of the
                 language returns a directed acyclic graph (DAG) in
                 which each node represents a unit of computation, and
                 each edge represents a dependence. We then describe an
                 implementation strategy of the language and show that
                 any computation with $w$ work (the number of nodes in
                 the DAG) and $d$ depth (the length of the longest path
                 in the DAG) will run on a $p$-processor PRAM in $O(w/p
                 + d \log p)$ time. The bounds are work efficient
                 (within a constant factor of linear speedup) when there
                 is sufficient parallelism, $w/d p\log p$. These are the
                 first time bounds we know of for languages with
                 speculative evaluation. The main challenge is in
                 parallelizing the necessary queuing operations on
                 suspended threads.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Performance; Theory",
  keywords =     "abstract machines; parallel languages; profiling
                 semantics; speculation; threads",
  subject =      "Software --- Software Engineering --- Metrics (D.2.8);
                 Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Data-flow languages};
                 Software --- Programming Languages --- Language
                 Classifications (D.3.2); Theory of Computation ---
                 Computation by Abstract Devices --- Modes of
                 Computation (F.1.2): {\bf Parallelism and concurrency};
                 Theory of Computation --- Computation by Abstract
                 Devices --- Modes of Computation (F.1.2); Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Specifying and Verifying and Reasoning about Programs
                 (F.3.1)",
}

@Article{DeRose:1999:TTM,
  author =       "Luiz {De Rose} and David Padua",
  title =        "Techniques for the translation of {MATLAB} programs
                 into {Fortran 90}",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "286--323",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p286-de_rose/",
  abstract =     "This article describes the main techniques developed
                 for FALCON's MATLAB-to-Fortran 90 compiler. FALCON is a
                 programming environment for the development of
                 high-performance scientific programs. It combines
                 static and dynamic inference methods to translate
                 MATLAB programs into Fortran 90. The static inference
                 is supported with advanced value propagation techniques
                 and symbolic algorithms for subscript analysis.
                 Experiments show that FALCON's MATLAB translator can
                 generate code that performs more than 1000 times faster
                 than the interpreted version of MATLAB and
                 substantially faster than commercially available MATLAB
                 compilers on one processor of an SGI Power Challenge.
                 Furthermore, in most cases we have tested, the
                 compiler-generated code is as fast as corresponding
                 hand-written programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Java; Languages",
  keywords =     "array language compilation; inference; MATLAB",
  subject =      "Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Very high-level
                 languages}; Software --- Programming Languages ---
                 Language Classifications (D.3.2); Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Software --- Programming Languages ---
                 Processors (D.3.4); Computing Methodologies ---
                 Symbolic and Algebraic Manipulation --- Algorithms
                 (I.1.2)",
}

@Article{Poletto:1999:CTL,
  author =       "Massimiliano Poletto and Wilson C. Hsieh and Dawson R.
                 Engler and M. Frans Kaashoek",
  title =        "{'C} and tcc: a language and compiler for dynamic code
                 generation",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "324--369",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p324-poletto/",
  abstract =     "Dynamic code generation allows programmers to use
                 run-time information in order to achieve performance
                 and expressiveness superior to those of static code.
                 The 'C({\em Tick C\/}) language is a superset of ANSI C
                 that supports efficient and high-level use of dynamic
                 code generation. 'C provides dynamic code generation at
                 the level of C expressions and statements and supports
                 the composition of dynamic code at run time. These
                 features enable programmers to add dynamic code
                 generation to existing C code incrementally and to
                 write important applications (such as ``just-in-time''
                 compilers) easily. The article presents many examples
                 of how 'C can be used to solve practical problems. The
                 tcc compiler is an efficient, portable, and freely
                 available implementation of 'C. tcc allows programmers
                 to trade dynamic compilation speed for dynamic code
                 quality: in some applications, it is most important to
                 generate code quickly, while in others code quality
                 matters more than compilation speed. The overhead of
                 dynamic compilation is on the order of 100 to 600
                 cycles per generated instruction, depending on the
                 level of dynamic optimization. Measurements show that
                 the use of dynamic code generation can improve
                 performance by almost an order of magnitude; two- to
                 four-fold speedups are common. In most cases, the
                 overhead of dynamic compilation is recovered in under
                 100 uses of the dynamic code; sometimes it can be
                 recovered within one use.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance",
  keywords =     "ANSI C; compilers; dynamic code generation; dynamic
                 code optimization",
  subject =      "Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Specialized application
                 languages}; Software --- Programming Languages ---
                 Language Classifications (D.3.2); Software ---
                 Programming Languages --- Language Constructs and
                 Features (D.3.3); Software --- Programming Languages
                 --- Processors (D.3.4): {\bf Code generation}; Software
                 --- Programming Languages --- Processors (D.3.4);
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Run-time
                 environments}",
}

@Article{Flanagan:1999:CSB,
  author =       "Cormac Flanagan and Matthias Felleisen",
  title =        "Componential set-based analysis",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "2",
  pages =        "370--416",
  month =        mar,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-2/p370-flanagan/",
  abstract =     "Set-based analysis (SBA) produces good predictions
                 about the behavior of functional and object-oriented
                 programs. The analysis proceeds by inferring {\em
                 constraints\/} that characterize the data flow
                 relationships of the analyzed program. Experiences with
                 MrSpidey, a static debugger based on SBA, indicate that
                 SBA can adequately deal with programs of up to a couple
                 of thousand lines of code. SBA fails, however, to cope
                 with larger programs because it generates systems of
                 constraints that are at least linear, and possibility
                 quadratic, in the size of the analyzed program. This
                 article presents theoretical and practical results
                 concerning methods for reducing the size of constraint
                 systems. The theoretical results include of
                 proof-theoretic characterization of the {\em observable
                 behavior\/} of constraint systems for program
                 components, and a complete algorithm for deciding the
                 observable equivalence of constraint systems. In the
                 course of this development we establish a close
                 connection between the observable equivalence of
                 constraint systems and the equivalence of regular-tree
                 grammars. We then exploit this connection to adapt a
                 variety of algorithms for simplifying grammars to the
                 problem of simplifying constraint systems. Based on the
                 resulting algorithms, we have developed {\em
                 componential set-based analysis}, a modular and
                 polymorphic variant of SBA. Experimental results verify
                 the effectiveness of the simplification algorithms and
                 the componential analysis. The simplified constraint
                 systems are typically an order of magnitude smaller
                 than the original systems. These reductions in size
                 produce significant gains in the speed of the
                 analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance; Theory",
  keywords =     "constraint-based analysis; program analysis; scheme;
                 soft typing; static debugging",
  subject =      "Software --- Software Engineering --- Testing and
                 Debugging (D.2.5): {\bf Debugging aids}; Software ---
                 Software Engineering --- Testing and Debugging (D.2.5);
                 Software --- Software Engineering --- Programming
                 Environments (D.2.6); Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Debuggers};
                 Software --- Programming Languages --- Processors
                 (D.3.4); Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}; Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Specifying and Verifying and Reasoning about Programs
                 (F.3.1); Theory of Computation --- Logics and Meanings
                 of Programs --- Specifying and Verifying and Reasoning
                 about Programs (F.3.1): {\bf Mechanical verification};
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Studies of Program Constructs (F.3.3);
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Studies of Program Constructs (F.3.3):
                 {\bf Type structure}; Software --- Software Engineering
                 --- Testing and Debugging (D.2.5): {\bf Symbolic
                 execution}",
}

@Article{Butler:1999:RAG,
  author =       "Michael Butler and Pieter Hartel",
  title =        "Reasoning about {Grover}'s quantum search algorithm
                 using probabilistic {\em wp}",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "417--429",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p417-butler/p417-butler.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p417-butler/",
  abstract =     "Grover's search algorithm is designed to be executed
                 on a quantum-mechanical computer. In this article, the
                 probabilistic {\em wp\/} -calculus is used to model and
                 reason about Grover's algorithm. It is demonstrated
                 that the calculus provides a rigorous programming
                 notation for modeling this and other quantum algorithms
                 and that it also provides a systematic framework of
                 analyzing such algorithms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Theory; Verification",
  keywords =     "quantum computation, quantum mechanics",
  subject =      "Mathematics of Computing --- Probability and
                 Statistics (G.3); Theory of Computation --- Analysis of
                 Algorithms and Problem Complexity --- General (F.2.0);
                 Theory of Computation --- Logics and Meanings of
                 Programs --- General (F.3.0)",
}

@Article{Gudjonsson:1999:CTM,
  author =       "Gudj{\'o}n Gudj{\'o}nsson and William H. Winsborough",
  title =        "Compile-time memory reuse in logic programming
                 languages through update in place",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "430--501",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p430-gudjonsson/p430-gudjonsson.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p430-gudjonsson/",
  abstract =     "Standard implementation techniques for
                 single-assignment languages modify a data structure
                 without destroying the original, which may subsequently
                 be accessed. Instead a variant structure is created by
                 using newly allocated cells to represent the changed
                 portion and to replace any cell that references a newly
                 allocated cell. The rest of the original structure is
                 shared by the variant. The effort required to leave the
                 original uncorrupted is unnecessary when the program
                 will never reference the original again. This effort
                 includes allocating and initializing new cells, as well
                 as garbage collecting replaced cells. This article
                 specifies a transformation system that introduces
                 update-in-place operations, making Prolog programs
                 update recursive data structures much as an imperative
                 program would. The article introduces the notion of a
                 reuse map, which formalizes reallocation decisions.
                 Because optimal memory reuse is intractable, a
                 heuristic method is presented that performs well in
                 practice. Small Prolog programs that manipulate
                 recursive data structures have their speed increased up
                 to about five times (naive recurse), not counting any
                 speedup obtained by avoiding garbage collection.
                 Quicksort is about three times as fast, merge-sort
                 about one and a half, matrix transposition about twice,
                 and Gaussian elimination is about 1.2 times as fast.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Experimentation; Languages; Performance",
  keywords =     "compile-time garbage collection; local reuse; Prolog;
                 reuse map; update in place",
  subject =      "Software --- Programming Techniques --- Applicative
                 (Functional) Programming (D.1.1); Software ---
                 Programming Techniques --- Logic Programming (D.1.6);
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization};
                 Software --- Operating Systems --- Storage Management
                 (D.4.2): {\bf Allocation/deallocation strategies};
                 Computing Methodologies --- Artificial Intelligence ---
                 Automatic Programming (I.2.2): {\bf Program
                 transformation}",
}

@Article{Lamport:1999:SYS,
  author =       "Leslie Lamport and Lawrence C. Paulson",
  title =        "Should your specification language be typed",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "502--526",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p502-lamport/p502-lamport.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p502-lamport/",
  abstract =     "Most specification languages have a type system. Type
                 systems are hard to get right, and getting them wrong
                 can lead to inconsistencies. Set theory can serve as
                 the basis for a specification language without types.
                 This possibility, which has been widely overlooked,
                 offers many advantages. Untyped set theory is simple
                 and is more flexible than any simple typed formalism.
                 Polymorphism, overloading, and subtyping can make a
                 type system more powerful, but at the cost of increased
                 complexity, and such refinements can never attain the
                 flexibility of having no types at all. Typed formalisms
                 have advantages, too, stemming from the power of
                 mechanical type checking. While types serve little
                 purpose in hand proofs, they do help with mechanized
                 proofs. In the absence of verification, type checking
                 can catch errors in specifications. It may be possible
                 to have the best of both worlds by adding typing
                 annotations to an untyped specification
                 language.\par

                 We consider only specification languages, not
                 programming languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Verification",
  keywords =     "set theory; specification; types",
  subject =      "Software --- Software Engineering ---
                 Requirements/Specifications (D.2.1); Software ---
                 Software Engineering --- Software/Program Verification
                 (D.2.4): {\bf Formal methods}; Theory of Computation
                 --- Logics and Meanings of Programs --- Specifying and
                 Verifying and Reasoning about Programs (F.3.1): {\bf
                 Specification techniques}",
}

@Article{Morrisett:1999:SFT,
  author =       "Greg Morrisett and David Walker and Karl Crary and
                 Neal Glew",
  title =        "From {System F} to typed assembly language",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "527--568",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p527-morrisett/p527-morrisett.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p527-morrisett/",
  abstract =     "We motivate the design of typed assembly language
                 (TAL) and present a type-preserving translation from
                 System F to TAL. The typed assembly language we present
                 is based on a conventional RISC assembly language, but
                 its static type system provides support for enforcing
                 high-level language abstractions, such as closures,
                 tuples, and user-defined abstract data types. The type
                 system ensures that well-typed programs cannot violate
                 these abstractions. In addition, the typing constructs
                 admit many low-level compiler optimizations. Our
                 translation to TAL is specified as a sequence of
                 type-preserving transformations, including CPS and
                 closure conversion phases; type-correct source programs
                 are mapped to type-correct assembly language. A key
                 contribution is an approach to polymorphic closure
                 conversion that is considerably simpler than previous
                 work. The compiler and typed assembly language provide
                 a fully automatic way to produce certified code,
                 suitable for use in systems where untrusted and
                 potentially malicious code must be checked for safety
                 before execution.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Security; Theory; Verification",
  keywords =     "certified code; closure conversion; secure extensible
                 systems; type-directed compilation; typed assembly
                 language; typed intermediate languages",
  subject =      "Software --- Software Engineering --- Software
                 Architectures (D.2.11): {\bf Languages (e.g.,
                 description, interconnection, definition)}; Software
                 --- Programming Languages --- Formal Definitions and
                 Theory (D.3.1): {\bf Semantics}; Software ---
                 Programming Languages --- Formal Definitions and Theory
                 (D.3.1): {\bf Syntax}; Software --- Programming
                 Languages --- Language Classifications (D.3.2): {\bf
                 Macro and assembly languages}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Compilers};
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Semantics of Programming Languages
                 (F.3.2): {\bf Operational semantics}; Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Studies of Program Constructs (F.3.3): {\bf Type
                 structure}",
}

@Article{Haridi:1999:ELV,
  author =       "Seif Haridi and Peter Van Roy and Per Brand and
                 Michael Mehl and Ralf Scheidhauer and Gert Smolka",
  title =        "Efficient logic variables for distributed computing",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "569--626",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p569-haridi/p569-haridi.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p569-haridi/",
  abstract =     "We define a practical algorithm for distributed
                 rational tree unification and prove its correctness in
                 both the off-line and on-line cases. We derive the
                 distributed algorithm from a centralized one, showing
                 clearly the trade-offs between local and distributed
                 execution. The algorithm is used to realize logic
                 variables in the Mozart Programming System, which
                 implements the Oz language (see
                 http://www/mozart-oz.org). Oz appears to the programmer
                 as a concurrent object-oriented language with dataflow
                 synchronization. Logic variables implement the dataflow
                 behavior. We show that logic variables can easily be
                 added to the more restricted models of Java and ML,
                 thus providing an alternative way to do concurrent
                 programming in these languages. We present common
                 distributed programming idioms in a network-transparent
                 way using logic variables. We show that in common cases
                 the algorithm maintains the same message latency as
                 explicit message passing. In addition, it is able to
                 handle uncommon cases that arise from the properties of
                 latency tolerance and third-party independence. This is
                 evidence that using logic variables in distributed
                 computing is beneficial at both the system and language
                 levels. At the system level, they improve latency
                 tolerance and third-party independence. At the language
                 level, they help make network-transparent distribution
                 practical.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Theory",
  keywords =     "distributed algorithms; Mozart; Oz",
  subject =      "Software --- Programming Techniques --- Concurrent
                 Programming (D.1.3): {\bf Distributed programming};
                 Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Concurrent, distributed,
                 and parallel languages}; Software --- Programming
                 Languages --- Language Classifications (D.3.2): {\bf
                 Constraint and logic languages}; Software ---
                 Programming Languages --- Language Classifications
                 (D.3.2): {\bf Data-flow languages}; Software ---
                 Programming Languages --- Language Classifications
                 (D.3.2): {\bf Multiparadigm languages}; Software ---
                 Programming Languages --- Language Constructs and
                 Features (D.3.3): {\bf Concurrent programming
                 structures}; Software --- Programming Languages ---
                 Language Constructs and Features (D.3.3): {\bf
                 Constraints}; Theory of Computation --- Computation by
                 Abstract Devices --- Modes of Computation (F.1.2): {\bf
                 Online computation}",
}

@Article{Kennedy:1999:PRE,
  author =       "Robert Kennedy and Sun Chan and Shin-Ming Liu and
                 Raymond Lo and Peng Tu and Fred Chow",
  title =        "Partial redundancy elimination in {SSA} form",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "627--676",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p627-kennedy/p627-kennedy.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p627-kennedy/",
  abstract =     "The SSAPRE algorithm for performing partial redundancy
                 elimination based entirely on SSA form is presented.
                 The algorithm is formulated based on a new conceptual
                 framework, the factored redundancy graph, for analyzing
                 redundancy, and represents the first sparse approach to
                 the classical problem and on methods for its solution.
                 With the algorithm description, theorems and their
                 proofs are given showing that the algorithm produces
                 the best possible code by the criteria of computational
                 optimality and lifetime optimality of the introduced
                 temporaries. In addition to the base algorithm, a
                 practical implementation of SSAPRE that exhibits
                 additional compile-time efficiencies is described. In
                 closing, measurement statistics are provided that
                 characterize the instances of the partial redundancy
                 problem from a set of benchmark programs and compare
                 optimization time spent by an implementation of SSAPRE
                 against a classical partial redundancy elimination
                 implementation. The data lend insight into the nature
                 of partial redundancy elimination and demonstrate the
                 expediency of this new approach.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Measurement; Theory",
  keywords =     "code motion; common subexpressions; data flow
                 analysis; partial redundancy; static single assignment
                 form",
  subject =      "Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Control
                 structures}; Software --- Programming Languages ---
                 Language Constructs and Features (D.3.3): {\bf Data
                 types and structures}; Software --- Programming
                 Languages --- Language Constructs and Features (D.3.3):
                 {\bf Procedures, functions, and subroutines}; Software
                 --- Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}; Computing
                 Methodologies --- Symbolic and Algebraic Manipulation
                 --- Algorithms (I.1.2): {\bf Analysis of algorithms};
                 Computing Methodologies --- Artificial Intelligence ---
                 Automatic Programming (I.2.2): {\bf Program
                 transformation}",
}

@Article{Morris:1999:SF,
  author =       "J. M. Morris and A. Bunkenburg",
  title =        "Specificational functions",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "3",
  pages =        "677--701",
  month =        may,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-3/p677-morris/p677-morris.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-3/p677-morris/",
  abstract =     "Mathematics supplies us with various operators for
                 creating functions from relations, sets, known
                 functions, and so on. Function inversion is a simple
                 example. These operations are useful in specifying
                 programs. However, many of them have strong constraints
                 on their arguments to ensure that the result is indeed
                 a function. For example, only functions that are
                 bijective may be inverted. This is a serious impediment
                 to their use in specifications, because at best it
                 limits the specifier's expressive power, and at worst
                 it imposes strong proof obligations on the programmer.
                 We propose to loosen the definition of functions so
                 that the constraints on operations such as inversion
                 can be greatly relaxed. The specificational functions
                 that emerge generalize traditional functions in that
                 their application to some arguments may yield no good
                 outcome, while for other arguments their application
                 may yield any of several outcomes unpredictably. While
                 these functions are not in general algorithmic, they
                 can serve as specifications of traditional functions as
                 embodied in programming languages. The idea of
                 specificational functions is not new, but accommodating
                 them in all their generality without falling foul of a
                 myriad of anomalies has proved elusive. We investigate
                 the technical problems that have hindered their use,
                 and propose solutions. In particular, we develop a
                 formal axiomatization for reasoning about
                 specificational functions, and we prove its consistency
                 by constructing a model.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Design; Theory; Verification",
  keywords =     "expression; function; logic; nondeterminacy;
                 refinement calculus",
  subject =      "Theory of Computation --- Logics and Meanings of
                 Programs --- Specifying and Verifying and Reasoning
                 about Programs (F.3.1): {\bf Logics of programs};
                 Theory of Computation --- Mathematical Logic and Formal
                 Languages --- Mathematical Logic (F.4.1): {\bf Lambda
                 calculus and related systems}; Software --- Software
                 Engineering --- Software/Program Verification (D.2.4):
                 {\bf Correctness proofs}; Software --- Software
                 Engineering --- Software/Program Verification (D.2.4):
                 {\bf Formal methods}",
}

@Article{Ghosh:1999:CME,
  author =       "Somnath Ghosh and Margaret Martonosi and Sharad
                 Malik",
  title =        "Cache miss equations: a compiler framework for
                 analyzing and tuning memory behavior",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "4",
  pages =        "703--746",
  month =        jul,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-4/p703-ghosh/p703-ghosh.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-4/p703-ghosh/",
  abstract =     "With the ever-widening performance gap between
                 processors and main memory, cache memory, which is used
                 to bridge this gap, is becoming more and more
                 significant. Caches work well for programs that exhibit
                 sufficient locality. Other programs, however, have
                 reference patterns that fail to exploit the cache,
                 thereby suffering heavily from high memory latency. In
                 order to get high cache efficiency and achieve good
                 program performance, efficient memory accessing
                 behavior is necessary. In fact, for many programs,
                 program transformations or source-code changes can
                 radically alter memory access patterns, significantly
                 improving cache performance. Both hand-tuning and
                 compiler optimization techniques are often used to
                 transform codes to improve cache utilization.
                 Unfortunately, cache conflicts are difficult to predict
                 and estimate, precluding effective transformations.
                 Hence, effective transformations require detailed
                 knowledge about the frequency and causes of cache
                 misses in the code. This article describes methods for
                 generating and solving Cache Miss Equations (CMEs) that
                 give a detailed representation of cache behavior,
                 including conflict misses, in loop-oriented scientific
                 code. Implemented within the SUIF compiler framework,
                 our approach extends traditional compiler reuse
                 analysis to generate linear Diophantine equations that
                 summarize each loop's memory behavior. While solving
                 these equations is in general difficult, we show that
                 is also unnecessary, as mathematical techniques for
                 manipulating Diophantine equations allow us to
                 relatively easily compute and/or reduce the number of
                 possible solutions, where each solution corresponds to
                 a potential cache miss. The mathematical precision of
                 CMEs allows us to find true optimal solutions for
                 transformations such as blocking or padding. The
                 generality of CMEs also allows us to reason about
                 interactions between transformations applied in
                 concert. The article also gives examples of their use
                 to determine array padding and offset amounts that
                 minimize cache misses, and to determine optimal
                 blocking factors for tiled code. Overall, these
                 equations represent an analysis framework that offers
                 the generality and precision needed for detailed
                 compiler optimizations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Experimentation; Performance",
  keywords =     "cache memories; compilation; optimization; program
                 transformation",
  subject =      "Computer Systems Organization --- Processor
                 Architectures --- General (C.1.0); Computer Systems
                 Organization --- Performance of Systems (C.4): {\bf
                 Measurement techniques}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Compilers};
                 Computer Systems Organization --- Performance of
                 Systems (C.4): {\bf Modeling techniques}; Hardware ---
                 Memory Structures --- Design Styles (B.3.2): {\bf Cache
                 memories}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}",
}

@Article{Bultan:1999:MCC,
  author =       "Tevfik Bultan and Richard Gerber and William Pugh",
  title =        "Model-checking concurrent systems with unbounded
                 integer variables: symbolic representations,
                 approximations, and experimental results",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "4",
  pages =        "747--789",
  month =        jul,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-4/p747-bultan/p747-bultan.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-4/p747-bultan/",
  abstract =     "Model checking is a powerful technique for analyzing
                 large, finite-state systems. In an infinite state
                 system, however, many basic properties are undecidable.
                 In this article, we present a new symbolic model
                 checker which conservatively evaluates safety and
                 liveness properties on programs with unbounded integer
                 variables. We use Presburger formulas to symbolically
                 encode a program's transition system, as well as its
                 model-checking computations. All fixpoint calculations
                 are executed symbolically, and their convergence is
                 guaranteed by using approximation techniques. We
                 demonstrate the promise of this technology on some
                 well-known infinite-state concurrency problems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Verification",
  keywords =     "abstract interpretation; Presburger arithmetic;
                 symbolic model checking",
  subject =      "Software --- Software Engineering --- Software/Program
                 Verification (D.2.4): {\bf Formal methods}; Software
                 --- Software Engineering --- Software/Program
                 Verification (D.2.4): {\bf Model checking}; Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Specifying and Verifying and Reasoning about Programs
                 (F.3.1): {\bf Invariants}; Theory of Computation ---
                 Logics and Meanings of Programs --- Specifying and
                 Verifying and Reasoning about Programs (F.3.1): {\bf
                 Mechanical verification}; Theory of Computation ---
                 Logics and Meanings of Programs --- Specifying and
                 Verifying and Reasoning about Programs (F.3.1): {\bf
                 Pre- and post-conditions}",
}

@Article{Blume:1999:DAS,
  author =       "Matthias Blume",
  title =        "Dependency analysis for {Standard ML}",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "4",
  pages =        "790--812",
  month =        jul,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-4/p790-blume/p790-blume.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-4/p790-blume/",
  abstract =     "Automatic dependency analysis is a useful addition to
                 a system like CM, our compilation manager for Standard
                 ML of New Jersey. It relieves the programmer from the
                 tedious and error-prone task of having to specify
                 compilation dependencies by hand and thereby makes its
                 usage more user friendly. But dependency analysis is
                 not easy, as the general problem for Standard ML is
                 NP-complete. Therefore, CM has to impose certain
                 restrictions on the programming language to recover
                 tractability. We prove the NP-completeness result,
                 discuss the restrictions on ML that are used by CM, and
                 provide the resulting analysis algorithms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Theory",
  keywords =     "compilation management; dependency analysis;
                 NP-completeness",
  subject =      "Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Modules,
                 packages}; Theory of Computation --- Analysis of
                 Algorithms and Problem Complexity --- Nonnumerical
                 Algorithms and Problems (F.2.2)",
}

@Article{Blume:1999:HM,
  author =       "Matthias Blume and Andrew W. Appel",
  title =        "Hierarchical modularity",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "4",
  pages =        "813--847",
  month =        jul,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-4/p813-blume/p813-blume.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-4/p813-blume/",
  abstract =     "To cope with the complexity of very large systems, it
                 is not sufficient to divide them into simple pieces
                 because the pieces themselves will either be too
                 numerous or too large. A hierarchical modular structure
                 is the natural solution. In this article we explain how
                 that approach can be applied to software. Our
                 compilation manager provides a language for specifying
                 where individual modules fit into a hierarchy and how
                 they are related semantically. We pay particular
                 attention to the structure of the global name space of
                 program identifiers that are used for module linkage
                 because any potential for name clashes between
                 otherwise unrelated parts of a program can negatively
                 affect modularity. We discuss the theoretical issues in
                 building software hierarchically, and we describe our
                 implementation of CM, the compilation manager for
                 Standard ML of New Jersey.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "compilation management; linking; modularity; modules;
                 name visibility; program structure",
  subject =      "Software --- Software Engineering --- Design Tools and
                 Techniques (D.2.2): {\bf Modules and interfaces};
                 Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Modules,
                 packages}",
}

@Article{Hind:1999:IPA,
  author =       "Michael Hind and Michael Burke and Paul Carini and
                 Jong-Deok Choi",
  title =        "Interprocedural pointer alias analysis",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "4",
  pages =        "848--894",
  month =        jul,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-4/p848-hind/p848-hind.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-4/p848-hind/",
  abstract =     "We present practical approximation methods for
                 computing and representing interprocedural aliases for
                 a program written in a language that includes pointers,
                 reference parameters, and recursion. We present the
                 following contributions: (1) a framework for
                 interprocedural pointer alias analysis that handles
                 function pointers by constructing the program call
                 graph while alias analysis is being performed; (2) a
                 {\em flow-sensitive\/} interprocedural pointer alias
                 analysis algorithm; (3) a {\em flow-insensitive\/}
                 interprocedural pointer alias analysis algorithm; (4) a
                 {\em flow-insensitive\/} interprocedural pointer alias
                 analysis algorithm that incorporates {\em kill\/}
                 information to improve precision; (5) empirical
                 measurements of the efficiency and precision of the
                 three interprocedural alias analysis algorithms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "interprocedural analysis; pointer aliasing; program
                 analysis",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Optimization}",
}

@Article{Poletto:1999:LSR,
  author =       "Massimiliano Poletto and Vivek Sarkar",
  title =        "Linear scan register allocation",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "5",
  pages =        "895--913",
  month =        sep,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-5/p895-poletto/p895-poletto.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-5/p895-poletto/",
  abstract =     "We describe a new algorithm for fast global register
                 allocation called {\em linear scan}. This algorithm is
                 not based on graph coloring, but allocates registers to
                 variables in a single linear-time scan of the
                 variables' live ranges. The linear scan algorithm is
                 considerably faster than algorithms based on graph
                 coloring, is simple to implement, and results in code
                 that is almost as efficient as that obtained using more
                 complex and time-consuming register allocators based on
                 graph coloring. The algorithm is of interest in
                 applications where compile time is a concern, such as
                 dynamic compilation systems, `just-in-time' compilers,
                 and interactive development environments.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Performance",
  keywords =     "code optimization; compilers; register allocation",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Code
                 generation}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}",
}

@Article{Kobayashi:1999:LPC,
  author =       "Naoki Kobayashi and Benjamin C. Pierce and David N.
                 Turner",
  title =        "Linearity and the {Pi-Calculus}",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "5",
  pages =        "914--947",
  month =        sep,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-5/p914-kobayashi/p914-kobayashi.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-5/p914-kobayashi/",
  abstract =     "The economy and flexibility of the pi-calculus make it
                 an attractive object of theoretical study and a clean
                 basis for concurrent language design and
                 implementation. However, such generality has a cost:
                 encoding higher-level features like functional
                 computation in pi-calculus throws away potentially
                 useful information. We show how a linear type system
                 can be used to recover important static information
                 about a process's behavior. In particular, we can
                 guarantee that two processes communicating over a
                 linear channel cannot interfere with other
                 communicating processes. After developing standard
                 results such as soundness of typing, we focus on
                 equivalences, adapting the standard notion of barbed
                 bisimulation to the linear setting and showing how
                 reductions on linear channels induce a useful ``partial
                 confluence'' of process behaviors. For an extended
                 example of the theory, we prove the validity of a
                 tail-call optimization for higher-order functions
                 represented as processes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Theory",
  keywords =     "concurrency; confluence; linear types; pi-calculus;
                 process calculi",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1)",
}

@Article{Codish:1999:SGD,
  author =       "Michael Codish and Harald S{\o}ndergaard and Peter J.
                 Stuckey",
  title =        "Sharing and groundness dependencies in logic
                 programs",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "5",
  pages =        "948--976",
  month =        sep,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-5/p948-codish/p948-codish.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-5/p948-codish/",
  abstract =     "We investigate Jacobs and Langen's Sharing domain,
                 introduced for the analysis of variable sharing in
                 logic programs, and show that it is isomorphic to
                 Marriott and S{\o}ndergaard's Pos domain, introduced
                 for the analysis of groundness dependencies. Our key
                 idea is to view the sets of variables in a Sharing
                 domain element as the models of a corresponding Boolean
                 function. This leads to a recasting of sharing analysis
                 in terms of the property of `not being affected by the
                 binding of a single variable.' Such an `unaffectedness
                 dependency' analysis has close connections with
                 groundness dependency analysis using positive Boolean
                 functions. This new view improves our understanding of
                 sharing analysis, and leads to an elegant expression of
                 its combination with groundness dependency analysis
                 based on the reduced product of Sharing and Pos. It
                 also opens up new avenues for the efficient
                 implementation of sharing analysis, for example using
                 reduced order binary decision diagrams, as well as
                 efficient implementation of the reduced product, using
                 domain factorizations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Theory",
  keywords =     "abstract interpretation; Boolean functions; dataflow
                 analysis; global analysis; groundless analysis;
                 groundness analysis; program analysis; sharing
                 analysis",
  subject =      "Software --- Programming Techniques --- Logic
                 Programming (D.1.6); Software --- Programming Languages
                 --- Processors (D.3.4): {\bf Compilers}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Optimization}; Theory of Computation --- Logics and
                 Meanings of Programs --- Specifying and Verifying and
                 Reasoning about Programs (F.3.1): {\bf Assertions};
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Specifying and Verifying and Reasoning
                 about Programs (F.3.1): {\bf Invariants}; Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Specifying and Verifying and Reasoning about Programs
                 (F.3.1): {\bf Logics of programs}",
}

@Article{Gloy:1999:PPU,
  author =       "Nikolas Gloy and Michael D. Smith",
  title =        "Procedure placement using temporal-ordering
                 information",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "5",
  pages =        "977--1027",
  month =        sep,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-5/p977-gloy/p977-gloy.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-5/p977-gloy/",
  abstract =     "Instruction cache performance is important to
                 instruction fetch efficiency and overall processor
                 performance. The layout of an executable has a
                 substantial effect on the cache miss rate and the
                 instruction working set size during execution. This
                 means that the performance of an executable can be
                 improved by applying a code-placement algorithm that
                 minimizes instruction cache conflicts and improves
                 spatial locality. We describe an algorithm for
                 procedure placement, one type of code placement, that
                 significantly differs from previous approaches in the
                 type of information used to drive the placement
                 algorithm. In particular, we gather temporal-ordering
                 information that summarizes the interleaving of
                 procedures in a program trace. Our algorithm uses this
                 information along with cache configuration and
                 procedure size information to better estimate the
                 conflict cost of a potential procedure ordering. It
                 optimizes the procedure placement for single level and
                 multilevel caches. In addition to reducing instruction
                 cache conflicts, the algorithm simultaneously minimizes
                 the instruction working set size of the program. We
                 compare the performance of our algorithm with a
                 particularly successful procedure-placement algorithm
                 and show noticeable improvements in the instruction
                 cache behavior, while maintaining the same instruction
                 working set size.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Performance",
  keywords =     "code placement; conflict misses; temporal profiling;
                 working-set optimization",
  subject =      "Hardware --- Memory Structures --- Performance
                 Analysis and Design Aids** (B.3.3): {\bf Simulation**};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization}",
}

@Article{Young:1999:SCB,
  author =       "Cliff Young and Michael D. Smith",
  title =        "Static correlated branch prediction",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "5",
  pages =        "1028--1075",
  month =        sep,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-5/p1028-young/p1028-young.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-5/p1028-young/",
  abstract =     "Recent work in history-based branch prediction uses
                 novel hardware structures to capture branch correlation
                 and increase branch prediction accuracy. {\em Branch
                 correlation\/} occurs when the outcome of a conditional
                 branch can be accurately predicted by observing the
                 outcomes of previously executed branches in the dynamic
                 instruction stream. In this article, we show how to
                 instrument a program so that it is practical to collect
                 run-time statistics that indicate where branch
                 correlation occurs, and we then show how to use these
                 statistics to transform the program so that its static
                 branch prediction accuracy is improved. The run-time
                 information that we gather is called a {\em path
                 profile}, and it summarizes how often each executed
                 sequence of program points occurs in the program trace.
                 Our path profiles are more general than those
                 previously proposed. The code transformation that we
                 present is called {\em static correlated branch
                 prediction\/} (SCBP). It exhibits better branch
                 prediction accuracy than previously thought possible
                 for static prediction techniques. Furthermore, through
                 the use of an overpruning heuristic, we show that it is
                 possible to determine automatically an appropriate
                 trade-off between code expansion and branch
                 predictability so that our transformation improves the
                 performance of multiple-issue, deeply pipelined
                 microprocessors like those being built today.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance",
  keywords =     "branch correlation; branch prediction; path profiling;
                 profile-driven optimization",
  subject =      "Hardware --- Control Structures and Microprogramming
                 --- Control Design Styles (B.1.1); Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Computer Systems Organization --- Processor
                 Architectures --- Single Data Stream Architectures
                 (C.1.1): {\bf RISC/CISC, VLIW architectures}; Software
                 --- Programming Languages --- Processors (D.3.4): {\bf
                 Optimization}",
}

@Article{Bottoni:1999:SDC,
  author =       "P. Bottoni and M. F. Costabile and P. Mussio",
  title =        "Specification and dialogue control of visual
                 interaction through visual rewriting systems",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "6",
  pages =        "1077--1136",
  month =        nov,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/1999-21-6/p1077-bottoni/p1077-bottoni.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/1999-21-6/p1077-bottoni/",
  abstract =     "Computers are increasingly being seen not only as
                 computing tools but more so as communication tools,
                 thus placing special emphasis on human-computer
                 interaction (HCI). In this article, the focus is on
                 visual HCI, where the messages exchanged between human
                 and computer are images appearing on the computer
                 screen, as usual in current popular user interfaces. We
                 formalize interactive sessions of a human-computer
                 dialogue as a structured set of legal visual sentences,
                 i.e., as a visual language, and show how rewriting
                 systems can be generalized to specify both the
                 pictorial and the computational aspects of visual
                 languages. To this end, Visual Conditional Attributed
                 Rewriting (VCARW) systems are introduced, and use for
                 specification of visual languages. These specifications
                 are given as inputs to a procedure illustrated in the
                 article as a system of algorithms, which automatically
                 generates control mechanisms of the interaction, thus
                 favoring the design of more reliable and usable
                 systems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "control automaton, dialogue control, visual
                 languages",
  subject =      "Software --- Programming Techniques --- Visual
                 Programming (D.1.7); Software --- Software Engineering
                 --- Design Tools and Techniques (D.2.2): {\bf User
                 interfaces}; Software --- Software Engineering ---
                 Programming Environments (D.2.6): {\bf Interactive
                 environments}; Theory of Computation --- Mathematical
                 Logic and Formal Languages --- Grammars and Other
                 Rewriting Systems (F.4.2); Information Systems ---
                 Information Interfaces and Presentation --- User
                 Interfaces (H.5.2): {\bf Interaction styles};
                 Information Systems --- Information Interfaces and
                 Presentation --- User Interfaces (H.5.2): {\bf
                 User-centered design}",
}

@Article{Decorte:1999:CBT,
  author =       "Stefaan Decorte and Danny {De Schreye} and Henk
                 Vandecasteele",
  title =        "Constraint-based termination analysis of logic
                 programs",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "6",
  pages =        "1137--1195",
  month =        nov,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-6/p1137-decorte/",
  abstract =     "Current norm-based automatic termination analysis
                 techniques for logic programs can be split up into
                 different components: inference of mode or type
                 information, derivation of models, generation of
                 well-founded orders, and verification of the
                 termination conditions themselves. Although providing
                 high-precision results, these techniques suffer from an
                 efficiency point of view, as several of these analyses
                 are often performed through abstract interpretation. We
                 present a new termination analysis which integrates the
                 various components and produces a set of constraints
                 that, when solvable, identifies successful termination
                 proofs. The proposed method is both efficient and
                 precise. The use of constraint sets enables the
                 propagation on information over all different phases
                 while the need for multiple analyses is considerably
                 reduced.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "constraint solving, logic programming, termination
                 analysis",
  subject =      "Computing Methodologies --- Artificial Intelligence
                 --- Automatic Programming (I.2.2); Computing
                 Methodologies --- Artificial Intelligence --- Deduction
                 and Theorem Proving (I.2.3)",
}

@Article{Freund:1999:TSO,
  author =       "Stephen N. Freund and John C. Mitchell",
  title =        "The type system for object initialization in the
                 {Java} bytecode language",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "6",
  pages =        "1196--1250",
  month =        nov,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-6/p1196-freund/",
  abstract =     "In the standard Java implementation, a Java language
                 program is compiled to Java bytecode. This bytecode may
                 be sent across the network to another site, where it is
                 then executed by the Java Virtual Machine. Since
                 bytecode may be written by hand, or corrupted during
                 network transmission, the Java Virtual Machine contains
                 a bytecode verifier that performs a number of
                 consistency checks before code is run. These checks
                 include type correctness and, as illustrated by
                 previous attacks on the Java Virtual Machine, are
                 critical for system security. In order to analyze
                 existing bytecode verifiers and to understand the
                 properties that should be verified, we develop a
                 precise specification of statically correct Java
                 bytecode, in the form of a type system. Our focus in
                 this article is a subset of the bytecode language
                 dealing with object creation and initialization. For
                 this subset, we prove, that, for every Java bytecode
                 program that satisfies our typing constraints, every
                 object is initialized before it is used. The type
                 system is easily combined with a previous system
                 developed by Stata and Abadi for bytecode subroutines.
                 Our analysis of subroutines and object initialization
                 reveals a previously unpublished bug in the Sun JDK
                 bytecode verifier.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "bytecode languages; Java; object initialization; type
                 checking",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1); Theory of Computation
                 --- Logics and Meanings of Programs --- Specifying and
                 Verifying and Reasoning about Programs (F.3.1): {\bf
                 Mechanical verification}; Theory of Computation ---
                 Logics and Meanings of Programs --- Studies of Program
                 Constructs (F.3.3): {\bf Type structure}",
}

@Article{Kandemir:1999:GCO,
  author =       "M. Kandemir and P. Banerjee and A. Choudhary and J.
                 Ramanujam and N. Shenoy",
  title =        "A global communication optimization technique based on
                 data-flow analysis and linear algebra",
  journal =      j-TOPLAS,
  volume =       "21",
  number =       "6",
  pages =        "1251--1297",
  month =        nov,
  year =         "1999",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/1999-21-6/p1251-kandemir/",
  abstract =     "Reducing communication overhead is extremely important
                 in distributed-memory message-passing architectures. In
                 this article, we present a technique to improve
                 communication that considers data access patterns of
                 the entire program. Our approach is based on a
                 combination of traditional data-flow analysis and a
                 linear algebra framework, and it works on structured
                 programs with conditional statements and nested loops
                 but without arbitrary goto statements.The distinctive
                 features of the solution are the accuracy in keeping
                 communication set information, support for general
                 alignments and distributions including block-cyclic
                 distributions, and the ability to simulate some of the
                 previous approaches with suitable modifications. We
                 also show how optimizations such as message
                 vectorization, message coalescing, and redundancy
                 elimination are supported by our framework.
                 Experimental results on several benchmarks show that
                 our technique is effective in reducing the number of
                 messages (an average of 32\% reduction), the volume of
                 the data communicated (an average of 37\% reduction),
                 and the execution time (an average of 26\%
                 reduction).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "communication optimizations; data-flow analysis;
                 distributed-memory machines; global optimizations;
                 message vectorization; parallelism",
  subject =      "Software --- Software Engineering --- Programming
                 Environments (D.2.6): {\bf Integrated environments};
                 Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Frameworks};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}",
}

@Article{Pierce:2000:LTI,
  author =       "Benjamin C. Pierce and David N. Turner",
  title =        "Local type inference",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "1",
  pages =        "1--44",
  month =        jan,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-1/p1-pierce/",
  abstract =     "We study two partial type inference methods for a
                 language combining subtyping and impredicative
                 polymorphism. Both methods are {\em local\/} in the
                 sense that missing annotations are recovered using only
                 information from adjacent nodes in the syntax tree,
                 without long-distance constraints such as unification
                 variables. One method infers type arguments in
                 polymorphic applications using a local constraint
                 solver. The other infers annotations on bound variables
                 in function abstractions by propagating type
                 constraints downward from enclosing application nodes.
                 We motivate our design choices by a statistical
                 analysis of the uses of type inference in a sizable
                 body of existing ML code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "polymorphism; subtyping; type inference",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1)",
}

@Article{Fokkink:2000:LRE,
  author =       "Wan Fokkink and Jasper Kamperman and Pum Walters",
  title =        "Lazy rewriting on eager machinery",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "1",
  pages =        "45--86",
  month =        jan,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-1/p45-fokkink/",
  abstract =     "The article introduces a novel notion of lazy
                 rewriting. By annotating argument positions as lazy,
                 redundant rewrite steps are avoided, and the
                 termination behavior of a term-rewriting system can be
                 improved. Some transformations of rewrite rules enable
                 an implementation using the same primitives as an
                 implementation of eager rewriting.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "innermost reduction; lazy rewriting; specificity
                 ordering",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization}",
}

@Article{Kuperman:2000:ATA,
  author =       "Orna Kuperman and Moshe Y. Vardi",
  title =        "An automata-theoretic approach to modular model
                 checking",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "1",
  pages =        "87--128",
  month =        jan,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-1/p87-kuperman/",
  abstract =     "In {\em modular verification\/} the specification of a
                 module consists of two part. One part describes the
                 guaranteed behavior of the module. The other part
                 describes the assumed behavior of the system in which
                 the module is interacting. This is called the {\em
                 assume-guarantee\/} paradigm. In this paper we consider
                 assume-guarantee specifications in which the guarantee
                 is specified by branching temporal formulas. We
                 distinguish between two approaches. In the first
                 approach, the assumption is specified by branching
                 temporal formulas too. In the second approach, the
                 assumption is specified by linear temporal logic. We
                 consider guarantees in CTL, and CTL*. We develop two
                 fundamental techniques: building maximal models for CTL
                 and CTL* formulas and using alternating automata to
                 obtain space-efficient algorithms for fair model
                 checking. Using these techniques we classify the
                 complexity of satisfiability, validity, implication,
                 and modular verification for CTL and CTL*. We show that
                 modular verification is PSPACE-complete for CTL and is
                 EXSPACE-complete for CTL*. We prove that when the
                 assumption is linear, these bounds hold also for
                 guarantees in CTL and CTL*. On the other hand, the
                 problem remains EXSPACE-hard even when we restrict the
                 assumptions to LTL and take the guarantees as a fixed
                 CTL formula.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "automata; modular verification; temporal logic",
  subject =      "Software --- Software Engineering --- Software/Program
                 Verification (D.2.4)",
}

@Article{Shao:2000:ESS,
  author =       "Zhong Shao and Andrew W. Appel",
  title =        "Efficient and safe-for-space closure conversion",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "1",
  pages =        "129--161",
  month =        jan,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-1/p129-shao/",
  abstract =     "Modern compilers often implement function calls (or
                 returns) in two steps: first, a ``closure'' environment
                 is properly installed to provide access for free
                 variables in the target program fragment; second, the
                 control is transferred to the target by a ``jump with
                 arguments (for results).'' Closure conversion--which
                 decides where and how to represent closures at
                 runtime--is a crucial step in the compilation of
                 functional languages. This paper presents a new
                 algorithm that exploits the use of compile-time control
                 and data-flow information to optimize function calls.
                 By extensive closure sharing and allocation by 36\% and
                 memory fetches for local and global variables by 43\%;
                 and improves the already efficient code generated by an
                 earlier version of the Standard ML of New Jersey
                 compiler by about 17\% on a DECstation 5000. Moreover,
                 unlike most other approaches, our new
                 closure-allocation scheme the strong {\em
                 safe-for-space-complexity\/} rule, thus achieving good
                 asymptotic space usage.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "callee-save registers; closure conversion; closure
                 representation; compiler optimization; flow analysis;
                 heap-based compilation; space safety",
  subject =      "Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Procedures,
                 functions, and subroutines}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Compilers};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Optimization}",
}

@Article{Reps:2000:UCS,
  author =       "Thomas Reps",
  title =        "Undecidability of context-sensitive data-independence
                 analysis",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "1",
  pages =        "162--186",
  month =        jan,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-1/p162-reps/",
  abstract =     "A number of program-analysis problems can be tackled
                 by transforming them into certain kinds of
                 graph-reachability problems in labeled graphs. The edge
                 labels can be used to filter out paths that are not
                 interest: a path $P$ from vertex $t$ only counts as a
                 ``valid connection'' between $s$ and $t$ if the word
                 spelled out by $P$ is in a certain language. Often the
                 languages used for such filtering purposes are
                 languages of matching parentheses. In some cases, the
                 matched-parenthesis condition is used for paths with
                 mismatched calls and returns. This leads to so-called
                 ``context-{\em sensitive\/}'' program analyses, such as
                 context-{\em sensitive\/} interprocedural slicing and
                 context-{\em sensitive\/} interprocedural dataflow
                 analysis. In other cases, the matched-parenthesis
                 condition is used to capture a graph-theoretic analog
                 of McCarthy's rules: ``car (cons(x,y)) = x'' and
                 ``cdr(cons(x,y)) =y''. That is, in the code
                 fragment\par

                 c = cons(a,b); d = car(c);\par

                 \noindent the fact that there is a
                 ``structure-transmitted data-dependence'' from a to d,
                 but not from b to d, is captured in a graph by (1)
                 using a vertex for each variable, (2) an edge from
                 vertex $i$ to vertex $j$ when $i$ is used on the
                 right-hand side of an assignment to {\em j}, (3)
                 parentheses that match as the labels on the edges that
                 run from a to c and c to d, and (4) parentheses that do
                 not match as the labels on the edges that run from a to
                 c and c to d. However, structure-transmitted
                 data-independence analysis is context-{\em
                 insensitive}, because there are no constraints that
                 these two kinds of uses of parentheses can be combined
                 to create a context-{\em sensitive\/} analysis for
                 structure-transmitted data-dependences. This article
                 answers the question in the negative: in general, the
                 problem of context {\em sensitive},
                 structure-transmitted data-dependence analysis is
                 undecidable. The results imply that in general, both
                 context-{\em sensitive\/} set-based analysis and -CFA
                 (when data constructors and selectors and selectors are
                 taken into account) are also undecidable.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization};
                 Theory of Computation --- Mathematical Logic and Formal
                 Languages --- Mathematical Logic (F.4.1): {\bf
                 Computability theory}; Theory of Computation ---
                 Mathematical Logic and Formal Languages --- Formal
                 Languages (F.4.3): {\bf Decision problems}; Mathematics
                 of Computing --- Discrete Mathematics --- Graph Theory
                 (G.2.2): {\bf Path and circuit problems}",
}

@Article{Hermenegildo:2000:IAC,
  author =       "Manuel Hermenegildo and German Puebla and Kim Marriott
                 and Peter J. Stuckey",
  title =        "Incremental analysis of constraint logic programs",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "187--223",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p187-hermenegildo/",
  abstract =     "Global analyzers traditionally read and analyze the
                 entire program at once, in a nonincremental way.
                 However, there are many situations which are not well
                 suited to this simple model and which instead require
                 reanalysis of certain parts of a program which has
                 already been analyzed. In these cases, it appears
                 inefficient to perform the analysis of the program
                 again from scratch, as needs to be done with current
                 systems. We describe how the fixed-point algorithms
                 used in current generic analysis engines for
                 (constraint) logic programming languages can be
                 extended to support incremental analysis. The possible
                 changes to a program are classified into three types:
                 addition, deletion, and arbitrary change. For each one
                 of these, we provide one or more algorithms for
                 identifying the parts of the analysis that must be
                 recomputed and for performing the actual recomputation.
                 The potential benefits and drawbacks of these
                 algorithms are discussed. Finally, we present some
                 experimental results obtained with an implementation of
                 the algorithms in the PLAI generic abstract
                 interpretation framework. The results show significant
                 benefits when using the proposed incremental analysis
                 algorithms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract interpretation; constraint logic programming;
                 incremental computation; static analysis",
  subject =      "Software --- Programming Techniques --- Automatic
                 Programming (D.1.2); Software --- Programming
                 Techniques --- Logic Programming (D.1.6); Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Theory of Computation --- Logics and
                 Meanings of Programs --- Specifying and Verifying and
                 Reasoning about Programs (F.3.1): {\bf Logics of
                 programs}",
}

@Article{Sperber:2000:GLP,
  author =       "Michael Sperber and Peter Thiemann",
  title =        "Generation of {LR} parsers by partial evaluation",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "224--264",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p224-sperber/",
  abstract =     "The combination of modern programming languages and
                 partial evaluation yields new approaches to old
                 problems. In particular, the combination of functional
                 programming and partial evaluation can turn a general
                 parser into a parser generator. We use an inherently
                 functional approach to implement general LR($k$)
                 parsers and specialize them with respect to the input
                 grammars using offline partial evaluation. The
                 functional specification of LR parsing yields a concise
                 implementation of the algorithms themselves.
                 Furthermore, we demonstrate the elegance of the
                 functional approach by incorporating on-the-fly
                 attribute evaluation for S-attributed grammars and two
                 schemes for error recovery, which lend themselves to
                 natural and elegant implementation. The parser require
                 only minor changes to achieve good specialization
                 results. The generated parsers have production quality
                 and match those produced by traditional parser
                 generators in sped and compactness",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "continuations; functional programming; LR parsing;
                 parser generation; partial evaluation",
  subject =      "Software --- Programming Techniques --- Applicative
                 (Functional) Programming (D.1.1); Software ---
                 Programming Techniques --- Automatic Programming
                 (D.1.2); Software --- Programming Languages ---
                 Language Classifications (D.3.2): {\bf Applicative
                 (functional) languages}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Parsing}; Theory
                 of Computation --- Mathematical Logic and Formal
                 Languages --- Grammars and Other Rewriting Systems
                 (F.4.2): {\bf Parsing}; Computing Methodologies ---
                 Artificial Intelligence --- Automatic Programming
                 (I.2.2): {\bf Program transformation}; Computing
                 Methodologies --- Artificial Intelligence --- Automatic
                 Programming (I.2.2): {\bf Program synthesis}",
}

@Article{Moreira:2000:FMJ,
  author =       "Jos{\'e} E. Moreira and Samuel P. Midkiff and Manish
                 Gupta",
  title =        "From flop to megaflops: {Java} for technical
                 computing",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "265--295",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p265-moreira/",
  abstract =     "Although there has been some experimentation with Java
                 as a language for numerically intensive computing,
                 there is a perception by many that the language is
                 unsuited for such work because of performance
                 deficiencies. In this article we show how optimizing
                 array bounds checks and null pointer checks creates
                 loop nests on which aggressive optimizations can be
                 used. Applying these optimizations by hand to a simple
                 matrix-multiply test case leads to Java-compliant
                 programs whose performance is in excess of 500 Mflops
                 on a four-processor 332MHz RS/6000 model F50 computer.
                 We also report in this article the effect that various
                 optimizations have on the performance of six
                 floating-point-intensive benchmarks. Through these
                 optimizations we have been able to achieve with Java at
                 least 80\% of the peak Fortran performance on the same
                 benchmarks. Since all of these optimizations can be
                 automated, we conclude that Java will soon be a serious
                 contender for numerically intensive computing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "arrays; compilers; Java",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Run-time
                 environments}; Software --- Programming Techniques ---
                 Concurrent Programming (D.1.3): {\bf Parallel
                 programming}; Software --- Programming Languages ---
                 Language Classifications (D.3.2): {\bf Java}",
}

@Article{DeLaBanda:2000:ICL,
  author =       "Mar{\'\i} Garc{\'\i}a {De La Banda} and Manuel
                 Hermengildo and Kim Marriott",
  title =        "Independence in {CLP} languages",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "296--339",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p296-garcia_de_la_banda/",
  abstract =     "Studying independence of goals has proven very useful
                 in the context of logic programming. In particular, it
                 has provided a formal basis for powerful automatic
                 parallelization tools, since independence ensures that
                 two goals may be evaluated in parallel while preserving
                 correctness and efficiency. We extend the concept of
                 independence to constraint logic programs (CLP) and
                 prove that it also ensures the correctness and
                 efficiency of the parallel evaluation of independent
                 goals. Independence for CLP languages is more complex
                 than for logic programming as search space preservation
                 is necessary but no longer sufficient for ensuring
                 correctness and efficiency. Two additional issues
                 arise. The first is that the cost of constraint solving
                 may depend upon the order constraints are encountered.
                 The second is the need to handle dynamic scheduling. We
                 clarify these issues by proposing various types of
                 search independence and constraint solver independence,
                 and show how they can be combined to allow different
                 optimizations, from parallelism to intelligent
                 backtracking. Sufficient conditions for independence
                 which can be evaluated ``a priori'' at run-time are
                 also proposed. Our study also yields new insights into
                 independence in logic programming languages. In
                 particular, we show that search space preservation is
                 not only a sufficient but also a necessary condition
                 for ensuring correctness and efficiency of parallel
                 execution.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "constraint logic programming; independence;
                 parallelism",
  subject =      "Software --- Programming Techniques --- Automatic
                 Programming (D.1.2); Software --- Programming
                 Techniques --- Concurrent Programming (D.1.3): {\bf
                 Parallel programming}; Software --- Programming
                 Techniques --- Logic Programming (D.1.6); Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Specifying and Verifying and Reasoning about Programs
                 (F.3.1): {\bf Logics of programs}",
}

@Article{Leroy:2000:TBA,
  author =       "Xavier Leroy and Fran{\c{c}}ois Pessaux",
  title =        "Type-based analysis of uncaught exceptions",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "340--377",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p340-leroy/",
  abstract =     "This article presents a program analysis to estimate
                 uncaught exceptions in ML programs. This analysis
                 relies on unification-based type inference in a
                 nonstandard type system, using rows to approximate both
                 the flow of escaping exceptions (a la effect systems)
                 and the flow of result values (a la control-flow
                 analyses). The resulting analysis is efficient and
                 precise; in particular, arguments carried by exceptions
                 are accurately handled.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "CAML; exceptions; polymorphism; rows; SML; static
                 debugging; type and effect systems; type inference",
  subject =      "Software --- Software Engineering --- Testing and
                 Debugging (D.2.5): {\bf Error handling and recovery};
                 Software --- Software Engineering --- Testing and
                 Debugging (D.2.5): {\bf Symbolic execution}; Software
                 --- Programming Languages --- Language Classifications
                 (D.3.2): {\bf Applicative (functional) languages};
                 Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf ML}; Theory of
                 Computation --- Logics and Meanings of Programs ---
                 Semantics of Programming Languages (F.3.2): {\bf
                 Program analysis}; Theory of Computation --- Logics and
                 Meanings of Programs --- Semantics of Programming
                 Languages (F.3.2): {\bf Operational semantics}; Theory
                 of Computation --- Logics and Meanings of Programs ---
                 Studies of Program Constructs (F.3.3): {\bf Control
                 primitives}; Theory of Computation --- Logics and
                 Meanings of Programs --- Studies of Program Constructs
                 (F.3.3): {\bf Type structure}",
}

@Article{Debray:2000:CTC,
  author =       "Saumya K. Debray and William Evans and Robert Muth and
                 Bjorn {De Sutter}",
  title =        "Compiler techniques for code compaction",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "378--415",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p378-debray/",
  abstract =     "In recent years there has been an increasing trend
                 toward the incorporation of computers into a variety of
                 devices where the amount of memory available is
                 limited. This makes it desirable to try to reduce the
                 size of applications where possible. This article
                 explores the use of compiler techniques to accomplish
                 code compaction to yield smaller executables. The main
                 contribution of this article is to show that careful,
                 aggressive, interprocedural optimization, together with
                 procedural abstraction of repeated code fragments, can
                 yield significantly better reductions in code size than
                 previous approaches, which have generally focused on
                 abstraction of repeated instruction sequences. We also
                 show how ``equivalent'' code fragments can be detected
                 and factored out using conventional compiler
                 techniques, and without having to resort to purely
                 linear treatments of code sequences as in
                 suffix-tree-based approaches, thereby setting up a
                 framework for code compaction that can be more flexible
                 in its treatment of what code fragments are considered
                 equivalent. Our ideas have been implemented in the form
                 of a binary-rewriting tool that reduces the size of
                 executables by about 30\% on the average.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "code compaction; code compression; code size
                 reduction",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Code generation}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}; Data --- Coding
                 and Information Theory (E.4): {\bf Data compaction and
                 compression}",
}

@Article{Ramalingam:2000:CSS,
  author =       "G. Ramalingam",
  title =        "Context-sensitive synchronization-sensitive analysis
                 is undecidable",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "2",
  pages =        "416--430",
  month =        mar,
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 26 10:12:58 MDT 2000",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-2/p416-ramalingam/",
  abstract =     "Static program analysis is concerned with the
                 computation of approximations of the runtime behavior
                 of programs. Precise information about a program's
                 runtime behavior is, in general, uncomputable for
                 various different reasons, and each reason may
                 necessitate making certain approximations in the
                 information computed. This article illustrates one
                 source of difficulty in static analysis of concurrent
                 programs. Specifically, the article shows that an
                 analysis that is simultaneously both context-sensitive
                 and synchronization-sensitive (that is, a
                 context-sensitive analysis that precisely takes into
                 account the constraints on execution order imposed by
                 the synchronization statements in the program) is
                 impossible even for the simplest of analysis
                 problems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization};
                 Theory of Computation --- Mathematical Logic and Formal
                 Languages --- Mathematical Logic (F.4.1): {\bf
                 Computability theory}; Theory of Computation ---
                 Mathematical Logic and Formal Languages ---
                 Mathematical Logic (F.4.1); Software --- Programming
                 Techniques --- Concurrent Programming (D.1.3)",
}

@Article{Lueh:2000:FBR,
  author =       "Guei-Yuan Lueh and Thomas Gross and Ali-Reza
                 Adl-Tabatabai",
  title =        "Fusion-based register allocation",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "3",
  pages =        "431--470",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-3/p431-lueh/p431-lueh.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-3/p431-lueh/",
  abstract =     "The register allocation phase of a compiler maps live
                 range of a program to registers. If there are more
                 candidates than there are physical registers, the
                 registers allocator must spill a live range (the home
                 location is in memory) or split a live range (the live
                 range occupies multiple locations). One of the
                 challenges for a register allocator is to deal with
                 spilling and splitting together. Fusion-based register
                 allocation uses the structure of the program to make
                 splitting and spilling decisions, with the goal to move
                 overhead operations to infrequently executed parts of a
                 program. The basic idea of fusion-based register
                 allocation is to build up the interference graph.
                 Starting with some base region (e.g., a basic block, a
                 loop), the register allocator adds basic blocks to the
                 region and incrementally builds the interference graph.
                 When there are more live ranges than registers, the
                 register allocator selects live ranges to split; these
                 live ranges are split along the edge that was most
                 recently added to the region. This article describes
                 fusion-based register allocation in detail and compares
                 it with other approaches to register allocation. For
                 programs from the SPEC92 suite, fusion-based register
                 allocation can improve the execution time (of optimized
                 programs, for the MIPS architecture) by up to 8.4% over
                 Chaitin-style register allocation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Management",
  keywords =     "performance evaluation; register allocation",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Code generation}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Optimization}",
}

@Article{Clausen:2000:JBC,
  author =       "Lars R{\ae}der Clausen and Ulrik Pagh Schultz and
                 Charles Consel and Gilles Muller",
  title =        "{Java} bytecode compression for low-end embedded
                 systems",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "3",
  pages =        "471--489",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-3/p471-clausen/p471-clausen.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-3/p471-clausen/",
  abstract =     "A program executing on a low-end embedded system, such
                 as a smart-card, faces scarce memory resources and
                 fixed execution time constraints. We demonstrate that
                 factorization of common instruction sequences in Java
                 bytecode allows the memory footprint to be reduced, on
                 average, to 85% of its original size, with a minimal
                 execution time penalty. While preserving Java
                 compatibility, our solution requires only a few
                 modifications which are straightforward to implement in
                 any JVM used in a low-end embedded system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Design; Experimentation",
  keywords =     "code compression; embedded systems; Java bytecode",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Optimization}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Interpreters};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Run-time environments}",
}

@Article{Kistler:2000:ADM,
  author =       "Thomas Kistler and Michael Franz",
  title =        "Automated data-member layout of heap objects to
                 improve memory-hierarchy performance",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "3",
  pages =        "490--505",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-3/p490-kistler/p490-kistler.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-3/p490-kistler/",
  abstract =     "We present and evaluate a simple, yet efficient
                 optimization technique that improves memory-hierarchy
                 performance for pointer-centric applications by up to
                 24% and reduces cache misses by up to 35%. This is
                 achieved by selecting an improved ordering for the data
                 members of pointer-based data structures. Our
                 optimization is applicable to all type-safe programming
                 languages that completely abstract from physical
                 storage layout; examples of such languages are Java and
                 Oberon. Our technique does not involve programmers in
                 the optimization process, but runs fully automatically,
                 guided by dynamic profiling information that captures
                 which paths through the program are taken with that
                 frequency. The algorithm first strives to cluster data
                 members that are accessed closely after one another
                 onto the same cache line, increasing spatial locality.
                 Then, the data members that have been mapped to a
                 particular cache line are ordered to minimize load
                 latency in case of a cache miss.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance",
  keywords =     "dynamic data structures; dynamic optimization;
                 memory-hierarchy optimization",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Optimization}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Run-time
                 environments}",
}

@Article{Wellings:2000:IOO,
  author =       "A. J. Wellings and B. Johnson and B. Sanden and J.
                 Kienzle and T. Wolf and S. Michell",
  title =        "Integrating object-oriented programming and protected
                 objects in {Ada 95}",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "3",
  pages =        "506--539",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-3/p506-wellings/p506-wellings.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-3/p506-wellings/",
  abstract =     "Integrating concurrent and object-oriented programming
                 has been an active research topic since the late
                 1980's. There is a now a plethora of methods for
                 achieving this integration. The majority of approaches
                 have taken a sequential object-oriented language and
                 made it concurrent. A few approaches have taken a
                 concurrent language and made it object-oriented. The
                 most important of this latter class is the Ada 95
                 language, which is an extension to the object-based
                 concurrent programming language Ada 83. Arguably, Ada
                 95 does not fully integrate its models of concurrency
                 and object-oriented programming. For example, neither
                 tasks nor protected objects are extensible. This
                 article discusses ways in which protected objects can
                 be made more extensible.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages",
  keywords =     "Ada 95; concurrency; concurrent object-oriented
                 programming; inheritance anomaly",
  subject =      "Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Concurrent
                 programming structures}; Software --- Programming
                 Languages --- Language Constructs and Features (D.3.3):
                 {\bf Inheritance}",
}

@Article{Snelting:2000:UCH,
  author =       "Gregor Snelting and Frank Tip",
  title =        "Understanding class hierarchies using concept
                 analysis",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "3",
  pages =        "540--582",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-3/p540-snelting/p540-snelting.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-3/p540-snelting/",
  abstract =     "A new method is presented for analyzing and
                 reengineering class hierarchies. In our approach, a
                 class hierarchy is processed along with a set of
                 applications that use it, and a fine-grained analysis
                 of the access and subtype relationships between
                 objects, variables, and class members is performed. The
                 result of this analysis is again a class hierarchy,
                 which is guaranteed to be behaviorally equivalent to
                 the original hierarchy, but in which each object only
                 contains the members that are required. Our method is
                 semantically well-founded in {\em concept analysis\/}:
                 the new class hierarchy is a minimal and maximally
                 factorized {\em concept lattice\/} that reflects the
                 access and subtype relationships between variables,
                 objects and class members. The method is primarily
                 intended as a tool for finding imperfections in the
                 design of class hierarchies, and can be used as the
                 basis for tools that largely automate the process of
                 reengineering such hierarchies. The method can also be
                 used as a space-optimizing source-to-source
                 transformation that removes redundant fields from
                 objects. A prototype implementation for Java has been
                 constructed, and used to conduct several case studies.
                 Our results demonstrate that the method can provide
                 valuable insights into the usage of a class hierarchy
                 in a specific context, and lead to useful restructuring
                 proposals.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Documentation; Experimentation; Languages;
                 Theory",
  keywords =     "class hierarchy reengineering; concept analysis",
  subject =      "Software --- Software Engineering --- Distribution,
                 Maintenance, and Enhancement (D.2.7): {\bf
                 Restructuring, reverse engineering, and reengineering};
                 Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Classes and
                 objects}; Theory of Computation --- Logics and Meanings
                 of Programs --- Semantics of Programming Languages
                 (F.3.2): {\bf Program analysis}",
}

@Article{Assmann:2000:GRS,
  author =       "Uwe Assmann",
  title =        "Graph rewrite systems for program optimization",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "4",
  pages =        "583--637",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-4/p583-assmann/",
  abstract =     "Graph rewrite systems can be used to specify and
                 generate program optimizations. For termination of the
                 systems several rule-based criteria are developed,
                 defining {\em exhaustive graph rewrite systems}. For
                 nondeterministic systems {\em stratification\/} is
                 introduced which automatically selects single normal
                 forms. To illustrate how far the methodology reaches,
                 parts of the lazy code motion optimization are
                 specified. The resulting graph rewrite system classes
                 can be evaluated by a uniform algorithm, which forms
                 the basis for the optimizer generator OPTIMIX. With
                 this tool several optimizer components have been
                 generated, and some numbers on their speed are
                 presented.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Performance; Theory",
  keywords =     "compiler generators; graph rewrite systems; program
                 analysis; program optimization; program transformation;
                 specification; stratification; very high-level
                 languages; visual programming",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Translator writing systems and compiler
                 generators}",
}

@Article{Qian:2000:SFI,
  author =       "Zhenyu Qian",
  title =        "Standard fixpoint iteration for {Java} bytecode
                 verification",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "4",
  pages =        "638--672",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-4/p638-qian/",
  abstract =     "Java bytecode verification forms the basis for
                 Java-based Internet security and needs a rigorous
                 description. One important aspect of bytecode
                 verification is to check if a Java Virtual Machine
                 (JVM) program is statically well-typed. So far, several
                 formal specifications have been proposed to define what
                 the static well-typedness means. This paper takes a
                 step further and presents a chaotic fixpoint iteration,
                 which represents a family of fixpoint computation
                 strategies to compute a least type for each JVM program
                 within a finite number of iteration steps. Since a
                 transfer function in the iteration is not monotone, we
                 choose to follow the example of a nonstandard fixpoint
                 theorem, which requires that all transfer functions are
                 increasing, and monotone in case the bigger element is
                 already a fixpoint. The resulting least type is the
                 artificial top element if and only if he JVM program is
                 not statically well-typed. The iteration is standard
                 and close to Sun's informal specification and most
                 commercial bytecode verifiers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages",
  keywords =     "bytecode verification; dataflow analysis; fixpoint;
                 Java",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1)",
}

@Article{Tang:2000:PTR,
  author =       "Hong Tang and Kai Shen and Tao Yang",
  title =        "Program transformation and runtime support for
                 threaded {MPI} execution on shared-memory machines",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "4",
  pages =        "673--700",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-4/p673-tang/",
  abstract =     "Parallel programs written in MPI have been widely used
                 for developing high-performance applications on various
                 platforms. Because of a restriction of the MPI
                 computation model, conventional MPI implementations on
                 shared-memory machines map each MPI node to an OS
                 process, which can suffer serious performance
                 degradation in the presence of multiprogramming. This
                 paper studies compile-time and runtime techniques for
                 enhancing performance portability of MPI code running
                 on multiprogrammed shared-memory machines. The proposed
                 techniques allow MPI nodes to be executed safety and
                 efficiently as threads. Compile-time transformation
                 eliminates global and static variables in C code using
                 node-specific data. The runtime support includes an
                 efficient and provably correct communication protocol
                 that uses lock-free data structure and takes advantage
                 of address space sharing among threads. The experiments
                 on SGI Origin 2000 show that our MPI prototype called
                 TMPI using the proposed techniques is competitive with
                 SGI's native MPI implementation in a dedicated
                 environment, and that it has significant performance
                 advantages in a multiprogrammed environment.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Design; Experimentation; Languages;
                 Performance",
  keywords =     "lock-free synchronization; MPI; multiprogrammed
                 environments; program transformation; shared-memory
                 machines; threaded execution",
  subject =      "Hardware --- Memory Structures --- Design Styles
                 (B.3.2): {\bf Shared memory}; Software --- Programming
                 Techniques --- Concurrent Programming (D.1.3): {\bf
                 Parallel programming}; Software --- Programming
                 Languages --- Language Classifications (D.3.2): {\bf
                 Concurrent, distributed, and parallel languages};
                 Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Preprocessors}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Run-time
                 environments}; Software --- Operating Systems ---
                 Process Management (D.4.1): {\bf
                 Multiprocessing/multiprogramming/multitasking}; Data
                 --- Data Structures (E.1): {\bf Lists, stacks, and
                 queues}",
}

@Article{Walker:2000:TMM,
  author =       "David Walker and Karl Crary and Greg Morrisett",
  title =        "Typed memory management via static capabilities",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "4",
  pages =        "701--771",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2000-22-4/p701-walker/",
  abstract =     "Region-based memory management is an alternative to
                 standard tracing garbage collection that makes
                 operation such as memory deallocation explicit but
                 verifiably safe. In this article, we present a new
                 compiler intermediate language, called the Capability
                 Language (CL), that supports region-based memory
                 management and enjoys a provably safe type systems.
                 Unlike previous region-based type system, region
                 lifetimes need not be lexically scoped, and yet the
                 language may be checked for safety without complex
                 analyses. Therefore, our type system may be deployed in
                 settings such as extensible operating systems where
                 both the performance and safety of untrusted code is
                 important. The central novelty of the language is the
                 use of static capabilities to specify the
                 permissibility of various operations, such as memory
                 access and deallocation. In order to ensure
                 capabilities are relinquished properly, the type system
                 tracks aliasing information using a form of bounded
                 quantification. Moreover, unlike previous work on
                 region-based type systems, the proof of soundness of
                 our type system is relatively simple, employing only
                 standard syntactic techniques. In order to show how our
                 language may be used in practice, we show how to
                 translate a variant of Tofte and Talpin's high-level
                 type-and-effects system for region-based memory
                 management into our language. When combined with known
                 region inference algorithms, this translation provides
                 a way to compile source-level languages to CL.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Theory; Verification",
  keywords =     "certified code; region-based memory management;
                 type-directed compilation; typed intermediate
                 languages",
  subject =      "Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1): {\bf Semantics};
                 Software --- Programming Languages --- Formal
                 Definitions and Theory (D.3.1): {\bf Syntax}; Software
                 --- Programming Languages --- Processors (D.3.4): {\bf
                 Compilers}; Theory of Computation --- Logics and
                 Meanings of Programs --- Semantics of Programming
                 Languages (F.3.2): {\bf Operational semantics}; Theory
                 of Computation --- Logics and Meanings of Programs ---
                 Studies of Program Constructs (F.3.3): {\bf Type
                 structure}",
}

@Article{Quillere:2000:OMU,
  author =       "Fabien Quiller{\'e} and Sanjay Rajopadhye",
  title =        "Optimizing memory usage in the polyhedral model",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "5",
  pages =        "773--815",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-5/p773-quillere/p773-quillere.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-5/p773-quillere/",
  abstract =     "The {\em polyhedral model\/} provides a single unified
                 foundation for systolic array synthesis and automatic
                 parallelization of loop programs. We investigate the
                 problem of memory reuse when compiling Alpha (a
                 functional language based on this model). Direct
                 compilation would require unacceptably large memory
                 (for example $O(n^3)$ for matrix multiplication).
                 Researchers have previously addressed the problem of
                 memory reuse, and the analysis that this entails for
                 projective memory allocations. This paper addresses,
                 for a given schedule, the choice of the projections so
                 as to minimize the volume of the residual memory. We
                 prove tight bounds on the number of linearly
                 independent projection vectors. Our method is
                 constructive, yielding an optimal memory allocation. We
                 extend the method to modular functions, and deal with
                 the subsequent problems of code generation. Our ideas
                 are illustrated on a number of examples generated by
                 the current version of the Alpha compiler.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages",
  keywords =     "affine recurrence equations; applicative (functional)
                 languages; automatic parallelization; data-parallel
                 languages; dataflow analysis; dependence analysis;
                 lifetime analysis; memory management; parallel code
                 generation; polyhedral model; scheduling",
  subject =      "Computer Systems Organization --- Processor
                 Architectures --- Multiple Data Stream Architectures
                 (Multiprocessors) (C.1.2): {\bf Array and vector
                 processors}; Software --- Programming Languages ---
                 Processors (D.3.4): {\bf Compilers}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Memory management (garbage collection)}",
}

@Article{vonHanxleden:2000:BCP,
  author =       "Reinhard von Hanxleden and Ken Kennedy",
  title =        "A balanced code placement framework",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "5",
  pages =        "816--860",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-5/p816-von_hanxleden/p816-von_hanxleden.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-5/p816-von_hanxleden/",
  abstract =     "Give-N-Take is a code placement framework which uses a
                 generic producer-consumer mechanism. An instance of
                 this could be a communication step between a processor
                 that computes (produces) some data, and other
                 processors that subsequently reference (consume) these
                 data in an expression. An advantage of Give-N-Take over
                 traditional partial redundancy elimination techniques
                 is its concept of production {\em regions}, instead of
                 single locations, which can be beneficial for general
                 latency hiding. Give-N-Take also guarantees {\em
                 balanced\/} production, i.e., each production will be
                 started and stopped exactly once. The framework can
                 also take advantage of production coming ``for free,''
                 as induced by side effects, without disturbing balance.
                 Give-N-Take can place production either before or after
                 consumption, and it also provides the option to
                 speculatively hoist code out of potentially zero-trip
                 loop (nest) constructs. Give-N-Take uses a fast
                 elimination method based on Tarjan intervals, with a
                 complexity linear in the program size in most cases. We
                 have implemented Give-N-Take as part of a Fortran D
                 compiler prototype, where it solves various
                 communication generation problems associated with
                 compiling data-parallel languages onto
                 distributed-memory architectures.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Theory",
  keywords =     "data-flow analysis; Fortran D; high performance
                 Fortran; latency hiding; partial redundancy
                 elimination; Tarjan intervals",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Code generation}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Optimization}",
}

@Article{Dovier:2000:SCL,
  author =       "Agostino Dovier and Carla Piazza and Enrico Pontelli
                 and Gianfranco Rossi",
  title =        "Sets and constraint logic programming",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "5",
  pages =        "861--931",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-5/p861-dovier/p861-dovier.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-5/p861-dovier/",
  abstract =     "In this paper we present a study of the problem of
                 handling constraints made by conjunctions of positive
                 and negative literals based on the predicate symbols =,
                 , and (i.e., disjointness of two sets) in a (hybrid)
                 universe of {\em finite sets}. We also review and
                 compare the main techniques considered to represent
                 finite sets in the context of logic languages. The
                 resulting constraint algorithms are embedded in a
                 Constraint Logic Programming (CLP) language which
                 provides finite sets--along with basic set-theoretic
                 operations--as first-class objects of the language. The
                 language--called CLP(SET)--is an instance of the
                 general CLP framework, and as such it inherits all the
                 general features and theoretical results of this
                 scheme. We provide, through programming examples, a
                 taste of the expressive power offered by programming in
                 CLP(SET).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Theory",
  keywords =     "computable set theory; constraints; declarative
                 programming",
  subject =      "Software --- Programming Languages --- Language
                 Classifications (D.3.2): {\bf Constraint and logic
                 languages}; Software --- Programming Languages ---
                 Language Constructs and Features (D.3.3); Theory of
                 Computation --- Mathematical Logic and Formal Languages
                 --- Mathematical Logic (F.4.1): {\bf Logic and
                 constraint programming}; Theory of Computation ---
                 Mathematical Logic and Formal Languages (F.4); Theory
                 of Computation --- Mathematical Logic and Formal
                 Languages --- Mathematical Logic (F.4.1): {\bf Set
                 theory}",
}

@Article{Grant:2000:BCD,
  author =       "Brian Grant and Markus Mock and Matthai Philipose and
                 Craig Chambers and Susan J. Eggers",
  title =        "The benefits and costs of {DyC}'s run-time
                 optimizations",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "5",
  pages =        "932--972",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 17 10:05:24 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-5/p932-grant/p932-grant.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-5/p932-grant/",
  abstract =     "DyC selectively dynamically compiles programs during
                 their execution, utilizing the run-time-computed values
                 of variables and data structures to apply optimizations
                 that are based on partial evaluation. The dynamic
                 optimizations are preplanned at static compile time in
                 order to reduce their run-time cost; we call this {\em
                 staging}. DyC's staged optimizations include (1) an
                 advanced binding-time analysis that supports
                 polyvariant specialization (enabling both single-way
                 and multiway complete loop unrolling), polyvariant
                 division, static loads, and static calls, (2) low-cost,
                 dynamic versions of traditional global optimizations,
                 such as zero and copy propagation and dead-assignment
                 elimination, and (3) dynamic peephole optimizations,
                 such as strength reduction. Because of this large suite
                 of optimizations and its low dynamic compilation
                 overhead, DyC achieves good performance improvements on
                 programs that are larger and more complex than the
                 kernels previously targeted by other dynamic
                 compilation systems. This paper evaluates the benefits
                 and costs of applying DyC's optimizations. We assess
                 their impact on the performance of a variety of small
                 to medium-sized programs, both for the regions of code
                 that are actually transformed and for the entire
                 application as a whole. Our study includes an analysis
                 of the contribution to performance of individual
                 optimizations, the performance effect of changing the
                 applications' inputs, and a detailed accounting of
                 dynamic compilation costs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Performance",
  keywords =     "dynamic compilation; specialization",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization}",
}

@Article{Madhavan:2000:EGG,
  author =       "Maya Madhavan and Priti Shankar and Siddhartha Rai and
                 U. Ramakrishna",
  title =        "Extending {Graham-Glanville} techniques for optimal
                 code generation",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "6",
  pages =        "973--1001",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jul 25 13:55:50 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-6/p973-madhavan/p973-madhavan.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-6/p973-madhavan/",
  abstract =     "We propose a new technique for constructing
                 code-generator generators, which combines the
                 advantages of the Graham-Glanville parsing technique
                 and the bottom-up tree parsing approach. Machine
                 descriptions are similar to Yacc specifications. The
                 construction effectively generates a pushdown automaton
                 as the matching device. This device is able to handle
                 ambiguous grammars, and can be used to generate locally
                 optimal code without the use of heuristics. Cost
                 computations are performed at preprocessing time. The
                 class of regular tree grammars augmented with costs
                 that can be handled by our system properly includes
                 those that can be handled by bottom-up systems based on
                 finite-state tree parsing automata. Parsing time is
                 linear in the size of the subject tree. We have tested
                 the system on specifications for some systems and
                 report table sizes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages",
  keywords =     "code-generator generator; optimal code generation;
                 tree pattern matching",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Code generation}; Software ---
                 Programming Languages --- Processors (D.3.4): {\bf
                 Retargetable compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Translator
                 writing systems and compiler generators}",
}

@Article{Apt:2000:RCC,
  author =       "Krzysztof R. Apt",
  title =        "The role of commutativity in constraint propagation
                 algorithms",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "6",
  pages =        "1002--1036",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jul 25 13:55:50 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-6/p1002-apt/p1002-apt.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-6/p1002-apt/",
  abstract =     "Constraint propagation algorithms form an important
                 part of most of the constraint programming systems. We
                 provide here a simple, yet very general framework that
                 allows us to explain several constraint propagation
                 algorithms in a systematic way. In this framework we
                 proceed in two steps. First, we introduce a generic
                 iteration algorithm on partial orderings and prove its
                 correctness in an abstract setting. Then we instantiate
                 this algorithm with specific partial orderings and
                 functions to obtain specific constraint propagation
                 algorithms. In particular, using the notions
                 commutativity and semi-commutativity, we show that the
                 AC-3, PC-2, DAC, and DPC algorithms for achieving
                 (directional) arc consistency and (directional) path
                 consistency are instances of a single generic
                 algorithm. The work reported here extends and
                 simplifies that of Apt [1999a].",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Algorithms; Languages; Verification",
  keywords =     "commutativity; constraint propagation; generic
                 algorithms",
  subject =      "Software --- Programming Languages --- Language
                 Constructs and Features (D.3.3): {\bf Constraints};
                 Computing Methodologies --- Symbolic and Algebraic
                 Manipulation --- Algorithms (I.1.2): {\bf Analysis of
                 algorithms}; Computing Methodologies --- Artificial
                 Intelligence --- Automatic Programming (I.2.2): {\bf
                 Program synthesis}",
}

@Article{Grossman:2000:STA,
  author =       "Dan Grossman and Greg Morrisett and Steve Zdancewic",
  title =        "Syntactic type abstraction",
  journal =      j-TOPLAS,
  volume =       "22",
  number =       "6",
  pages =        "1037--1080",
  year =         "2000",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jul 25 13:55:50 MDT 2001",
  bibsource =    "http://www.acm.org/pubs/toc/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/articles/journals/toplas/2000-22-6/p1037-grossman/p1037-grossman.pdf;
                 http://www.acm.org/pubs/citations/journals/toplas/2000-22-6/p1037-grossman/",
  abstract =     "Software developers often structure programs in such a
                 way that different pieces of code constitute distinct
                 {\em principals}. Types help define the protocol by
                 which these principals interact. In particular, {\em
                 abstract types\/} allow a principal to make strong
                 assumptions about how well-typed clients use the
                 facilities that it provides. We show how the notions of
                 principals and type abstraction can be formalized
                 within a language. Different principals can know the
                 implementation of different abstract types. We use
                 additional syntax to track the flow of values with
                 abstract types during the evaluation of a program and
                 demonstrate how this framework supports syntactic
                 proofs (in the style of subject reduction) for
                 type-abstraction properties. Such properties have
                 traditionally required semantic arguments; using syntax
                 avoids the need to build a model and recursive types
                 for the language. We present various typed lambda
                 calculi with principals, including versions that have
                 mutable state and recursive types.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  generalterms = "Languages; Security; Theory; Verification",
  keywords =     "operational semantics; parametricity; proof
                 techniques; syntactic proofs; type abstraction",
  subject =      "Software --- Software Engineering --- Software
                 Architectures (D.2.11): {\bf Information hiding};
                 Software --- Software Engineering --- Software
                 Architectures (D.2.11): {\bf Languages (e.g.,
                 description, interconnection, definition)}; Software
                 --- Programming Languages --- Formal Definitions and
                 Theory (D.3.1): {\bf Syntax}; Software --- Programming
                 Languages --- Formal Definitions and Theory (D.3.1):
                 {\bf Semantics}; Software --- Programming Languages ---
                 Language Constructs and Features (D.3.3): {\bf Abstract
                 data types}; Theory of Computation --- Logics and
                 Meanings of Programs --- Semantics of Programming
                 Languages (F.3.2): {\bf Operational semantics}; Theory
                 of Computation --- Logics and Meanings of Programs ---
                 Studies of Program Constructs (F.3.3): {\bf Type
                 structure}",
}

@Article{Ryder:2001:SIM,
  author =       "Barbara G. Ryder and William A. Landi and Philip A.
                 Stocks and Sean Zhang and Rita Altucher",
  title =        "A schema for interprocedural modification side-effect
                 analysis with pointer aliasing",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "2",
  pages =        "105--186",
  month =        mar,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:55 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "http://www.acm.org/pubs/citations/journals/toplas/2001-23-1/p105-ryder/",
  abstract =     "The first interprocedural modification side-effects
                 analysis for C (MOD $c$) that obtains better than
                 worst-case precision on programs with general-purpose
                 pointer usage is presented with empirical results. The
                 analysis consists of an algorithm schema corresponding
                 to a family of MOD $c$ algorithms with two independent
                 phases: one for determining pointer-induced aliases and
                 a subsequent one for propagating interprocedural side
                 effects. These MOD $c$ algorithms are parameterized by
                 the aliasing method used. The empirical results compare
                 the performance of two dissimilar MOD $c$ algorithms:
                 MOD $c$ ({\em FSAlias\/}) uses a flow-sensitive,
                 calling-context-sensitive interprocedural alias
                 analysis MOD $c$ ({\em Fs\/}) a flow-insensitive, alias
                 analysis which is much faster, but less accurate. These
                 two algorithms were profiled on 45 programs ranging in
                 size from 250 to 30,000 lines of C code, and the
                 results demonstrate dramatically the possible
                 cost-precision trade-offs. This {\em first
                 comparative\/} implementation of MOD $c$ analyses
                 offers insight into the differences between {\em
                 flow-/context-sensitive\/} and {\em
                 flow-/context-insensitive\/} analyses. The analysis
                 cost versus precision trade-offs in side-effect
                 information obtained are reported. The results show
                 surprisingly that the precision of flow-sensitive
                 side-effect analysis is not always prohibitive in cost,
                 and that the precision of flow-insensitive analysis is
                 substantially better than worst-case estimates and
                 seems sufficient for certain applications. On average
                 MOD $c$ ({\em FSAlias\/}) for procedures and calls is
                 in the range of 20% more precise than MOD $c$ ({\em
                 FIAlias\/}); however, the performance was found to be
                 at least an order of magnitude slower than MOD $c$
                 ({\em FIAlias\/}).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  subject =      "Software --- Programming Languages --- Processors
                 (D.3.4): {\bf Compilers}; Software --- Programming
                 Languages --- Processors (D.3.4): {\bf Optimization};
                 Theory of Computation --- Logics and Meanings of
                 Programs --- Semantics of Programming Languages
                 (F.3.2): {\bf Program analysis}",
}

@Article{Attie:2001:SCP,
  author =       "Paul C. Attie and E. Allen Emerson",
  title =        "Synthesis of concurrent programs for an atomic
                 read\slash write model of computation",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "2",
  pages =        "187--242",
  month =        mar,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:55 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Knoblock:2001:TES,
  author =       "Todd B. Knoblock and Jakob Rehof",
  title =        "Type elaboration and subtype completion for {Java}
                 bytecode",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "2",
  pages =        "243--272",
  month =        mar,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:55 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Alur:2001:MCH,
  author =       "Rajeev Alur and Mihalis Yannakakis",
  title =        "Model checking of hierarchical state machines",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "3",
  pages =        "273--303",
  month =        may,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:56 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Etalle:2001:TCP,
  author =       "Sandro Etalle and Maurizio Gabbrielli and Maria Chiara
                 Meo",
  title =        "Transformations of {CCP} programs",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "3",
  pages =        "304--395",
  month =        may,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:56 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Igarashi:2001:FJM,
  author =       "Atsushi Igarashi and Benjamin C. Pierce and Philip
                 Wadler",
  title =        "Featherweight {Java}: a minimal core calculus for
                 {Java} and {GJ}",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "3",
  pages =        "396--450",
  month =        may,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:56 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kim:2001:ERV,
  author =       "Ik-Soon Kim and Kwang-Moo Choe",
  title =        "Error repair with validation in {LR}-based parsing",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "4",
  pages =        "451--471",
  month =        jul,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:56 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gupta:2001:PEP,
  author =       "Gopal Gupta and Enrico Pontelli and Khayri A. M. Ali
                 and Mats Carlsson and Manuel V. Hermenegildo",
  title =        "Parallel execution of prolog programs: a survey",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "4",
  pages =        "472--602",
  month =        jul,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Feb 19 15:41:56 MST 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cooper:2001:OSR,
  author =       "Keith D. Cooper and L. Taylor Simpson and Christopher
                 A. Vick",
  title =        "Operator strength reduction",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "5",
  pages =        "603--625",
  month =        sep,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 9 14:09:24 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Paulson:2001:MTP,
  author =       "Lawrence C. Paulson",
  title =        "Mechanizing a theory of program composition for
                 {UNITY}",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "5",
  pages =        "626--656",
  month =        sep,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 9 14:09:24 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Appel:2001:IMR,
  author =       "Andrew W. Appel and David McAllester",
  title =        "An indexed model of recursive types for foundational
                 proof-carrying code",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "5",
  pages =        "657--683",
  month =        sep,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 9 14:09:24 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Grove:2001:FCG,
  author =       "David Grove and Craig Chambers",
  title =        "A framework for call graph construction algorithms",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "6",
  pages =        "685--746",
  month =        nov,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Maassen:2001:EJR,
  author =       "Jason Maassen and Rob Van Nieuwpoort and Ronald
                 Veldema and Henri Bal and Thilo Kielmann and Ceriel
                 Jacobs and Rutger Hofman",
  title =        "Efficient {Java RMI} for parallel programming",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "6",
  pages =        "747--775",
  month =        nov,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Zanden:2001:LLA,
  author =       "Bradley T. Vander Zanden and Richard Halterman and
                 Brad A. Myers and Rich McDaniel and Rob Miller and
                 Pedro Szekely and Dario A. Giuse and David Kosbie",
  title =        "Lessons learned about one-way, dataflow constraints in
                 the {Garnet} and {Amulet} graphical toolkits",
  journal =      j-TOPLAS,
  volume =       "23",
  number =       "6",
  pages =        "776--796",
  month =        nov,
  year =         "2001",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lee:2002:ADC,
  author =       "Peizong Lee and Zvi Meir Kedem",
  title =        "Automatic data and computation decomposition on
                 distributed memory parallel computers",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "1",
  pages =        "1--50",
  month =        jan,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Henzinger:2002:AGR,
  author =       "Thomas A. Henzinger and Shaz Qadeer and Sriram K.
                 Rajamani and Serdar Tasiran",
  title =        "An assume-guarantee rule for checking simulation",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "1",
  pages =        "51--64",
  month =        jan,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Paek:2002:EPA,
  author =       "Yunheung Paek and Jay Hoeflinger and David Padua",
  title =        "Efficient and precise array access analysis",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "1",
  pages =        "65--109",
  month =        jan,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:01 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fisher:2002:GE,
  author =       "Kathleen Fisher and Benjamin C. Pierce",
  title =        "Guest editorial",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "2",
  pages =        "111--111",
  month =        mar,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:02 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{League:2002:TPC,
  author =       "Christopher League and Zhong Shao and Valery
                 Trifonov",
  title =        "Type-preserving compilation of {Featherweight Java}",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "2",
  pages =        "112--152",
  month =        mar,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:02 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Drossopoulou:2002:MDO,
  author =       "Sophia Drossopoulou and Ferruccio Damiani and
                 Mariangiola Dezani-Ciancaglini and Paola Giannini",
  title =        "More dynamic object reclassification: {{\em
                 Fickle\/}$_\parallel$}",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "2",
  pages =        "153--191",
  month =        mar,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:02 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moore:2002:AC,
  author =       "J. Strother Moore and George Porter",
  title =        "The apprentice challenge",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "3",
  pages =        "193--216",
  month =        may,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:02 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sagiv:2002:PSA,
  author =       "Mooly Sagiv and Thomas Reps and Reinhard Wilhelm",
  title =        "Parametric shape analysis via $3$-valued logic",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "3",
  pages =        "217--298",
  month =        may,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 1 06:48:02 MDT 2002",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Unger:2002:HIL,
  author =       "Sebastian Unger and Frank Mueller",
  title =        "Handling irreducible loops: optimized node splitting
                 versus {DJ}-graphs",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "4",
  pages =        "299--333",
  month =        jul,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Brand:2002:CLD,
  author =       "M. G. J. Van Den Brand and J. Heering and P. Klint and
                 P. A. Olivier",
  title =        "Compiling language definitions: the {ASF+SDF}
                 compiler",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "4",
  pages =        "334--368",
  month =        jul,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:2002:ADC,
  author =       "Anonymous",
  title =        "Automatic derivation of compiler machine
                 descriptions",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "4",
  pages =        "369--408",
  month =        jul,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Jimenez:2002:RTN,
  author =       "Marta Jim{\'e}nez and Jos{\'e} M. Llaber{\'\i}a and
                 Agust{\'\i}n Fern{\'a}ndez",
  title =        "Register tiling in nonrectangular iteration spaces",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "4",
  pages =        "409--453",
  month =        jul,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Anonymous:2002:LDD,
  author =       "Anonymous",
  title =        "On loops, dominators, and dominance frontiers",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "5",
  pages =        "455--490",
  month =        sep,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Leino:2002:DAI,
  author =       "K. Rustan M. Leino and Greg Nelson",
  title =        "Data abstraction and information hiding",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "5",
  pages =        "491--553",
  month =        sep,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Charlesworth:2002:UAC,
  author =       "Arthur Charlesworth",
  title =        "The undecidability of associativity and commutativity
                 analysis",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "5",
  pages =        "554--565",
  month =        sep,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hennessy:2002:IFV,
  author =       "Matthew Hennessy and James Riely",
  title =        "Information flow vs. resource access in the
                 asynchronous pi-calculus",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "5",
  pages =        "566--591",
  month =        sep,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:45 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hirzel:2002:UTL,
  author =       "Martin Hirzel and Amer Diwan and Johannes Henkel",
  title =        "On the usefulness of type and liveness accuracy for
                 garbage collection and leak detection",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "6",
  pages =        "593--624",
  month =        nov,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tip:2002:PET,
  author =       "Frank Tip and Peter F. Sweeney and Chris Laffra and
                 Aldo Eisma and David Streeter",
  title =        "Practical extraction techniques for {Java}",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "6",
  pages =        "625--666",
  month =        nov,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Yang:2002:EEB,
  author =       "Minghui Yang and Gang-Ryung Uh and David B. Whalley",
  title =        "Efficient and effective branch reordering using
                 profile data",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "6",
  pages =        "667--697",
  month =        nov,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Corchuelo:2002:RSE,
  author =       "Rafael Corchuelo and Jos{\'e} A. P{\'e}rez and Antonio
                 Ruiz and Miguel Toro",
  title =        "Repairing syntax errors in {LR} parsers",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "6",
  pages =        "698--710",
  month =        nov,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Duggan:2002:TSL,
  author =       "Dominic Duggan",
  title =        "Type-Safe linking with recursive {DLLs} and shared
                 libraries",
  journal =      j-TOPLAS,
  volume =       "24",
  number =       "6",
  pages =        "711--804",
  month =        nov,
  year =         "2002",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Levi:2003:MSA,
  author =       "Francesca Levi and Davide Sangiorgi",
  title =        "Mobile safe ambients",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "1",
  pages =        "1--69",
  month =        jan,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rugina:2003:PAS,
  author =       "Radu Rugina and Martin C. Rinard",
  title =        "Pointer analysis for structured parallel programs",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "1",
  pages =        "70--116",
  month =        jan,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pottier:2003:IFI,
  author =       "Fran{\c{c}}ois Pottier and Vincent Simonet",
  title =        "Information flow inference for {ML}",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "1",
  pages =        "117--158",
  month =        jan,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Saha:2003:IAQ,
  author =       "Bratin Saha and Valery Trifonov and Zhong Shao",
  title =        "Intensional analysis of quantified types",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "2",
  pages =        "159--209",
  month =        mar,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ramsey:2003:TAB,
  author =       "Norman Ramsey and Cristina Cifuentes",
  title =        "A transformational approach to binary translation of
                 delayed branches",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "2",
  pages =        "210--224",
  month =        mar,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bruce:2003:PTS,
  author =       "Kim B. Bruce and Angela Schuett and Robert van Gent
                 and Adrian Fiech",
  title =        "{PolyTOIL}: {A} type-safe polymorphic object-oriented
                 language",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "2",
  pages =        "225--290",
  month =        mar,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:46 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rhiger:2003:FEL,
  author =       "Morten Rhiger",
  title =        "A foundation for embedded languages",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "3",
  pages =        "291--315",
  month =        may,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:47 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rinard:2003:ESB,
  author =       "Martin C. Rinard and Pedro C. Diniz",
  title =        "Eliminating synchronization bottlenecks using adaptive
                 replication",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "3",
  pages =        "316--359",
  month =        may,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:47 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fournet:2003:SIT,
  author =       "Cedric Fournet and Andrew D. Gordon",
  title =        "Stack inspection: {Theory} and variants",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "3",
  pages =        "360--399",
  month =        may,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Apr 9 18:34:47 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Damiani:2003:RIT,
  author =       "Ferruccio Damiani",
  title =        "Rank $2$ intersection types for local definitions and
                 conditional expressions",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "4",
  pages =        "401--451",
  month =        jul,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 07:03:33 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Schultz:2003:APS,
  author =       "Ulrik P. Schultz and Julia L. Lawall and Charles
                 Consel",
  title =        "Automatic program specialization for {Java}",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "4",
  pages =        "452--499",
  month =        jul,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 07:03:33 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kistler:2003:CPO,
  author =       "Thomas Kistler and Michael Franz",
  title =        "Continuous program optimization: {A} case study",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "4",
  pages =        "500--548",
  month =        jul,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 07:03:33 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Amadio:2003:RDP,
  author =       "Roberto M. Amadio and G{\'e}rard Boudol and C{\'e}dric
                 Lhoussaine",
  title =        "The receptive distributed {$\pi$}-calculus",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "5",
  pages =        "549--577",
  month =        sep,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Sep 26 19:13:26 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Spoto:2003:CAA,
  author =       "Fausto Spoto and Thomas Jensen",
  title =        "Class analyses as abstract interpretations of trace
                 semantics",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "5",
  pages =        "578--630",
  month =        sep,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Sep 26 19:13:26 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Jeffery:2003:GLS,
  author =       "Clinton L. Jeffery",
  title =        "Generating {LR} syntax error messages from examples",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "5",
  pages =        "631--640",
  month =        sep,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Sep 26 19:13:26 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ancona:2003:JDJ,
  author =       "Davide Ancona and Giovanni Lagorio and Elena Zucca",
  title =        "{Jam}---designing a {Java} extension with mixins",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "5",
  pages =        "641--712",
  month =        sep,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Sep 26 19:13:26 MDT 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Blanchet:2003:EAJ,
  author =       "Bruno Blanchet",
  title =        "Escape analysis for {Java$^{TM}$}: {Theory} and
                 practice",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "6",
  pages =        "713--775",
  month =        nov,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 28 11:56:31 MST 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Menon:2003:FSA,
  author =       "Vijay Menon and Keshav Pingali and Nikolay Mateev",
  title =        "Fractal symbolic analysis",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "6",
  pages =        "776--813",
  month =        nov,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 28 11:56:31 MST 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Christensen:2003:EJH,
  author =       "Aske Simon Christensen and Anders M{\o}ller and
                 Michael I. Schwartzbach",
  title =        "Extending {Java} for high-level {Web} service
                 construction",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "6",
  pages =        "814--875",
  month =        nov,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 28 11:56:31 MST 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Choi:2003:SAS,
  author =       "Jong-Deok Choi and Manish Gupta and Mauricio J.
                 Serrano and Vugranam C. Sreedhar and Samuel P.
                 Midkiff",
  title =        "Stack allocation and synchronization optimizations for
                 {Java} using escape analysis",
  journal =      j-TOPLAS,
  volume =       "25",
  number =       "6",
  pages =        "876--910",
  month =        nov,
  year =         "2003",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 28 11:56:31 MST 2003",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fernandez:2004:ICS,
  author =       "Antonio J. Fern{\'a}ndez and Patricia M. Hill",
  title =        "An interval constraint system for lattice domains",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "1--46",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gorlatch:2004:SRC,
  author =       "Sergei Gorlatch",
  title =        "Send-receive considered harmful: {Myths} and realities
                 of message passing",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "47--56",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bugliesi:2004:ACM,
  author =       "Michele Bugliesi and Giuseppe Castagna and Silvia
                 Crafa",
  title =        "Access control for mobile agents: {The} calculus of
                 boxed ambients",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "57--124",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Attie:2004:SFT,
  author =       "Paul C. Attie and Anish Arora and E. Allen Emerson",
  title =        "Synthesis of fault-tolerant concurrent programs",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "125--185",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wu:2004:ETC,
  author =       "Pei-Chi Wu",
  title =        "On exponential-time completeness of the circularity
                 problem for attribute grammars",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "186--190",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Christensen:2004:OPE,
  author =       "Niels H. Christensen and Robert Gl{\"u}ck",
  title =        "Offline partial evaluation can be as accurate as
                 online partial evaluation",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "1",
  pages =        "191--220",
  month =        jan,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sun Jan 11 10:26:05 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Chen:2004:LGS,
  author =       "Yifeng Chen and J. W. Sanders",
  title =        "Logic of global synchrony",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "2",
  pages =        "221--262",
  month =        mar,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Vera:2004:FAF,
  author =       "Xavier Vera and Nerina Bermudo and Josep Llosa and
                 Antonio Gonz{\'a}lez",
  title =        "A fast and accurate framework to analyze and optimize
                 cache memory behavior",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "2",
  pages =        "263--300",
  month =        mar,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cortes:2004:HLA,
  author =       "Corinna Cortes and Kathleen Fisher and Daryl Pregibon
                 and Anne Rogers and Frederick Smith",
  title =        "Hancock: {A} language for analyzing transactional data
                 streams",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "2",
  pages =        "301--338",
  month =        mar,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Alur:2004:MRH,
  author =       "Rajeev Alur and Radu Grosu",
  title =        "Modular refinement of hierarchic reactive machines",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "2",
  pages =        "339--369",
  month =        mar,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lieberherr:2004:TOS,
  author =       "Karl Lieberherr and Boaz Patt-Shamir and Doug
                 Orleans",
  title =        "Traversals of object structures: {Specification} and
                 efficient implementation",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "2",
  pages =        "370--412",
  month =        mar,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Leuschel:2004:FIP,
  author =       "Michael Leuschel",
  title =        "A framework for the integration of partial evaluation
                 and abstract interpretation of logic programs",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "3",
  pages =        "413--463",
  month =        may,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Roychoudhury:2004:UFT,
  author =       "Abhik Roychoudhury and K. Narayan Kumar and C. R.
                 Ramakrishnan and I. V. Ramakrishnan",
  title =        "An unfold\slash fold transformation framework for
                 definite logic programs",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "3",
  pages =        "464--509",
  month =        may,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Glesner:2004:NSS,
  author =       "Sabine Glesner and Wolf Zimmermann",
  title =        "Natural semantics as a static program analysis
                 framework",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "3",
  pages =        "510--577",
  month =        may,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Keen:2004:JFD,
  author =       "Aaron W. Keen and Tingjian Ge and Justin T. Maris and
                 Ronald A. Olsson",
  title =        "{JR}: {Flexible} distributed programming in an
                 extended {Java}",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "3",
  pages =        "578--608",
  month =        may,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:29 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Mirani:2004:FCM,
  author =       "Rajiv Mirani and Paul Hudak",
  title =        "First-class monadic schedules",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "4",
  pages =        "609--651",
  month =        jul,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Helsen:2004:PSM,
  author =       "Simon Helsen and Peter Thiemann",
  title =        "Polymorphic specialization for {ML}",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "4",
  pages =        "652--701",
  month =        jul,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sistla:2004:SRS,
  author =       "A. Prasad Sistla and Patrice Godefroid",
  title =        "Symmetry and reduced symmetry in model checking",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "4",
  pages =        "702--734",
  month =        jul,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Park:2004:ORC,
  author =       "Jinpyo Park and Soo-Mook Moon",
  title =        "Optimistic register coalescing",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "4",
  pages =        "735--765",
  month =        jul,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Odersky:2004:GE,
  author =       "Martin Odersky and Benjamin C. Pierce",
  title =        "Guest editorial",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "5",
  pages =        "767--768",
  month =        sep,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Benton:2004:MCA,
  author =       "Nick Benton and Luca Cardelli and C{\'e}dric Fournet",
  title =        "Modern concurrency abstractions for {C\#}",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "5",
  pages =        "769--804",
  month =        sep,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Stone:2004:EOL,
  author =       "Christopher A. Stone",
  title =        "Extensible objects without labels",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "5",
  pages =        "805--835",
  month =        sep,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Millstein:2004:MTH,
  author =       "Todd Millstein and Colin Bleckner and Craig Chambers",
  title =        "Modular typechecking for hierarchically extensible
                 datatypes and functions",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "5",
  pages =        "836--889",
  month =        sep,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wand:2004:SAD,
  author =       "Mitchell Wand and Gregor Kiczales and Christopher
                 Dutchyn",
  title =        "A semantics for advice and dynamic join points in
                 aspect-oriented programming",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "5",
  pages =        "890--910",
  month =        sep,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Nov 4 08:07:30 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Jay:2004:PC,
  author =       "C. Barry Jay",
  title =        "The pattern calculus",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "6",
  pages =        "911--937",
  month =        nov,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Nov 22 07:52:03 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Thammanur:2004:FME,
  author =       "Sathyanarayanan Thammanur and Santosh Pande",
  title =        "A fast, memory-efficient register allocation framework
                 for embedded systems",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "6",
  pages =        "938--974",
  month =        nov,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Nov 22 07:52:03 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Li:2004:ATI,
  author =       "Zhiyuan Li and Yonghong Song",
  title =        "Automatic tiling of iterative stencil loops",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "6",
  pages =        "975--1028",
  month =        nov,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Nov 22 07:52:03 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Clements:2004:TRM,
  author =       "John Clements and Matthias Felleisen",
  title =        "A tail-recursive machine with stack inspection",
  journal =      j-TOPLAS,
  volume =       "26",
  number =       "6",
  pages =        "1029--1052",
  month =        nov,
  year =         "2004",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Nov 22 07:52:03 MST 2004",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Shao:2005:TSC,
  author =       "Zhong Shao and Valery Trifonov and Bratin Saha and
                 Nikolaos Papaspyrou",
  title =        "A type system for certified binaries",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "1",
  pages =        "1--45",
  month =        jan,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Mar 24 15:57:47 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hosoya:2005:RET,
  author =       "Haruo Hosoya and J{\'e}r{\^o}me Vouillon and Benjamin
                 C. Pierce",
  title =        "Regular expression types for {XML}",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "1",
  pages =        "46--90",
  month =        jan,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Mar 24 15:57:47 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Liu:2005:OAA,
  author =       "Yanhong A. Liu and Scott D. Stoller and Ning Li and
                 Tom Rothamel",
  title =        "Optimizing aggregate array computations in loops",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "1",
  pages =        "91--125",
  month =        jan,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Mar 24 15:57:47 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Palsberg:2005:ADC,
  author =       "Jens Palsberg and Tian Zhao and Trevor Jim",
  title =        "Automatic discovery of covariant read-only fields",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "1",
  pages =        "126--162",
  month =        jan,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Mar 24 15:57:47 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Chitil:2005:PPL,
  author =       "Olaf Chitil",
  title =        "Pretty printing with lazy dequeues",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "1",
  pages =        "163--184",
  month =        jan,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Mar 24 15:57:47 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rugina:2005:SBA,
  author =       "Radu Rugina and Martin C. Rinard",
  title =        "Symbolic bounds analysis of pointers, array indices,
                 and accessed memory regions",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "2",
  pages =        "185--235",
  month =        mar,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 12 07:09:25 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gavanelli:2005:DIK,
  author =       "Marco Gavanelli and Evelina Lamma and Paola Mello and
                 Michela Milano",
  title =        "Dealing with incomplete knowledge on {CLP({\em FD\/})}
                 variable domains",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "2",
  pages =        "236--263",
  month =        mar,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 12 07:09:25 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Igarashi:2005:RUA,
  author =       "Atsushi Igarashi and Naoki Kobayashi",
  title =        "Resource usage analysis",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "2",
  pages =        "264--313",
  month =        mar,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 12 07:09:25 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ball:2005:PPA,
  author =       "Thomas Ball and Todd Millstein and Sriram K.
                 Rajamani",
  title =        "Polymorphic predicate abstraction",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "2",
  pages =        "314--343",
  month =        mar,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 12 07:09:25 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pottier:2005:SAS,
  author =       "Fran{\c{c}}ois Pottier and Christian Skalka and Scott
                 Smith",
  title =        "A systematic approach to static access control",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "2",
  pages =        "344--382",
  month =        mar,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Apr 12 07:09:25 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Buchsbaum:2005:CNS,
  author =       "Adam L. Buchsbaum and Haim Kaplan and Anne Rogers and
                 Jeffery R. Westbrook",
  title =        "Corrigendum: ``{A new, simpler linear-time dominators
                 algorithm}''",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "383--387",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Buchsbaum:1998:NSL}.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Schulte:2005:WDB,
  author =       "Christian Schulte and Peter J. Stuckey",
  title =        "When do bounds and domain propagation lead to the same
                 search space?",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "388--425",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Das:2005:PFI,
  author =       "Dibyendu Das and U. Ramakrishna",
  title =        "A practical and fast iterative algorithm for
                 {$\phi$}-function computation using {DJ} graphs",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "426--440",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moreau:2005:RAP,
  author =       "Luc Moreau and Christian Queinnec",
  title =        "Resource aware programming",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "441--476",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Necula:2005:CTS,
  author =       "George C. Necula and Jeremy Condit and Matthew Harren
                 and Scott McPeak and Westley Weimer",
  title =        "{CCured}: type-safe retrofitting of legacy software",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "477--526",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Nguyen:2005:EEA,
  author =       "Thi Viet Nga Nguyen and Fran{\c{c}}ois Irigoin",
  title =        "Efficient and effective array bound checking",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "527--570",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hailperin:2005:CCC,
  author =       "Max Hailperin",
  title =        "Comparing conservative coalescing criteria",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "3",
  pages =        "571--582",
  month =        may,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 7 12:37:29 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Back:2005:KJR,
  author =       "Godmar Back and Wilson C. Hsieh",
  title =        "The {KaffeOS Java} runtime system",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "4",
  pages =        "583--630",
  month =        jul,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 15 14:26:27 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Zhang:2005:CPT,
  author =       "Xiangyu Zhang and Rajiv Gupta and Youtao Zhang",
  title =        "Cost and precision tradeoffs of dynamic data slicing
                 algorithms",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "4",
  pages =        "631--661",
  month =        jul,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 15 14:26:27 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hall:2005:IPA,
  author =       "Mary W. Hall and Saman P. Amarasinghe and Brian R.
                 Murphy and Shih-Wei Liao and Monica S. Lam",
  title =        "Interprocedural parallelization analysis in {SUIF}",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "4",
  pages =        "662--731",
  month =        jul,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 15 14:26:27 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Suganuma:2005:DED,
  author =       "Toshio Suganuma and Toshiaki Yasue and Motohiro
                 Kawahito and Hideaki Komatsu and Toshio Nakatani",
  title =        "Design and evaluation of dynamic optimizations for a
                 {Java} just-in-time compiler",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "4",
  pages =        "732--785",
  month =        jul,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 15 14:26:27 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Alur:2005:ARS,
  author =       "Rajeev Alur and Michael Benedikt and Kousha Etessami
                 and Patrice Godefroid and Thomas Reps and Mihalis
                 Yannakakis",
  title =        "Analysis of recursive state machines",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "4",
  pages =        "786--818",
  month =        jul,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Sep 15 14:26:27 MDT 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gil:2005:EST,
  author =       "Joseph (Yossi) Gil and Yoav Zibin",
  title =        "Efficient subtyping tests with {PQ}-encoding",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "5",
  pages =        "819--856",
  month =        sep,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Nov 18 08:33:32 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hirschowitz:2005:MMC,
  author =       "Tom Hirschowitz and Xavier Leroy",
  title =        "Mixin modules in a call-by-value setting",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "5",
  pages =        "857--881",
  month =        sep,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Nov 18 08:33:32 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{DeSutter:2005:LTB,
  author =       "Bjorn {De Sutter} and Bruno {De Bus} and Koen {De
                 Bosschere}",
  title =        "Link-time binary rewriting techniques for program
                 compaction",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "5",
  pages =        "882--945",
  month =        sep,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Nov 18 08:33:32 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Vera:2005:ACM,
  author =       "Xavier Vera and Jaume Abella and Josep Llosa and
                 Antonio Gonz{\'a}lez",
  title =        "An accurate cost model for guiding data locality
                 transformations",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "5",
  pages =        "946--987",
  month =        sep,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Nov 18 08:33:32 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Boute:2005:FDL,
  author =       "Raymond Boute",
  title =        "Functional declarative language design and predicate
                 calculus: a practical approach",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "5",
  pages =        "988--1047",
  month =        sep,
  year =         "2005",
  CODEN =        "ATPSDT",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Nov 18 08:33:32 MST 2005",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hicks:2005:DSU,
  author =       "Michael Hicks and Scott Nettles",
  title =        "Dynamic software updating",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1049--1096",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108971",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Many important applications must run continuously and
                 without interruption, and yet also must be changed to
                 fix bugs or upgrade functionality. No prior
                 general-purpose methodology for dynamic updating
                 achieves a practical balance between flexibility,
                 robustness, low overhead, ease of use, and low cost. We
                 present an approach for C-like languages that provides
                 type-safe dynamic updating of native code in an
                 extremely flexible manner---code, data, and types may
                 be updated, at programmer-determined times---and
                 permits the use of automated tools to aid the
                 programmer in the updating process. Our system is based
                 on dynamic patches that contain both the updated code
                 and the code needed to transition from the old version
                 to the new. A novel aspect of our patches is that they
                 consist of verifiable native code (e.g. Proof-Carrying
                 Code or Typed Assembly Language), which is native code
                 accompanied by annotations that allow online
                 verification of the code's safety. We discuss how
                 patches are generated mostly automatically, how they
                 are applied using dynamic-linking technology, and how
                 code is compiled to make it updateable. To concretely
                 illustrate our system, we have implemented a
                 dynamically updateable web server, FlashEd. We discuss
                 our experience building and maintaining FlashEd, and
                 generalize to present observations about updateable
                 software development. Performance experiments show that
                 for FlashEd, the overhead due to updating is low:
                 typically less than 1 percent.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Barabash:2005:PIM,
  author =       "Katherine Barabash and Ori Ben-Yitzhak and Irit Goft
                 and Elliot K. Kolodner and Victor Leikehman and Yoav
                 Ossia and Avi Owshanko and Erez Petrank",
  title =        "A parallel, incremental, mostly concurrent garbage
                 collector for servers",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1097--1146",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108972",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Multithreaded applications with multigigabyte heaps
                 running on modern servers provide new challenges for
                 garbage collection (GC). The challenges for
                 ``server-oriented'' GC include: ensuring short pause
                 times on a multigigabyte heap while minimizing
                 throughput penalty, good scaling on multiprocessor
                 hardware, and keeping the number of expensive
                 multicycle fence instructions required by weak ordering
                 to a minimum. We designed and implemented a collector
                 facing these demands building on the mostly concurrent
                 garbage collector proposed by Boehm et al. [1991]. Our
                 collector incorporates new ideas into the original
                 collector. We make it parallel and incremental; we
                 employ concurrent low-priority background GC threads to
                 take advantage of processor idle time; we propose novel
                 algorithmic improvements to the basic mostly concurrent
                 algorithm improving its efficiency and shortening its
                 pause times; and finally, we use advanced techniques,
                 such as a low-overhead work packet mechanism to enable
                 full parallelism among the incremental and concurrent
                 collecting threads and ensure load balancing. We
                 compared the new collector to the mature,
                 well-optimized, parallel, stop-the-world mark-sweep
                 collector already in the IBM JVM. When allowed to run
                 aggressively, using 72\% of the CPU utilization during
                 a short concurrent phase, our collector prototype
                 reduces the maximum pause time from 161 ms to 46 ms
                 while only losing 11.5\% throughput when running the
                 SPECjbb2000 benchmark on a 600-MB heap on an 8-way
                 PowerPC 1.1-GHz processors. When the collector is
                 limited to a nonintrusive operation using only 29\% of
                 the CPU utilization, the maximum pause time obtained is
                 79 ms and the loss in throughput is 15.4\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Glenstrup:2005:TAS,
  author =       "Arne John Glenstrup and Neil D. Jones",
  title =        "Termination analysis and specialization-point
                 insertion in offline partial evaluation",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1147--1215",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108973",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Recent research suggests that the goal of fully
                 automatic and reliable program generation for a broad
                 range of applications is coming nearer to feasibility.
                 However, several interesting and challenging problems
                 remain to be solved before it becomes a reality.
                 Solving them is also necessary, if we hope ever to
                 elevate software engineering from its current state (a
                 highly developed handiwork) into a successful branch of
                 engineering, capable of solving a wide range of new
                 problems by systematic, well-automated and well-founded
                 methods. A key problem in all program generation is
                 termination of the generation process. This article
                 focuses on off-line partial evaluation and describes
                 recent progress towards automatically solving the
                 termination problem, first for individual programs, and
                 then for specializers and ``generating extensions,''
                 the program generators that most offline partial
                 evaluators produce. The technique is based on
                 size-change graphs that approximate the changes in
                 parameter sizes at function calls. We formulate a
                 criterion, bounded anchoring, for detecting parameters
                 known to be bounded during specialization: a bounded
                 parameter can act as an anchor for other parameters.
                 Specialization points necessary for termination are
                 computed by adding a parameter that tracks call depth,
                 and then selecting a specialization point in every call
                 loop where it is unanchored. By generalizing all
                 unbounded parameters, we compute a binding-time
                 division which together with the set of specialization
                 points guarantees termination. Contributions of this
                 article include a proof, based on the operational
                 semantics of partial evaluation with memoization, that
                 the analysis guarantees termination; and an in-depth
                 description of safety of the increasing size
                 approximation operator required for termination
                 analysis in partial evaluation. Initial experiments
                 with a prototype shows that the analysis overall yields
                 binding-time divisions that can achieve a high degree
                 of specialization, while still guaranteeing
                 termination. The article ends with a list of
                 challenging problems whose solution would bring the
                 community closer to the goal of broad-spectrum, fully
                 automatic and reliable program generation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Stuckey:2005:TO,
  author =       "Peter J. Stuckey and Martin Sulzmann",
  title =        "A theory of overloading",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1216--1269",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108974",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a novel approach to allow for overloading
                 of identifiers in the spirit of type classes. Our
                 approach relies on a combination of the HM(X) type
                 system framework with Constraint Handling Rules (CHRs).
                 CHRs are a declarative language for writing incremental
                 constraint solvers, that provide our scheme with a form
                 of programmable type language. CHRs allow us to
                 precisely describe the relationships among overloaded
                 identifiers. Under some sufficient conditions on the
                 CHRs we achieve decidable type inference and the
                 semantic meaning of programs is unambiguous. Our
                 approach provides a common formal basis for many type
                 class extensions such as multiparameter type classes
                 and functional dependencies.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Buhr:2005:ISM,
  author =       "Peter A. Buhr and Ashif S. Harji",
  title =        "Implicit-signal monitors",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1270--1343",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108975",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "An implicit (automatic) signal monitor uses a
                 waituntil predicate statement to construct
                 synchronization, as opposed to an explicit-signal
                 monitor using condition variables and signal/wait
                 statements for synchronization. Of the two
                 synchronization approaches, the implicit-signal monitor
                 is often easier to use and prove correct, but has an
                 inherently high execution cost. Hence, its primary use
                 is for prototyping concurrent systems using monitors,
                 where speed and accuracy of software development
                 override execution performance. After a concurrent
                 system is working, any implicit-signal monitor that is
                 a performance bottleneck can be converted to an
                 explicit-signal monitor. Unfortunately, many
                 monitor-based concurrency systems provide only
                 explicit-signal monitors, precluding the design
                 benefits of implicit-signal monitors. This article
                 presents a historical look at the development of the
                 implicit-signal monitor in relation to its counterpart
                 the explicit-signal monitor. An analysis of the
                 different kinds of implicit-signal monitors shows the
                 effects certain design decisions have on the problems
                 that can be solved and the performance of the
                 solutions. Finally, an extensive discussion is
                 presented on simulating an implicit-signal monitor via
                 different explicit-signal monitors. These simulations
                 are reasonably complex, depending on the kind of
                 explicit-signal monitor available for the simulation
                 and the desired semantics required for the
                 implicit-signal monitor. Interestingly, the complexity
                 of the simulations also illustrates certain
                 deficiencies with explicit-signal monitors, which are
                 discussed in detail. Performance comparisons are made
                 among the different simulations with monitors from the
                 concurrent systems PThreads, Java, and $\mu$C++.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moreau:2005:BDR,
  author =       "Luc Moreau and Peter Dickman and Richard Jones",
  title =        "{Birrell}'s distributed reference listing revisited",
  journal =      j-TOPLAS,
  volume =       "27",
  number =       "6",
  pages =        "1344--1395",
  month =        nov,
  year =         "2005",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1108970.1108976",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 11 05:23:15 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The Java RMI collector is arguably the most widely
                 used distributed garbage collector. Its distributed
                 reference listing algorithm was introduced by Birrell
                 et al. in the context of Network Objects, where the
                 description was informal and heavily biased toward
                 implementation. In this article, we formalize this
                 algorithm in an implementation-independent manner,
                 which allows us to clarify weaknesses of the initial
                 presentation. In particular, we discover cases critical
                 to the correctness of the algorithm that were not
                 accounted for by Birrell. We use our formalization to
                 derive an invariant-based proof of correctness of the
                 algorithm that avoids notoriously difficult temporal
                 reasoning. Furthermore, we offer a novel graphical
                 representation of the state transition diagram, which
                 we use to provide intuitive explanations of the
                 algorithm and to investigate its tolerance to faults in
                 a systematic manner. Finally, we examine how the
                 algorithm may be optimized, either by placing
                 constraints on message channels or by tightening the
                 coupling between the application program and
                 distributed garbage collector.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Levanoni:2006:FRC,
  author =       "Yossi Levanoni and Erez Petrank",
  title =        "An on-the-fly reference-counting garbage collector for
                 {Java}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "1",
  pages =        "1--69",
  month =        jan,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1111596.1111597",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 24 05:55:31 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Reference-counting is traditionally considered
                 unsuitable for multiprocessor systems. According to
                 conventional wisdom, the update of reference slots and
                 reference-counts requires atomic or synchronized
                 operations. In this work we demonstrate this is not the
                 case by presenting a novel reference-counting algorithm
                 suitable for a multiprocessor system that does not
                 require any synchronized operation in its write barrier
                 (not even a compare-and-swap type of synchronization).
                 A second novelty of this algorithm is that it allows
                 eliminating a large fraction of the reference count
                 updates, thus, drastically reducing the
                 reference-counting traditional overhead. This article
                 includes a full proof of the algorithm showing that it
                 is safe (does not reclaim live objects) and live
                 (eventually reclaims all unreachable objects).\par

                 We have implemented our algorithm on Sun Microsystems'
                 Java Virtual Machine (JVM) 1.2.2 and ran it on a
                 four-way IBM Netfinity 8500R server with 550-MHz Intel
                 Pentium III Xeon and 2 GB of physical memory. Our
                 results show that the algorithm has an extremely low
                 latency and throughput that is comparable to the
                 stop-the-world mark and sweep algorithm used in the
                 original JVM",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ogasawara:2006:EED,
  author =       "Takeshi Ogasawara and Hideaki Komatsu and Toshio
                 Nakatani",
  title =        "{EDO}: {Exception-Directed Optimization} in {Java}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "1",
  pages =        "70--105",
  month =        jan,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1111596.1111598",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 24 05:55:31 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Optimizing exception handling is critical for programs
                 that frequently throw exceptions. We observed that
                 there are many such exception-intensive programs
                 written in Java. There are two commonly used exception
                 handling techniques, stack unwinding and stack cutting.
                 Stack unwinding optimizes the normal path by leaving
                 the exception handling path unoptimized, while stack
                 cutting optimizes the exception handling path by adding
                 extra work to the normal path. However, there has been
                 no single exception handling technique to optimize the
                 exception handling path without incurring any overhead
                 to the normal path.We propose a new technique called
                 {\em Exception-Directed Optimization\/} (EDO) that
                 optimizes exception-intensive programs without slowing
                 down exception-minimal programs. It is a
                 feedback-directed dynamic optimization consisting of
                 three steps: exception path profiling, exception path
                 inlining, and throw elimination. Exception path
                 profiling attempts to detect hot exception paths.
                 Exception path inlining embeds every hot exception path
                 into the corresponding catching method. Throw
                 elimination replaces a throw with a branch to the
                 corresponding handler. We implemented EDO in IBM's
                 production Just-in-Time compiler and made several
                 experiments. In summary, it improved the performance of
                 exception-intensive programs by up to 18.3\% without
                 decreasing the performance of exception-minimal
                 programs for SPECjvm98. We also found an opportunity
                 for performance improvement using EDO in the startup of
                 a Java application server.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kawahito:2006:ESE,
  author =       "Motohiro Kawahito and Hideaki Komatsu and Toshio
                 Nakatani",
  title =        "Effective sign extension elimination for {Java}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "1",
  pages =        "106--133",
  month =        jan,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1111596.1111599",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 24 05:55:31 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Computer designs are shifting from 32-bit
                 architectures to 64-bit architectures, while most of
                 the programs available today are still designed for
                 32-bit architectures. Java, for example, specifies the
                 frequently used ``int'' as a 32-bit signed integer. If
                 such Java programs are executed on a 64-bit
                 architecture, many 32-bit signed integers must be
                 sign-extended to 64-bit signed integers for correct
                 operations. This causes serious performance overhead.
                 In this article, we present a fast and effective
                 algorithm for eliminating sign extensions. We
                 implemented this algorithm in the IBM Java Just-in-Time
                 (JIT) compiler for IA-64. Our experimental results show
                 that our algorithm effectively eliminates the majority
                 of sign extensions. They also show that it improves
                 performance by 6.9\% for jBYTEmark and 3.3\% for
                 SPECjvm98 over the previously known best algorithm,
                 while it increases JIT compilation time by only
                 0.11\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Suganuma:2006:RBC,
  author =       "Toshio Suganuma and Toshiaki Yasue and Toshio
                 Nakatani",
  title =        "A region-based compilation technique for dynamic
                 compilers",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "1",
  pages =        "134--174",
  month =        jan,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1111596.1111600",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 24 05:55:31 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Method inlining and data flow analysis are two major
                 optimization components for effective program
                 transformations, but they often suffer from the
                 existence of rarely or never executed code contained in
                 the target method. One major problem lies in the
                 assumption that the compilation unit is partitioned at
                 method boundaries. This article describes the design
                 and implementation of a region-based compilation
                 technique in our dynamic optimization framework, in
                 which the compiled regions are selected as code
                 portions without rarely executed code. The key parts of
                 this technique are the region selection, partial
                 inlining, and region exit handling. For region
                 selection, we employ both static heuristics and dynamic
                 profiles to identify and eliminate rare sections of
                 code. The region selection process and method inlining
                 decisions are interwoven, so that method inlining
                 exposes other targets for region selection, while the
                 region selection in the inline target conserves the
                 inlining budget, allowing more method inlining to be
                 performed. The inlining process can be performed for
                 parts of a method, not just for the entire body of the
                 method. When the program attempts to exit from a region
                 boundary, we trigger recompilation and then use
                 on-stack replacement to continue the execution from the
                 corresponding entry point in the recompiled code. We
                 have implemented these techniques in our Java JIT
                 compiler, and conducted a comprehensive evaluation. The
                 experimental results show that our region-based
                 compilation approach achieves approximately 4\%
                 performance improvement on average, while reducing the
                 compilation overhead by 10\% to 30\%, in comparison to
                 the traditional method-based compilation techniques.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hamlen:2006:CCE,
  author =       "Kevin W. Hamlen and Greg Morrisett and Fred B.
                 Schneider",
  title =        "Computability classes for enforcement mechanisms",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "1",
  pages =        "175--205",
  month =        jan,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1111596.1111601",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 24 05:55:31 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A precise characterization of those security policies
                 enforceable by program rewriting is given. This also
                 exposes and rectifies problems in prior work, yielding
                 a better characterization of those security policies
                 enforceable by execution monitors as well as a taxonomy
                 of enforceable security policies. Some but not all
                 classes can be identified with known classes from
                 computational complexity theory.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Abadi:2006:TSL,
  author =       "Martin Abadi and Cormac Flanagan and Stephen N.
                 Freund",
  title =        "Types for safe locking: {Static} race detection for
                 {Java}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "2",
  pages =        "207--255",
  month =        mar,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1119479.1119480",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Mar 10 18:46:58 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article presents a static race-detection analysis
                 for multithreaded shared-memory programs, focusing on
                 the Java programming language. The analysis is based on
                 a type system that captures many common synchronization
                 patterns. It supports classes with internal
                 synchronization, classes that require client-side
                 synchronization, and thread-local classes. In order to
                 demonstrate the effectiveness of the type system, we
                 have implemented it in a checker and applied it to over
                 40,000 lines of hand-annotated Java code. We found a
                 number of race conditions in the standard Java
                 libraries and other test programs. The checker required
                 fewer than 20 additional type annotations per 1,000
                 lines of code. This article also describes two
                 improvements that facilitate checking much larger
                 programs: an algorithm for annotation inference and a
                 user interface that clarifies warnings generated by the
                 checker. These extensions have enabled us to use the
                 checker for identifying race conditions in large-scale
                 software systems with up to 500,000 lines of code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Payet:2006:NIL,
  author =       "Etienne Payet and Fred Mesnard",
  title =        "Nontermination inference of logic programs",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "2",
  pages =        "256--289",
  month =        mar,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1119479.1119481",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Mar 10 18:46:58 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a static analysis technique for
                 nontermination inference of logic programs. Our
                 framework relies on an extension of the subsumption
                 test, where some specific argument positions can be
                 instantiated while others are generalized. We give
                 syntactic criteria to statically identify such argument
                 positions from the text of a program. Atomic left
                 looping queries are generated bottom-up from selected
                 subsets of the binary unfoldings of the program of
                 interest. We propose a set of correct algorithms for
                 automating the approach. Then, nontermination inference
                 is tailored to attempt proofs of optimality of left
                 termination conditions computed by a termination
                 inference tool. An experimental evaluation is reported
                 and the analyzers can be tried online at
                 \path=http://www.univ-reunion.fr/~gcc=. When
                 termination and nontermination analysis produce
                 complementary results for a logic procedure, then with
                 respect to the leftmost selection rule and the language
                 used to describe sets of atomic queries, each analysis
                 is optimal and together, they induce a characterization
                 of the operational behavior of the logic procedure.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Merro:2006:BBS,
  author =       "Massimo Merro and Matthew Hennessy",
  title =        "A bisimulation-based semantic theory of {Safe
                 Ambients}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "2",
  pages =        "290--330",
  month =        mar,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1119479.1119482",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Mar 10 18:46:58 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We develop a semantics theory for SAP, a variant of
                 Levi and Sangiorgi's Safe Ambients, SA. The dynamics of
                 SA relies upon capabilities (and co-capabilities)
                 exercised by mobile agents, called ambients, to
                 interact with each other. These capabilities contain
                 references, the names of ambients with which they wish
                 to interact. In SAP we generalize the notion of
                 capability: in order to interact with an ambient $n$,
                 an ambient $m$ must exercise a capability indicating
                 both $n$ and a password $h$ to access $n$; the
                 interaction between $n$ and $m$ takes place only if $n$
                 is willing to perform a corresponding co-capability
                 with the same password $h$. The name $h$ can also be
                 looked upon as a port to access ambient $n$ via port
                 $h$. In SAP, by managing passwords/ports, for example
                 generating new ones and distributing them selectively,
                 an ambient may now program who may migrate into its
                 computation space, and when. Moreover in SAP, an
                 ambient may provide different services/resources
                 depending on the port accessed by the incoming clients.
                 Then we give an lts-based operational semantics for SAP
                 and a labelled bisimulation equivalence, which is
                 proved to coincide with reduction barbed congruence. We
                 use our notion of bisimulation to prove a set of
                 algebraic laws that are subsequently exploited to prove
                 more significant examples.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ducasse:2006:TMF,
  author =       "St{\'e}phane Ducasse and Oscar Nierstrasz and
                 Nathanael Sch{\"a}rli and Roel Wuyts and Andrew P.
                 Black",
  title =        "Traits: {A} mechanism for fine-grained reuse",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "2",
  pages =        "331--388",
  month =        mar,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1119479.1119483",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Mar 10 18:46:58 MST 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Inheritance is well-known and accepted as a mechanism
                 for reuse in object-oriented languages. Unfortunately,
                 due to the coarse granularity of inheritance, it may be
                 difficult to decompose an application into an optimal
                 class hierarchy that maximizes software reuse. Existing
                 schemes based on single inheritance, multiple
                 inheritance, or mixins, all pose numerous problems for
                 reuse. To overcome these problems we propose traits,
                 pure units of reuse consisting only of methods. We
                 develop a formal model of traits that establishes how
                 traits can be composed, either to form other traits, or
                 to form classes. We also outline an experimental
                 validation in which we apply traits to refactor a
                 nontrivial application into composable units.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Vansummeren:2006:TIU,
  author =       "Stijn Vansummeren",
  title =        "Type inference for unique pattern matching",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "3",
  pages =        "389--428",
  month =        may,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1133651.1133652",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 30 16:33:23 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Regular expression patterns provide a natural,
                 declarative way to express constraints on
                 semistructured data and to extract relevant information
                 from it. Indeed, it is a core feature of the
                 programming language Perl, surfaces in various UNIX
                 tools such as sed and awk, and has recently been
                 proposed in the context of the XML programming language
                 XDuce. Since regular expressions can be ambiguous in
                 general, different disambiguation policies have been
                 proposed to get a unique matching strategy. We formally
                 define the matching semantics under both (1) the POSIX,
                 and (2) the first and longest match disambiguation
                 strategies. We show that the generally accepted method
                 of defining the longest match in terms of the first
                 match and recursion does not conform to the natural
                 notion of longest match. We continue by solving the
                 type inference problem for both disambiguation
                 strategies, which consists of calculating the set of
                 all subparts of input values a subexpression can match
                 under the given policy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Grossman:2006:QTI,
  author =       "Dan Grossman",
  title =        "Quantified types in an imperative language",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "3",
  pages =        "429--475",
  month =        may,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1133651.1133653",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 30 16:33:23 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We describe universal types, existential types, and
                 type constructors in Cyclone, a strongly typed C-like
                 language. We show how the language naturally supports
                 first-class polymorphism and polymorphic recursion
                 while requiring an acceptable amount of explicit type
                 information. More importantly, we consider the
                 soundness of type variables in the presence of C-style
                 mutation and the address-of operator. For polymorphic
                 references, we describe a solution more natural for the
                 C level than the ML-style ``value restriction.'' For
                 existential types, we discover and subsequently avoid a
                 subtle unsoundness issue resulting from the address-of
                 operator. We develop a formal abstract machine and
                 type-safety proof that capture the essence of type
                 variables at the C level.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hertz:2006:GOL,
  author =       "Matthew Hertz and Stephen M. Blackburn and J. Eliot B.
                 Moss and Kathryn S. McKinley and Darko Stefanovi{\'c}",
  title =        "Generating object lifetime traces with {Merlin}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "3",
  pages =        "476--516",
  month =        may,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1133651.1133654",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 30 16:33:23 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Programmers are writing a rapidly growing number of
                 programs in object-oriented languages, such as Java and
                 C\#, that require garbage collection. Garbage
                 collection traces and simulation speed up research by
                 enabling deeper understandings of object lifetime
                 behavior and quick exploration and design of new
                 garbage collection algorithms. When generating perfect
                 traces, the brute-force method of computing object
                 lifetimes requires a whole-heap garbage collection at
                 every potential collection point in the program.
                 Because this process is prohibitively expensive,
                 researchers often use granulated traces by collecting
                 only periodically, for example, every 32 KB of
                 allocation. We extend the state of the art for
                 simulating garbage collection algorithms in two ways.
                 First, we develop a systematic methodology for
                 simulation studies of copying garbage collection and
                 present results showing the effects of trace
                 granularity on these simulations. We show that trace
                 granularity often distorts simulated garbage collection
                 results compared with perfect traces. Second, we
                 present and measure the performance of a new algorithm
                 called Merlin for computing object lifetimes. Merlin
                 timestamps objects and later uses the timestamps of
                 dead objects to reconstruct when they died. The Merlin
                 algorithm piggybacks on garbage collections performed
                 by the base system. Experimental results show that
                 Merlin can generate traces over two orders of magnitude
                 faster than the brute-force method which collects after
                 every object allocation. We also use Merlin to produce
                 visualizations of heap behavior that expose new object
                 lifetime behaviors.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Clifton:2006:MDR,
  author =       "Curtis Clifton and Todd Millstein and Gary T. Leavens
                 and Craig Chambers",
  title =        "{MultiJava}: {Design} rationale, compiler
                 implementation, and applications",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "3",
  pages =        "517--575",
  month =        may,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1133651.1133655",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue May 30 16:33:23 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "MultiJava is a conservative extension of the Java
                 programming language that adds symmetric multiple
                 dispatch and open classes. Among other benefits,
                 multiple dispatch provides a solution to the binary
                 method problem. Open classes provide a solution to the
                 extensibility problem of object-oriented programming
                 languages, allowing the modular addition of both new
                 types and new operations to an existing type hierarchy.
                 This article illustrates and motivates the design of
                 MultiJava and describes its modular static typechecking
                 and modular compilation strategies. Although MultiJava
                 extends Java, the key ideas of the language design are
                 applicable to other object-oriented languages, such as
                 C\# and C++, and even, with some modifications, to
                 functional languages such as ML. This article also
                 discusses the variety of application domains in which
                 MultiJava has been successfully used by others,
                 including pervasive computing, graphical user
                 interfaces, and compilers. MultiJava allows users to
                 express desired programming idioms in a way that is
                 declarative and supports static typechecking, in
                 contrast to the tedious and type-unsafe workarounds
                 required in Java. MultiJava also provides opportunities
                 for new kinds of extensibility that are not easily
                 available in Java.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Scott:2006:RNG,
  author =       "Elizabeth Scott and Adrian Johnstone",
  title =        "Right nulled {GLR} parsers",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "4",
  pages =        "577--618",
  month =        jul,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1146809.1146810",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Aug 23 15:21:57 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The right nulled generalized LR parsing algorithm is a
                 new generalization of LR parsing which provides an
                 elegant correction to, and extension of, Tomita's GLR
                 methods whereby we extend the notion of a reduction in
                 a shift-reduce parser to include right nulled items.
                 The result is a parsing technique which runs in linear
                 time on LR(1) grammars and whose performance degrades
                 gracefully to a polynomial bound in the presence of
                 nonLR(1) rules. Compared to other GLR-based techniques,
                 our algorithm is simpler and faster.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Klein:2006:MCM,
  author =       "Gerwin Klein and Tobias Nipkow",
  title =        "A machine-checked model for a {Java-like} language,
                 virtual machine, and compiler",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "4",
  pages =        "619--695",
  month =        jul,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1146809.1146811",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Aug 23 15:21:57 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We introduce Jinja, a Java-like programming language
                 with a formal semantics designed to exhibit core
                 features of the Java language architecture. Jinja is a
                 compromise between the realism of the language and the
                 tractability and clarity of its formal semantics. The
                 following aspects are formalised: a big and a small
                 step operational semantics for Jinja and a proof of
                 their equivalence, a type system and a definite
                 initialisation analysis, a type safety proof of the
                 small step semantics, a virtual machine (JVM), its
                 operational semantics and its type system, a type
                 safety proof for the JVM; a bytecode verifier, that is,
                 a data flow analyser for the JVM, a correctness proof
                 of the bytecode verifier with respect to the type
                 system, and a compiler and a proof that it preserves
                 semantics and well-typedness. The emphasis of this work
                 is not on particular language features but on providing
                 a unified model of the source language, the virtual
                 machine, and the compiler. The whole development has
                 been carried out in the theorem prover Isabelle/HOL.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ager:2006:FPE,
  author =       "Mads Sig Ager and Olivier Danvy and Henning Korsholm
                 Rohde",
  title =        "Fast partial evaluation of pattern matching in
                 strings",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "4",
  pages =        "696--714",
  month =        jul,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1146809.1146812",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Aug 23 15:21:57 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We show how to obtain all of Knuth, Morris, and
                 Pratt's linear-time string matcher by specializing a
                 quadratic-time string matcher with respect to a pattern
                 string. Although it has been known for fifteen years
                 how to obtain this linear matcher by partial evaluation
                 of a quadratic one, how to obtain it in linear time has
                 remained an open problem. Obtaining a linear matcher by
                 the partial evaluation of a quadratic one is achieved
                 by performing its backtracking at specialization time
                 and memoizing its results. We show (1) how to rewrite
                 the source matcher such that its static intermediate
                 computations can be shared at specialization time and
                 (2) how to extend the memoization capabilities of a
                 partial evaluator to static functions. Such an extended
                 partial evaluator, if its memoization is implemented
                 efficiently, specializes the rewritten source matcher
                 in linear time. Finally, we show that the method also
                 applies to a variant of Boyer and Moore's string
                 matcher.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Carlsson:2006:MAC,
  author =       "Richard Carlsson and Konstantinos Sagonas and Jesper
                 Wilhelmsson",
  title =        "Message analysis for concurrent programs using message
                 passing",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "4",
  pages =        "715--746",
  month =        jul,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1146809.1146813",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Aug 23 15:21:57 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We describe an analysis-driven storage allocation
                 scheme for concurrent systems that use message passing
                 with copying semantics. The basic principle is that in
                 such a system, data which is not part of any message
                 does not need to be allocated in a shared data area.
                 This allows for the deallocation of thread-specific
                 data without requiring global synchronization and often
                 without even triggering garbage collection. On the
                 other hand, data that is part of a message should
                 preferably be allocated on a shared area since this
                 allows for fast (O(1)) interprocess communication that
                 does not require actual copying. In the context of a
                 dynamically typed, higher-order concurrent functional
                 language, we present a static message analysis which
                 guides the allocation. As shown by our performance
                 evaluation, conducted using a production-quality
                 language implementation, the analysis is effective
                 enough to discover most data which is to be used as a
                 message, and to allow the allocation scheme to combine
                 the best performance characteristics of both a
                 process-centric and a communal memory architecture.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Boute:2006:CSD,
  author =       "Raymond T. Boute",
  title =        "Calculational semantics: {Deriving} programming
                 theories from equations by functional predicate
                 calculus",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "4",
  pages =        "747--793",
  month =        jul,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1146809.1146814",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Aug 23 15:21:57 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The objects of programming semantics, namely, programs
                 and languages, are inherently formal, but the
                 derivation of semantic theories is all too often
                 informal, deprived of the benefits of formal
                 calculation ``guided by the shape of the formulas.''
                 Therefore, the main goal of this article is to provide
                 for the study of semantics an approach with the same
                 convenience and power of discovery that calculus has
                 given for many years to applied mathematics, physics,
                 and engineering. The approach uses functional predicate
                 calculus and concrete generic functionals; in fact, a
                 small part suffices. Application to a semantic theory
                 proceeds by describing program behavior in the simplest
                 possible way, namely by program equations, and
                 discovering the axioms of the theory as theorems by
                 calculation. This is shown in outline for a few
                 theories, and in detail for axiomatic semantics,
                 fulfilling a second goal of this article. Indeed, a
                 chafing problem with classical axiomatic semantics is
                 that some axioms are unintuitive at first, and that
                 justifications via denotational semantics are too
                 elaborate to be satisfactory. Derivation provides more
                 transparency. Calculation of formulas for ante- and
                 postconditions is shown in general, and for the major
                 language constructs in particular. A basic problem
                 reported in the literature, whereby relations are
                 inadequate for handling nondeterminacy and termination,
                 is solved here through appropriately defined program
                 equations. Several variants and an example in
                 mathematical analysis are also presented. One
                 conclusion is that formal calculation with quantifiers
                 is one of the most important elements for unifying
                 continuous and discrete mathematics in general, and
                 traditional engineering with computing science, in
                 particular.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Igarashi:2006:VPT,
  author =       "Atsushi Igarashi and Mirko Viroli",
  title =        "Variant parametric types: {A} flexible subtyping
                 scheme for generics",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "5",
  pages =        "795--847",
  month =        sep,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1152649.1152650",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 6 07:13:55 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We develop the mechanism of variant parametric types
                 as a means to enhance synergy between parametric and
                 inclusion polymorphism in object-oriented programming
                 languages. Variant parametric types are used to control
                 both the subtyping between different instantiations of
                 one generic class and the accessibility of their fields
                 and methods. On one hand, one parametric class can be
                 used to derive covariant types, contravariant types,
                 and bivariant types (generally called variant
                 parametric types) by attaching a variance annotation to
                 a type argument. On the other hand, the type system
                 prohibits certain method\slash field accesses,
                 according to variance annotations, when these accesses
                 may otherwise make the program unsafe. By exploiting
                 variant parametric types, a programmer can write
                 generic code abstractions that work on a wide range of
                 parametric types in a safe manner. For instance, a
                 method that only reads the elements of a container of
                 numbers can be easily modified so as to accept
                 containers of integers, floating-point numbers, or any
                 subtype of the number type. Technical subtleties in
                 typing for the proposed mechanism are addressed in
                 terms of an intuitive correspondence between variant
                 parametric and bounded existential types. Then, for a
                 rigorous argument of correctness of the proposed typing
                 rules, we extend Featherweight GJ---an existing formal
                 core calculus for Java with generics---with variant
                 parametric types and prove type soundness.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Joisha:2006:AAS,
  author =       "Pramod G. Joisha and Prithviraj Banerjee",
  title =        "An algebraic array shape inference system for
                 {MATLAB\reg{}}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "5",
  pages =        "848--907",
  month =        sep,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1152649.1152651",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 6 07:13:55 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The problem of inferring array shapes ahead of time in
                 languages that exhibit both implicit and dynamic typing
                 is a critical one because the ramifications of its
                 solution are the better organization of array storage
                 through compaction and reuse, and the generation of
                 high-performance code through specialization by shape.
                 This article addresses the problem in a prototypical
                 implicitly and dynamically typed array language called
                 MATLAB. The approach involves modeling the language's
                 shape semantics using an algebraic system, and applying
                 term rewriting techniques to evaluate expressions under
                 this algebra. Unlike prior efforts at array shape
                 determination, this enables the deduction of valuable
                 shape information even when array extents are
                 compile-time unknowns. Furthermore, unlike some
                 previous methods, our approach doesn't impose
                 monotonicity requirements on an operator's shape
                 semantics. The work also describes an inference
                 methodology and reports measurements from a type
                 inference engine called MAGICA. In a benchmark suite of
                 17 programs, the shape inference subsystem in MAGICA
                 detected the equivalence of over 61\% of the symbolic
                 shapes in six programs, and over 57\% and 37\% of the
                 symbolic shapes in two others. In the remaining nine
                 programs, all array shapes were inferred to be
                 compile-time constants.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Brecht:2006:CGC,
  author =       "Tim Brecht and Eshrat Arjomandi and Chang Li and Hang
                 Pham",
  title =        "Controlling garbage collection and heap growth to
                 reduce the execution time of {Java} applications",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "5",
  pages =        "908--941",
  month =        sep,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1152649.1152652",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 6 07:13:55 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In systems that support garbage collection, a tension
                 exists between collecting garbage too frequently and
                 not collecting it frequently enough. Garbage collection
                 that occurs too frequently may introduce unnecessary
                 overheads at the risk of not collecting much garbage
                 during each cycle. On the other hand, collecting
                 garbage too infrequently can result in applications
                 that execute with a large amount of virtual memory
                 (i.e., with a large footprint) and suffer from
                 increased execution times due to paging. In this
                 article, we use a large set of Java applications and
                 the highly tuned and widely used Boehm-Demers-Weiser
                 (BDW) conservative mark-and-sweep garbage collector to
                 experimentally examine the extent to which the
                 frequency of garbage collection impacts an
                 application's execution time, footprint, and pause
                 times. We use these results to devise some guidelines
                 for controlling garbage collection and heap growth in a
                 conservative garbage collector in order to minimize
                 application execution times. Then we describe new
                 strategies for controlling garbage collection and heap
                 growth that impact not only the frequency with which
                 garbage collection occurs but also the points at which
                 it occurs. Experimental results demonstrate that when
                 compared with the existing approach used in the
                 standard BDW collector, our new strategy can
                 significantly reduce application execution times. Our
                 goal is to obtain a better understanding of how to
                 control garbage collection and heap growth for an
                 individual application executing in isolation. These
                 results can be applied in a number of high-performance
                 computing and server environments, in addition to some
                 single-user environments. This work should also provide
                 insights into how to make better decisions that impact
                 garbage collection in multiprogrammed environments.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Kim:2006:ERI,
  author =       "Seon Wook Kim and Chong-Liang Ooi and Rudolf Eigenmann
                 and Babak Falsafi and T. N. Vijaykumar",
  title =        "Exploiting reference idempotency to reduce speculative
                 storage overflow",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "5",
  pages =        "942--965",
  month =        sep,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1152649.1152653",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 6 07:13:55 MDT 2006",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Recent proposals for multithreaded architectures
                 employ speculative execution to allow threads with
                 unknown dependences to execute speculatively in
                 parallel. The architectures use hardware speculative
                 storage to buffer speculative data, track data
                 dependences and correct incorrect executions through
                 roll-backs. Because all memory references access the
                 speculative storage, current proposals implement
                 speculative storage using small memory structures to
                 achieve fast access. The limited capacity of the
                 speculative storage causes considerable performance
                 loss due to speculative storage overflow whenever a
                 thread's speculative state exceeds the speculative
                 storage capacity. Larger threads exacerbate the
                 overflow problem but are preferable to smaller threads,
                 as larger threads uncover more parallelism. In this
                 article, we discover a new program property called
                 memory reference idempotency. Idempotent references are
                 guaranteed to be eventually corrected, though the
                 references may be temporarily incorrect in the process
                 of speculation. Therefore, idempotent references, even
                 from nonparallelizable program sections, need not be
                 tracked in the speculative storage, and instead can
                 directly access nonspeculative storage (i.e.,
                 conventional memory hierarchy). Thus, we reduce the
                 demand for speculative storage space in large threads.
                 We define a formal framework for reference idempotency
                 and present a novel compiler-assisted speculative
                 execution model. We prove the necessary and sufficient
                 conditions for reference idempotency using our model.
                 We present a compiler algorithm to label idempotent
                 memory references for the hardware. Experimental
                 results show that for our benchmarks, over 60\% of the
                 references in nonparallelizable program sections are
                 idempotent.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Joshi:2006:DPA,
  author =       "Rajeev Joshi and Greg Nelson and Yunhong Zhou",
  title =        "{Denali}: {A} practical algorithm for generating
                 optimal code",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "6",
  pages =        "967--989",
  month =        nov,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1186632.1186633",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:21 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Acar:2006:AFP,
  author =       "Umut A. Acar and Guy E. Blelloch and Robert Harper",
  title =        "Adaptive functional programming",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "6",
  pages =        "990--1034",
  month =        nov,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1186632.1186634",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:21 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Foster:2006:FIT,
  author =       "Jeffrey S. Foster and Robert Johnson and John Kodumal
                 and Alex Aiken",
  title =        "Flow-insensitive type qualifiers",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "6",
  pages =        "1035--1087",
  month =        nov,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1186632.1186635",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:21 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Nanda:2006:ISM,
  author =       "Mangala Gowri Nanda and S. Ramesh",
  title =        "Interprocedural slicing of multithreaded programs with
                 applications to {Java}",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "6",
  pages =        "1088--1144",
  month =        nov,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1186632.1186636",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:21 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rosenkrantz:2006:MMA,
  author =       "Daniel J. Rosenkrantz and Lenore R. Mullin and Harry
                 B. {Hunt III}",
  title =        "On minimizing materializations of array-valued
                 temporaries",
  journal =      j-TOPLAS,
  volume =       "28",
  number =       "6",
  pages =        "1145--1177",
  month =        nov,
  year =         "2006",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1186632.1186637",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:21 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Simonet:2007:CBA,
  author =       "Vincent Simonet and Fran{\c{c}}ois Pottier",
  title =        "A constraint-based approach to guarded algebraic data
                 types",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "1:1--1:56",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180476",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Blackburn:2007:PBP,
  author =       "Stephen M. Blackburn and Matthew Hertz and Kathryn S.
                 Mckinley and J. Eliot B. Moss and Ting Yang",
  title =        "Profile-based pretenuring",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "2:1--2:57",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180477",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Pretenuring can reduce copying costs in garbage
                 collectors by allocating long-lived objects into
                 regions that the garbage collector will rarely, if
                 ever, collect. We extend previous work on pretenuring
                 as follows: (1) We produce pretenuring advice that is
                 neutral with respect to the garbage collector algorithm
                 and configuration. We thus can and do combine advice
                 from different applications. We find for our benchmarks
                 that predictions using object lifetimes at each
                 allocation site in Java programs are accurate, which
                 simplifies the pretenuring implementation. (2) We
                 gather and apply advice to both applications and Jikes
                 RVM, a compiler and runtime system for Java written in
                 Java. Our results demonstrate that building combined
                 advice into Jikes RVM from different application
                 executions improves performance, regardless of the
                 application Jikes RVM is compiling and executing. This
                 build-time advice thus gives user applications some
                 benefits of pretenuring, without any application
                 profiling. No previous work uses profile feedback to
                 pretenure in the runtime system. (3) We find that
                 application-only advice also consistently improves
                 performance, but that the combination of build-time and
                 application-specific advice is almost always noticeably
                 better. (4) Our same advice improves the performance of
                 generational, Older First, and Beltway collectors,
                 illustrating that it is collector neutral. (5) We
                 include an immortal allocation space in addition to a
                 nursery and older generation, and show that pretenuring
                 to immortal space has substantial benefit.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Drinic:2007:PPC,
  author =       "Milenko Drini{\'c} and Darko Kirovski and Hoi Vo",
  title =        "{PPMexe}: {Program} compression",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "3:1--3:31",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180478",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "With the emergence of software delivery platforms,
                 code compression has become an important system
                 component that strongly affects performance. This
                 article presents PPMexe, a compression mechanism for
                 program binaries that analyzes their syntax and
                 semantics to achieve superior compression ratios. We
                 use the generic paradigm of prediction by partial
                 matching (PPM) as the foundation of our compression
                 codec. PPMexe combines PPM with two preprocessing
                 steps: (i) instruction rescheduling to improve
                 prediction rates and (ii) heuristic partitioning of a
                 program binary into streams with high autocorrelation.
                 We improve the traditional PPM algorithm by (iii) using
                 an additional alphabet of frequent variable-length
                 supersymbols extracted from the input stream of
                 fixed-length symbols. In addition, PPMexe features (iv)
                 a low-overhead mechanism that enables decompression
                 starting from an arbitrary instruction of the
                 executable, a property pivotal for runtime software
                 delivery. We implemented PPMexe for x86 binaries and
                 tested it on several large applications. Binaries
                 compressed using PPMexe were 18--24\% smaller than
                 files created using off-the-shelf PPMD, one of the best
                 available compressors.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Higuchi:2007:STS,
  author =       "Tomoyuki Higuchi and Atsushi Ohori",
  title =        "A static type system for {JVM} access control",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "4:1--4:42",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180479",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ben-Amram:2007:PTA,
  author =       "Amir M. Ben-Amram and Chin Soon Lee",
  title =        "Program termination analysis in polynomial time",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "5:1--5:37",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180480",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Eugster:2007:TBP,
  author =       "Patrick Eugster",
  title =        "Type-based publish\slash subscribe: {Concepts} and
                 experiences",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "1",
  pages =        "6:1--6:50",
  month =        jan,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1180475.1180481",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ward:2007:SPT,
  author =       "Martin Ward and Hussein Zedan",
  title =        "Slicing as a program transformation",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "7:1--7:53",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216375",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tardieu:2007:DLS,
  author =       "Olivier Tardieu",
  title =        "A deterministic logical semantics for pure {Esterel}",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "8:1--8:26",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216376",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Zhuang:2007:AAR,
  author =       "Xiaotong Zhuang and Santosh Pande",
  title =        "Allocating architected registers through differential
                 encoding",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "9:1--9:46",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216377",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Bruynooghe:2007:TAL,
  author =       "Maurice Bruynooghe and Michael Codish and John P.
                 Gallagher and Samir Genaim and Wim Vanhoof",
  title =        "Termination analysis of logic programs through
                 combination of type-based norms",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "10:1--10:44",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216378",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Hirzel:2007:FOP,
  author =       "Martin Hirzel and Daniel Von Dincklage and Amer Diwan
                 and Michael Hind",
  title =        "Fast online pointer analysis",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "11:1--11:55",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216379",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Marathe:2007:MMT,
  author =       "Jaydeep Marathe and Frank Mueller and Tushar Mohan and
                 Sally A. Mckee and Bronis R. {De Supinski} and Andy
                 Yoo",
  title =        "{METRIC}: {Memory} tracing via dynamic binary
                 rewriting to identify cache inefficiencies",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "12:1--12:36",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216380",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ancona:2007:PCT,
  author =       "D. Ancona and C. Anderson and F. Damiani and S.
                 Drossopoulou and P. Giannini and E. Zucca",
  title =        "A provenly correct translation of {Fickle} into
                 {Java}",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "2",
  pages =        "13:1--13:67",
  month =        apr,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1216374.1216381",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Apr 14 11:13:22 MDT 2007",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a translation from Fickle, a small
                 object-oriented language allowing objects to change
                 their class at runtime, into Java. The translation is
                 provenly correct in the sense that it preserves the
                 static and dynamic semantics. Moreover, it is
                 compatible with separate compilation, since the
                 translation of a Fickle class does not depend on the
                 implementation of used classes. Based on the formal
                 system, we have developed an implementation.

                 The translation turned out to be a more subtle problem
                 than we expected. In this article, we discuss four
                 possible approaches we considered for the design of the
                 translation and to justify our choice, we present
                 formally the translation and proof of preservation of
                 the static and dynamic semantics, and discuss the
                 prototype implementation. Moreover, we outline an
                 alternative translation based on generics that avoids
                 most of the casts (but not all) needed in the previous
                 translation.

                 The language Fickle has undergone and is still
                 undergoing several phases of development. In this
                 article we are discussing the translation of
                 Fickle$_{\rm II}$.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Abadi:2007:E,
  author =       "Mart{\'\i}n Abadi and Jens Palsberg",
  title =        "Editorial",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "3",
  pages =        "14:1--14:1",
  month =        may,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1232420.1232421",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Podelski:2007:TPA,
  author =       "Andreas Podelski and Andrey Rybalchenko",
  title =        "Transition predicate abstraction and fair
                 termination",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "3",
  pages =        "15:1--15:31",
  month =        may,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1232420.1232422",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Xie:2007:SSF,
  author =       "Yichen Xie and Alex Aiken",
  title =        "{Saturn}: {A} scalable framework for error detection
                 using {Boolean} satisfiability",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "3",
  pages =        "16:1--16:43",
  month =        may,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1232420.1232423",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Foster:2007:CBT,
  author =       "J. Nathan Foster and Michael B. Greenwald and Jonathan
                 T. Moore and Benjamin C. Pierce and Alan Schmitt",
  title =        "Combinators for bidirectional tree transformations:
                 {A} linguistic approach to the view-update problem",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "3",
  pages =        "17:1--17:65",
  month =        may,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1232420.1232424",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Lee:2007:DIE,
  author =       "Han B. Lee and Amer Diwan and J. Eliot B. Moss",
  title =        "Design, implementation, and evaluation of a
                 compilation server",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "4",
  pages =        "18:1--18:40",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1255450.1255451",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sutter:2007:PID,
  author =       "Bjorn {De Sutter} and Ludo {Van Put} and Koen {De
                 Bosschere}",
  title =        "A practical interprocedural dominance algorithm",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "4",
  pages =        "19:1--19:44",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1255450.1255452",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Paz:2007:EFC,
  author =       "Harel Paz and David F. Bacon and Elliot K. Kolodner
                 and Erez Petrank and V. T. Rajan",
  title =        "An efficient on-the-fly cycle collection",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "4",
  pages =        "20:1--20:43",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1255450.1255453",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Moller:2007:SVX,
  author =       "Anders M{\o}ller and Mads {\O}sterby Olesen and
                 Michael I. Schwartzbach",
  title =        "Static validation of {XSL} transformations",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "4",
  pages =        "21:1--21:47",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1255450.1255454",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "21",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Stoyle:2007:MMS,
  author =       "Gareth Stoyle and Michael Hicks and Gavin Bierman and
                 Peter Sewell and Iulian Neamtiu",
  title =        "{{\em Mutatis Mutandis\/}}: {Safe} and predictable
                 dynamic software updating",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "4",
  pages =        "22:1--22:70",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1255450.1255455",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:39 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sagiv:2007:ISE,
  author =       "Mooly Sagiv",
  title =        "Introduction to special {ESOP'05} issue",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "23:1--23:2",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275498",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Biering:2007:BHH,
  author =       "Bodil Biering and Lars Birkedal and Noah Torp-Smith",
  title =        "{BI}-hyperdoctrines, higher-order separation logic,
                 and abstraction",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "24:1--24:35",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275499",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "24",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Fournet:2007:TDA,
  author =       "C{\'e}dric Fournet and Andrew D. Gordon and Sergio
                 Maffeis",
  title =        "A type discipline for authorization policies",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "25:1--25:37",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275500",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "25",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rival:2007:TPA,
  author =       "Xavier Rival and Laurent Mauborgne",
  title =        "The trace partitioning abstract domain",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "26:1--26:51",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275501",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "26",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ranganath:2007:NFC,
  author =       "Venkatesh Prasad Ranganath and Torben Amtoft and
                 Anindya Banerjee and John Hatcliff and Matthew B.
                 Dwyer",
  title =        "A new foundation for control dependence and slicing
                 for modern program structures",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "27:1--27:43",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275502",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "27",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Chander:2007:ERB,
  author =       "Ajay Chander and David Espinosa and Nayeem Islam and
                 Peter Lee and George C. Necula",
  title =        "Enforcing resource bounds via static verification of
                 dynamic checks",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "28:1--28:18",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275503",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "28",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Muller-Olm:2007:AMA,
  author =       "Markus M{\"u}ller-Olm and Helmut Seidl",
  title =        "Analysis of modular arithmetic",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "5",
  pages =        "29:1--29:27",
  month =        aug,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1275497.1275504",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We consider integer arithmetic modulo a power of 2 as
                 provided by mainstream programming languages like Java
                 or standard implementations of C. The difficulty here
                 is that, for $w > 1$, the ring $Z_m$ of integers modulo
                 $m = 2^w$ has zero divisors and thus cannot be embedded
                 into a field. Not withstanding that, we present intra-
                 and interprocedural algorithms for inferring for every
                 program point u affine relations between program
                 variables valid at $u$. If conditional branching is
                 replaced with nondeterministic branching, our
                 algorithms are not only sound but also complete in that
                 they detect all valid affine relations in a natural
                 class of programs. Moreover, they run in time linear in
                 the program size and polynomial in the number of
                 program variables and can be implemented by using the
                 same modular integer arithmetic as the target language
                 to be analyzed. We also indicate how our analysis can
                 be extended to deal with equality guards, even in an
                 interprocedural setting.",
  acknowledgement = ack-nhfb,
  articleno =    "29",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{McKinley:2007:ECG,
  author =       "Kathryn S. McKinley and Keshav Pingali",
  title =        "Editorial: {A} changing of the guard",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "30:1--30:2",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1293892",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "30",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Honda:2007:UTS,
  author =       "Kohei Honda and Nobuko Yoshida",
  title =        "A uniform type structure for secure information flow",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "31:1--31:100",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286822",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "31",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Grothoff:2007:EOC,
  author =       "Christian Grothoff and Jens Palsberg and Jan Vitek",
  title =        "Encapsulating objects with confined types",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "32:1--32:41",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286823",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "32",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Henzinger:2007:EMP,
  author =       "Thomas A. Henzinger and Christoph M. Kirsch",
  title =        "The embedded machine: {Predictable}, portable
                 real-time code",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "33:1--33:29",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286824",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The Embedded Machine is a virtual machine that
                 mediates in real time the interaction between software
                 processes and physical processes. It separates the
                 compilation of embedded programs into two phases. The
                 first phase, the platform-independent compiler phase,
                 generates E code (code executed by the Embedded
                 Machine), which supervises the timing, not the
                 scheduling of, application tasks relative to external
                 events such as clock ticks and sensor interrupts. E
                 code is portable and, given an input behavior, exhibits
                 predictable (i.e., deterministic) timing and output
                 behavior. The second phase, the platform-dependent
                 compiler phase, checks the time safety of the E code,
                 that is, whether platform performance (determined by
                 the hardware) and platform utilization (determined by
                 the scheduler of the operating system) enable its
                 timely execution. We have used the Embedded Machine to
                 compile and execute high-performance control
                 applications written in Giotto, such as the flight
                 control system of an autonomous model helicopter.",
  acknowledgement = ack-nhfb,
  articleno =    "33",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Thies:2007:STU,
  author =       "William Thies and Fr{\'e}d{\'e}ric Vivien and Saman
                 Amarasinghe",
  title =        "A step towards unifying schedule and storage
                 optimization",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "34:1--34:45",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286825",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "34",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Collberg:2007:DGB,
  author =       "Christian S. Collberg and Clark Thomborson and Gregg
                 M. Townsend",
  title =        "Dynamic graph-based software fingerprinting",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "35:1--35:67",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286826",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Fingerprinting embeds a secret message into a cover
                 message. In media fingerprinting, the secret is usually
                 a copyright notice and the cover a digital image.
                 Fingerprinting an object discourages intellectual
                 property theft, or when such theft has occurred, allows
                 us to prove ownership.\par

                 The Software Fingerprinting problem can be described as
                 follows. Embed a structure W into a program P such
                 that: W can be reliably located and extracted from P
                 even after P has been subjected to code transformations
                 such as translation, optimization and obfuscation; W is
                 stealthy; W has a high data rate; embedding W into P
                 does not adversely affect the performance of P; and W
                 has a mathematical property that allows us to argue
                 that its presence in P is the result of deliberate
                 actions.\par

                 In this article, we describe a software fingerprinting
                 technique in which a dynamic graph fingerprint is
                 stored in the execution state of a program. Because of
                 the hardness of pointer alias analysis such
                 fingerprints are difficult to attack automatically.",
  acknowledgement = ack-nhfb,
  articleno =    "35",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ohori:2007:PTM,
  author =       "Atsushi Ohori",
  title =        "A proof theory for machine code",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "36:1--36:35",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286827",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "36",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Casey:2007:OIB,
  author =       "Kevin Casey and M. Anton Ertl and David Gregg",
  title =        "Optimizing indirect branch prediction accuracy in
                 virtual machine interpreters",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "37:1--37:36",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286828",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "37",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Karkare:2007:IBC,
  author =       "Bageshri Karkare and Uday P. Khedker",
  title =        "An improved bound for call strings based
                 interprocedural analysis of bit vector frameworks",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "38:1--38:13",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286829",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "38",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Seo:2007:GDW,
  author =       "Sunae Seo and Hongseok Yang and Kwangkeun Yi and
                 Taisook Han",
  title =        "Goal-directed weakening of abstract interpretation
                 results",
  journal =      j-TOPLAS,
  volume =       "29",
  number =       "6",
  pages =        "39:1--39:39",
  month =        oct,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1286821.1286830",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:40 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "39",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Khedker:2007:HRA,
  author =       "Uday P. Khedker and Amitabha Sanyal and Amey Karkare",
  title =        "Heap reference analysis using access graphs",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "1:1--1:41",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290521",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Zhao:2007:FFS,
  author =       "Peng Zhao and Shimin Cui and Yaoqing Gao and Ra{\'u}l
                 Silvera and Jos{\'e} Nelson Amaral",
  title =        "{{\em Forma\/}}: {A} framework for safe automatic
                 array reshaping",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "2:1--2:30",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290522",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Binkley:2007:ESO,
  author =       "David Binkley and Mark Harman and Jens Krinke",
  title =        "Empirical study of optimization techniques for massive
                 slicing",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "3:1--3:33",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290523",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pearce:2007:EFS,
  author =       "David J. Pearce and Paul H. J. Kelly and Chris
                 Hankin",
  title =        "Efficient field-sensitive pointer analysis of {C}",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "4:1--4:42",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290524",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The subject of this article is flow- and
                 context-insensitive pointer analysis. We present a
                 novel approach for precisely modelling struct variables
                 and indirect function calls. Our method emphasizes
                 efficiency and simplicity and is based on a simple
                 language of set constraints. We obtain an $O(v^4)$
                 bound on the time needed to solve a set of constraints
                 from this language, where $v$ is the number of
                 constraint variables. This gives, for the first time,
                 some insight into the hardness of performing
                 field-sensitive pointer analysis of C. Furthermore, we
                 experimentally evaluate the time versus precision
                 trade-off for our method by comparing against the
                 field-insensitive equivalent. Our benchmark suite
                 consists of 11 common C programs ranging in size from
                 15,000 to 200,000 lines of code. Our results indicate
                 the field-sensitive analysis is more expensive to
                 compute, but yields significantly better precision. In
                 addition, our technique has been integrated into the
                 latest release (version 4.1) of the GNU Compiler GCC.
                 Finally, we identify several previously unknown issues
                 with an alternative and less precise approach to
                 modelling struct variables, known as field-based
                 analysis.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Gil:2007:EDD,
  author =       "Joseph (Yossi) Gil and Yoav Zibin",
  title =        "Efficient dynamic dispatching with type slicing",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "5:1--5:53",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290525",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Tse:2007:RTP,
  author =       "Stephen Tse and Steve Zdancewic",
  title =        "Run-time principals in information-flow type systems",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "1",
  pages =        "6:1--6:42",
  month =        nov,
  year =         "2007",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1290520.1290526",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:23:38 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pearlmutter:2008:RMA,
  author =       "Barak A. Pearlmutter and Jeffrey Mark Siskind",
  title =        "Reverse-mode {AD} in a functional framework: {Lambda}
                 the ultimate backpropagator",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "2",
  pages =        "7:1--7:36",
  month =        mar,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1330017.1330018",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:42 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Weimer:2008:ESP,
  author =       "Westley Weimer and George C. Necula",
  title =        "Exceptional situations and program reliability",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "2",
  pages =        "8:1--8:51",
  month =        mar,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1330017.1330019",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:42 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "It is difficult to write programs that behave
                 correctly in the presence of run-time errors. Proper
                 behavior in the face of exceptional situations is
                 important to the reliability of long-running programs.
                 Existing programming language features often provide
                 poor support for executing clean-up code and for
                 restoring invariants.\par

                 We present a data-flow analysis for finding a certain
                 class of exception-handling defects: those related to a
                 failure to release resources or to clean up properly
                 along all paths. Many real-world programs violate such
                 resource usage rules because of incorrect exception
                 handling. Our flow-sensitive analysis keeps track of
                 outstanding obligations along program paths and does a
                 precise modeling of control flow in the presence of
                 exceptions. Using it, we have found over 1,300
                 exception handling defects in over 5 million lines of
                 Java code.\par

                 Based on those defects we propose a programming
                 language feature, the compensation stack, that keeps
                 track of obligations at run time and ensures that they
                 are discharged. We present a type system for
                 compensation stacks that tracks collections of
                 obligations. Finally, we present case studies to
                 demonstrate that this feature is natural, efficient,
                 and can improve reliability.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Cooke:2008:NTD,
  author =       "Daniel E. Cooke and J. Nelson Rushton and Brad
                 Nemanich and Robert G. Watson and Per Andersen",
  title =        "Normalize, transpose, and distribute: {An} automatic
                 approach for handling nonscalars",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "2",
  pages =        "9:1--9:49",
  month =        mar,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1330017.1330020",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:42 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Wang:2008:DSJ,
  author =       "Tao Wang and Abhik Roychoudhury",
  title =        "Dynamic slicing on {Java} bytecode traces",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "2",
  pages =        "10:1--10:49",
  month =        mar,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1330017.1330021",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:42 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Liquori:2008:FME,
  author =       "Luigi Liquori and Arnaud Spiwack",
  title =        "{FeatherTrait}: {A} modest extension of {Featherweight
                 Java}",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "2",
  pages =        "11:1--11:32",
  month =        mar,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1330017.1330022",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:22:42 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Monniaux:2008:PVF,
  author =       "David Monniaux",
  title =        "The pitfalls of verifying floating-point
                 computations",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "12:1--12:41",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353446",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Current critical systems often use a lot of
                 floating-point computations, and thus the testing or
                 static analysis of programs containing floating-point
                 operators has become a priority. However, correctly
                 defining the semantics of common implementations of
                 floating-point is tricky, because semantics may change
                 according to many factors beyond source-code level,
                 such as choices made by compilers. We here give
                 concrete examples of problems that can appear and
                 solutions for implementing in analysis software.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Rinetzky:2008:CPF,
  author =       "N. Rinetzky and G. Ramalingam and M. Sagiv and E.
                 Yahav",
  title =        "On the complexity of partially-flow-sensitive alias
                 analysis",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "13:1--13:28",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353447",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Dantas:2008:APA,
  author =       "Daniel S. Dantas and David Walker and Geoffrey
                 Washburn and Stephanie Weirich",
  title =        "{AspectML}: {A} polymorphic aspect-oriented functional
                 programming language",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "14:1--14:60",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353448",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Terauchi:2008:WSE,
  author =       "Tachio Terauchi and Alex Aiken",
  title =        "Witnessing side effects",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "15:1--15:42",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353449",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ben-Amram:2008:SCT,
  author =       "Amir M. Ben-Amram",
  title =        "Size-change termination with difference constraints",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "16:1--16:31",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353450",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pan:2008:PFE,
  author =       "Zhelong Pan and Rudolf Eigenmann",
  title =        "{PEAK} --- a fast and effective performance tuning
                 system via compiler optimization orchestration",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "3",
  pages =        "17:1--17:43",
  month =        may,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1353445.1353451",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jun 11 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Compile-time optimizations generally improve program
                 performance. Nevertheless, degradations caused by
                 individual compiler optimization techniques are to be
                 expected. Feedback-directed optimization orchestration
                 systems generate optimized code versions under a series
                 of optimization combinations, evaluate their
                 performance, and search for the best version. One
                 challenge to such systems is to tune program
                 performance quickly in an exponential search space.
                 Another challenge is to achieve high program
                 performance, considering that optimizations interact.
                 Aiming at these two goals, this article presents an
                 automated performance tuning system, PEAK, which
                 searches for the best compiler optimization
                 combinations for the important code sections in a
                 program. The major contributions made in this work are
                 as follows: (1) An algorithm called Combined
                 Elimination (CE) is developed to explore the
                 optimization space quickly and effectively; (2) Three
                 fast and accurate rating methods are designed to
                 evaluate the performance of an optimized code section
                 based on a partial execution of the program; (3) An
                 algorithm is developed to identify important code
                 sections as candidates for performance tuning by
                 trading off tuning speed and tuned program performance;
                 and (4) A set of compiler tools are implemented to
                 automate optimization orchestration. Orchestrating
                 optimization options in SUN Forte compilers at the
                 whole-program level, our CE algorithm improves
                 performance by 10.8\% over the SPEC CPU2000 FP baseline
                 setting, compared to 5.6\% improved by manual tuning.
                 Orchestrating GCC O3 optimizations, CE improves
                 performance by 12\% over O3, the highest optimization
                 level. Applying the rating methods, PEAK reduces tuning
                 time from 2.19 hours to 5.85 minutes on average, while
                 achieving equal or better program performance.",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Furr:2008:CTS,
  author =       "Michael Furr and Jeffrey S. Foster",
  title =        "Checking type safety of foreign function calls",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "18:1--18:63",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377493",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Foreign function interfaces (FFIs) allow components in
                 different languages to communicate directly with each
                 other. While FFIs are useful, they often require
                 writing tricky low-level code and include little or no
                 static safety checking, thus providing a rich source of
                 hard-to-find programming errors. In this article, we
                 study the problem of enforcing type safety across the
                 OCaml-to-C FFI and the Java Native Interface (JNI). We
                 present O-Saffire and J-Saffire, a pair of multilingual
                 type inference systems that ensure C code that uses
                 these FFIs accesses high-level data safely. Our
                 inference systems use {\em representational types\/} to
                 model C's low-level view of OCaml and Java values, and
                 singleton types to track integers, strings, memory
                 offsets, and type tags through C. J-Saffire, our Java
                 system, uses a polymorphic flow-insensitive,
                 unification-based analysis. Polymorphism is important
                 because it allows us to precisely model user-defined
                 wrapper functions and the more than 200 JNI functions.
                 O-Saffire, our OCaml system, uses a monomorphic
                 flow-sensitive analysis because, while polymorphism is
                 much less important for the OCaml FFI flow-sensitivity
                 is critical to track conditional branches, which are
                 used when pattern matching OCaml data in C. O-Saffire
                 also tracks garbage collection information to ensure
                 that local C pointers to the OCaml heap are registered
                 properly, which is not necessary for the JNI. We have
                 applied O-Saffire and J-Saffire to a set of benchmarks
                 and found many bugs and questionable coding practices.
                 These results suggest that static checking of FFIs can
                 be a valuable tool in writing correct multilingual
                 software.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "dataflow analysis; FFI; flow-sensitive type system;
                 foreign function calls; Foreign function interface;
                 Java; Java Native Interface; JNI; multilingual type
                 inference; multilingual type system; OCaml;
                 representational type",
}

@Article{Lhotak:2008:RAB,
  author =       "Ond{\v{r}}ej Lhot{\'a}k and Laurie Hendren",
  title =        "Relations as an abstraction for {BDD}-based program
                 analysis",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "19:1--19:63",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377494",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In this article we present Jedd, a language extension
                 to Java that supports a convenient way of programming
                 with Binary Decision Diagrams (BDDs). The Jedd language
                 abstracts BDDs as database-style relations and
                 operations on relations, and provides static type rules
                 to ensure that relational operations are used
                 correctly.\par

                 The article provides a description of the Jedd language
                 and reports on the design and implementation of the
                 Jedd translator and associated runtime system. Of
                 particular interest is the approach to assigning
                 attributes from the high-level relations to physical
                 domains in the underlying BDDs, which is done by
                 expressing the constraints as a SAT problem and using a
                 modern SAT solver to compute the solution. Further, a
                 runtime system is defined that handles memory
                 management issues and supports a browsable profiling
                 tool for tuning the key BDD operations.\par

                 The motivation for designing Jedd was to support the
                 development of interrelated whole program analyses
                 based on BDDs. We have successfully used Jedd to build
                 Paddle, a framework of context-sensitive program
                 analyses, including points-to analysis and call graph
                 construction, as well as several client analyses.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Binary decision diagrams; Boolean formula
                 satisfiability; Java; language design; physical domain
                 assignment; points-to analysis; program analysis;
                 relations",
}

@Article{Flanagan:2008:TAS,
  author =       "Cormac Flanagan and Stephen N. Freund and Marina
                 Lifshin and Shaz Qadeer",
  title =        "Types for atomicity: {Static} checking and inference
                 for {Java}",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "20:1--20:52",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377495",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Atomicity is a fundamental correctness property in
                 multithreaded programs. A method is atomic if, for
                 every execution, there is an equivalent serial
                 execution in which the actions of the method are not
                 interleaved with actions of other threads. Atomic
                 methods are amenable to sequential reasoning, which
                 significantly facilitates subsequent analysis and
                 verification.\par

                 This article presents a type system for specifying and
                 verifying the atomicity of methods in multithreaded
                 Java programs using a synthesis of Lipton's theory of
                 reduction and type systems for race detection. The type
                 system supports guarded, write-guarded, and unguarded
                 fields, as well as thread-local data, parameterized
                 classes and methods, and protected locks. We also
                 present an algorithm for verifying atomicity via type
                 inference.\par

                 We have applied our type checker and type inference
                 tools to a number of commonly used Java library classes
                 and programs. These tools were able to verify the vast
                 majority of methods in these benchmarks as atomic,
                 indicating that atomicity is a widespread methodology
                 for multithreaded programming. In addition, reported
                 atomicity violations revealed some subtle errors in the
                 synchronization disciplines of these programs.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Atomicity; concurrent programs; type inference; type
                 systems",
}

@Article{Gal:2008:JBV,
  author =       "Andreas Gal and Christian W. Probst and Michael
                 Franz",
  title =        "{Java} bytecode verification via static single
                 assignment form",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "21:1--21:21",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377496",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Java Virtual Machines (JVMs) traditionally perform
                 bytecode verification by way of an iterative dataflow
                 analysis. Bytecode verification is necessary to ensure
                 type safety because temporary variables in the JVM are
                 not statically typed. We present an alternative
                 verification mechanism that transforms JVM bytecode
                 into Static Single Assignment Form (SSA) and thereby
                 propagates definitions directly to uses. Type checking
                 at control flow merge points can then be performed in a
                 single pass.\par

                 Our prototype implementation of the new algorithm is
                 faster than the standard JVM bytecode verifier. It has
                 the additional benefit of generating SSA as a side
                 effect, which may be immediately useful for a
                 subsequent dynamic compilation stage.",
  acknowledgement = ack-nhfb,
  articleno =    "21",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "dataflow analysis; Java bytecode verification; static
                 single assignment form",
}

@Article{Bhatia:2008:RSE,
  author =       "Sapan Bhatia and Charles Consel and Calton Pu",
  title =        "Remote specialization for efficient embedded operating
                 systems",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "22:1--22:32",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377497",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Prior to their deployment on an embedded system,
                 operating systems are commonly tailored to reduce code
                 size and improve runtime performance. Program
                 specialization is a promising match for this process:
                 it is predictable and modules, and it allows the reuse
                 of previously implemented specializations. A
                 specialization engine for embedded systems must
                 overcome three main obstacles: (i) Reusing existing
                 compilers for embedded systems, (ii) supporting
                 specialization on a resource-limited system and (iii)
                 coping with dynamic applications by supporting
                 specialization on demand.\par

                 In this article, we describe a runtime specialization
                 infrastructure that addresses these problems. Our
                 solution proposes: (i) Specialization in two phases of
                 which the former generates specialized C templates and
                 the latter uses a dedicated compiler to generate
                 efficient native code. (ii) A virtualization mechanism
                 that facilitates specialization of code at a remote
                 location. (iii) An API and supporting OS extensions
                 that allow applications to produce, manage and dispose
                 of specialized code.\par

                 We evaluate our work through two case studies: (i) The
                 TCP/IP implementation of Linux and (ii) The TUX
                 embedded web server. We report appreciable improvements
                 in code size and performance. We also quantify the
                 overhead of specialization and argue that a
                 specialization server can scale to support a sizable
                 workload.",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "compilers; performance analysis; Remote
                 specialization; specialization server",
}

@Article{Rong:2008:RAS,
  author =       "Hongbo Rong and Alban Douillet and Guang R. Gao",
  title =        "Register allocation for software pipelined
                 multidimensional loops",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "23:1--23:68",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377498",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article investigates register allocation for
                 software pipelined multidimensional loops where the
                 execution of successive iterations from an {\em n\/}
                 -dimensional loop is overlapped. For single loop
                 software pipelining, the lifetimes of a loop variable
                 in successive iterations of the loop form a repetitive
                 pattern. An effective register allocation method is to
                 represent the pattern as a vector of lifetimes (or a
                 vector lifetime using Rau's terminology [Rau 1992]) and
                 map it to rotating registers. Unfortunately, the
                 software pipelined schedule of a multidimensional loop
                 is considerably more complex and so are the vector
                 lifetimes in it.\par

                 In this article, we develop a way to normalize and
                 represent the vector lifetimes, which captures their
                 complexity, while exposing their regularity that
                 enables a simple solution. The problem is formulated as
                 bin-packing of the multidimensional vector lifetimes on
                 the surface of a space-time cylinder. A metric, called
                 distance, is calculated either conservatively or
                 aggressively to guide the bin-packing process, so that
                 there is no overlapping between any two vector
                 lifetimes, and the register requirement is minimized.
                 This approach subsumes the classical register
                 allocation for software pipelined single loops as a
                 special case. The method has been implemented in the
                 ORC compiler and produced code for the IA-64
                 architecture. Experimental results show the
                 effectiveness. Several strategies for register
                 allocation are compared and analyzed.",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "register allocation; Software pipelining",
}

@Article{Torp-Smith:2008:LRA,
  author =       "Noah Torp-Smith and Lars Birkedal and John C.
                 Reynolds",
  title =        "Local reasoning about a copying garbage collector",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "4",
  pages =        "24:1--24:58",
  month =        jul,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1377492.1377499",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Aug 5 19:14:53 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a programming language, model, and logic
                 appropriate for implementing and reasoning about a
                 memory management system. We state semantically what is
                 meant by correctness of a copying garbage collector,
                 and employ a variant of the novel separation logics to
                 formally specify partial correctness of Cheney's
                 copying garbage collector in our program logic.
                 Finally, we prove that our implementation of Cheney's
                 algorithm meets its specification using the logic we
                 have given and auxiliary variables.",
  acknowledgement = ack-nhfb,
  articleno =    "24",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "copying garbage collector; local reasoning; Separation
                 logic",
}

@Article{Preda:2008:SBA,
  author =       "Mila Dalla Preda and Mihai Christodorescu and Somesh
                 Jha and Saumya Debray",
  title =        "A semantics-based approach to malware detection",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "5",
  pages =        "25:1--25:54",
  month =        aug,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1387673.1387674",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 30 14:02:55 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Malware detection is a crucial aspect of software
                 security. Current malware detectors work by checking
                 for {\em signatures}, which attempt to capture the
                 syntactic characteristics of the machine-level byte
                 sequence of the malware. This reliance on a syntactic
                 approach makes current detectors vulnerable to code
                 obfuscations, increasingly used by malware writers,
                 that alter the syntactic properties of the malware byte
                 sequence without significantly affecting their
                 execution behavior.\par

                 This paper takes the position that the key to malware
                 identification lies in their semantics. It proposes a
                 semantics-based framework for reasoning about malware
                 detectors and proving properties such as soundness and
                 completeness of these detectors. Our approach uses a
                 trace semantics to characterize the behavior of malware
                 as well as that of the program being checked for
                 infection, and uses abstract interpretation to ``hide''
                 irrelevant aspects of these behaviors. As a concrete
                 application of our approach, we show that (1) standard
                 signature matching detection schemes are generally
                 sound but not complete, (2) the semantics-aware malware
                 detector proposed by Christodorescu et al. is complete
                 with respect to a number of common obfuscations used by
                 malware writers and (3) the malware detection scheme
                 proposed by Kinder et al. and based on standard
                 model-checking techniques is sound in general and
                 complete on some, but not all, obfuscations handled by
                 the semantics-aware malware detector.",
  acknowledgement = ack-nhfb,
  articleno =    "25",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract interpretation; Malware detection;
                 obfuscation; trace semantics",
}

@Article{Cheney:2008:NLP,
  author =       "James Cheney and Christian Urban",
  title =        "Nominal logic programming",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "5",
  pages =        "26:1--26:47",
  month =        aug,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1387673.1387675",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 30 14:02:55 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Nominal logic is an extension of first-order logic
                 which provides a simple foundation for formalizing and
                 reasoning about abstract syntax modulo consistent
                 renaming of bound names (that is, \alpha -equivalence).
                 This article investigates logic programming based on
                 nominal logic. We describe some typical nominal logic
                 programs, and develop the model-theoretic,
                 proof-theoretic, and operational semantics of such
                 programs. Besides being of interest for ensuring the
                 correct behavior of implementations, these results
                 provide a rigorous foundation for techniques for
                 analysis and reasoning about nominal logic programs, as
                 we illustrate via examples.",
  acknowledgement = ack-nhfb,
  articleno =    "26",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "logic programming; name-binding; Nominal logic;
                 semantics",
}

@Article{Terauchi:2008:CCC,
  author =       "Tachio Terauchi and Alex Aiken",
  title =        "A capability calculus for concurrency and
                 determinism",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "5",
  pages =        "27:1--27:30",
  month =        aug,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1387673.1387676",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 30 14:02:55 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article presents a static system for checking
                 determinism (technically, partial confluence) of
                 communicating concurrent processes. Our approach
                 automatically detects partial confluence in programs
                 communicating via a mix of different kinds of
                 communication methods: rendezvous channels, buffered
                 channels, broadcast channels, and reference cells. Our
                 system reduces the partial confluence checking problem
                 in polynomial time (in the size of the program) to the
                 problem of solving a system of rational linear
                 inequalities, and is thus efficient.",
  acknowledgement = ack-nhfb,
  articleno =    "27",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "capabilities; Determinism; type systems",
}

@Article{Gil:2008:TDB,
  author =       "Joseph (Yossi) Gil and William Pugh and Grant E.
                 Weddell and Yoav Zibin",
  title =        "Two-dimensional bidirectional object layout",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "5",
  pages =        "28:1--28:38",
  month =        aug,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1387673.1387677",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 30 14:02:55 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Object layout schemes used in C++ and other languages
                 rely on (sometimes numerous) compiler generated fields.
                 We describe a language-independent object layout
                 scheme, which is space optimal, that is, objects are
                 contiguous, and contain {\em no compiler generated
                 fields\/} other than a single type identifier. As in
                 C++ and other multiple inheritance languages such as
                 CECIL and DYLAN, the new scheme sometimes requires
                 extra levels of indirection to access some of the
                 fields. Using a data set of 28 hierarchies, totaling
                 almost 50,000 types, we show that this scheme improves
                 field access efficiency over standard implementations,
                 and competes favorably with (the non-space-optimal)
                 highly optimized C++ specific implementations. The
                 benchmark includes an analytical model for computing
                 the frequency of indirections in a sequence of field
                 access operations. Our layout scheme relies on
                 whole-program analysis, which requires about 10
                 microseconds per type on a contemporary architecture
                 (Pentium III, 900MHz, 256MB machine), even in very
                 large hierarchies. We also present a layout scheme for
                 separate compilation using the user-annotation of {\em
                 virtual inheritance edge\/} that is used in C++.",
  acknowledgement = ack-nhfb,
  articleno =    "28",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "bidirectional; coloring; hierarchy; inheritance;
                 layout",
}

@Article{Naik:2008:TSE,
  author =       "Mayur Naik and Jens Palsberg",
  title =        "A type system equivalent to a model checker",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "5",
  pages =        "29:1--29:24",
  month =        aug,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1387673.1387678",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Sep 30 14:02:55 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Type systems and model checking are two prevalent
                 approaches to program verification. A prominent
                 difference between them is that type systems are
                 typically defined in a syntactic and modular style
                 whereas model checking is usually performed in a
                 semantic and whole-program style. This difference
                 between the two approaches makes them complementary to
                 each other: type systems are good at explaining why a
                 program was accepted while model checkers are good at
                 explaining why a program was rejected.\par

                 We present a type system that is equivalent to a model
                 checker for verifying temporal safety properties of
                 imperative programs. The model checker is natural and
                 may be instantiated with any finite-state abstraction
                 scheme such as predicate abstraction. The type system,
                 which is also parametric, type checks exactly those
                 programs that are accepted by the model checker. It
                 uses a variant of function types to capture flow
                 sensitivity and intersection and union types to capture
                 context sensitivity. Our result sheds light on the
                 relationship between type systems and model checking,
                 provides a methodology for studying their relative
                 expressiveness, is a step towards sharing results
                 between the two approaches, and motivates synergistic
                 program analyses involving interplay between them.",
  acknowledgement = ack-nhfb,
  articleno =    "29",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Model checking; type systems",
}

@Article{Bhargavan:2008:VPB,
  author =       "Karthikeyan Bhargavan and C{\'e}dric Fournet and
                 Andrew D. Gordon",
  title =        "Verifying policy-based web services security",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "6",
  pages =        "30:1--30:59",
  month =        oct,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1391956.1391957",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 1 20:05:05 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "WS-SecurityPolicy is a declarative language for
                 configuring web services security mechanisms. We
                 describe a formal semantics for WS-SecurityPolicy and
                 propose a more abstract language for specifying secure
                 links between web services and their clients. We
                 present the architecture and implementation of tools
                 that (1) compile policy files from link specifications,
                 and (2) verify by invoking a theorem prover whether a
                 set of policy files run by any number of senders and
                 receivers correctly implements the goals of a link
                 specification, in spite of active attackers.
                 Policy-driven web services implementations are prone to
                 the usual subtle vulnerabilities associated with
                 cryptographic protocols; our tools help prevent such
                 vulnerabilities. We can verify policies when first
                 compiled from link specifications, and also re-verify
                 policies against their original goals after any
                 modifications during deployment. Moreover, we present
                 general security theorems for all configurations that
                 rely on compiled policies.",
  acknowledgement = ack-nhfb,
  articleno =    "30",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "pi calculus; Web services; XML security",
}

@Article{Tratt:2008:DSL,
  author =       "Laurence Tratt",
  title =        "Domain specific language implementation via
                 compile-time meta-programming",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "6",
  pages =        "31:1--31:40",
  month =        oct,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1391956.1391958",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 1 20:05:05 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Domain specific languages (DSLs) are mini-languages
                 that are increasingly seen as being a valuable tool for
                 software developers and non-developers alike. DSLs must
                 currently be created in an ad-hoc fashion, often
                 leading to high development costs and implementations
                 of variable quality. In this article, I show how
                 expressive DSLs can be hygienically embedded in the
                 Converge programming language using its compile-time
                 meta-programming facility, the concept of DSL blocks,
                 and specialised error reporting techniques. By making
                 use of pre-existing facilities, and following a simple
                 methodology, DSL implementation costs can be
                 significantly reduced whilst leading to higher quality
                 DSL implementations.",
  acknowledgement = ack-nhfb,
  articleno =    "31",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "compile-time meta-programming; domain specific
                 languages; Syntax extension",
}

@Article{Arenaz:2008:XEF,
  author =       "Manuel Arenaz and Juan Touri{\~n}o and Ramon Doallo",
  title =        "{XARK}: {An} extensible framework for automatic
                 recognition of computational kernels",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "6",
  pages =        "32:1--32:56",
  month =        oct,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1391956.1391959",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 1 20:05:05 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The recognition of program constructs that are
                 frequently used by software developers is a powerful
                 mechanism for optimizing and parallelizing compilers to
                 improve the performance of the object code. The
                 development of techniques for automatic recognition of
                 computational kernels such as inductions, reductions
                 and array recurrences has been an intensive research
                 area in the scope of compiler technology during the
                 90's. This article presents a new compiler framework
                 that, unlike previous techniques that focus on specific
                 and isolated kernels, recognizes a comprehensive
                 collection of computational kernels that appear
                 frequently in full-scale real applications. The XARK
                 compiler operates on top of the Gated Single Assignment
                 (GSA) form of a high-level intermediate representation
                 (IR) of the source code. Recognition is carried out
                 through a demand-driven analysis of this high-level IR
                 at two different levels. First, the dependences between
                 the statements that compose the strongly connected
                 components (SCCs) of the data-dependence graph of the
                 GSA form are analyzed. As a result of this intra-SCC
                 analysis, the computational kernels corresponding to
                 the execution of the statements of the SCCs are
                 recognized. Second, the dependences between statements
                 of different SCCs are examined in order to recognize
                 more complex kernels that result from combining simpler
                 kernels in the same code. Overall, the XARK compiler
                 builds a hierarchical representation of the source code
                 as kernels and dependence relationships between those
                 kernels. This article describes in detail the
                 collection of computational kernels recognized by the
                 XARK compiler. Besides, the internals of the
                 recognition algorithms are presented. The design of the
                 algorithms enables to extend the recognition
                 capabilities of XARK to cope with new kernels, and
                 provides an advanced symbolic analysis framework to run
                 other compiler techniques on demand. Finally, extensive
                 experiments showing the effectiveness of XARK for a
                 collection of benchmarks from different application
                 domains are presented. In particular, the SparsKit-II
                 library for the manipulation of sparse matrices, the
                 Perfect benchmarks, the SPEC CPU2000 collection and the
                 PLTMG package for solving elliptic partial differential
                 equations are analyzed in detail.",
  acknowledgement = ack-nhfb,
  articleno =    "32",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Automatic kernel recognition; demand-driven
                 algorithms; gated single assignment; strongly connected
                 component; symbolic analysis; use-def chains",
}

@Article{Ducournau:2008:PHA,
  author =       "Roland Ducournau",
  title =        "Perfect hashing as an almost perfect subtype test",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "6",
  pages =        "33:1--33:56",
  month =        oct,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1391956.1391960",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 1 20:05:05 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Subtype tests are an important issue in the
                 implementation of object-oriented programming
                 languages. Many techniques have been proposed, but none
                 of them perfectly fulfills the five requirements that
                 we have identified: constant-time, linear-space,
                 multiple inheritance, dynamic loading and inlining. In
                 this article, we propose a subtyping test
                 implementation that involves a combination of usual
                 hashtables and Cohen's display, which is a well-known
                 technique for single inheritance hierarchies. This
                 novel approach is based on {\em perfect hashing}, that
                 is, an optimized and truly constant-time variant of
                 hashing that applies to {\em immutable\/} hashtables.
                 We show that the resulting technique closely meets all
                 five requirements. Furthermore, in the framework of
                 Java-like languages --- characterized by single
                 inheritance of classes and multiple subtyping of
                 interfaces --- perfect hashing also applies to method
                 invocation when the receiver is typed by an interface.
                 The proposed technique is compared to some
                 alternatives, including the proposal by Palacz and
                 Vitek [2003]. Time-efficiency is assessed at the cycle
                 level in the framework of Driesen's pseudo-code and the
                 linear-space criterion is validated by statistical
                 simulation on benchmarks consisting of large-scale
                 class hierarchies.",
  acknowledgement = ack-nhfb,
  articleno =    "33",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Casting; coloring; downcast; dynamic loading;
                 interfaces; method tables; multiple inheritance;
                 multiple subtyping; perfect hashing; single
                 inheritance; subtype test; virtual function tables",
}

@Article{Morris:2008:DNF,
  author =       "Joseph M. Morris and Malcolm Tyrrell",
  title =        "Dually nondeterministic functions",
  journal =      j-TOPLAS,
  volume =       "30",
  number =       "6",
  pages =        "34:1--34:34",
  month =        oct,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1391956.1391961",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 1 20:05:05 MDT 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Nondeterminacy is a fundamental notion in computing.
                 We show that it can be described by a general theory
                 that accounts for it in the form in which it occurs in
                 many programming contexts, among them specifications,
                 competing agents, data refinement, abstract
                 interpretation, imperative programming, process
                 algebras, and recursion theory. Underpinning these
                 applications is a theory of nondeterministic functions;
                 we construct such a theory. The theory consists of an
                 algebra with which practitioners can reason about
                 nondeterministic functions, and a denotational model to
                 establish the soundness of the theory. The model is
                 based on the idea of free completely distributive
                 lattices over partially ordered sets. We deduce the
                 important properties of nondeterministic functions.",
  acknowledgement = ack-nhfb,
  articleno =    "34",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Angelic nondeterminacy; demonic nondeterminacy; free
                 completely distributive lattice; modeling
                 nondeterminacy; nondeterminism; nondeterministic
                 functions",
}

@Article{Jacobs:2008:PMC,
  author =       "Bart Jacobs and Frank Piessens and Jan Smans and K.
                 Rustan M. Leino and Wolfram Schulte",
  title =        "A programming model for concurrent object-oriented
                 programs",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "1",
  pages =        "1:1--1:48",
  month =        dec,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1452044.1452045",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 23 11:52:52 MST 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Reasoning about multithreaded object-oriented programs
                 is difficult, due to the nonlocal nature of object
                 aliasing and data races. We propose a programming
                 regime (or {\em programming model\/}) that rules out
                 data races, and enables local reasoning in the presence
                 of object aliasing and concurrency. Our programming
                 model builds on the multithreading and synchronization
                 primitives as they are present in current mainstream
                 programming languages. Java or C\\# programs developed
                 according to our model can be annotated by means of
                 stylized comments to make the use of the model
                 explicit. We show that such annotated programs can be
                 formally verified to comply with the programming model.
                 If the annotated program verifies, the underlying Java
                 or C\\# program is guaranteed to be free from data
                 races, and it is sound to reason locally about program
                 behavior. Verification is modular: a program is valid
                 if all methods are valid, and validity of a method does
                 not depend on program elements that are not visible to
                 the method. We have implemented a verifier for programs
                 developed according to our model in a custom build of
                 the Spec\\# programming system, and we have validated
                 our approach on a case study.",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Aliasing; data races; local reasoning; modular
                 reasoning; ownership; verification condition
                 generation",
}

@Article{Schulte:2008:ECP,
  author =       "Christian Schulte and Peter J. Stuckey",
  title =        "Efficient constraint propagation engines",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "1",
  pages =        "2:1--2:43",
  month =        dec,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1452044.1452046",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 23 11:52:52 MST 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See erratum \cite{Schulte:2009:EEC}.",
  abstract =     "This article presents a model and implementation
                 techniques for speeding up constraint propagation.
                 Three fundamental approaches to improving constraint
                 propagation based on propagators as implementations of
                 constraints are explored: keeping track of which
                 propagators are at fixpoint, choosing which propagator
                 to apply next, and how to combine several propagators
                 for the same constraint.\par

                 We show how idempotence reasoning and events help track
                 fixpoints more accurately. We improve these methods by
                 using them dynamically (taking into account current
                 variable domains to improve accuracy). We define
                 priority-based approaches to choosing a next propagator
                 and show that dynamic priorities can improve
                 propagation. We illustrate that the use of multiple
                 propagators for the same constraint can be advantageous
                 with priorities, and introduce staged propagators that
                 combine the effects of multiple propagators with
                 priorities for greater efficiency.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Constraint (logic) programming; constraint
                 propagation; events; finite domain constraints;
                 fixpoint reasoning; priorities",
}

@Article{Bernardeschi:2008:DBV,
  author =       "C. Bernardeschi and N. {De Francesco} and G. Lettieri
                 and L. Martini and P. Masci",
  title =        "Decomposing bytecode verification by abstract
                 interpretation",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "1",
  pages =        "3:1--3:63",
  month =        dec,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1452044.1452047",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 23 11:52:52 MST 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Bytecode verification is a key point in the security
                 chain of the Java platform. This feature is only
                 optional in many embedded devices since the memory
                 requirements of the verification process are too high.
                 In this article we propose an approach that
                 significantly reduces the use of memory by a
                 serial/parallel decomposition of the verification into
                 multiple specialized passes. The algorithm reduces the
                 type encoding space by operating on different
                 abstractions of the domain of types. The results of our
                 evaluation show that this bytecode verification can be
                 performed directly on small memory systems. The method
                 is formalized in the framework of abstract
                 interpretation.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Abstract interpretation; bytecode verification",
}

@Article{Park:2008:PLB,
  author =       "Sungwoo Park and Frank Pfenning and Sebastian Thrun",
  title =        "A probabilistic language based on sampling functions",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "1",
  pages =        "4:1--4:46",
  month =        dec,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1452044.1452048",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 23 11:52:52 MST 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "As probabilistic computations play an increasing role
                 in solving various problems, researchers have designed
                 probabilistic languages which treat probability
                 distributions as primitive datatypes. Most
                 probabilistic languages, however, focus only on
                 discrete distributions and have limited expressive
                 power. This article presents a probabilistic language,
                 called $\lambda_o$, whose expressive power is beyond
                 discrete distributions. Rich expressiveness of
                 $\lambda_o$ is due to its use of {\em sampling
                 functions}, that is, mappings from the unit interval
                 (0.0,1.0] to probability domains, in specifying
                 probability distributions. As such, $\lambda_o$ enables
                 programmers to formally express and reason about
                 sampling methods developed in simulation theory. The
                 use of $\lambda_o$ is demonstrated with three
                 applications in robotics: robot localization, people
                 tracking, and robotic mapping. All experiments have
                 been carried out with real robots.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Probabilistic language; probability distribution;
                 robotics; sampling function",
}

@Article{Bhargavan:2008:VII,
  author =       "Karthikeyan Bhargavan and C{\'e}dric Fournet and
                 Andrew D. Gordon and Stephen Tse",
  title =        "Verified interoperable implementations of security
                 protocols",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "1",
  pages =        "5:1--5:57",
  month =        dec,
  year =         "2008",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1452044.1452049",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 23 11:52:52 MST 2008",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present an architecture and tools for verifying
                 implementations of security protocols. Our
                 implementations can run with both concrete and symbolic
                 implementations of cryptographic algorithms. The
                 concrete implementation is for production and
                 interoperability testing. The symbolic implementation
                 is for debugging and formal verification. We develop
                 our approach for protocols written in F\#, a dialect of
                 ML, and verify them by compilation to ProVerif, a
                 resolution-based theorem prover for cryptographic
                 protocols. We establish the correctness of this
                 compilation scheme, and we illustrate our approach with
                 protocols for Web Services security.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Functional programming; pi calculus; Web services; XML
                 security",
}

@Article{Moura:2009:RC,
  author =       "Ana L{\'u}cia {De Moura} and Roberto Ierusalimschy",
  title =        "Revisiting coroutines",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "2",
  pages =        "6:1--6:31",
  month =        feb,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1462166.1462167",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 19 14:20:38 MST 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article advocates the revival of coroutines as a
                 convenient general control abstraction. After proposing
                 a new classification of coroutines, we introduce the
                 concept of full asymmetric coroutines and provide a
                 precise definition for it through an operational
                 semantics. We then demonstrate that full coroutines
                 have an expressive power equivalent to one-shot
                 continuations and one-shot delimited continuations. We
                 also show that full asymmetric coroutines and one-shot
                 delimited continuations have many similarities, and
                 therefore present comparable benefits. Nevertheless,
                 coroutines are easier implemented and understood,
                 especially in the realm of procedural languages.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Continuations; generators; multitasking",
}

@Article{Millstein:2009:EMP,
  author =       "Todd Millstein and Christopher Frost and Jason Ryder
                 and Alessandro Warth",
  title =        "Expressive and modular predicate dispatch for {Java}",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "2",
  pages =        "7:1--7:54",
  month =        feb,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1462166.1462168",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 19 14:20:38 MST 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "{\em Predicate dispatch\/} is an object-oriented (OO)
                 language mechanism for determining the method
                 implementation to be invoked upon a message send. With
                 predicate dispatch, each method implementation includes
                 a predicate guard specifying the conditions under which
                 the method should be invoked, and logical implication
                 of predicates determines the method overriding
                 relation. Predicate dispatch naturally unifies and
                 generalizes several common forms of dynamic dispatch,
                 including traditional OO dispatch, multimethod
                 dispatch, and functional-style pattern matching.
                 Unfortunately, prior languages supporting predicate
                 dispatch have had several deficiencies that limit the
                 practical utility of this language feature.\par

                 We describe JPred, a backward-compatible extension to
                 Java supporting predicate dispatch. While prior
                 languages with predicate dispatch have been extensions
                 to toy or nonmainstream languages, we show how
                 predicate dispatch can be naturally added to a
                 traditional OO language. While prior languages with
                 predicate dispatch have required the whole program to
                 be available for typechecking and compilation, JPred
                 retains Java's modular typechecking and compilation
                 strategies. While prior languages with predicate
                 dispatch have included special-purpose algorithms for
                 reasoning about predicates, JPred employs
                 general-purpose, off-the-shelf decision procedures. As
                 a result, JPred's type system is more flexible,
                 allowing several useful programming idioms that are
                 spuriously rejected by those other languages. After
                 describing the JPred language informally, we present an
                 extension to Featherweight Java that formalizes the
                 language and its modular type system, which we have
                 proven sound. Finally, we discuss two case studies that
                 illustrate the practical utility of JPred, including
                 its use in the detection of several errors.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "dynamic dispatch; modular typechecking; Predicate
                 dispatch",
}

@Article{Sneyers:2009:CPC,
  author =       "Jon Sneyers and Tom Schrijvers and Bart Demoen",
  title =        "The computational power and complexity of constraint
                 handling rules",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "2",
  pages =        "8:1--8:42",
  month =        feb,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1462166.1462169",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 19 14:20:38 MST 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Constraint Handling Rules (CHR) is a high-level
                 rule-based programming language which is increasingly
                 used for general-purpose programming. We introduce the
                 CHR machine, a model of computation based on the
                 operational semantics of CHR. Its computational power
                 and time complexity properties are compared to those of
                 the well-understood Turing machine and Random Access
                 Memory machine. This allows us to prove the interesting
                 result that every algorithm can be implemented in CHR
                 with the best known time and space complexity. We also
                 investigate the practical relevance of this result and
                 the constant factors involved. Finally we expand the
                 scope of the discussion to other (declarative)
                 programming languages.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "complexity; constant factors; Constraint Handling
                 Rules",
}

@Article{Schulte:2009:EEC,
  author =       "Christian Schulte and Peter J. Stuckey",
  title =        "Erratum to: {Efficient} constraint propagation
                 engines",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "2",
  pages =        "1--1",
  month =        feb,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1462166.1462170",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Feb 19 14:20:38 MST 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  note =         "See \cite{Schulte:2008:ECP}.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{MacDonald:2009:DDP,
  author =       "Steve MacDonald and Kai Tan and Jonathan Schaeffer and
                 Duane Szafron",
  title =        "Deferring design pattern decisions and automating
                 structural pattern changes using a design-pattern-based
                 programming system",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "3",
  pages =        "9:1--9:49",
  month =        apr,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1498926.1498927",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Apr 16 14:08:54 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "In the design phase of software development, the
                 designer must make many fundamental design decisions
                 concerning the architecture of the system. Incorrect
                 decisions are relatively easy and inexpensive to fix if
                 caught during the design process, but the difficulty
                 and cost rise significantly if problems are not found
                 until after coding begins. Unfortunately, it is not
                 always possible to find incorrect design decisions
                 during the design phase. To reduce the cost of
                 expensive corrections, it would be useful to have the
                 ability to defer some design decisions as long as
                 possible, even into the coding stage. Failing that,
                 tool support for automating design changes would give
                 more freedom to revisit and change these decisions when
                 needed. This article shows how a design-pattern-based
                 programming system based on {\em generative design
                 patterns\/} can support the deferral of design
                 decisions where possible, and automate changes where
                 necessary. A generative design pattern is a
                 parameterized pattern form that is capable of
                 generating code for different versions of the
                 underlying design pattern. We demonstrate these ideas
                 in the context of a parallel application written with
                 the CO$_2$ P$_3$ S pattern-based parallel programming
                 system. We show that CO$_2$ P$_3$ S can defer the
                 choice of execution architecture (shared-memory or
                 distributed-memory), and can automate several changes
                 to the application structure that would normally be
                 daunting to tackle late in the development cycle.
                 Although we have done this work with a pattern-based
                 parallel programming system, it can be generalized to
                 other domains.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "design decisions; Design patterns; object-oriented
                 frameworks; parallel programming; software
                 maintenance",
}

@Article{Lee:2009:RFS,
  author =       "Chin Soon Lee",
  title =        "Ranking functions for size-change termination",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "3",
  pages =        "10:1--10:42",
  month =        apr,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1498926.1498928",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Apr 16 14:08:54 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article explains how to construct a ranking
                 function for any program that is proved terminating by
                 {\em size-change analysis}.\par

                 The ``principle of size-change termination'' for a
                 first-order functional language with well-ordered data
                 is intuitive: A program terminates on all inputs, if
                 every infinite call sequence (following program control
                 flow) would imply an infinite descent in some data
                 values. Size-change analysis is based on information
                 associated with the subject program's call-sites. This
                 information indicates, for each call-site, strict or
                 weak data decreases observed as a computation traverses
                 the call-site. The set {\em DESC\/} of call-site
                 sequences for which the size-changes imply infinite
                 descent is $\omega$-regular, as is the set {\em FLOW\/}
                 of infinite call-site sequences following the program
                 flowchart. If {\em FLOW\/} $\subseteq$ {\em DESC\/} (a
                 decidable problem), every infinite call sequence would
                 imply infinite descent in a well-ordering --- an
                 impossibility --- so the program must
                 terminate.\par

                 This analysis accounts for termination arguments
                 applicable to different call-site sequences, without
                 indicating a ranking function for the program's
                 termination. In this article, it is explained how one
                 can be constructed whenever size-change analysis
                 succeeds. The constructed function has an unexpectedly
                 simple form; it is expressed using only min, max, and
                 lexicographic tuples of parameters and constants. In
                 principle, such functions can be tested to determine
                 whether size-change analysis will be successful. As a
                 corollary, if a program verified as terminating
                 performs only multiply recursive operations, the
                 function that it computes is multiply
                 recursive.\par

                 The ranking function construction is connected with the
                 determinization of the B{\"u}chi automaton for {\em
                 DESC}. While the result is not practical, it is of
                 value in addressing the scope of size-change reasoning.
                 This reasoning has been applied broadly, in the
                 analysis of functional and logic programs, as well as
                 term rewrite systems.",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "-Automaton; determinization; multiple recursion; omega
                 ranking function; size-change termination; termination
                 analysis",
}

@Article{OHearn:2009:SIH,
  author =       "Peter W. O'Hearn and Hongseok Yang and John C.
                 Reynolds",
  title =        "Separation and information hiding",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "3",
  pages =        "11:1--11:50",
  month =        apr,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1498926.1498929",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Apr 16 14:08:54 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We investigate proof rules for information hiding,
                 using the formalism of separation logic. In essence, we
                 use the separating conjunction to partition the
                 internal resources of a module from those accessed by
                 the module's clients. The use of a logical connective
                 gives rise to a form of dynamic partitioning, where we
                 track the transfer of ownership of portions of heap
                 storage between program components. It also enables us
                 to enforce separation in the presence of mutable data
                 structures with embedded addresses that may be
                 aliased.",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "modularity; resource protection; Separation logic",
}

@Article{Matthews:2009:OSM,
  author =       "Jacob Matthews and Robert Bruce Findler",
  title =        "Operational semantics for multi-language programs",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "3",
  pages =        "12:1--12:44",
  month =        apr,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1498926.1498930",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Apr 16 14:08:54 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Interoperability is big business, a fact to which
                 .NET, the JVM, and COM can attest. Language designers
                 are well aware of this, and they are designing
                 programming languages that reflect it --- for instance,
                 SML.NET, F\#, Mondrian, and Scala all treat
                 interoperability as a central design feature. Still,
                 current multi-language research tends not to focus on
                 the semantics of these features, but only on how to
                 implement them efficiently. In this article, we attempt
                 to rectify that by giving a technique for specifying
                 the operational semantics of a multi-language system as
                 a composition of the models of its constituent
                 languages. Our technique abstracts away the low-level
                 details of interoperability like garbage collection and
                 representation coherence, and lets us focus on semantic
                 properties like type-safety, equivalence, and
                 termination behavior. In doing so it allows us to adapt
                 standard theoretical techniques such as
                 subject-reduction, logical relations, and operational
                 equivalence for use on multi-language systems.
                 Generally speaking, our proofs of properties in a
                 multi-language context are mutually referential
                 versions of their single language counterparts.\par

                 We demonstrate our technique with a series of
                 strategies for embedding a Scheme-like language into an
                 ML-like language. We start by connecting very simple
                 languages with a very simple strategy, and work our way
                 up to languages that interact in sophisticated ways and
                 have sophisticated features such as polymorphism and
                 effects. Along the way, we prove relevant results such
                 as type-soundness and termination for each system we
                 present using adaptations of standard
                 techniques.\par

                 Beyond giving simple expressive models, our studies
                 have uncovered several interesting facts about
                 interoperability. For example, higher-order function
                 contracts naturally emerge as the glue to ensure that
                 interoperating languages respect each other's type
                 systems. Our models also predict that the embedding
                 strategy where foreign values are opaque is as
                 expressive as the embedding strategy where foreign
                 values are translated to corresponding values in the
                 other language, and we were able to experimentally
                 verify this behavior using PLT Scheme's foreign
                 function interface.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "interoperability; Operational semantics",
}

@Article{Ariola:2009:SCA,
  author =       "Zena M. Ariola and Aaron Bohannon and Amr Sabry",
  title =        "Sequent calculi and abstract machines",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "4",
  pages =        "13:1--13:48",
  month =        may,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1516507.1516508",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 23 09:05:20 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We propose a sequent calculus derived from the
                 $\lambda - \mu \mu \char`\~$-calculus of Curien and
                 Herbelin that is expressive enough to directly
                 represent the fine details of program evaluation using
                 typical abstract machines. Not only does the calculus
                 easily encode the usual components of abstract machines
                 such as environments and stacks, but it can also
                 simulate the transition steps of the abstract machine
                 with just a constant overhead. Technically this is
                 achieved by ensuring that reduction in the calculus
                 always happens at a bounded depth from the root of the
                 term. We illustrate these properties by providing {\em
                 shallow encodings\/} of the Krivine (call-by-name) and
                 the CEK (call-by-value) abstract machines in the
                 calculus.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Curry--Howard isomorphism; duality; explicit
                 substitutions; Krivine machine; natural deduction",
}

@Article{Kalvala:2009:PTU,
  author =       "Sara Kalvala and Richard Warburton and David Lacey",
  title =        "Program transformations using temporal logic side
                 conditions",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "4",
  pages =        "14:1--14:48",
  month =        may,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1516507.1516509",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 23 09:05:20 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article describes an approach to program
                 optimization based on transformations, where temporal
                 logic is used to specify side conditions, and
                 strategies are created which expand the repertoire of
                 transformations and provide a suitable level of
                 abstraction. We demonstrate the power of this approach
                 by developing a set of optimizations using our
                 transformation language and showing how the
                 transformations can be converted into a form which
                 makes it easier to apply them, while maintaining trust
                 in the resulting optimizing steps. The approach is
                 illustrated through a transformational case study where
                 we apply several optimizations to a small program.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "optimizing compilers; program transformation;
                 rewriting; temporal logic",
}

@Article{Sangiorgi:2009:OBC,
  author =       "Davide Sangiorgi",
  title =        "On the origins of bisimulation and coinduction",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "4",
  pages =        "15:1--15:41",
  month =        may,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1516507.1516510",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 23 09:05:20 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The origins of bisimulation and bisimilarity are
                 examined, in the three fields where they have been
                 independently discovered: Computer Science,
                 Philosophical Logic (precisely, Modal Logic), Set
                 Theory.\par

                 Bisimulation and bisimilarity are coinductive notions,
                 and as such are intimately related to fixed points, in
                 particular greatest fixed points. Therefore also the
                 appearance of coinduction and fixed points is
                 discussed, though in this case only within Computer
                 Science. The paper ends with some historical remarks on
                 the main fixed-point theorems (such as Knaster-Tarski)
                 that underpin the fixed-point theory presented.",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "bisimulation; coinduction; fixed points; greatest
                 fixed points; history",
}

@Article{Morris:2009:TTN,
  author =       "Joseph M. Morris and Alexander Bunkenburg and Malcolm
                 Tyrrell",
  title =        "Term transformers: {A} new approach to state",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "4",
  pages =        "16:1--16:42",
  month =        may,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1516507.1516511",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 23 09:05:20 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a new approach to adding state and
                 state-changing commands to a term language. As a formal
                 semantics it can be seen as a generalization of
                 predicate transformer semantics, but beyond that it
                 brings additional opportunities for specifying and
                 verifying programs. It is based on a construct called a
                 {\em phrase}, which is a term of the form $C
                 \triangleright t$, where $C$ stands for a command and
                 $t$ stands for a term of any type. If $R$ is boolean,
                 $C$ \triangleright $R$ is closely related to the
                 weakest precondition $\mbox{wp}(C, R)$. The new theory
                 draws together functional and imperative programming in
                 a simple way. In particular, imperative procedures and
                 functions are seen to be governed by the same laws as
                 classical functions. We get new techniques for
                 reasoning about programs, including the ability to
                 dispense with logical variables and their attendant
                 complexities. The theory covers both programming and
                 specification languages, and supports unbounded demonic
                 and angelic nondeterminacy in both commands and
                 terms.",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "nondeterminacy; nondeterminism; predicate
                 transformers; procedures; refinement calculus; state",
}

@Article{Pingali:2009:RTP,
  author =       "Keshav Pingali and Kathryn McKinley",
  title =        "Remembrances of things past",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "4",
  pages =        "17:1--17:2",
  month =        may,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1538824.1538825",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat May 23 09:05:20 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Yardimci:2009:MSP,
  author =       "Efe Yardimci and Michael Franz",
  title =        "Mostly static program partitioning of binary
                 executables",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "5",
  pages =        "17:1--17:46",
  month =        jun,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1538917.1538918",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 2 12:30:17 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We have built a runtime compilation system that takes
                 unmodified sequential binaries and improves their
                 performance on off-the-shelf multiprocessors using
                 dynamic vectorization and loop-level parallelization
                 techniques. Our system, Azure, is purely software based
                 and requires no specific hardware support for
                 speculative thread execution, yet it is able to break
                 even in most cases; that is, the achieved speedup
                 exceeds the cost of runtime monitoring and compilation,
                 often by significant amounts.\par

                 Key to this remarkable performance is an offline
                 preprocessing step that extracts a {\em mostly
                 correct\/} control flow graph (CFG) from the binary
                 program ahead of time. This statically obtained CFG is
                 incomplete in that it may be missing some edges
                 corresponding to computed branches. We describe how
                 such additional control flow edges are discovered and
                 handled at runtime, so that an incomplete static
                 analysis never leads to an incorrect optimization
                 result.\par

                 The availability of a {\em mostly correct\/} CFG
                 enables us to statically partition a binary executable
                 into single-entry multiple-exit regions and to identify
                 potential parallelization candidates ahead of
                 execution. Program regions that are not candidates for
                 parallelization can thereby be excluded completely from
                 runtime monitoring and dynamic recompilation. Azure's
                 extremely low overhead is a direct consequence of this
                 design.",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "binary translation; Continuous compilation and
                 optimization; dynamic parallelization",
}

@Article{Barthe:2009:CTO,
  author =       "Gilles Barthe and Benjamin Gr{\'e}goire and C{\'e}sar
                 Kunz and Tamara Rezk",
  title =        "Certificate translation for optimizing compilers",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "5",
  pages =        "18:1--18:45",
  month =        jun,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1538917.1538919",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 2 12:30:17 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Proof Carrying Code provides trust in mobile code by
                 requiring certificates that ensure the code adherence
                 to specific conditions. The prominent approach to
                 generate certificates for compiled code is Certifying
                 Compilation, that automatically generates certificates
                 for simple safety properties.\par

                 In this work, we present Certificate Translation, a
                 novel extension for standard compilers that
                 automatically transforms formal proofs for more
                 expressive and complex properties of the source program
                 to certificates for the compiled code.\par

                 The article outlines the principles of certificate
                 translation, instantiated for a nonoptimizing compiler
                 and for standard compiler optimizations in the context
                 of an intermediate RTL Language.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "program optimizations; program verification;
                 Proof-carrying code; static analysis",
}

@Article{Castagna:2009:TCW,
  author =       "Giuseppe Castagna and Nils Gesbert and Luca Padovani",
  title =        "A theory of contracts for {Web} services",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "5",
  pages =        "19:1--19:61",
  month =        jun,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1538917.1538920",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Jul 2 12:30:17 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Contracts are behavioral descriptions of Web services.
                 We devise a theory of contracts that formalizes the
                 compatibility of a client with a service, and the safe
                 replacement of a service with another service. The use
                 of contracts statically ensures the successful
                 completion of every possible interaction between
                 compatible clients and services.\par

                 The technical device that underlies the theory is the
                 {\em filter}, which is an explicit coercion preventing
                 some possible behaviors of services and, in doing so,
                 make services compatible with different usage
                 scenarios. We show that filters can be seen as proofs
                 of a sound and complete subcontracting deduction system
                 which simultaneously refines and extends Hennessy's
                 classical axiomatization of the must testing preorder.
                 The relation is decidable, and the decision algorithm
                 is obtained via a cut-elimination process that proves
                 the coherence of subcontracting as a logical
                 system.\par

                 Despite the richness of the technical development, the
                 resulting approach is based on simple ideas and basic
                 intuitions. Remarkably, its application is mostly
                 independent of the language used to program the
                 services or the clients. We outline the practical
                 aspects of our theory by studying two different
                 concrete syntaxes for contracts and applying each of
                 them to Web services languages. We also explore
                 implementation issues of filters and discuss the
                 perspectives of future research this work opens.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "ccs; concurrency theory; contracts; explicit
                 coercions; must testing; subtyping; type theory; Web
                 services",
}

@Article{Zhong:2009:PLA,
  author =       "Yutao Zhong and Xipeng Shen and Chen Ding",
  title =        "Program locality analysis using reuse distance",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "6",
  pages =        "20:1--20:39",
  month =        aug,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1552309.1552310",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Aug 24 13:23:06 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "On modern computer systems, the memory performance of
                 an application depends on its locality. For a single
                 execution, locality-correlated measures like average
                 miss rate or working-set size have long been analyzed
                 using {\em reuse distance\/} --- the number of distinct
                 locations accessed between consecutive accesses to a
                 given location. This article addresses the analysis
                 problem at the program level, where the size of data
                 and the locality of execution may change significantly
                 depending on the input.\par

                 The article presents two techniques that predict how
                 the locality of a program changes with its input. The
                 first is approximate reuse-distance measurement, which
                 is asymptotically faster than exact methods while
                 providing a guaranteed precision. The second is
                 statistical prediction of locality in all executions of
                 a program based on the analysis of a few executions.
                 The prediction process has three steps: dividing data
                 accesses into groups, finding the access patterns in
                 each group, and building parameterized models. The
                 resulting prediction may be used on-line with the help
                 of distance-based sampling. When evaluated on fifteen
                 benchmark applications, the new techniques predicted
                 program locality with good accuracy, even for test
                 executions that are orders of magnitude larger than the
                 training executions.\par

                 The two techniques are among the first to enable
                 quantitative analysis of whole-program locality in
                 general sequential code. These findings form the basis
                 for a unified understanding of program locality and its
                 many facets. Concluding sections of the article present
                 a taxonomy of related literature along five dimensions
                 of locality and discuss the role of reuse distance in
                 performance modeling, program optimization, cache and
                 virtual memory management, and network traffic
                 analysis.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Program locality; reuse distance; stack distance;
                 training-based analysis",
}

@Article{Liu:2009:DRE,
  author =       "Yanhong A. Liu and Scott D. Stoller",
  title =        "From datalog rules to efficient programs with time and
                 space guarantees",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "6",
  pages =        "21:1--21:38",
  month =        aug,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1552309.1552311",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Aug 24 13:23:06 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article describes a method for transforming any
                 given set of Datalog rules into an efficient
                 specialized implementation with guaranteed worst-case
                 time and space complexities, and for computing the
                 complexities from the rules. The running time is
                 optimal in the sense that only useful combinations of
                 facts that lead to all hypotheses of a rule being
                 simultaneously true are considered, and each such
                 combination is considered exactly once in constant
                 time. The associated space usage may sometimes be
                 reduced using scheduling optimizations to eliminate
                 some summands in the space usage formula. The
                 transformation is based on a general method for
                 algorithm design that exploits fixed-point computation,
                 incremental maintenance of invariants, and combinations
                 of indexed and linked data structures. We apply the
                 method to a number of analysis problems, some with
                 improved algorithm complexities and all with greatly
                 improved algorithm understanding and greatly simplified
                 complexity analysis.",
  acknowledgement = ack-nhfb,
  articleno =    "21",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Complexity analysis; data structure design; Datalog;
                 incremental computation; indexed representations;
                 indexing; linked representations; optimization; program
                 transformation; recursion; tabling",
}

@Article{Dolev:2009:SSP,
  author =       "Shlomi Dolev and Yinnon Haviv and Mooly Sagiv",
  title =        "Self-stabilization preserving compiler",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "6",
  pages =        "22:1--22:22",
  month =        aug,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1552309.1552312",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Aug 24 13:23:06 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Self-stabilization is an elegant approach for
                 designing fault tolerant systems. A system is
                 considered self-stabilizing if, starting in any state,
                 it converges to the desired behavior. Self-stabilizing
                 algorithms were designed for solving fundamental
                 distributed tasks, such as leader election, token
                 circulation and communication network protocols. The
                 algorithms were expressed using guarded commands or
                 pseudo-code. The realization of these algorithms
                 requires the existence of a (self-stabilizing)
                 infrastructure such as a self-stabilizing
                 microprocessor and a self-stabilizing operating system
                 for their execution. Moreover, the high-level
                 description of the algorithms needs to be converted
                 into machine language of the microprocessor. In this
                 article, we present our design for a self-stabilization
                 preserving compiler. The compiler we designed and
                 implemented transforms programs written in a language
                 similar to the abstract state machine (ASM). The
                 compiler preserves the stabilization property of the
                 high level program.",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "abstract state machines; Compilers;
                 self-stabilization",
}

@Article{Bartoletti:2009:LPR,
  author =       "Massimo Bartoletti and Pierpaolo Degano and Gian-Luigi
                 Ferrari and Roberto Zunino",
  title =        "Local policies for resource usage analysis",
  journal =      j-TOPLAS,
  volume =       "31",
  number =       "6",
  pages =        "23:1--23:43",
  month =        aug,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1552309.1552313",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Aug 24 13:23:06 MDT 2009",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "An extension of the $\lambda$-calculus is proposed, to
                 study resource usage analysis and verification. It
                 features usage policies with a possibly nested, local
                 scope, and dynamic creation of resources. We define a
                 type and effect system that, given a program, extracts
                 a history expression, that is, a sound
                 overapproximation to the set of histories obtainable at
                 runtime. After a suitable transformation, history
                 expressions are model-checked for validity. A program
                 is resource-safe if its history expression is verified
                 valid: If such, no runtime monitor is needed to safely
                 drive its executions.",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "model-checking; type and effect systems; Usage
                 policies",
}

@Article{Harman:2009:DCS,
  author =       "Mark Harman and David Binkley and Keith Gallagher and
                 Nicolas Gold and Jens Krinke",
  title =        "Dependence clusters in source code",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "1",
  pages =        "1:1--1:33",
  month =        oct,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1596527.1596528",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:16 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "A dependence cluster is a set of program statements,
                 all of which are mutually inter-dependent. This article
                 reports a large scale empirical study of dependence
                 clusters in C program source code. The study reveals
                 that large dependence clusters are surprisingly
                 commonplace. Most of the 45 programs studied have
                 clusters of dependence that consume more than 10\% of
                 the whole program. Some even have clusters consuming
                 80\% or more. The widespread existence of clusters has
                 implications for source code analyses such as program
                 comprehension, software maintenance, software testing,
                 reverse engineering, reuse, and parallelization.",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Dependence; program comprehension; program slicing",
}

@Article{Hosoya:2009:PPX,
  author =       "Haruo Hosoya and Alain Frisch and Giuseppe Castagna",
  title =        "Parametric polymorphism for {XML}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "1",
  pages =        "2:1--2:56",
  month =        oct,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1596527.1596529",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:16 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Despite the extensiveness of recent investigations on
                 static typing for XML, parametric polymorphism has
                 rarely been treated. This well-established typing
                 discipline can also be useful in XML processing in
                 particular for programs involving ``parametric
                 schemas,'' that is, schemas parameterized over other
                 schemas (e.g., SOAP). The difficulty in treating
                 polymorphism for XML lies in how to extend the
                 ``semantic'' approach used in the mainstream
                 (monomorphic) XML type systems. A naive extension would
                 be ``semantic'' quantification over all substitutions
                 for type variables. However, this approach reduces to
                 an NEXPTIME-complete problem for which no practical
                 algorithm is known and induces a subtyping relation
                 that may not always match the programmer's intuition.
                 In this article, we propose a different method that
                 smoothly extends the semantic approach yet is
                 algorithmically easier. The key idea here is to devise
                 a novel and simple {\em marking\/} technique, where we
                 interpret a polymorphic type as a set of values with
                 annotations of which subparts are parameterized. We
                 exploit this interpretation in every ingredient of our
                 polymorphic type system such as subtyping, inference of
                 type arguments, etc. As a result, we achieve a sensible
                 system that directly represents a usual expected
                 behavior of polymorphic type systems --- ``values of
                 abstract types are never reconstructed'' --- in a
                 reminiscence of Reynold's parametricity theory. Also,
                 we obtain a set of practical algorithms for
                 typechecking by local modifications to existing ones
                 for a monomorphic system.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "polymorphism; subtyping; tree automata; XML",
}

@Article{Acar:2009:EAS,
  author =       "Umut A. Acar and Guy E. Blelloch and Matthias Blume
                 and Robert Harper and Kanat Tangwongsan",
  title =        "An experimental analysis of self-adjusting
                 computation",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "1",
  pages =        "3:1--3:53",
  month =        oct,
  year =         "2009",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1596527.1596530",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:16 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Recent work on adaptive functional programming (AFP)
                 developed techniques for writing programs that can
                 respond to modifications to their data by performing
                 {\em change propagation}. To achieve this, executions
                 of programs are represented with {\em dynamic
                 dependence graphs\/} (DDGs) that record data
                 dependences and control dependences in a way that a
                 change-propagation algorithm can update the computation
                 as if the program were from scratch, by re-executing
                 only the parts of the computation affected by the
                 changes. Since change-propagation only re-executes
                 parts of the computation, it can respond to certain
                 incremental modifications asymptotically faster than
                 recomputing from scratch, potentially offering
                 significant speedups. Such asymptotic speedups,
                 however, are rare: for many computations and
                 modifications, change propagation is no faster than
                 recomputing from scratch.\par

                 In this article, we realize a duality between dynamic
                 dependence graphs and memoization, and combine them to
                 give a change-propagation algorithm that can
                 dramatically increase computation reuse. The key idea
                 is to use DDGs to identify and re-execute the parts of
                 the computation that are affected by modifications,
                 while using memoization to identify the parts of the
                 computation that remain unaffected by the changes. We
                 refer to this approach as self-adjusting computation.
                 Since DDGs are imperative, but (traditional)
                 memoization requires purely functional computation,
                 reusing computation correctly via memoization becomes a
                 challenge. We overcome this challenge with a technique
                 for remembering and reusing not just the results of
                 function calls (as in conventional memoization), but
                 their executions represented with DDGs. We show that
                 the proposed approach is realistic by describing a
                 library for self-adjusting computation, presenting
                 efficient algorithms for realizing the library, and
                 describing and evaluating an implementation. Our
                 experimental evaluation with a variety of applications,
                 ranging from simple list primitives to more
                 sophisticated computational geometry algorithms, shows
                 that the approach is effective in practice: compared to
                 recomputing from-scratch; self-adjusting programs
                 respond to small modifications to their data orders of
                 magnitude faster.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Computational geometry; dynamic algorithms; dynamic
                 dependence graphs; memoization; performance;
                 self-adjusting computation",
}

@Article{Markstrum:2010:JDP,
  author =       "Shane Markstrum and Daniel Marino and Matthew Esquivel
                 and Todd Millstein and Chris Andreae and James Noble",
  title =        "{JavaCOP}: {Declarative} pluggable types for {Java}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "2",
  pages =        "4:1--4:37",
  month =        jan,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1667048.1667049",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:35 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Pluggable types enable users to enforce multiple type
                 systems in one programming language. We have developed
                 a suite of tools, called the JavaCOP framework, that
                 allows developers to create pluggable type systems for
                 Java. JavaCOP provides a simple declarative language in
                 which program constraints are defined over a program's
                 abstract syntax tree. The JavaCOP compiler
                 automatically enforces these constraints on programs
                 during compilation. The JavaCOP framework also includes
                 a dataflow analysis API in order to support type
                 systems which depend on flow-sensitive information.
                 Finally, JavaCOP includes a novel test framework which
                 helps users gain confidence in the correctness of their
                 pluggable type systems. We demonstrate the framework by
                 discussing a number of pluggable type systems which
                 have been implemented in JavaCOP in order to detect
                 errors and enforce strong invariants in programs. These
                 type systems range from general-purpose checkers, such
                 as a type system for nonnull references, to
                 domain-specific ones, such as a checker for conformance
                 to a library's usage rules.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "JavaCOP; pluggable type systems",
}

@Article{Jeannet:2010:RAI,
  author =       "Bertrand Jeannet and Alexey Loginov and Thomas Reps
                 and Mooly Sagiv",
  title =        "A relational approach to interprocedural shape
                 analysis",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "2",
  pages =        "5:1--5:52",
  month =        jan,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1667048.1667050",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:35 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article addresses the verification of properties
                 of imperative programs with recursive procedure calls,
                 heap-allocated storage, and destructive updating of
                 pointer-valued fields, that is, {\em interprocedural
                 shape analysis}. The article makes three
                 contributions.\par

                 --- It introduces a new method for abstracting
                 relations over memory configurations for use in
                 abstract interpretation.\par

                 --- It shows how this method furnishes the elements
                 needed for a compositional approach to shape analysis.
                 In particular, abstracted relations are used to
                 represent the shape transformation performed by a
                 sequence of operations, and an overapproximation to
                 relational composition can be performed using the meet
                 operation of the domain of abstracted
                 relations.\par

                 --- It applies these ideas in a new algorithm for
                 context-sensitive interprocedural shape analysis. The
                 algorithm creates procedure summaries using abstracted
                 relations over memory configurations, and the
                 meet-based composition operation provides a way to
                 apply the summary transformer for a procedure {\em P\/}
                 at each call site from which {\em P\/} is
                 called.\par

                 The algorithm has been applied successfully to
                 establish properties of both (i) recursive programs
                 that manipulate lists and (ii) recursive programs that
                 manipulate binary trees.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "3-valued logic; Abstract interpretation;
                 context-sensitive analysis; destructive updating;
                 interprocedural dataflow analysis; pointer analysis;
                 shape analysis; static analysis",
}

@Article{Knowles:2010:HTC,
  author =       "Kenneth Knowles and Cormac Flanagan",
  title =        "Hybrid type checking",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "2",
  pages =        "6:1--6:34",
  month =        jan,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1667048.1667051",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:35 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Traditional static type systems are effective for
                 verifying basic interface specifications. Dynamically
                 checked contracts support more precise specifications,
                 but these are not checked until runtime, resulting in
                 incomplete detection of defects. Hybrid type checking
                 is a synthesis of these two approaches that enforces
                 precise interface specifications, via static analysis
                 where possible, but also via dynamic checks where
                 necessary. This article explores the key ideas and
                 implications of hybrid type checking, in the context of
                 the \lambda -calculus extended with {\em contract
                 types}, that is, with dependent function types and with
                 arbitrary refinements of base types.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "contracts; dynamic checking; static checking; Type
                 systems",
}

@Article{Ahmed:2010:SFT,
  author =       "Amal Ahmed and Andrew W. Appel and Christopher D.
                 Richards and Kedar N. Swadi and Gang Tan and Daniel C.
                 Wang",
  title =        "Semantic foundations for typed assembly languages",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "3",
  pages =        "7:1--7:67",
  month =        mar,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1709093.1709094",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:48 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Typed Assembly Languages (TALs) are used to validate
                 the safety of machine-language programs. The
                 Foundational Proof-Carrying Code project seeks to
                 verify the soundness of TALs using the smallest
                 possible set of axioms: the axioms of a suitably
                 expressive logic plus a specification of machine
                 semantics. This article proposes general semantic
                 foundations that permit modular proofs of the soundness
                 of TALs. These semantic foundations include Typed
                 Machine Language (TML), a type theory for specifying
                 properties of low-level data with powerful and
                 orthogonal type constructors, and {\em L\/}$_{{\em
                 c\/}}$, a compositional logic for specifying properties
                 of machine instructions with simplified reasoning about
                 unstructured control flow. Both of these components,
                 whose semantics we specify using higher-order logic,
                 are useful for proving the soundness of TALs. We
                 demonstrate this by using TML and {\em L\/}$_{{\em
                 c\/}}$ to verify the soundness of a low-level, typed
                 assembly language, LTAL, which is the target of our
                 core-ML-to-sparc compiler.\par

                 To prove the soundness of the TML type system we have
                 successfully applied a new approach, that of {\em
                 step-indexed logical relations}. This approach provides
                 the first semantic model for a type system with
                 updatable references to values of impredicative
                 quantified types. Both impredicative polymorphism and
                 mutable references are essential when representing
                 function closures in compilers with typed closure
                 conversion, or when compiling objects to simpler typed
                 primitives.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "control flow; logical relations; proof-carrying code;
                 semantic models; Typed assembly languages",
}

@Article{Spoto:2010:TAJ,
  author =       "Fausto Spoto and Fred Mesnard and {\'E}tienne Payet",
  title =        "A termination analyzer for {Java} bytecode based on
                 path-length",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "3",
  pages =        "8:1--8:70",
  month =        mar,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1709093.1709095",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:48 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "It is important to prove that supposedly terminating
                 programs actually terminate, particularly if those
                 programs must be run on critical systems or downloaded
                 into a client such as a mobile phone. Although
                 termination of computer programs is generally
                 undecidable, it is possible and useful to prove
                 termination of a large, nontrivial subset of the
                 terminating programs. In this article, we present our
                 termination analyzer for sequential Java bytecode,
                 based on a program property called {\em path-length}.
                 We describe the analyses which are needed before the
                 path-length can be computed such as sharing, cyclicity,
                 and aliasing. Then we formally define the path-length
                 analysis and prove it correct with respect to a
                 reference denotational semantics of the bytecode. We
                 show that a constraint logic program {\em P\/}$_{{\em
                 CLP\/}}$ can be built from the result of the
                 path-length analysis of a Java bytecode program {\em
                 P\/} and formally prove that if {\em P\/}$_{{\em
                 CLP\/}}$ terminates, then {\em P\/} also terminates.
                 Hence a termination prover for constraint logic
                 programs can be applied to prove the termination of
                 {\em P}. We conclude with some discussion of the
                 possibilities and limitations of our approach. Ours is
                 the first existing termination analyzer for Java
                 bytecode dealing with any kind of data structures
                 dynamically allocated on the heap and which does not
                 require any help or annotation on the part of the
                 user.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Abstract interpretation; Java; Java bytecode;
                 termination analysis",
}

@Article{Nieuwpoort:2010:SHL,
  author =       "Rob V. Van Nieuwpoort and Gosia Wrzesi{\'n}ska and
                 Ceriel J. H. Jacobs and Henri E. Bal",
  title =        "{Satin}: {A} high-level and efficient grid programming
                 model",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "3",
  pages =        "9:1--9:39",
  month =        mar,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1709093.1709096",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:48 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Computational grids have an enormous potential to
                 provide compute power. However, this power remains
                 largely unexploited today for most applications, except
                 trivially parallel programs. Developing parallel grid
                 applications simply is too difficult. Grids introduce
                 several problems not encountered before, mainly due to
                 the highly heterogeneous and dynamic computing and
                 networking environment. Furthermore, failures occur
                 frequently, and resources may be claimed by
                 higher-priority jobs at any time.\par

                 In this article, we solve these problems for an
                 important class of applications: divide-and-conquer. We
                 introduce a system called Satin that simplifies the
                 development of parallel grid applications by providing
                 a rich high-level programming model that completely
                 hides communication. All grid issues are transparently
                 handled in the runtime system, not by the programmer.
                 Satin's programming model is based on Java, features
                 spawn-sync primitives and shared objects, and uses
                 asynchronous exceptions and an abort mechanism to
                 support speculative parallelism.\par

                 To allow an efficient implementation, Satin
                 consistently exploits the idea that grids are
                 hierarchically structured. Dynamic load-balancing is
                 done with a novel cluster-aware scheduling algorithm
                 that hides the long wide-area latencies by overlapping
                 them with useful local work. Satin's shared object
                 model lets the application define the consistency model
                 it needs. If an application needs only loose
                 consistency, it does not have to pay high performance
                 penalties for wide-area communication and
                 synchronization.\par

                 We demonstrate how grid problems such as resource
                 changes and failures can be handled transparently and
                 efficiently. Finally, we show that adaptivity is
                 important in grids. Satin can increase performance
                 considerably by adding and removing compute resources
                 automatically, based on the application's requirements
                 and the utilization of the machines and networks in the
                 grid.\par

                 Using an extensive evaluation on real grids with up to
                 960 cores, we demonstrate that it is possible to
                 provide a simple high-level programming model for
                 divide-and-conquer applications, while achieving
                 excellent performance on grids. At the same time, we
                 show that the divide-and-conquer model scales better on
                 large systems than the master-worker approach, since it
                 has no single central bottleneck.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "divide-and-conquer; Grid computing; programming
                 model",
}

@Article{Mckinley:2010:DVT,
  author =       "Kathryn S. Mckinley and Keshav Pingali",
  title =        "La dolce vita at {TOPLAS}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "10:1--10:6",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734207",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Zhuang:2010:OFE,
  author =       "Xiaotong Zhuang and Santosh Pande",
  title =        "An optimization framework for embedded processors with
                 auto-addressing mode",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "11:1--11:41",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734208",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Modern embedded processors with dedicated address
                 generation unit support memory accesses through
                 auto-increment/decrement addressing mode. The
                 auto-increment/decrement mode, if properly utilized,
                 can save address arithmetic instructions, reduce static
                 and dynamic memory footprint of the program, and speed
                 up the execution as well.\par

                 Liao [1995, 1996] categorized this problem as Simple
                 Offset Assignment (SOA) and General Offset Assignment
                 (GOA), which involves storage layout of variables and
                 assignment of address registers, respectively,
                 proposing several heuristic solutions. This article
                 proposes a new direction for investigating the solution
                 space of the problem. The general idea [Zhuang 2003] is
                 to perform simplification of the underlying access
                 graph through coalescence of the memory locations of
                 program variables. A comprehensive framework is
                 proposed including coalescence-based offset assignment
                 and post/pre-optimization. Variables not interfering
                 with others (not simultaneously live at any program
                 point) can be coalesced into the same memory location.
                 Coalescing allows simplifications of the access graph
                 yielding better SOA solutions; it also reduces the
                 address register pressure to such low values that some
                 GOA solutions become optimal. Moreover, it can reduce
                 the memory footprint both statically and at runtime for
                 stack variables. Our second optimization
                 (post/pre-optimization) considers both post- and
                 pre-modification mode for optimizing code across basic
                 blocks, which makes it useful. Making use of both
                 addressing modes further reduces SOA/GOA cost and our
                 post/pre-optimization phase is optimal in selecting
                 post or pre mode after variable offsets have been
                 determined.\par

                 We have shown the advantages of our framework over
                 previous approaches to capture more opportunities to
                 reduce both stack size and SOA/GOA cost, leading to
                 more speedup.",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "auto-modification addressing mode; digital signal
                 processing; GOA; layout assignment; Offset assignment;
                 SOA; variable coalescence",
}

@Article{Sewell:2010:NPP,
  author =       "Peter Sewell and Pawe{\l} T. Wojciechowski and Asis
                 Unyapoth",
  title =        "Nomadic pict: {Programming} languages, communication
                 infrastructure overlays, and semantics for mobile
                 computation",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "12:1--12:63",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734209",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Mobile computation, in which executing computations
                 can move from one physical computing device to another,
                 is a recurring theme: from OS process migration, to
                 language-level mobility, to virtual machine migration.
                 This article reports on the design, implementation, and
                 verification of overlay networks to support reliable
                 communication between migrating computations, in the
                 Nomadic Pict project. We define two levels of
                 abstraction as calculi with precise semantics: a
                 low-level Nomadic \pi calculus with migration and
                 location-dependent communication, and a high-level
                 calculus that adds location-independent communication.
                 Implementations of location-independent communication,
                 as overlay networks that track migrations and forward
                 messages, can be expressed as translations of the
                 high-level calculus into the low. We discuss the design
                 space of such overlay network algorithms and define
                 three precisely, as such translations. Based on the
                 calculi, we design and implement the Nomadic Pict
                 distributed programming language, to let such
                 algorithms (and simple applications above them) to be
                 quickly prototyped. We go on to develop the semantic
                 theory of the Nomadic \pi calculi, proving correctness
                 of one example overlay network. This requires novel
                 equivalences and congruence results that take migration
                 into account, and reasoning principles for agents that
                 are temporarily immobile (e.g., waiting on a lock
                 elsewhere in the system). The whole stands as a
                 demonstration of the use of principled semantics to
                 address challenging system design problems.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Suhendra:2010:SAC,
  author =       "Vivy Suhendra and Abhik Roychoudhury and Tulika
                 Mitra",
  title =        "Scratchpad allocation for concurrent embedded
                 software",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "13:1--13:47",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734210",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Software-controlled scratchpad memory is increasingly
                 employed in embedded systems as it offers better timing
                 predictability compared to caches. Previous scratchpad
                 allocation algorithms typically consider single-process
                 applications. But embedded applications are mostly
                 multitasking with real-time constraints, where the
                 scratchpad memory space has to be shared among
                 interacting processes that may preempt each other. In
                 this work, we develop a novel dynamic scratchpad
                 allocation technique that takes these process
                 interferences into account to improve the performance
                 and predictability of the memory system. We model the
                 application as a Message Sequence Chart (MSC) to best
                 capture the interprocess interactions. Our goal is to
                 optimize the Worst-Case Response Time (WCRT) of the
                 application through runtime reloading of the scratchpad
                 memory content at appropriate execution points. We
                 propose an iterative allocation algorithm that consists
                 of two critical steps: (1) analyze the MSC along with
                 the existing allocation to determine potential
                 interference patterns, and (2) exploit this
                 interference information to tune the scratchpad
                 reloading points and content so as to best improve the
                 WCRT. We present various alternative scratchpad
                 allocation heuristics and evaluate their effectiveness
                 in reducing the WCRT. The scheme is also extended to
                 work on Message Sequence Graph models. We evaluate our
                 memory allocation scheme on two real-world embedded
                 applications controlling an Unmanned Aerial Vehicle
                 (UAV) and an in-orbit monitoring instrument,
                 respectively.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "compiler controlled memories; message sequence chart;
                 multicore architectures; Scratchpad memory; UML
                 sequence diagram; worst-case response time",
}

@Article{Welch:2010:SCF,
  author =       "Peter H. Welch and Jan B. Pedersen",
  title =        "{Santa Claus}: {Formal} analysis of a process-oriented
                 solution",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "14:1--14:37",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734211",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "With the commercial development of multicore
                 processors, the challenges of writing multithreaded
                 programs to take advantage of these new hardware
                 architectures are becoming more and more pertinent.
                 Concurrent programming is necessary to achieve the
                 performance that the hardware offers. Traditional
                 approaches present concurrency as an {\em advanced\/}
                 topic: they have proven difficult to use, reason about
                 with confidence, and scale up to high levels of
                 concurrency. This article reviews {\em process-oriented
                 design}, based on Hoare's algebra of Communicating
                 Sequential Processes (CSP), and proposes that this
                 approach to concurrency leads to solutions that are
                 manageable by novice programmers; that is, they are
                 easy to design and maintain, that they are scalable for
                 complexity, {\em obviously correct}, and relatively
                 easy to verify using formal reasoning and/or model
                 checkers. These solutions can be developed in
                 conventional programming languages (through CSP
                 libraries) or specialized ones (such as occam-\pi) in a
                 manner that directly reflects their formal expression.
                 Systems can be developed without needing specialist
                 knowledge of the CSP formalism, since the supporting
                 mathematics is burnt into the tools and languages
                 supporting it. We illustrate these concepts with the
                 {\em Santa Claus problem}, which has been used as a
                 challenge for concurrency mechanisms since 1994. We
                 consider this problem as an example control system,
                 producing external signals reporting changes of
                 internal state (that model the external world). We
                 claim our occam-\pi solution is {\em
                 correct-by-design}, but follow this up with formal
                 verification (using the FDR model checker for CSP) that
                 the system is free from deadlock and livelock, that the
                 produced control signals obey crucial ordering
                 constraints, and that the system has key liveness
                 properties.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency; CSP; deadlock; event ordering; liveness;
                 novice programmer; occam-pi; Process orientation;
                 verification",
}

@Article{Huang:2010:DBR,
  author =       "Yuqiang Huang and Bruce R. Childers and Mary Lou
                 Soffa",
  title =        "Detecting bugs in register allocation",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "4",
  pages =        "15:1--15:36",
  month =        apr,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1734206.1734212",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:47:03 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Although register allocation is critical for
                 performance, the implementation of register allocation
                 algorithms is difficult, due to the complexity of the
                 algorithms and target machine architectures. It is
                 particularly difficult to detect register allocation
                 errors if the output code runs to completion, as bugs
                 in the register allocator can cause the compiler to
                 produce incorrect output code. The output code may even
                 execute properly on some test data, but errors can
                 remain. In this article, we propose novel data flow
                 analyses to statically check that the value flow of the
                 output code from the register allocator is the same as
                 the value flow of its input code. The approach is
                 accurate, fast, and can identify and report error
                 locations and types. It is independent of the register
                 allocator and uses only the input and output code of
                 the register allocator. It can be used with different
                 register allocators, including those that perform
                 coalescing and rematerialization. The article describes
                 our approach, called SARAC, and a tool that statically
                 checks a register allocation and reports the errors and
                 their types that it finds. The tool has an average
                 compile-time overhead of only 8\% and a modest average
                 memory overhead of 85KB. Our techniques can be used by
                 compiler developers during regression testing and as a
                 command-line-enabled debugging pass for mysterious
                 compiler behavior.",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Register allocation",
}

@Article{Kobayashi:2010:HTS,
  author =       "Naoki Kobayashi and Davide Sangiorgi",
  title =        "A hybrid type system for lock-freedom of mobile
                 processes",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "16:1--16:49",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1745312.1745313",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We propose a type system for lock-freedom in the
                 $\pi$-calculus, which guarantees that certain
                 communications will eventually succeed. Distinguishing
                 features of our type system are: it can verify
                 lock-freedom of concurrent programs that have
                 sophisticated recursive communication structures; it
                 can be fully automated; it is hybrid, in that it
                 combines a type system for lock-freedom with local
                 reasoning about deadlock-freedom, termination, and
                 confluence analyses. Moreover, the type system is
                 parameterized by deadlock-freedom\slash
                 termination\slash confluence analyses, so that any
                 methods (e.g. type systems and model checking) can be
                 used for those analyses. A lock-freedom analysis tool
                 has been implemented based on the proposed type system,
                 and tested for nontrivial programs.",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "concurrency; mobile processes; Type systems",
}

@Article{Jeffrey:2010:ESA,
  author =       "Dennis Jeffrey and Vijay Nagarajan and Rajiv Gupta and
                 Neelam Gupta",
  title =        "Execution suppression: {An} automated iterative
                 technique for locating memory errors",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "17:1--17:36",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1745312.1745314",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "By studying the behavior of several programs that
                 crash due to memory errors, we observed that locating
                 the errors can be challenging because significant
                 propagation of corrupt memory values can occur prior to
                 the point of the crash. In this article, we present an
                 automated approach for locating memory errors in the
                 presence of memory corruption propagation. Our approach
                 leverages the information revealed by a program crash:
                 when a crash occurs, this reveals a subset of the
                 memory corruption that exists in the execution. By
                 suppressing (nullifying) the effect of this known
                 corruption during execution, the crash is avoided and
                 any remaining (hidden) corruption may then be exposed
                 by subsequent crashes. The newly exposed corruption can
                 then be suppressed in turn. By iterating this process
                 until no further crashes occur, the first point of
                 memory corruption --- and the likely root cause of the
                 program failure --- can be identified. However, this
                 iterative approach may terminate prematurely, since
                 programs may not crash even when memory corruption is
                 present during execution. To address this, we show how
                 crashes can be exposed in an execution by manipulating
                 the relative ordering of particular variables within
                 memory. By revealing crashes through this variable
                 re-ordering, the effectiveness and applicability of the
                 execution suppression approach can be improved. We
                 describe a set of experiments illustrating the
                 effectiveness of our approach in consistently and
                 precisely identifying the first points of memory
                 corruption in executions that fail due to memory
                 errors. We also discuss a baseline software
                 implementation of execution suppression that incurs an
                 average overhead of 7.2x, and describe how to reduce
                 this overhead to 1.8x through hardware support.",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Execution suppression; fault localization; hardware
                 support; memory corruption propagation; memory errors;
                 variable re-ordering",
}

@Article{Yahav:2010:VSP,
  author =       "Eran Yahav and Mooly Sagiv",
  title =        "Verifying safety properties of concurrent
                 heap-manipulating programs",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "18:1--18:50",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1745312.1745315",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We provide a parametric framework for verifying safety
                 properties of concurrent heap-manipulating programs.
                 The framework combines thread-scheduling information
                 with information about the shape of the heap. This
                 leads to verification algorithms that are more precise
                 than existing techniques. The framework also provides a
                 precise shape-analysis algorithm for concurrent
                 programs. In contrast to most existing verification
                 techniques, we do not put a bound on the number of
                 allocated objects. The framework produces interesting
                 results even when analyzing programs with an unbounded
                 number of threads. The framework is applied to
                 successfully verify the following properties of a
                 concurrent program:\par

                 --- Concurrent manipulation of linked-list based ADT
                 preserves the ADT datatype invariant.\par

                 --- The program does not perform inconsistent updates
                 due to interference.\par

                 --- The program does not reach a deadlock.\par

                 --- The program does not produce runtime errors due to
                 illegal thread interactions.\par

                 We also found bugs in erroneous programs violating such
                 properties. A prototype of our framework has been
                 implemented and applied to small, but interesting,
                 example programs.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Abstract interpretation; concurrency; Java; safety
                 properties; shape-analysis; verification",
}

@Article{Apel:2010:CUF,
  author =       "Sven Apel and Delesley Hutchins",
  title =        "A calculus for uniform feature composition",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "19:1--19:33",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1745312.1745316",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The goal of {\em feature-oriented programming\/} (FOP)
                 is to modularize software systems in terms of features.
                 A {\em feature\/} refines the content of a base
                 program. Both base programs and features may contain
                 various kinds of software artifacts, for example,
                 source code in different languages, models, build
                 scripts, and documentation. We and others have noticed
                 that when composing features, different kinds of
                 software artifacts can be refined in a uniform way,
                 regardless of what they represent. We present gDeep, a
                 core calculus for feature composition, which captures
                 the language independence of FOP; it can be used to
                 compose features containing many different kinds of
                 artifact in a type-safe way. The calculus allows us to
                 gain insight into the principles of FOP and to define
                 general algorithms for feature composition and
                 validation. We provide the formal syntax, operational
                 semantics, and type system of gDeep and outline how
                 languages like Java, Haskell, Bali, and XML can be
                 plugged in.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "feature composition; Feature-oriented programming;
                 principle of uniformity; type systems",
}

@Article{Mckinley:2010:PVT,
  author =       "Kathryn S. Mckinley and Keshav Pingali",
  title =        "La prossima vita at {TOPLAS}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "6",
  pages =        "20:1--20:1",
  month =        aug,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1749608.1749609",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 8 18:52:47 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Ruggieri:2010:TLC,
  author =       "Salvatore Ruggieri and Fred Mesnard",
  title =        "Typing linear constraints",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "6",
  pages =        "21:1--21:42",
  month =        aug,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1749608.1749610",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 8 18:52:47 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We present a type system for linear constraints over
                 the reals intended for reasoning about the input-output
                 directionality of variables. Types model the properties
                 of definiteness, range width or approximation, lower
                 and upper bounds of variables in a linear constraint.
                 Several proof procedures are presented for inferring
                 the type of a variable and for checking validity of
                 type assertions. We rely on theory and tools for linear
                 programming problems, linear algebra, parameterized
                 polyhedra and negative constraints. An application of
                 the type system is proposed in the context of the
                 static analysis of constraint logic programs. Type
                 assertions are at the basis of the extension of
                 well-moding from pure logic programming. The proof
                 procedures (both for type assertion validity and for
                 well-moding) are implemented and their computational
                 complexity is discussed. We report experimental results
                 demonstrating the efficiency in practice of the
                 proposed approach.",
  acknowledgement = ack-nhfb,
  articleno =    "21",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "constraint logic programming; definiteness; Linear
                 constraints; polyhedra; well-moding",
}

@Article{Boyland:2010:SFP,
  author =       "John Tang Boyland",
  title =        "Semantics of fractional permissions with nesting",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "6",
  pages =        "22:1--22:33",
  month =        aug,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1749608.1749611",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 8 18:52:47 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Permissions specify mutable state that can be accessed
                 by a program. Fractions distinguish write access (1)
                 from read access (any smaller fraction). Nesting can
                 model object invariants and ownership. Fractional
                 permissions provides a foundation the meaning of many
                 of access-based annotations: uniqueness, read-only,
                 immutability, method effects, guarded state, etc. The
                 semantics of fractional permissions with nesting is
                 given in terms of ``fractional heaps.'' We show that
                 the fraction law {\Pi} {\equiv} 1/2 {\Pi} + 1/2 {\Pi}
                 permits sound reasoning and that nesting can be carried
                 out safely using only local reasoning.",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Balakrishnan:2010:WWY,
  author =       "Gogul Balakrishnan and Thomas Reps",
  title =        "{WYSINWYX}: {What} you see is not what you {eXecute}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "6",
  pages =        "23:1--23:84",
  month =        aug,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1749608.1749612",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 8 18:52:47 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Over the last seven years, we have developed
                 static-analysis methods to recover a good approximation
                 to the variables and dynamically allocated memory
                 objects of a stripped executable, and to track the flow
                 of values through them. The article presents the
                 algorithms that we developed, explains how they are
                 used to recover Intermediate Representations (IRs) from
                 executables that are similar to the IRs that would be
                 available if one started from source code, and
                 describes their application in the context of program
                 understanding and automated bug hunting.\par

                 Unlike algorithms for analyzing executables that
                 existed prior to our work, the ones presented in this
                 article provide useful information about memory
                 accesses, even in the absence of debugging information.
                 The ideas described in the article are incorporated in
                 a tool for analyzing Intel x86 executables, called
                 CodeSurfer/x86. CodeSurfer/x86 builds a system
                 dependence graph for the program, and provides a GUI
                 for exploring the graph by (i) navigating its edges,
                 and (ii) invoking operations, such as forward slicing,
                 backward slicing, and chopping, to discover how parts
                 of the program can impact other parts.\par

                 To assess the usefulness of the IRs recovered by
                 CodeSurfer/x86 in the context of automated bug hunting,
                 we built a tool on top of CodeSurfer/x86, called
                 Device-Driver Analyzer for x86 (DDA/x86), which
                 analyzes device-driver executables for bugs. Without
                 the benefit of either source code or
                 symbol-table/debugging information, DDA/x86 was able to
                 find known bugs (that had been discovered previously by
                 source-code analysis tools), along with useful error
                 traces, while having a low false-positive rate. DDA/x86
                 is the first known application of program
                 analysis/verification techniques to industrial
                 executables.",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "Abstract interpretation; context-sensitive analysis;
                 data structure recovery; interprocedural dataflow
                 analysis; pointer analysis; reverse engineering; static
                 analysis",
}

@Article{Reps:2010:FDL,
  author =       "Thomas Reps and Mooly Sagiv and Alexey Loginov",
  title =        "Finite differencing of logical formulas for static
                 analysis",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "6",
  pages =        "24:1--24:55",
  month =        aug,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "http://doi.acm.org/10.1145/1749608.1749613",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Sep 8 18:52:47 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This article concerns mechanisms for maintaining the
                 value of an instrumentation relation (also known as a
                 {\em derived relation\/} or {\em view\/}), defined via
                 a logical formula over core relations, in response to
                 changes in the values of the core relations. It
                 presents an algorithm for transforming the
                 instrumentation relation's defining formula into a {\em
                 relation-maintenance formula\/} that captures what the
                 instrumentation relation's new value should be. The
                 algorithm runs in time linear in the size of the
                 defining formula.\par

                 The technique applies to program analysis problems in
                 which the semantics of statements is expressed using
                 logical formulas that describe changes to core relation
                 values. It provides a way to obtain values of the
                 instrumentation relations that reflect the changes in
                 core relation values produced by executing a given
                 statement.\par

                 We present experimental evidence that our technique is
                 an effective one: for a variety of benchmarks, the
                 relation-maintenance formulas produced automatically
                 using our approach yield the same precision as the best
                 available hand-crafted ones.",
  acknowledgement = ack-nhfb,
  articleno =    "24",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  keywords =     "3 - valued logic; Abstract interpretation; finite
                 differencing; materialized view; shape analysis; static
                 analysis",
}

@Article{Palsberg:2011:E,
  author =       "Jens Palsberg",
  title =        "Editorial",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "1",
  pages =        "1:1--1:1",
  month =        jan,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1889997.1889998",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 26 14:45:44 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Abadi:2011:STM,
  author =       "Mart{\'\i}n Abadi and Andrew Birrell and Tim Harris
                 and Michael Isard",
  title =        "Semantics of transactional memory and automatic mutual
                 exclusion",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "1",
  pages =        "2:1--2:50",
  month =        jan,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1889997.1889999",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 26 14:45:44 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Software Transactional Memory (STM) is an attractive
                 basis for the development of language features for
                 concurrent programming. However, the semantics of these
                 features can be delicate and problematic. In this
                 article we explore the trade-offs semantic simplicity,
                 the viability of efficient implementation strategies,
                 and the flexibility of language constructs.
                 Specifically, we develop semantics and type systems for
                 the constructs of the Automatic Mutual Exclusion (AME)
                 programming model; our results apply also to other
                 constructs, such as atomic blocks. With this semantics
                 as a point of reference, we study several
                 implementation strategies. We model STM systems that
                 use in-place update, optimistic concurrency, lazy
                 conflict detection, and rollback.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Pratikakis:2011:LPS,
  author =       "Polyvios Pratikakis and Jeffrey S. Foster and Michael
                 Hicks",
  title =        "{LOCKSMITH}: {Practical} static race detection for
                 {C}",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "1",
  pages =        "3:1--3:55",
  month =        jan,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1889997.1890000",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 26 14:45:44 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Locksmith is a static analysis tool for automatically
                 detecting data races in C programs. In this article, we
                 describe each of Locksmith's component analyses
                 precisely, and present systematic measurements that
                 isolate interesting trade-offs between precision and
                 efficiency in each analysis. Using a benchmark suite
                 comprising stand-alone applications and Linux device
                 drivers totaling more than 200,000 lines of code, we
                 found that a simple no-worklist strategy yielded the
                 most efficient interprocedural dataflow analysis; that
                 our sharing analysis was able to determine that most
                 locations are thread-local, and therefore need not be
                 protected by locks; that modeling C structs and void
                 pointers precisely is key to both precision and
                 efficiency; and that context sensitivity yields a much
                 more precise analysis, though with decreased
                 scalability.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Derrick:2011:MVP,
  author =       "John Derrick and Gerhard Schellhorn and Heike
                 Wehrheim",
  title =        "Mechanically verified proof obligations for
                 linearizability",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "1",
  pages =        "4:1--4:43",
  month =        jan,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1889997.1890001",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 26 14:45:44 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Concurrent objects are inherently complex to verify.
                 In the late 80s and early 90s, Herlihy and Wing
                 proposed linearizability as a correctness condition for
                 concurrent objects, which, once proven, allows us to
                 reason about concurrent objects using pre- and
                 postconditions only. A concurrent object is
                 linearizable if all of its operations appear to take
                 effect instantaneously some time between their
                 invocation and return. In this article we define
                 simulation-based proof conditions for linearizability
                 and apply them to two concurrent implementations, a
                 lock-free stack and a set with lock-coupling. Similar
                 to other approaches, we employ a theorem prover (here,
                 KIV) to mechanize our proofs.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Sangiorgi:2011:EBH,
  author =       "Davide Sangiorgi and Naoki Kobayashi and Eijiro
                 Sumii",
  title =        "Environmental bisimulations for higher-order
                 languages",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "1",
  pages =        "5:1--5:69",
  month =        jan,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "http://dx.doi.org/10.1145/1889997.1890002",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Wed Jan 26 14:45:44 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Developing a theory of bisimulation in higher-order
                 languages can be hard. Particularly challenging can be:
                 (1) the proof of congruence, as well as enhancements of
                 the bisimulation proof method with ``up-to context''
                 techniques, and (2) obtaining definitions and results
                 that scale to languages with different features. To
                 meet these challenges, we present environment
                 bisimulations, a form of bisimulation for higher-order
                 languages, and its basic theory. We consider four
                 representative calculi: pure $\lambda$-calculi
                 (call-by-name and call-by-value), call-by-value
                 $\lambda$-calculus with higher-order store, and then
                 Higher-Order &pi;-calculus. In each case: we present
                 the basic properties of environment bisimilarity,
                 including congruence; we show that it coincides with
                 contextual equivalence; we develop some up-to
                 techniques, including up-to context, as examples of
                 possible enhancements of the associated bisimulation
                 method.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
}

@Article{Huang:2011:MSS,
  author =       "Shan Shan Huang and Yannis Smaragdakis",
  title =        "Morphing: Structurally shaping a class by reflecting
                 on others",
  journal =