Results 11  20
of
318
How to Declare an Imperative
, 1995
"... How can we integrate interaction into a purely declarative language? This tutorial describes a solution to this problem based on a monad. The solution has been implemented in the functional language Haskell and the declarative language Escher. Comparisons are given to other approaches to interaction ..."
Abstract

Cited by 109 (3 self)
 Add to MetaCart
How can we integrate interaction into a purely declarative language? This tutorial describes a solution to this problem based on a monad. The solution has been implemented in the functional language Haskell and the declarative language Escher. Comparisons are given to other approaches to interaction based on synchronous streams, continuations, linear logic, and side effects.
A Type System for Bounded Space and Functional Inplace Update.
 Nordic Journal of Computing,
, 2000
"... Abstract. We show how linear typing can be used to obtain functional programs which modify heapallocated data structures in place. We present this both as a "design pattern" for writing Ccode in a functional style and as a compilation process from linearly typed firstorder functional p ..."
Abstract

Cited by 98 (15 self)
 Add to MetaCart
(Show Context)
Abstract. We show how linear typing can be used to obtain functional programs which modify heapallocated data structures in place. We present this both as a "design pattern" for writing Ccode in a functional style and as a compilation process from linearly typed firstorder 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 3 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 stateoftheart optimising compilers for functional languages such as Ocaml [15], the present method provides guaranteed bounds on heap space which will be of use for applications such as languages for embedded systems or 'proof carrying code ' [18].
Is there a use for linear logic?
, 1991
"... Past attempts to apply Girard's linear logic have either had a clear relation to the theory (Lafont, Holmstrom, Abramsky) or a clear practical value (Guzm'an and Hudak, Wadler), but not both. This paper defines a sequence of languages based on linear logic that span the gap between theory ..."
Abstract

Cited by 96 (7 self)
 Add to MetaCart
(Show Context)
Past attempts to apply Girard's linear logic have either had a clear relation to the theory (Lafont, Holmstrom, Abramsky) or a clear practical value (Guzm'an and Hudak, Wadler), but not both. This paper defines a sequence of languages based on linear logic that span the gap between theory and practice. Type reconstruction in a linear type system can derive information about sharing. An approach to linear type reconstruction based on use types is presented. Applications to the array update problem are considered.
A Term Calculus for Intuitionistic Linear Logic
, 1993
"... . In this paper we consider the problem of deriving a term assignment system for Girard's Intuitionistic Linear Logic for both the sequent calculus and natural deduction proof systems. Our system differs from previous calculi (e.g. that of Abramsky [1]) and has two important properties which th ..."
Abstract

Cited by 89 (12 self)
 Add to MetaCart
(Show Context)
. In this paper we consider the problem of deriving a term assignment system for Girard's Intuitionistic Linear Logic for both the sequent calculus and natural deduction proof systems. Our system differs from previous calculi (e.g. that of Abramsky [1]) and has two important properties which they lack. These are the substitution property (the set of valid deductions is closed under substitution) and subject reduction (reduction on terms is welltyped). We also consider term reduction arising from cutelimination in the sequent calculus and normalisation in natural deduction. We explore the relationship between these and consider their computational content. 1 Intuitionistic Linear Logic Girard's Intuitionistic Linear Logic [3] is a refinement of Intuitionistic Logic where formulae must be used exactly once. Given this restriction the familiar logical connectives become divided into multiplicative and additive versions. Within this paper, we shall only consider the multiplicatives. Int...
A concurrent logical framework I: Judgments and properties
, 2003
"... The Concurrent Logical Framework, or CLF, is a new logical framework in which concurrent computations can be represented as monadic objects, for which there is an intrinsic notion of concurrency. It is designed as a conservative extension of the linear logical framework LLF with the synchronous con ..."
Abstract

Cited by 85 (28 self)
 Add to MetaCart
The Concurrent Logical Framework, or CLF, is a new logical framework in which concurrent computations can be represented as monadic objects, for which there is an intrinsic notion of concurrency. It is designed as a conservative extension of the linear logical framework LLF with the synchronous connectives# of intuitionistic linear logic, encapsulated in a monad. LLF is itself a conservative extension of LF with the asynchronous connectives #, & and #.
From ProofNets to Interaction Nets
 Advances in Linear Logic
, 1994
"... Introduction If we consider the interpretation of proofs as programs, say in intuitionistic logic, the question of equality between proofs becomes crucial: The syntax introduces meaningless distinctions whereas the (denotational) semantics makes excessive identifications. This question does not hav ..."
Abstract

Cited by 73 (1 self)
 Add to MetaCart
(Show Context)
Introduction If we consider the interpretation of proofs as programs, say in intuitionistic logic, the question of equality between proofs becomes crucial: The syntax introduces meaningless distinctions whereas the (denotational) semantics makes excessive identifications. This question does not have a simple answer in general, but it leads to the notion of proofnet, which is one of the main novelties of linear logic. This has been already explained in [Gir87] and [GLT89]. The notion of interaction net introduced in [Laf90] comes from an attempt to implement the reduction of these proofnets. It happens to be a simple model of parallel computation, and so it can be presented independently of linear logic, as in [Laf94]. However, we think that it is also useful to relate the exact origin of interaction nets, especially for readers with some knowledge in linear logic. We take this opportunity to give a survey of the theory of proofnets, including a new proof of the sequentializ
A lambda calculus for quantum computation
 SIAM Journal of Computing
"... The classical lambda calculus may be regarded both as a programming language and as a formal algebraic system for reasoning about computation. It provides a computational model equivalent to the Turing machine, and continues to be of enormous benefit in the classical theory of computation. We propos ..."
Abstract

