Jonas Barklund

Learn More
In this review of metaprogramming in logic we pay equal attention to theoretical and practical issues: the contents range from mathematical and logical preliminaries to implementation and applications in, e.g., software engineering and knowledge representation. The area is one in rapid development but we have emphasized such issues that are likely to be(More)
Programs operating on inductively deened data structures, such as lists, are naturally deened by recur-sive programs, while programs operating onìndexable' data structures, such as arrays, are naturally deened by iterative programs. It has recently been shown how many recursive programs can be transformed or compiled to iterative programs operating on(More)
The paper focuses on three ideas for solving problems with writing interpreters for the logic programming language Prolog in Prolog and how to combine these ideas to an interpreter for Prolog which is both simple and eecient. The resulting interpreter system can be incorporated into a Prolog based on Warren's Abstract Machine and built mostly from existing(More)
A theory system is a collection of interdependent theories, some if which stand in a meta/object relationship, forming an arbitrary number of meta-levels. The main thesis of this chapter is that theory systems constitute a suitable formalism for constructing advanced applications in reasoning and software engineering. The Alloy language for deening theory(More)
We are developing a multilevel metalogic programming language that we call Alloy. It is based on rst-order predicate calculus extended with metalogical constructs. An Alloy program consists of a collection of theories, all in the same language, and a representation relation over these theories. The whole language is self-representable, including names for(More)
D We present an application of metaprogramming in logic that, unlike most metaprogramming applications, is not primarily concerned with controlling the execution of logic programs. Metalevel computation is used to define theories from schemata that were either given explicitly or obtained by abstraction from other theories. Our main application is a(More)