## Acceptors as values: Functional programming in classical linear logic (1991)

Citations: | 2 - 1 self |

### BibTeX

@TECHREPORT{Reddy91acceptorsas,

author = {Uday S. Reddy},

title = {Acceptors as values: Functional programming in classical linear logic},

institution = {},

year = {1991}

}

### OpenURL

### Abstract

Girard’s linear logic has been previously applied to functional programming for performing state-manipulation and controlling storage reuse. These applications only use intuitionistic linear logic, the subset of linear logic that embeds intuitionistic logic. Full linear logic (called classical linear logic) is much richer than this subset. In this paper, we consider the application of classical linear logic to functional programming. The negative types of linear logic are interpreted as denoting acceptors. An acceptor is an entity which takes an input of some type and returns no output. Acceptors generalize continuations and also single assignment variables, as found in data flow languages and logic programming languages. The parallel disjunction operator allows such acceptors to be used in a nontrivial fashion. Finally, the “why not ” operator of linear logic gives rise to nondeterministic values. We define a typed functional language based on the these ideas and demonstrate its use via examples. The language has a reduction semantics that generalizes typed lambda calculus, and satisfies strong normalization and Church-Rosser properties.

### Citations

644 |
The art of prolog
- Sterling, Shapiro
- 1986
(Show Context)
Citation Context ...lue from the place-holder is made to wait. Unfortunately, this treatment is somewhat ad hoc in that failure to fill a value or filling multiple values can create problems. Logic programming languages =-=[7, 41, 48]-=- similarly have a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables [25, 34]. Our recent study of imperati... |

469 |
The formulae-as-types notion of construction
- Howard
- 1980
(Show Context)
Citation Context ...ables, acceptors, bivalent types, nondeterminism, strong normalization, confluence. 11 Introduction The correspondence between typed functional programming and intuitionistic logic is now well known =-=[1, 8, 15, 20, 27, 44]-=-. In general, any constructive logic can be interpreted as a programming language by treating its propositions as types and their proofs (constructions) as programs. The type systems of usual function... |

380 |
Confluent reductions: Abstract properties and applications to term rewriting systems
- Huet
- 1980
(Show Context)
Citation Context .... But, then t must be strongly normalizable as well. 4.2 Confluence Since well-typed terms are strongly normalizable, the reduction relation → ∗ is Noetherian. By classical results (see, for example, =-=[21]-=-), we only need to show that all critical pairs are joinable. At this time, we are only able to show this for closed terms. The only critical overlaps are, on the one hand, between (1) and (2), and, o... |

307 |
Abstract Types have Existential Type
- Mitchell, Plotkin
- 1988
(Show Context)
Citation Context ...phic functional languages correspond to (the propositional fragment of) second-order intuitionistic logic. Predicate logic concepts too have been used to give types to abstract data types and modules =-=[26, 29]-=-. In a surprising tour de force, Girard [12] proceeded to give a “constructivization” of classical logic. The essential trick is to control the use of the structural rules, weakening and contraction, ... |

290 | Computational interpretation of linear logic
- Abramsky
- 1990
(Show Context)
Citation Context ...ables, acceptors, bivalent types, nondeterminism, strong normalization, confluence. 11 Introduction The correspondence between typed functional programming and intuitionistic logic is now well known =-=[1, 8, 15, 20, 27, 44]-=-. In general, any constructive logic can be interpreted as a programming language by treating its propositions as types and their proofs (constructions) as programs. The type systems of usual function... |

280 |
Constructive mathematics and computer programming
- Martin-Löf
- 1982
(Show Context)
Citation Context ...ables, acceptors, bivalent types, nondeterminism, strong normalization, confluence. 11 Introduction The correspondence between typed functional programming and intuitionistic logic is now well known =-=[1, 8, 15, 20, 27, 44]-=-. In general, any constructive logic can be interpreted as a programming language by treating its propositions as types and their proofs (constructions) as programs. The type systems of usual function... |

205 | Modules for Standard ML
- MacQueen
- 1984
(Show Context)
Citation Context ...phic functional languages correspond to (the propositional fragment of) second-order intuitionistic logic. Predicate logic concepts too have been used to give types to abstract data types and modules =-=[26, 29]-=-. In a surprising tour de force, Girard [12] proceeded to give a “constructivization” of classical logic. The essential trick is to control the use of the structural rules, weakening and contraction, ... |

