The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simple and effective link-time optimization of Modula-3 programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Proceedings of the first ACM SIGPLAN international conference on Functional programming
What are principal typings and what are they good for?
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A modular, polyvariant and type-based closure analysis
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Does “just in time” = “better late than never”?
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program fragments, linking, and modularization
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lambda calculus with explicit recursion
Information and Computation
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Principality and decidable type inference for finite-rank intersection types
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
A Primitive Calculus for Module Systems
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
A Fragment Calculus Towards a Model of Separate Compilation, Linking and Binary Compatibility
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
The call-by-need lambda calculus
Journal of Functional Programming
Equational Reasoning for Linking with First-Class Primitive Modules
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
RTA '08 Proceedings of the 19th international conference on Rewriting Techniques and Applications
Mixin modules for dynamic rebinding
TGC'05 Proceedings of the 1st international conference on Trustworthy global computing
Program generation and components
FMCO'04 Proceedings of the Third international conference on Formal Methods for Components and Objects
Correctness of program transformations as a termination problem
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
Hi-index | 0.00 |
We present a module calculus for studying a simple model of link-time compilation. The calculus is stratified into a term calculus, a core module calculus, and a linking calculus. At each level, we show that the calculus enjoys a computational soundness property: if two terms are equivalent in the calculus, then they have the same outcome in a small-step operational semantics. This implies that any module transformation justified by the calculus is meaning preserving. This result is interesting because recursive module bindings thwart confluence at two levels of our calculus, and prohibit application of the traditional technique for showing computational soundness, which requires confluence. We introduce a new technique, based on properties we call lift and project, that uses a weaker notion of confluence with respect to evaluation to establish computational soundness for our module calculus.We also introduce the weak distributivity property for a transformation T operating on modules D1 and D2 linked by ⊕: T(D1 ⊕ D2) = T(T(D1) ⊕ T(D2)). We argue that this property finds promising candidates for link-time optimizations.