On the dynamic extent of delimited continuations
Information Processing Letters
On the static and dynamic extents of delimited continuations
Science of Computer Programming
A multi-stage language with intensional analysis
Proceedings of the 5th international conference on Generative programming and component engineering
ACM Transactions on Computational Logic (TOCL)
On the dynamic extent of delimited continuations
Information Processing Letters
A more precise security type system for dynamic security tests
PLAS '10 Proceedings of the 5th ACM SIGPLAN Workshop on Programming Languages and Analysis for Security
Declarative programming for agent applications
Autonomous Agents and Multi-Agent Systems
Hi-index | 0.00 |
All programs interact with their environments in one way or another: they read and write to memory, query users for input, print out results, send data to remote servers, etc. Because increasingly complex environments result in increasingly difficult and error-prone programming, programming languages should facilitate compile-time detection of erroneous interactions with environments. In this dissertation, I propose variants of modal logic with names, and their related λ-calculi, as a type theoretic foundation for such languages. In the first part of the dissertation, I review the judgmental formulation of propositional constructive modal logic, and the definitions of necessity and possibility as universal and existential quantification over possible worlds. In the application to functional programming, possible worlds in modal logic will correspond to execution environments. The second part investigates the notions of partial judgments; that is, possibility correspond to bounded universal and bounded existential quantification over possible worlds. While the partiality condition may be specified in several different ways, in this dissertation the focus is on the definition of partiality in terms of names. Names are labels for propositions, and a set of names represents the partiality condition obtained as a conjunction of the respective propositions. In the third part, I discuss applications of modal logic to staged computation and metaprogramming. In these applications, it is frequently necessary to consider a primitive operation of capture-incurring substitution of program expressions into a context, which is naturally expressed in a modal type system. The last part of the dissertation develops modal type systems for effects. The effects associated with partial possibility are those that permanently change the execution environments, and therefore must be executed in a specific linear order. Writing into a memory location is a typical example. The effects associated with partial necessity are those that may depend on the execution environment, but do not change it—they are benign, and do not need to be specifically serialized. Examples include memory reads and control flow effects.