Proofs and types
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scheduler activations: effective kernel support for the user-level management of parallelism
ACM Transactions on Computer Systems (TOCS)
Handbook of logic in computer science (vol. 2)
Lambda-calculus, types and models
Lambda-calculus, types and models
The type and effect discipline
Information and Computation
A syntactic approach to type soundness
Information and Computation
Foundations of programming languages
Foundations of programming languages
Region-based memory management
Information and Computation
Better operating system features for faster network servers
ACM SIGMETRICS Performance Evaluation Review
Operational reasoning for functions with local state
Higher order operational techniques in semantics
Relational interpretations of recursive types in an operational setting
Information and Computation
SEDA: an architecture for well-conditioned, scalable internet services
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Cooperative Task Management Without Manual Stack Management
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Reactive Programming in Standard ML
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Capriccio: scalable threads for internet services
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Verification of non-functional programs using interpretations in type theory
Journal of Functional Programming
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Strong normalisation in the π-calculus
Information and Computation
ReactiveML: a reactive extension to ML
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
FairThreads: mixing cooperative and preemptive threads in C: Research Articles
Concurrency and Computation: Practice & Experience
Mathematical Structures in Computer Science
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
Relational reasoning in a nominal semantics for storage
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
ICTAC'05 Proceedings of the Second international conference on Theoretical Aspects of Computing
Relational reasoning for recursive types and references
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Automatic Mutual Exclusion and Atomicity Checks
Concurrency, Graphs and Models
A model of cooperative threads
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Who: a verifier for effectful higher-order programs
Proceedings of the 2009 ACM SIGPLAN workshop on ML
On declassification and the non-disclosure policy
Journal of Computer Security - 18th IEEE Computer Security Foundations Symposium (CSF 18)
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Effects for cooperable and serializable threads
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Termination in impure concurrent languages
CONCUR'10 Proceedings of the 21st international conference on Concurrency theory
Cooperative reasoning for preemptive execution
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Strong normalisation in λ-calculi with references
FSEN'11 Proceedings of the 4th IPM international conference on Fundamentals of Software Engineering
Cooperative types for controlling thread interference in Java
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Hi-index | 0.00 |
We propose a new operational model for shared variable concurrency, in the context of a concurrent, higher-order imperative language à la ML. In our model the scheduling of threads is cooperative, and a non-terminating process suspends itself on each recursive call. A property to ensure in such a model is fairness, that is, any thread should yield the scheduler after some finite computation. To this end, we follow and adapt the classical method for proving termination in typed formalisms, namely the realizability technique. There is a specific difficulty with higher-order state, which is that one cannot define a realizability interpretation simply by induction on types, because applying a function may have side-effects at types not smaller than the type of the function. Moreover, such higher-order side-effects may give rise to computations that diverge without resorting to explicit recursion. We overcome these difficulties by introducing a type and effect system for our language that enforces a stratification of the memory. The stratification prevents the circularities in the memory that may cause divergence, and allows us to define a realizability interpretation of the types and effects, which we then use to prove the intended termination property.