Cited by 66 (1 self)
 Add to MetaCart
(Show Context)
The classical lambda calculus may be regarded both as a programming language and as a formal algebraic system for reasoning about computation. It provides a computational model equivalent to the Turing machine, and continues to be of enormous benefit in the classical theory of computation. We propose that quantum computation, like its classical counterpart, may benefit from a version of the lambda calculus suitable for expressing and reasoning about quantum algorithms. In this paper we develop a quantum lambda calculus as an alternative model of quantum computation, which combines some of the benefits of both the quantum Turing machine and the quantum circuit models. The calculus turns out to be closely related to the linear lambda calculi used in the study of Linear Logic. We set up a computational model and an equational proof system for this calculus, and we argue that it is equivalent to the quantum Turing machine.
Typed Memory Management via Static Capabilities
 ACM Transactions on Programming Languages and Systems
, 2000
"... Machine We have described the type constructor language of CL and the typing rules for the main termlevel constructs. In fact, the previous section contains all of the ACM Transactions on Programming Languages and Systems, Vol. TBD, No. TDB, Month Year. 20 D. Walker, K. Crary, and G. Morriset ..."
Abstract

Cited by 65 (7 self)
 Add to MetaCart
(Show Context)
Machine We have described the type constructor language of CL and the typing rules for the main termlevel constructs. In fact, the previous section contains all of the ACM Transactions on Programming Languages and Systems, Vol. TBD, No. TDB, Month Year. 20 D. Walker, K. Crary, and G. Morrisett #; #;# # h at r : # # # # f : Type #; ## # ; #{f :# f , x 1 :# 1 , . . . , xn :# n}; C # e # # f = #[# # ].(C, # 1 , . . . , #n ) # 0 at r f, x 1 , . . . , xn ## Dom(#) # #; #;# # fix f[# # ](C, x 1 :# 1 , . . . , xn :# n ).e at r : # f (hfix) #; #;# # v i : # i (for 1 # i # n) # # r : Rgn #; #;# # #v 1 , . . . , vn # at r : ## 1 , . . . , #n # at r (htuple) #; #;# # h at r : # # # # # # = # : Type #; #;# # h at r : # (heq) #; #;# # v : # #; #;# # x : # (#(x) = #) (vvar) #; #;# # i : int (vint) #; #;# # v : #[#:#, # # ].(C, # 1 , . . . , #n ) # 0 at r # # c : # #; #;# # v[c] : (#[# # ].(C, # 1 , . . . , #n ) # 0)[c/#] at r (vtype) #; #;# # v : #[# # C ## , # # ].(C # , # 1 , . . . , #n ) # 0 at r # # C # C ## #; #;# # v[C] : (#[# # ].(C # , # 1 , . . . , #n ) # 0)[C/#] at r (vsub) #; #;# # v : # # # # # # = # : Type #; #;# # v : # (veq) Fig. 6. Capability static semantics: Heap and word values. information programmers or compilers require to write typesafe programs in CL. However, in order to prove a type soundness result in the style of Wright and Felleisen [Wright and Felleisen 1994], we must be able to type check programs at every step during their evaluation. In this section, we give the static semantics of the runtime values that are not normally manipulated by programmers, but are nevertheless necessary to prove our soundness result. At first, the formal definition ...
Graph Types For Monadic Mobile Processes
 University of Edinburgh
, 1996
"... . While types for name passing calculi have been studied extensively in the context of sorting of polyadic ßcalculus [5, 34, 9, 28, 32, 19, 33, 10, 17], the same type abstraction is not possible in the monadic setting, which was left as an open issue by Milner [21]. We solve this problem with an ex ..."
Abstract

Cited by 65 (9 self)
 Add to MetaCart
. While types for name passing calculi have been studied extensively in the context of sorting of polyadic ßcalculus [5, 34, 9, 28, 32, 19, 33, 10, 17], the same type abstraction is not possible in the monadic setting, which was left as an open issue by Milner [21]. We solve this problem with an extension of sorting which captures dynamic aspects of process behaviour in a simple way. Equationally this results in the full abstraction of the standard encoding of polyadic ßcalculus into the monadic one: the sorted polyadic ßterms are equated by a basic behavioural equality in the polyadic calculus if and only if their encodings are equated in a basic behavioural equality in the typed monadic calculus. This is the first result of this kind we know of in the context of the encoding of polyadic name passing, which is a typical example of translation of highlevel communication structures into ß calculus. The construction is general enough to be extendable to encodings of calculi with mo...
Secure Information Flow as Typed Process Behaviour
, 2000
"... We propose a new type discipline for the calculus in which secure information ow is guaranteed by static type checking. Secrecy levels are assigned to channels and are controlled by subtyping. A behavioural notion of types capturing causality of actions plays an essential role for ensuring safe ..."
Abstract

Cited by 63 (0 self)
 Add to MetaCart
We propose a new type discipline for the calculus in which secure information ow is guaranteed by static type checking. Secrecy levels are assigned to channels and are controlled by subtyping. A behavioural notion of types capturing causality of actions plays an essential role for ensuring safe information ow in diverse interactive behaviours, making the calculus powerful enough to embed known calculi for typebased security. The paper introduces the core part of the calculus, presents its basic syntactic properties, and illustrates its use as a tool for programming language analysis by a sound embedding of a secure multithreaded imperative calculus of Volpano and Smith. The embedding leads to a practically meaningful extension of their original type discipline.