Abstract

This paper presents a general-purpose framework for the abstract interpretation of logic programs and applies it to the problem of automatically extracting independent AND parallelism from PROLOG. In this model of parallelism, goals may be executed concurrently only if they cannot access common variables. We present an abstract domain that captures such variable aliasing information with a high degree of accuracy. We then show how this analysis can be used in the compilation of PROLOG clauses into control statements that schedule goals under independent AND parallelism. Our abstract interpretation framework is novel in that it directly addresses the generally acknowledged problem that naive abstract execution is too ineffecient for a practical compiler. Our solution is to precompute a fixed approximation to the meaning of clauses, a process called condensing, allowing specific calls to be abstractly executed without computation of a fixpoint. We show that condensing does not result in a loss of accuracy if the abstract unification operation satisfies certain algebraic properties. We argue that these properties are important even if a more conventional form of abstract execution is employed.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.