174 |
Interaction nets
- Lafont
- 1990
(Show Context)
Citation Context ...nacy “why not” operator. Girard himself has suggested concurrent programming as the appropriate computational interpretation for linear logic [12, 14, 13] and other researchers have pursued this line =-=[1, 2, 3, 5, 11, 23, 28]-=-. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of [9, 17, 30, 31]. In the prese... |

167 |
The essence of Algol
- Reynolds
- 1981
(Show Context)
Citation Context ...introduce the bivalent type system. In Section 3, we present a functional programming language based on the type system. Finally, we review some preliminary technical results in Section 4. 5 Reynolds =-=[38, 39]-=- notes a similar decomposition of variables in imperative programming. It is not yet clear how it relates to the linear logic decomposition presented here. 6 We are using here notation that is differe... |

137 |
types can change the world
- Linear
- 1990
(Show Context)
Citation Context ...onistic linear logic, the subset of linear logic that is used to embed intuitionistic logic. It has been used to devise type systems for functional languages with control over storage reuse and state =-=[19, 24, 47, 46, 45]-=-. However, intuitionistic linear logic is much weaker than full linear logic (called classical linear logic). In particular, it lacks the negation operator, the “parallel” disjunction operator and the... |

120 |
A syntactic theory of sequential control
- Felleisen, Friedman, et al.
- 1987
(Show Context)
Citation Context ...line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of =-=[9, 17, 30, 31]-=-. In the present work, we propose a new interpretation: linear negation as representing the types of variables (or, more accurately, the acceptor part of variables). Conventionally, a variable is a pl... |

114 |
Narrowing as the Operational Semantics of Functional Languages
- Reddy
- 1985
(Show Context)
Citation Context ...ogic programming languages [7, 41, 48] similarly have a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables =-=[25, 34]-=-. Our recent study of imperative programs [43, 42] suggests that references of imperative programming are similar to variables in many ways and they too exhibit the capacity for delayed instantiation.... |

111 | Design of the programming language Forsythe
- Reynolds
- 1996
(Show Context)
Citation Context ...introduce the bivalent type system. In Section 3, we present a functional programming language based on the type system. Finally, we review some preliminary technical results in Section 4. 5 Reynolds =-=[38, 39]-=- notes a similar decomposition of variables in imperative programming. It is not yet clear how it relates to the linear logic decomposition presented here. 6 We are using here notation that is differe... |

107 | Linear logic, *-autonomous categories, and cofree coalgebras
- Seely
- 1989
(Show Context)
Citation Context ...ptors for A-typed values, an acceptor for A ⊥ is a value of type A. To accept an acceptor, we must satisfy its request for input. 8 There is some controversy as to how to interpret this equation. See =-=[10, 24, 40]-=-. 5Let us say a few words about commands and acceptors. Suppose we have a command θ in a context that includes an input x : A. We can “internalize” the input with the command to produce an acceptor o... |

103 |
Towards a geometry of interaction
- Girard
- 1989
(Show Context)
Citation Context ...tor, the “parallel” disjunction operator and the indeterminacy “why not” operator. Girard himself has suggested concurrent programming as the appropriate computational interpretation for linear logic =-=[12, 14, 13]-=- and other researchers have pursued this line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to mo... |

102 | Type Theory and Functional Programming
- Thompson
- 1991
(Show Context)
Citation Context |

94 |
The linear abstract machine
- Lafont
- 1988
(Show Context)
Citation Context ...onistic linear logic, the subset of linear logic that is used to embed intuitionistic logic. It has been used to devise type systems for functional languages with control over storage reuse and state =-=[19, 24, 47, 46, 45]-=-. However, intuitionistic linear logic is much weaker than full linear logic (called classical linear logic). In particular, it lacks the negation operator, the “parallel” disjunction operator and the... |

92 | Is there a use for linear logic
- Wadler
- 1991
(Show Context)
Citation Context ...onistic linear logic, the subset of linear logic that is used to embed intuitionistic logic. It has been used to devise type systems for functional languages with control over storage reuse and state =-=[19, 24, 47, 46, 45]-=-. However, intuitionistic linear logic is much weaker than full linear logic (called classical linear logic). In particular, it lacks the negation operator, the “parallel” disjunction operator and the... |

68 |
From Petri Nets to Linear Logic
- Marti-Oliet, Meseguer
- 1991
(Show Context)
Citation Context ...nacy “why not” operator. Girard himself has suggested concurrent programming as the appropriate computational interpretation for linear logic [12, 14, 13] and other researchers have pursued this line =-=[1, 2, 3, 5, 11, 23, 28]-=-. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of [9, 17, 30, 31]. In the prese... |

