Theoretical Computer Science
BCK-combinators and linear &lgr;-terms have types
Theoretical Computer Science
Proofs and types
Theoretical Computer Science
Correspondence between operational and denotational semantics: the full abstraction problem for PCF
Handbook of logic in computer science (vol. 4)
Domains and lambda-calculi
On full abstraction for PCF: I, II, and III
Information and Computation
Information and Computation
Linear Domains and Linear Maps
Proceedings of the 9th International Conference on Mathematical Foundations of Programming Semantics
Stable Models of Typed lambda-Calculi
Proceedings of the Fifth Colloquium on Automata, Languages and Programming
Program equivalence in a linear functional language
Journal of Functional Programming
Theoretical Computer Science - Logic, language, information and computation
Definability and Full Abstraction
Electronic Notes in Theoretical Computer Science (ENTCS)
Semantically linear programming languages
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
A Process-Model for Linear Programs
Types for Proofs and Programs
Information and Computation
Theoretical Computer Science
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
Rewriting Computation and Proof
Hi-index | 0.01 |
Linearity is a multi-faceted and ubiquitous notion in the analysis and the development of programming language concepts. We study linearity in a denotational perspective by picking out programs that correspond to linear functions between coherence spaces. We introduce a language, named SlPCF*, that increases the higher-order expressivity of a linear core of PCF by means of new operators related to exception handling and parallel evaluation. SlPCF* allows us to program all the finite elements of the model and, consequently, it entails a full abstraction result that makes the reasoning on the equivalence between programs simpler. Denotational linearity provides also crucial information for the operational evaluation of programs. We formalize two evaluation machineries for the language. The first one is an abstract and concise operational semantics designed with the aim of explaining the new operators, and is based on an infinite-branching search of the evaluation space. The second one is more concrete and it prunes such a space, by exploiting the linear assumptions. This can also be regarded as a base for an implementation.