Entry VanHentenryck:1994:TAP from sigplan1990.bib
Last update: Thu Apr 12 03:37:15 MDT 2012
Top |
Symbols |
Numbers |
Math |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z
BibTeX entry
@Article{VanHentenryck:1994:TAP,
author = "P. {Van Hentenryck} and A. Cortesi and B. {Le
Charlier}",
title = "Type Analysis of {Prolog} using Type Graphs",
journal = j-SIGPLAN,
volume = "29",
number = "6",
pages = "337--348",
month = jun,
year = "1994",
CODEN = "SINODQ",
ISBN = "0-89791-598-4",
ISBN-13 = "978-0-89791-598-4",
ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)",
ISSN-L = "0362-1340",
bibdate = "Thu May 13 12:37:27 MDT 1999",
bibsource = "http://www.acm.org/pubs/contents/proceedings/pldi/178243/index.html",
URL = "http://www.acm.org:80/pubs/citations/proceedings/pldi/178243/p337-van_hentenryck/",
abstract = "Type analysis of Prolog is of primary importance for
high-performance compilers, since type information may
lead to better indexing and to sophisticated
specializations of unification and built-in predicates
to name a few. However, these optimizations often
require a sophisticated type inference system capable
of inferring disjunctive and recursive types and hence
expensive in computation time. The purpose of this
paper is to describe a type analysis system for Prolog
based on abstract interpretation and type graphs (i.e.
disjunctive rational trees) with this functionality.
The system (about 15,000 lines of C) consists of the
combination of a generic fixpoint algorithm, a generic
pattern domain, and a type graph domain. The main
contribution of the paper is to show that this approach
can be engineered to be practical for medium-sized
programs without sacrificing accuracy. The main
technical contributions to achieve this result are (1)
a novel widening operator for type graphs which appears
to be accurate and effective in keeping the sizes of
the graphs, and hence the computation time, reasonably
small; (2) the use of the generic pattern domain to
obtain a compact representation of equality constraints
between subterms and to factor out sure structural
information.",
acknowledgement = ack-nhfb,
annote = "Published as part of the Proceedings of PLDI'94.",
classification = "C4240 (Programming and algorithm theory); C6110L
(Logic programming); C6120 (File organisation); C6140D
(High level languages)",
conflocation = "Orlando, FL, USA; 20-24 June 1994",
conftitle = "ACM SIGPLAN '94 Conference on Programming Language
Design and Implementation (PLDI)",
corpsource = "Brown Univ., Providence, RI, USA",
keywords = "abstract interpretation; algorithms; built-in
predicates; compact representation; computation;
computation time; data structures; disjunctive rational
trees; equality constraints; generic fixpoint
algorithm; generic pattern domain; high-performance
compilers; languages; logic programming; medium-sized
programs; performance; PROLOG; Prolog; recursive types;
sophisticated type inference system; structural
information; structural information equality
constraints; type analysis; type analysis system; type
graphs; type theory",
sponsororg = "ACM",
subject = "{\bf D.3.4} Software, PROGRAMMING LANGUAGES,
Processors, Optimization. {\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. {\bf F.4.1} Theory of Computation,
MATHEMATICAL LOGIC AND FORMAL LANGUAGES, Mathematical
Logic. {\bf D.3.2} Software, PROGRAMMING LANGUAGES,
Language Classifications, Prolog.",
treatment = "P Practical",
}
Related entries
- accuracy,
25(6)112,
26(7)133,
27(9)76,
28(6)300,
28(12)43,
29(6)85,
29(6)97,
29(6)337,
29(11)132-1,
29(11)232,
30(6)196,
30(11)1
- accurate,
28(7)129,
29(6)1,
29(6)85,
29(6)218,
29(6)337,
29(11)242,
29(11)252,
30(6)67,
30(8)80-1,
30(8)207,
31(5)108,
32(12)63,
32(12)63
- achieve,
26(4)28,
26(6)145,
27(7)200,
27(9)248,
27(12)20,
28(6)237,
28(7)13,
28(7)64,
28(7)64-1,
28(7)83,
29(4)23,
29(6)337,
29(11)12,
29(11)38,
29(11)208,
29(11)232,
29(11)252,
30(3)23,
30(6)67,
30(6)279,
30(8)189,
30(8)207,
30(11)1,
32(6)75
- appear,
25(4)73,
25(6)189,
26(4)290,
28(6)197,
29(6)337,
29(11)219,
32(10)345-1,
32(10)345-5,
34(5)z,
34(5)z-1
- better,
25(6)296,
26(1)14,
27(7)44,
27(7)106,
27(7)200,
28(3)69,
28(6)268,
28(6)278,
28(7)179,
28(7)229,
29(6)49,
29(6)97,
29(6)186,
29(6)337,
29(8)59,
29(11)12,
29(11)171,
29(11)308,
29(11)328,
29(12)104,
30(3)23,
30(3)94,
30(6)151,
30(6)174,
30(8)189,
30(11)60,
30(11)70,
31(11)21,
31(11)21-1,
33(7)27
- built-in,
28(3)359,
29(6)337,
30(11)134
- C4240,
27(12)20,
28(6)1,
28(6)46,
28(6)78-1,
28(6)290,
28(7)44,
29(1)20,
29(2)39-1,
29(3)28,
29(4)23,
29(5)3,
29(6)24,
29(6)85,
29(6)97,
29(6)147,
29(6)171,
29(6)326,
29(6)349-1,
29(7)21,
29(7)42,
29(7)51,
29(8)84,
29(8)111,
29(8)129,
29(9)9,
29(9)51,
29(10)1,
29(10)16,
29(10)153,
29(10)164,
29(10)244,
29(10)324,
29(10)355,
29(10)427,
29(10)440,
30(6)47,
30(6)301,
30(8)92
- C6110L,
28(3)37,
29(1)13,
29(2)25,
29(6)349-1,
29(10)259
- capable,
25(6)53,
28(6)68,
28(7)129,
28(12)169,
29(6)337,
29(11)286
- combination,
25(6)272,
27(10)25,
28(6)278,
29(6)159,
29(6)337,
29(6)349,
29(6)349-1,
29(8)119,
30(6)116,
30(8)123,
33(7)27
- compact,
25(6)337,
27(3)61,
27(7)341,
28(6)237,
28(7)187,
29(6)337,
29(9)149,
29(10)355,
34(5)128
- consist,
25(6)337,
28(3)359,
28(7)239,
29(6)337,
29(8)22,
29(8)94,
29(11)158,
30(8)166,
30(8)217,
30(11)79
- contribution,
25(6)137,
27(7)152,
28(3)149,
28(3)345,
28(7)187,
29(6)337,
30(6)218
- Cortesi, A.,
29(6)337
- disjunctive,
29(6)337
- domain,
6(4)46,
25(6)189,
25(10)237,
26(9)52,
26(11)47,
27(10)166,
27(10)166-1,
29(6)337,
29(10)51,
29(10)341,
30(3)62,
30(8)134,
30(10)333,
30(11)7
- effective,
25(6)53,
26(6)177,
26(6)177-1,
26(6)219,
27(9)238,
28(6)300,
28(7)229,
28(8)90,
29(6)159,
29(6)337,
29(11)12,
29(11)76-1,
29(11)252,
29(11)328,
30(6)79-1,
30(6)103,
30(6)130,
30(6)270,
30(6)301,
30(8)166,
31(5)149,
31(10)292,
31(11)28,
32(5)71,
32(5)320,
32(5)320-1,
32(7)112,
32(7)112,
32(7)264,
33(5)280,
34(7)10
- engineered,
29(6)337
- equality,
28(6)227,
29(5)3,
29(6)337,
29(8)59,
31(2)55
- expensive,
27(7)152,
27(9)262,
29(6)61,
29(6)337,
30(8)68,
30(8)144,
33(7)51,
33(7)59,
33(7)83
- factor,
25(6)53,
25(6)66,
27(7)106,
28(3)53,
28(3)97,
28(6)1,
28(12)169,
29(6)73,
29(6)337,
29(9)81,
29(11)25,
30(3)71,
30(8)80-1,
30(8)179,
30(8)207,
30(11)99
- few,
25(6)92,
25(6)112,
25(6)165,
27(7)82,
28(3)209,
28(3)231,
28(6)139-1,
29(6)36,
29(6)337,
29(11)232,
29(11)242,
29(11)328,
30(6)186,
30(8)80-1,
33(7)51
- fixpoint,
29(6)337
- functionality,
27(7)1,
28(3)69,
28(7)33,
28(7)92,
29(6)337,
29(11)38
- generic,
26(11)89,
28(7)179,
28(10)144,
29(6)326,
29(6)337,
29(10)129,
29(10)153,
30(2)21,
30(2)21,
30(4)45,
30(11)41,
32(2)54,
32(6)45,
34(3)86,
34(9)148,
34(10)399
- hence,
25(6)92,
29(6)1,
29(6)337,
30(6)186
- high-performance,
28(12)158,
29(6)337,
29(12)31,
30(8)1
- however,
25(6)66,
25(6)85-1,
25(6)234,
27(7)311,
28(3)351,
28(3)363,
28(6)68,
28(6)147,
28(7)54-1,
29(6)1,
29(6)85,
29(6)218,
29(6)302,
29(6)337,
29(8)1,
29(11)12,
29(11)51,
29(11)86,
29(11)110,
29(11)171,
29(11)183,
29(11)252,
29(11)274,
29(11)308,
29(11)328,
30(3)23,
30(3)62,
30(3)94,
30(6)279,
30(6)291,
30(6)301,
30(8)48,
30(8)217,
30(11)134,
33(7)67
- i.e.,
25(6)165,
25(6)174,
27(7)1,
27(7)116,
28(6)46,
28(7)13,
29(6)36,
29(6)147,
29(6)218,
29(6)278,
29(6)337,
29(11)171,
30(3)119,
30(6)151,
30(11)88
- importance,
25(6)283,
27(7)311,
28(7)54-1,
29(6)337,
29(11)110,
29(11)242,
30(8)134
- in, built-,
29(6)337,
30(11)134
- indexing,
28(10)259,
29(6)337,
30(6)186
- inference,
25(6)127,
25(6)127-1,
26(6)130,
26(11)146,
27(7)106,
29(6)337,
29(9)72,
29(10)31,
29(10)324,
29(10)355,
30(3)62,
30(10)91,
30(10)169,
32(8)176,
34(1)228,
34(5)242,
34(9)160,
34(9)249
- inferring,
29(6)337
- interpretation,
25(6)257,
25(6)283,
25(9)7,
26(9)52,
26(9)106,
27(6)54,
27(7)106,
28(6)46,
28(6)237,
29(6)196,
29(6)337,
32(5)57,
33(7)27,
34(1)343,
34(7)35,
34(9)208,
34(9)261
- keeping,
29(6)337,
29(6)349,
29(6)349-1
- lead,
24(3)34,
27(7)249,
28(7)44,
29(6)337,
29(8)35,
29(11)274,
30(3)23,
30(3)62,
30(6)151,
30(11)70
- line,
27(7)22,
28(3)69,
28(7)179,
29(6)73,
29(6)121,
29(6)337,
29(8)35,
29(9)38,
29(11)219,
29(11)252,
30(6)279,
30(11)99,
31(6)180,
32(5)171,
33(7)19
- main,
25(6)197,
25(12)85,
28(3)359,
28(3)363,
28(8)90,
29(6)337,
29(8)119,
29(11)12,
29(11)86,
29(11)86-1,
29(11)219,
30(6)79-1,
30(11)125,
34(3)37
- may,
25(6)85-1,
25(6)112,
25(6)246,
27(7)32,
27(7)44,
27(7)55,
27(7)212,
27(7)235,
27(7)273,
27(7)322,
27(12)20,
27(12)28,
28(3)361,
28(6)1,
28(6)13,
28(7)23,
28(7)83,
29(6)1,
29(6)13,
29(6)36,
29(6)206,
29(6)266,
29(6)337,
29(6)349,
29(6)349-1,
29(8)46,
29(8)59,
29(11)25,
29(11)183,
30(3)1,
30(3)62,
30(6)67,
30(6)246,
30(11)50,
30(11)79,
30(11)125,
30(11)134,
33(7)27,
34(4)17
- medium-sized,
29(6)337,
29(11)171
- name,
25(5)25,
25(5)95,
25(6)85-1,
27(7)235,
28(2)21,
28(3)299,
28(3)355,
29(6)159,
29(6)337,
30(2)2,
30(6)79-1,
30(11)146-1
- novel,
27(7)94,
27(7)283,
27(7)331,
28(6)258,
28(7)218,
29(6)36,
29(6)290,
29(6)337,
29(8)74,
29(11)232,
30(6)218,
30(8)102,
30(8)123,
30(8)144,
30(11)41,
34(4)70
- obtain,
26(6)219,
28(7)64,
29(6)36,
29(6)121,
29(6)337,
29(11)286,
30(6)1,
30(6)270,
30(8)217,
30(11)31
- often,
25(6)78,
25(6)189,
28(3)343,
28(3)347,
28(6)207-1,
28(6)237,
28(6)268,
28(7)102,
29(6)337,
29(11)183,
29(11)219,
30(3)62,
30(4)13,
30(6)218,
30(11)70,
33(7)19,
33(7)59
- operator,
25(4)73,
25(6)189,
25(6)257,
28(6)147,
28(6)156,
28(8)90,
29(1)9,
29(1)46,
29(5)7,
29(6)135,
29(6)337,
30(8)58,
33(7)1,
33(9)87
- pattern,
6(4)85,
6(4)128,
6(4)132,
25(6)223,
25(6)283,
25(10)38,
25(10)116,
26(6)145,
26(9)62,
27(7)162,
27(7)200,
27(10)63,
27(10)218,
27(12)28,
28(6)68,
28(6)197,
28(7)23,
28(7)83,
28(7)169,
28(7)249,
29(6)85,
29(6)337,
29(8)35,
29(10)191,
29(10)453,
29(11)61,
30(6)218,
30(8)112,
30(10)231,
30(10)337,
30(10)342,
30(10)370,
30(10)370-1,
30(11)50,
31(1)2,
31(1)2-1,
31(2)4,
31(3)2,
31(4)1-1,
31(6)110,
31(10)18,
31(12)18,
32(8)75,
32(10)206-1,
32(10)218,
32(10)342,
32(10)342-1,
32(11)17,
33(5)60,
33(10)134,
33(12)20-1,
34(1)348,
34(2)26,
34(2)47,
34(2)47,
34(4)19-1,
34(6)18-1,
34(6)z-2,
34(12)18-1,
34(12)57
- performance, high-,
28(12)158,
29(6)337,
29(12)31,
30(8)1
- PLDI'94.,
29(6)1,
29(6)13,
29(6)24,
29(6)36,
29(6)49,
29(6)61,
29(6)73,
29(6)85,
29(6)97,
29(6)107,
29(6)121,
29(6)135,
29(6)147,
29(6)159,
29(6)171,
29(6)186,
29(6)196,
29(6)206,
29(6)218,
29(6)230,
29(6)242,
29(6)257-1,
29(6)266,
29(6)278,
29(6)290,
29(6)302,
29(6)313,
29(6)326,
29(6)349-1
- practical,
26(6)15,
26(11)1,
27(7)32,
27(7)273,
28(3)209,
28(3)271,
28(6)1,
28(6)68,
28(6)227,
29(6)337,
29(9)77,
29(11)208,
30(6)116,
30(8)134,
30(8)156,
30(11)20-1,
30(12)4,
31(5)117,
32(8)136,
32(10)318,
33(3)57,
33(10)388,
33(10)388-1,
33(12)20-1,
34(2)26,
34(4)19-1,
34(6)18-1,
34(6)z-2,
34(10)292,
34(12)18-1
- predicate,
25(6)165,
26(12)167,
28(6)290,
28(12)21,
28(12)32,
28(12)140,
29(5)7,
29(6)337,
29(7)61
- primary,
25(6)16,
29(1)37,
29(6)337,
29(8)13,
29(11)242
- PROLOG,
26(3)35
- prolog,
25(1)33,
25(3)40,
25(3)99,
25(5)91,
25(7)59,
25(7)63,
25(11)75,
25(12)54,
26(2)41,
26(6)306,
26(7)83,
26(9)23,
26(9)274,
27(7)106,
27(7)128,
28(2)53,
28(3)37,
28(3)365,
28(4)21,
28(9)5,
29(6)36,
29(6)337,
29(6)349,
29(6)349-1,
30(7)45,
31(7)33,
32(5)1,
32(9)47,
33(2)41,
34(3)97
- purpose,
27(5)z,
27(9)285,
28(3)231,
28(7)218,
28(8)90,
28(10)240,
28(10)240-1,
28(10)256,
29(6)337,
31(5)117
- rational,
29(6)337,
29(6)349,
29(6)349-1
- reasonably,
29(6)337,
29(6)349,
29(6)349-1,
29(11)308
- recursive,
25(4)83,
27(6)54,
27(6)72,
27(7)249,
27(12)39,
28(3)363,
28(3)367,
28(7)112,
29(1)46,
29(6)230,
29(6)242,
29(6)242-1,
29(6)337,
29(8)101,
29(9)51,
30(3)13,
31(6)73,
31(9)222,
31(9)222-1,
32(8)323,
32(12)90,
32(12)90,
33(9)87,
33(12)33,
34(1)351,
34(5)50,
34(10)70
- require,
25(1)59,
25(6)66,
25(6)85-1,
25(6)92,
25(6)102,
25(10)237,
27(7)1,
27(7)12,
27(7)32,
27(7)140,
27(7)311,
27(7)331,
28(3)69,
28(6)156,
28(6)227,
28(6)300,
28(7)13,
28(7)149,
29(6)24,
29(6)36,
29(6)49,
29(6)61,
29(6)196,
29(6)218,
29(6)302,
29(6)337,
29(8)35,
29(11)51,
29(11)297,
30(3)1,
30(3)13,
30(6)196,
30(6)233,
30(11)88,
30(11)146-1,
33(7)35,
33(7)51,
33(7)59,
33(7)83,
33(11)252
- sacrificing,
28(6)258,
29(6)337
- since,
25(6)189,
25(6)209,
25(6)272,
27(7)106,
27(7)152,
27(7)273,
28(3)37,
28(6)166,
28(6)237,
28(6)278,
29(6)230,
29(6)337,
29(6)349,
29(6)349-1,
29(11)286,
30(3)23,
30(6)151,
30(6)218,
30(11)7,
30(11)20-1,
30(11)31,
30(11)88,
33(11)252
- size,
25(6)246,
25(6)272,
25(6)311,
25(12)85,
26(6)130,
27(7)22,
27(7)200,
27(7)273,
27(7)322,
28(3)359,
28(6)237,
28(7)13,
28(7)44,
28(7)208,
29(6)49,
29(6)97,
29(6)107,
29(6)290,
29(6)337,
29(11)98,
29(11)158,
29(11)171,
29(11)232,
29(11)328,
30(3)94,
30(6)32,
30(6)56,
30(6)186,
30(6)279,
30(8)39,
30(11)88
- sized, medium-,
29(6)337,
29(11)171
- small,
17(9)18,
25(5)124,
25(6)66,
25(6)174,
27(7)1,
27(7)212,
27(7)273,
27(7)322,
27(7)331,
27(9)285,
27(12)61,
28(3)231,
28(3)357,
28(6)126,
28(6)217,
28(7)119,
28(7)208,
28(7)229,
28(8)53,
28(8)90,
29(6)337,
29(6)349,
29(6)349-1,
29(8)94,
29(11)2,
29(11)76-1,
29(11)86,
29(11)242,
29(11)252,
29(11)274,
29(11)328,
30(3)111,
30(3)119,
30(8)217,
32(10)125
- sophisticated,
27(7)1,
27(7)12,
28(7)33,
29(6)206,
29(6)337,
30(6)270
- specialization,
26(9)199,
26(9)321,
28(10)201,
28(10)201-1,
29(6)337,
30(4)61,
30(6)93,
31(5)215,
32(8)239,
32(8)239,
32(10)271,
32(10)286,
32(12)151,
32(12)163,
32(12)163,
34(5)281,
34(9)273,
34(11)83
- structural,
25(1)52,
26(8)111,
26(11)329,
28(10)338,
29(6)337,
29(8)59,
30(6)139,
30(6)233,
30(8)92,
31(6)73
- subterms,
29(6)337
- sure,
29(6)337
- technical,
28(1)5,
28(3)231,
28(12)169,
29(6)147,
29(6)337,
29(11)145,
31(2)12,
31(3)13,
31(4)19,
31(4)20,
32(3)3,
32(3)32,
33(1)15,
33(1)z-2,
33(3)37,
33(9)25,
33(12)32,
33(12)33,
34(2)40,
34(2)47,
34(4)37,
34(4)38-1,
34(6)36,
34(6)37-1,
34(6)z-3,
34(12)35
- tree,
25(4)51,
25(6)9,
25(6)296,
26(6)177-1,
26(6)192,
27(4)68,
27(7)82,
27(7)331,
28(3)363,
28(3)367,
28(6)126,
28(6)156,
29(6)135,
29(6)171,
29(6)218,
29(6)337,
29(8)59,
29(9)51,
29(12)94,
30(3)1,
30(6)32,
30(6)47,
30(6)163-1,
30(6)246,
30(8)29,
30(10)251,
31(1)28,
31(5)54,
31(9)222-1,
32(5)85,
33(9)87,
34(1)204,
34(4)19,
34(4)19-1
- unification,
27(11)49,
29(6)337,
29(6)349,
29(6)349-1,
31(1)32
- widening,
29(6)337