64 |
Extracting Constructive Content from Classical Proofs
- Murthy
- 1990
(Show Context)
Citation Context ...line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of =-=[9, 17, 30, 31]-=-. In the present work, we propose a new interpretation: linear negation as representing the types of variables (or, more accurately, the acceptor part of variables). Conventionally, a variable is a pl... |

53 |
An evaluation semantics for classical proofs
- Murthy
- 1991
(Show Context)
Citation Context ...line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of =-=[9, 17, 30, 31]-=-. In the present work, we propose a new interpretation: linear negation as representing the types of variables (or, more accurately, the acceptor part of variables). Conventionally, a variable is a pl... |

46 |
Term rewriting induction
- Reddy
- 1990
(Show Context)
Citation Context ...soning as for 6, noting that the additional hypothesis for v shows that the new body of let is in [[C]]. 10 t > t ′ if t ′ is a subterm of t. It is easy to see that → ∗ > is a well-founded order. See =-=[36]-=- for an argument. 14Lemma 9 For nonnegative A, if t ∈ [[A ⊥ ]] and u ∈ [[A]] then (t :=A u) ∈ [[cmd]]. Proof: By induction on 〈t, u〉 compared by the lexicographic combination of →∗ . If t := u is red... |

41 |
Parallel Logic Programming in Parlog - The language and its
- Gregory
- 1987
(Show Context)
Citation Context ...xemplified by Prolog makes no explicit distinction between variables and values (inputs and outputs). But, directional logic programs introduced in [37, 35] and concurrent logic languages like Parlog =-=[16]-=- make such distinctions. 2Indeed, linear logic defines A −◦ B is A⊥ ‖ B. The constructor “‖” gives the type of “parallel pairs”. The components of such pairs are produced using the same context, but ... |

37 | Assignments for applicative languages
- Swarup, Reddy, et al.
- 1990
(Show Context)
Citation Context ...ave a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables [25, 34]. Our recent study of imperative programs =-=[43, 42]-=- suggests that references of imperative programming are similar to variables in many ways and they too exhibit the capacity for delayed instantiation. Such delayed instantiation provides considerable ... |

33 |
Transformation of Logic Programs into Functional Programs
- Reddy
- 1984
(Show Context)
Citation Context ...stic logic itself. 4 Traditional logic programming exemplified by Prolog makes no explicit distinction between variables and values (inputs and outputs). But, directional logic programs introduced in =-=[37, 35]-=- and concurrent logic languages like Parlog [16] make such distinctions. 2Indeed, linear logic defines A −◦ B is A⊥ ‖ B. The constructor “‖” gives the type of “parallel pairs”. The components of such... |

