static reasoning about programs and queries
In this paper, I survey three projects that are loosely related by the aim to statically understand important properties of a computation. First I describe an extension to mainstream programming languages that solves some common expressiveness limitations while preserving the ability to perform static typechecking modularly. Second I describe a notion of query containment that is appropriate for data integration systems and investigate the complexity of the problem. Finally I describe a domain-specific language for writing compiler optimizations and a strategy for automatically proving the correctness of optimizations written in this language. These three projects explore themes that are prevalent in the work of Paris Kanellakis, including object orientation, type theory, database theory, and declarative languages. I was first exposed to many of these topics through my interaction with Paris.
query containment data integration multimethods compiler correctness modular typechecking