Structural Resolution for Abstract Compilation of Object-Oriented Languages

09/14/2017
by   Luca Franceschini, et al.
0

We propose abstract compilation for precise static type analysis of object-oriented languages based on coinductive logic programming. Source code is translated to a logic program, then type-checking and inference problems amount to queries to be solved with respect to the resulting logic program. We exploit a coinductive semantics to deal with infinite terms and proofs produced by recursive types and methods. Thanks to the recent notion of structural resolution for coinductive logic programming, we are able to infer very precise type information, including a class of irrational recursive types causing non-termination for previously considered coinductive semantics. We also show how to transform logic programs to make them satisfy the preconditions for the operational semantics of structural resolution, and we prove this step does not affect the semantics of the logic program.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/18/2019

A Three-Valued Semantics for Typed Logic Programming

Types in logic programming have focused on conservative approximations o...
research
07/30/2022

Typed SLD-Resolution: Dynamic Typing for Logic Programming

The semantic foundations for logic programming are usually separated int...
research
08/06/2019

A Transformational Approach to Resource Analysis with Typed-norms Inference

In order to automatically infer the resource consumption of programs, an...
research
10/29/2018

To Memory Safety through Proofs

We present a type system capable of guaranteeing the memory safety of pr...
research
07/15/2019

A Relational Static Semantics for Call Graph Construction

The problem of resolving virtual method and interface calls in object-or...
research
12/13/2022

Data Layout from a Type-Theoretic Perspective

The specifics of data layout can be important for the efficiency of func...
research
12/05/2022

Proving False in Object-Oriented Verification Programs by Exploiting Non-Termination

We looked at three different object-oriented program verifiers: Gobra, K...

Please sign up or login with your details

Forgot password? Click here to reset