32 | Linear continuations
- Filinski
- 1992
(Show Context)
Citation Context ...tion for linear logic [12, 14, 13] and other researchers have pursued this line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski =-=[10]-=- who uses negative types to model continuations, following the work of [9, 17, 30, 31]. In the present work, we propose a new interpretation: linear negation as representing the types of variables (or... |

31 |
Normal process representatives
- Gehlot, Gunter
- 1991
(Show Context)
Citation Context ...nacy “why not” operator. Girard himself has suggested concurrent programming as the appropriate computational interpretation for linear logic [12, 14, 13] and other researchers have pursued this line =-=[1, 2, 3, 5, 11, 23, 28]-=-. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to model continuations, following the work of [9, 17, 30, 31]. In the prese... |

27 | Prolog - the language and its implementation compared with Lisp
- Warren, Pereira, et al.
- 1977
(Show Context)
Citation Context ...lue from the place-holder is made to wait. Unfortunately, this treatment is somewhat ad hoc in that failure to fill a value or filling multiple values can create problems. Logic programming languages =-=[7, 41, 48]-=- similarly have a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables [25, 34]. Our recent study of imperati... |

26 |
On the Relationship between Logic and Functional Languages," Draft of article to appear
- Reddy
- 1984
(Show Context)
Citation Context ...stic logic itself. 4 Traditional logic programming exemplified by Prolog makes no explicit distinction between variables and values (inputs and outputs). But, directional logic programs introduced in =-=[37, 35]-=- and concurrent logic languages like Parlog [16] make such distinctions. 2Indeed, linear logic defines A −◦ B is A⊥ ‖ B. The constructor “‖” gives the type of “parallel pairs”. The components of such... |

19 |
A linear functional language
- Holmström
- 1988
(Show Context)
Citation Context |

18 |
Relating Petri Nets to Formulae of Linear Logic
- Brown
- 1989
(Show Context)
Citation Context |

16 |
Functional Programming and the Logical Variable
- Lindstrom
- 1985
(Show Context)
Citation Context ...ogic programming languages [7, 41, 48] similarly have a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables =-=[25, 34]-=-. Our recent study of imperative programs [43, 42] suggests that references of imperative programming are similar to variables in many ways and they too exhibit the capacity for delayed instantiation.... |

8 |
A first-order theory of data and programs
- Clark, Tärnlund
- 1978
(Show Context)
Citation Context ...ng of a list l and a list acceptor t such that the acceptor t is linked to some cell accessible from l. (These are directional versions of traditional difference lists familiar from logic programming =-=[6]-=-). This type may be defined in the bivalent type system as follows: type List = nil +:: (Int, List) type DList = List ‖ List⊥ To append two difference lists we may use a function of the following form... |

8 |
A fully abstract semantics for a functional language with logic variables
- Jagadeesan, Panangaden, et al.
- 1989
(Show Context)
Citation Context ...gument of the function. Thus, place-holders in functional languages are rather short-lived. In contrast, certain languages allow a more flexible treatment of variables. In data-flow languages like Id =-=[32, 22]-=-, a place-holder can be created and filled at a later time. In the meantime, any computation requiring a value from the place-holder is made to wait. Unfortunately, this treatment is somewhat ad hoc i... |

6 |
A logic for concurrency. Unpublished manuscript
- Asperti
- 1987
(Show Context)
Citation Context |

5 |
logic and parallelism
- Linear
- 1987
(Show Context)
Citation Context ...tor, the “parallel” disjunction operator and the indeterminacy “why not” operator. Girard himself has suggested concurrent programming as the appropriate computational interpretation for linear logic =-=[12, 14, 13]-=- and other researchers have pursued this line [1, 2, 3, 5, 11, 23, 28]. The only application of classical linear logic to functional programming has been by Filinski [10] who uses negative types to mo... |

2 |
Axiomatization of a functional logic language
- Bronsard, Reddy
(Show Context)
Citation Context ...e P1 in let x2 be P2 in T 9 The use of ɛ for this binding construct is inspired by the Hilbert’s ɛ operator [18]. It is somewhat loosely related to the latter in terms of functional logic programming =-=[4]-=-, but this relationship is yet to be explored fully. 6Similarly, we also extend the pattern notation for other binding constructs as follows: λP : A. t ≡ λx: A. let x be P in t ɛP : A. θ ≡ ɛx: A. let... |

2 |
Proofs and Types. Cambridge Tracts in Theor
- Girard, Lafont, et al.
- 1989
(Show Context)
Citation Context |

2 |
Principles of Mathematical Logic. Chelsea Pub
- Hilbert, Ackermann
- 1950
(Show Context)
Citation Context ...f matching elementary patterns, e.g., let t be (P1, P2) in T ≡ let t be (x1, x2) in let x1 be P1 in let x2 be P2 in T 9 The use of ɛ for this binding construct is inspired by the Hilbert’s ɛ operator =-=[18]-=-. It is somewhat loosely related to the latter in terms of functional logic programming [4], but this relationship is yet to be explored fully. 6Similarly, we also extend the pattern notation for oth... |

2 | A logical view of assignments
- Swarup, Reddy
- 1991
(Show Context)
Citation Context ...ave a notion of “logic variables” whose instantiation can be delayed. Efforts have also been made to extend functional languages with logic variables [25, 34]. Our recent study of imperative programs =-=[43, 42]-=- suggests that references of imperative programming are similar to variables in many ways and they too exhibit the capacity for delayed instantiation. Such delayed instantiation provides considerable ... |

1 |
Ideas and results in proof theory
- Nouveau
- 1986
(Show Context)
Citation Context ...gument of the function. Thus, place-holders in functional languages are rather short-lived. In contrast, certain languages allow a more flexible treatment of variables. In data-flow languages like Id =-=[32, 22]-=-, a place-holder can be created and filled at a later time. In the meantime, any computation requiring a value from the place-holder is made to wait. Unfortunately, this treatment is somewhat ad hoc i... |