Combinations of abstract domains for logic programming: open product and generic pattern construction

Abstract interpretation is a systematic methodology to design static program analysis which has been studied extensively in the logic programming community, because of the potential for optimizations in logic programming compilers and the sophistication of the analyses which require conceptual suppo...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Science of computer programming 2000-08, Vol.38 (1), p.27-71
Hauptverfasser: Cortesi, Agostino, Charlier, Baudouin Le, Hentenryck, Pascal Van
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 71
container_issue 1
container_start_page 27
container_title Science of computer programming
container_volume 38
creator Cortesi, Agostino
Charlier, Baudouin Le
Hentenryck, Pascal Van
description Abstract interpretation is a systematic methodology to design static program analysis which has been studied extensively in the logic programming community, because of the potential for optimizations in logic programming compilers and the sophistication of the analyses which require conceptual support. With the emergence of efficient generic abstract interpretation algorithms for logic programming, the main burden in building an analysis is the abstract domain which gives a safe approximation of the concrete domain of computation. However, accurate abstract domains for logic programming are often complex not only because of the relational nature of logic programming languages and of their typical interprocedural control-flow, but also because of the variety of analyses to perform, their interdependence, and the need to maintain structural information. The purpose of this paper is to propose conceptual and software support for the design of abstract domains. It contains two main contributions: the notion of open product and a generic pattern domain. The open product is a new, language independent, way of combining abstract domains allowing each combined domain to benefit from information from the other components through the notions of queries and open operations. It provides a framework to approximate Cousots’ reduced product, while reusing existing implementations and providing methodological guidance on how to build domains for interaction and composition. It is orthogonal and complementary to Granger's product which improves the direct product by a decreasing iteration sequence based on refinements but lets the domains interact only after the individual operations. The generic pattern domain Pat( R ) automatically upgrades a domain D with structural information yielding a more accurate domain Pat(D) without additional design or implementation cost. The two contributions are orthogonal and can be combined in various ways to obtain sophisticated domains while imposing minimal requirements on the designer. Both contributions are characterized theoretically and experimentally and were used to design very complex abstract domains such as PAT(OPos⊗OMode⊗OPS) which would be very difficult to design otherwise. On this last domain, designers need only contribute about 20% (about 3400 lines) of the complete system (about 17,700 lines).
doi_str_mv 10.1016/S0167-6423(99)00045-3
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_27235477</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><els_id>S0167642399000453</els_id><sourcerecordid>27235477</sourcerecordid><originalsourceid>FETCH-LOGICAL-c385t-496e965277c6a10e466e90d2dac8e889fedf45ad93c88a8c926678cb42d952f63</originalsourceid><addsrcrecordid>eNqFkE1LBDEMhosouK7-BGFOoofRTqfTDy8ii1-w4EE9l26bGSo77dp2Bf-9HVe8eklI8uQleRE6bfBlgxt29VICrxkl7bmUFxhj2tXtHpo1gpOaS0b30ewPOURHKb0XiFHezBAswrhyXmcXfKpCX-lVylGbXNkwald6fYjVOgzOVJsYhqjH0fnhugob8FPHbgurva0G8BAnSucM0VemCOZYpkX5GB30ep3g5DfP0dv93evisV4-Pzwtbpe1aUWXayoZSNYRzg3TDQbKSo0tsdoIEEL2YHvaaStbI4QWRhLGuDArSqzsSM_aOTrb6ZbDPraQshpdMrBeaw9hmxThpO0o5wXsdqCJIaUIvdpEN-r4pRqsJlPVj6lqckxJqX5MVW3Zu9ntQfni00FUyTjwBqyLYLKywf2j8A2LwICp</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>27235477</pqid></control><display><type>article</type><title>Combinations of abstract domains for logic programming: open product and generic pattern construction</title><source>Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals</source><source>Access via ScienceDirect (Elsevier)</source><creator>Cortesi, Agostino ; Charlier, Baudouin Le ; Hentenryck, Pascal Van</creator><creatorcontrib>Cortesi, Agostino ; Charlier, Baudouin Le ; Hentenryck, Pascal Van</creatorcontrib><description>Abstract interpretation is a systematic methodology to design static program analysis which has been studied extensively in the logic programming community, because of the potential for optimizations in logic programming compilers and the sophistication of the analyses which require conceptual support. With the emergence of efficient generic abstract interpretation algorithms for logic programming, the main burden in building an analysis is the abstract domain which gives a safe approximation of the concrete domain of computation. However, accurate abstract domains for logic programming are often complex not only because of the relational nature of logic programming languages and of their typical interprocedural control-flow, but also because of the variety of analyses to perform, their interdependence, and the need to maintain structural information. The purpose of this paper is to propose conceptual and software support for the design of abstract domains. It contains two main contributions: the notion of open product and a generic pattern domain. The open product is a new, language independent, way of combining abstract domains allowing each combined domain to benefit from information from the other components through the notions of queries and open operations. It provides a framework to approximate Cousots’ reduced product, while reusing existing implementations and providing methodological guidance on how to build domains for interaction and composition. It is orthogonal and complementary to Granger's product which improves the direct product by a decreasing iteration sequence based on refinements but lets the domains interact only after the individual operations. The generic pattern domain Pat( R ) automatically upgrades a domain D with structural information yielding a more accurate domain Pat(D) without additional design or implementation cost. The two contributions are orthogonal and can be combined in various ways to obtain sophisticated domains while imposing minimal requirements on the designer. Both contributions are characterized theoretically and experimentally and were used to design very complex abstract domains such as PAT(OPos⊗OMode⊗OPS) which would be very difficult to design otherwise. On this last domain, designers need only contribute about 20% (about 3400 lines) of the complete system (about 17,700 lines).</description><identifier>ISSN: 0167-6423</identifier><identifier>EISSN: 1872-7964</identifier><identifier>DOI: 10.1016/S0167-6423(99)00045-3</identifier><language>eng</language><publisher>Elsevier B.V</publisher><subject>Abstract interpretation ; Combination of domains ; Logic programming</subject><ispartof>Science of computer programming, 2000-08, Vol.38 (1), p.27-71</ispartof><rights>2000</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c385t-496e965277c6a10e466e90d2dac8e889fedf45ad93c88a8c926678cb42d952f63</citedby><cites>FETCH-LOGICAL-c385t-496e965277c6a10e466e90d2dac8e889fedf45ad93c88a8c926678cb42d952f63</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://dx.doi.org/10.1016/S0167-6423(99)00045-3$$EHTML$$P50$$Gelsevier$$Hfree_for_read</linktohtml><link.rule.ids>314,780,784,3550,27924,27925,45995</link.rule.ids></links><search><creatorcontrib>Cortesi, Agostino</creatorcontrib><creatorcontrib>Charlier, Baudouin Le</creatorcontrib><creatorcontrib>Hentenryck, Pascal Van</creatorcontrib><title>Combinations of abstract domains for logic programming: open product and generic pattern construction</title><title>Science of computer programming</title><description>Abstract interpretation is a systematic methodology to design static program analysis which has been studied extensively in the logic programming community, because of the potential for optimizations in logic programming compilers and the sophistication of the analyses which require conceptual support. With the emergence of efficient generic abstract interpretation algorithms for logic programming, the main burden in building an analysis is the abstract domain which gives a safe approximation of the concrete domain of computation. However, accurate abstract domains for logic programming are often complex not only because of the relational nature of logic programming languages and of their typical interprocedural control-flow, but also because of the variety of analyses to perform, their interdependence, and the need to maintain structural information. The purpose of this paper is to propose conceptual and software support for the design of abstract domains. It contains two main contributions: the notion of open product and a generic pattern domain. The open product is a new, language independent, way of combining abstract domains allowing each combined domain to benefit from information from the other components through the notions of queries and open operations. It provides a framework to approximate Cousots’ reduced product, while reusing existing implementations and providing methodological guidance on how to build domains for interaction and composition. It is orthogonal and complementary to Granger's product which improves the direct product by a decreasing iteration sequence based on refinements but lets the domains interact only after the individual operations. The generic pattern domain Pat( R ) automatically upgrades a domain D with structural information yielding a more accurate domain Pat(D) without additional design or implementation cost. The two contributions are orthogonal and can be combined in various ways to obtain sophisticated domains while imposing minimal requirements on the designer. Both contributions are characterized theoretically and experimentally and were used to design very complex abstract domains such as PAT(OPos⊗OMode⊗OPS) which would be very difficult to design otherwise. On this last domain, designers need only contribute about 20% (about 3400 lines) of the complete system (about 17,700 lines).</description><subject>Abstract interpretation</subject><subject>Combination of domains</subject><subject>Logic programming</subject><issn>0167-6423</issn><issn>1872-7964</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2000</creationdate><recordtype>article</recordtype><recordid>eNqFkE1LBDEMhosouK7-BGFOoofRTqfTDy8ii1-w4EE9l26bGSo77dp2Bf-9HVe8eklI8uQleRE6bfBlgxt29VICrxkl7bmUFxhj2tXtHpo1gpOaS0b30ewPOURHKb0XiFHezBAswrhyXmcXfKpCX-lVylGbXNkwald6fYjVOgzOVJsYhqjH0fnhugob8FPHbgurva0G8BAnSucM0VemCOZYpkX5GB30ep3g5DfP0dv93evisV4-Pzwtbpe1aUWXayoZSNYRzg3TDQbKSo0tsdoIEEL2YHvaaStbI4QWRhLGuDArSqzsSM_aOTrb6ZbDPraQshpdMrBeaw9hmxThpO0o5wXsdqCJIaUIvdpEN-r4pRqsJlPVj6lqckxJqX5MVW3Zu9ntQfni00FUyTjwBqyLYLKywf2j8A2LwICp</recordid><startdate>20000801</startdate><enddate>20000801</enddate><creator>Cortesi, Agostino</creator><creator>Charlier, Baudouin Le</creator><creator>Hentenryck, Pascal Van</creator><general>Elsevier B.V</general><scope>6I.</scope><scope>AAFTH</scope><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>20000801</creationdate><title>Combinations of abstract domains for logic programming: open product and generic pattern construction</title><author>Cortesi, Agostino ; Charlier, Baudouin Le ; Hentenryck, Pascal Van</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c385t-496e965277c6a10e466e90d2dac8e889fedf45ad93c88a8c926678cb42d952f63</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2000</creationdate><topic>Abstract interpretation</topic><topic>Combination of domains</topic><topic>Logic programming</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Cortesi, Agostino</creatorcontrib><creatorcontrib>Charlier, Baudouin Le</creatorcontrib><creatorcontrib>Hentenryck, Pascal Van</creatorcontrib><collection>ScienceDirect Open Access Titles</collection><collection>Elsevier:ScienceDirect:Open Access</collection><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><jtitle>Science of computer programming</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Cortesi, Agostino</au><au>Charlier, Baudouin Le</au><au>Hentenryck, Pascal Van</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Combinations of abstract domains for logic programming: open product and generic pattern construction</atitle><jtitle>Science of computer programming</jtitle><date>2000-08-01</date><risdate>2000</risdate><volume>38</volume><issue>1</issue><spage>27</spage><epage>71</epage><pages>27-71</pages><issn>0167-6423</issn><eissn>1872-7964</eissn><abstract>Abstract interpretation is a systematic methodology to design static program analysis which has been studied extensively in the logic programming community, because of the potential for optimizations in logic programming compilers and the sophistication of the analyses which require conceptual support. With the emergence of efficient generic abstract interpretation algorithms for logic programming, the main burden in building an analysis is the abstract domain which gives a safe approximation of the concrete domain of computation. However, accurate abstract domains for logic programming are often complex not only because of the relational nature of logic programming languages and of their typical interprocedural control-flow, but also because of the variety of analyses to perform, their interdependence, and the need to maintain structural information. The purpose of this paper is to propose conceptual and software support for the design of abstract domains. It contains two main contributions: the notion of open product and a generic pattern domain. The open product is a new, language independent, way of combining abstract domains allowing each combined domain to benefit from information from the other components through the notions of queries and open operations. It provides a framework to approximate Cousots’ reduced product, while reusing existing implementations and providing methodological guidance on how to build domains for interaction and composition. It is orthogonal and complementary to Granger's product which improves the direct product by a decreasing iteration sequence based on refinements but lets the domains interact only after the individual operations. The generic pattern domain Pat( R ) automatically upgrades a domain D with structural information yielding a more accurate domain Pat(D) without additional design or implementation cost. The two contributions are orthogonal and can be combined in various ways to obtain sophisticated domains while imposing minimal requirements on the designer. Both contributions are characterized theoretically and experimentally and were used to design very complex abstract domains such as PAT(OPos⊗OMode⊗OPS) which would be very difficult to design otherwise. On this last domain, designers need only contribute about 20% (about 3400 lines) of the complete system (about 17,700 lines).</abstract><pub>Elsevier B.V</pub><doi>10.1016/S0167-6423(99)00045-3</doi><tpages>45</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0167-6423
ispartof Science of computer programming, 2000-08, Vol.38 (1), p.27-71
issn 0167-6423
1872-7964
language eng
recordid cdi_proquest_miscellaneous_27235477
source Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals; Access via ScienceDirect (Elsevier)
subjects Abstract interpretation
Combination of domains
Logic programming
title Combinations of abstract domains for logic programming: open product and generic pattern construction
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-28T20%3A14%3A03IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Combinations%20of%20abstract%20domains%20for%20logic%20programming:%20open%20product%20and%20generic%20pattern%20construction&rft.jtitle=Science%20of%20computer%20programming&rft.au=Cortesi,%20Agostino&rft.date=2000-08-01&rft.volume=38&rft.issue=1&rft.spage=27&rft.epage=71&rft.pages=27-71&rft.issn=0167-6423&rft.eissn=1872-7964&rft_id=info:doi/10.1016/S0167-6423(99)00045-3&rft_dat=%3Cproquest_cross%3E27235477%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=27235477&rft_id=info:pmid/&rft_els_id=S0167642399000453&rfr_iscdi=true