%%% -*-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 π-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 =