A syntactic theory of sequential control
Theoretical Computer Science
Proofs and types
Notions of computation and monads
Information and Computation
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Handbook of logic in computer science (vol. 2)
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A sound type system for secure flow analysis
Journal of Computer Security
A modal analysis of staged computation
Journal of the ACM (JACM)
Theoretical Computer Science
Meta-programming with names and necessity
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Sound Specialization in the Presence of Computational Effects
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
Partial Evaluation and Non-inference for Object Calculi
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Efficient Multi-level Generating Extensions for Program Specialization
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
A judgmental reconstruction of modal logic
Mathematical Structures in Computer Science
A computational formalization for partial evaluation
Mathematical Structures in Computer Science
A Symmetric Modal Lambda Calculus for Distributed Computing
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
A polymorphic modal type system for lisp-like multi-staged languages
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Distributed control flow with classical modal logic
CSL'05 Proceedings of the 19th international conference on Computer Science Logic
Closing the stage: from staged code to typed closures
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A comparative study of techniques to write customizable libraries
Proceedings of the 2009 ACM symposium on Applied Computing
A Logical Foundation for Environment Classifiers
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Selective Memoization with Box Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Classical Natural Deduction for S4 Modal Logic
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Deriving compilers and virtual machines for a multi-level language
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Constructive linear-time temporal logic: Proof systems and Kripke semantics
Information and Computation
Polymorphic multi-stage language with control effects
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Reasoning about multi-stage programs
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Hi-index | 0.00 |
Multi-level generating extensions, studied by Glück and Jørgensen, are generalization of (two-level) program generators, such as parser generators, to arbitrary many levels. By this generalization, the notion of persistent code---a quoted code fragment that can be used for different stages---naturally arises.In this paper we propose a typed λ calculus λ circle square, based on linear-time temporal logic, as a basis of programming languages for multi-level generating extensions with persistent code. The key idea of the type system is correspondence of (1) linearly ordered times in the logic to computation stages; (2) a formula circle A (next A) to a type of code that runs at the next stage; and (3) a formula circle A (always A) to a type of persistent code executable at and after the current stage. After formalizing (λ circle square), we prove its key property of time-ordered normalization that a well-typed program can never go back to a previous stage in a "time-ordered" execution, as well as basic properties such as subject reduction, confluence and strong normalization. Commuting conversion plays an important role for time-ordered normalization to hold