Enforcing structural regularities in software using IntensiVE
Science of Computer Programming
Diagnosing and correcting design inconsistencies in source code with logical abduction
Science of Computer Programming
The SOUL tool suite for querying programs in symbiosis with Eclipse
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
LogicObjects: a linguistic symbiosis approach to bring the declarative power of Prolog to Java
Proceedings of the 9th ECOOP Workshop on Reflection, AOP, and Meta-Data for Software Evolution
Hi-index | 0.00 |
Logic-based programming languages are increasingly applied as program query languages which allow developers to reason about the structure and behaviour of programs. To achieve this, the queried programs are reified as logic values such that logic quantification and unification can be used effectively. However, in many cases, standard logic unification is inappropriate for program entities, forcing developers to resort to overly complex queries. In this paper, we argue that such incidental complexity can be reduced significantly by customizing the unification algorithm. We present a practical implementation approach through inter-language reflection and open unification. These techniques are at the core of the logic program query language SOUL, through which we demonstrate custom unification schemes for reasoning over Smalltalk and Java programs. Queries written in this tailored version of SOUL can exploit advanced program matching strategies without increasing the incidental complexity of the queries.