A book on C
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
Bounded linear logic: a modular approach to polynomial-time computability
Theoretical Computer Science
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
Computational interpretations of linear logic
Theoretical Computer Science - Special volume of selected papers of the Sixth Workshop on the Mathematical Foundations of Programming Semantics, Kingston, Ont., Canada, May 1990
ACM SIGPLAN Notices
Region-based memory management
Information and Computation
Rolling your own mutable ADT—a connection between linear types and monads
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional data structures
Purely functional data structures
ACM Transactions on Programming Languages and Systems (TOPLAS)
Recursion and dynamic data-structures in bounded space: towards embedded ML programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Operational interpretations of linear logic
Theoretical Computer Science - Special issue on linear logic, 1
Syntactic control of interference revisited
Theoretical Computer Science - Special issue on mathematical foundations of programming semantics
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Syntactic control of interference
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Linear Types and Non Size-Increasing Polynomial Time Computation
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
The strength of non-size increasing computation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A syntactical analysis of non-size-increasing polynomial time computation
ACM Transactions on Computational Logic (TOCL)
Static prediction of heap space usage for first-order functional programs
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Another Type System for In-Place Update
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
The Strength of Non-size-increasing Computation (Introduction and Summary)
MFCS '01 Proceedings of the 26th International Symposium on Mathematical Foundations of Computer Science
Directions in Functional Programming for Real(-Time) Applications
EMSOFT '01 Proceedings of the First International Workshop on Embedded Software
Comparing Parallel Functional Languages: Programming and Performance
Higher-Order and Symbolic Computation
Heap-Bounded Assembly Language
Journal of Automated Reasoning
A Retrospective on Region-Based Memory Management
Higher-Order and Symbolic Computation
Syntactic control of concurrency
Theoretical Computer Science - Automata, languages and programming: Logic and semantics (ICALP-B 2004)
Towards formally verifiable resource bounds for real-time embedded systems
ACM SIGBED Review - Special issues on workshop on innovative techniques for certification of embedded systems
Synthesis of max-plus quasi-interpretations
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Proceedings of the 2007 ACM symposium on Applied computing
Theoretical Computer Science
Heap recycling for lazy languages
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A type system with usage aspects
Journal of Functional Programming
Copy-on-write in the PHP language
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameterised notions of computation
Journal of Functional Programming
"Carbon Credits" for Resource-Bounded Computations Using Amortised Analysis
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Electronic Notes in Theoretical Computer Science (ENTCS)
Static determination of quantitative resource usage for higher-order programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Estimating the Cost of Native Method Calls for Resource-bounded Functional Programming Languages
Electronic Notes in Theoretical Computer Science (ENTCS)
Max-plus quasi-interpretations
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Functional in-place update with layered datatype sharing
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Typing with conditions and guarantees for functional in-place update
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Quasi-interpretation synthesis by decomposition an application to higher-order programs
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
Type inference in intuitionistic linear logic
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
A modality for safe resource sharing and code reentrancy
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
The essence of monotonic state
Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation
Higher-order functional reactive programming in bounded space
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Certified memory usage analysis
FM'05 Proceedings of the 2005 international conference on Formal Methods
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Synthesis of max-plus quasi-interpretations
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2003, Selected Papers
Ten years of amortized resource analysis
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
A linear type system for multicore programming in ATS
Science of Computer Programming
Hi-index | 0.00 |
We show how linear typing can be used to obtain functional programs which modify heap-allocated data structures in place.We present this both as a "design pattern" for writing C-code in a functional style and as a compilation process from linearly typed first-order functional programs into malloc ()-free C code.The main technical result is the correctness of this compilation.The crucial innovation over previous linear typing schemes consists of the introduction of a resource type ♦ which controls the number of constructor symbols such as cons in recursive definitions and ensures linear space while restricting expressive power surprisingly little.While the space efficiency brought about by the new typing scheme and the compilation into C can also be realised by with state-of-the-art optimising compilers for functional languages such as OCAML [16], the present method provides guaranteed bounds on heap space which will be of use for applications such as languages for embedded systems or automatic certification of resource bounds.We show that the functions expressible in the system are precisely those computable on a linearly space-bounded Turing machine with an unbounded stack. By a result of Cook this equals the complexity class 'exponential time'. A tail recursive fragment of the language captures the complexity class 'linear space'.We discuss various extensions, in particular an extension with FIFO queues admitting constant time catenation and enqueuing, and an extension of the type system to fully-fledged intuitionistic linear logic.