Type-Directed Concurrency Deepak Garg, Frank Pfenning {dg+, Carnegie Mellon University

advertisement
Type-Directed Concurrency
Deepak Garg, Frank Pfenning
{dg+, fp+}@cs.cmu.edu
Carnegie Mellon University
1
Design Goals
• Build a language starting from a logic
• Functional and concurrent features should
arise from logical principles
• Write precise specifications for functions in
the types
– Functional reduction should be type-safe
• Concurrent computation should not
interfere with functional type-safety
Type-Directed Concurrency. CONCUR 2005
2
Outline
• Design goals
• Computation-as-proof reduction,
Computation-as-proof search,
Computation-as-proof search and reduction
• Introduction to CLL
• fCLL: Functional core
• lCLL: Concurrent core
• Related Work and Conclusion
Type-Directed Concurrency. CONCUR 2005
3
Computation-as-proof reduction
• Curry-Howard isomorphism
• Strong guarantees about values computed
by a program (type-safety)
• Captures behavior of full programs, not
their interacting components
• Works very well for functional programs
• Unsuited for concurrent languages, and
reactive systems in general
Type-Directed Concurrency. CONCUR 2005
4
Computation-as-proof search
• Logic programming languages (Prolog, …)
• Programs are sets of logic formulae
(Rules, facts and a goal)
• Computation is proof-search
(Proving the goal from the rules and facts)
• Captures dynamics of concurrent
programs (FCP, Concurrent Prolog, …)
• Hard to capture functional features
Type-Directed Concurrency. CONCUR 2005
5
Computation-as-proof search and reduction
• Add proof-terms to a logic programming
language
• Interpret proof-terms as programs
• Synthesize proofs-terms on the fly
• Alternate proof search with reduction of
synthesized proof-terms
• Captures both concurrent and functional
features!
Type-Directed Concurrency. CONCUR 2005
6
Example
FACTS
(N: A!B), (M: A)
Proof reduction
Functional reduction, parallelism
(V: A!B), (U: A)
Proof search
Synchronization
(V U): B
Proof reduction
GOAL
Functional reduction
W:
?: BB
Type-Directed Concurrency. CONCUR 2005
7
Where we are …
• Design goals
• Computation-as-proof reduction,
Computation-as-proof search,
Computation-as-proof search and reduction
• Introduction to CLL
• fCLL: Functional core of CLL
• lCLL: Concurrent core of CLL
• Related Work and Conclusion
Type-Directed Concurrency. CONCUR 2005
8
Introduction to CLL
• Typed programming language
• Logical design
– Functional features from proof reduction
– Concurrent features from proof synthesis
• Type system based on a variant of
intuitionistic linear logic
Type-Directed Concurrency. CONCUR 2005
9
What CLL is and isn’t
• Foundational/conceptual language
– Prototype implementation
– Not a full-fledged language yet
• Functional part:
– Type-safety
• Concurrent part:
– Preserves well-typedness of terms
– No progress guarantee: Computations may
deadlock
Type-Directed Concurrency. CONCUR 2005
10
CLL: Layered design
• Three layer design
• fCLL: Functional language
• lCLL: Concurrent + Functional language
– Concurrent computation can call functional
computation
• full-CLL: Concurrent + Functional language
– Functional computation can call upon
concurrent computation
– Omitted from this talk
Type-Directed Concurrency. CONCUR 2005
11
Underlying Logic
• Intuitionistic
– captures functional specifications
• Linear
– captures concurrency in lCLL
• Equipped with a monad
– captures effects (deadlocks) in full-CLL
– used in communication
• First-order (dependent types)
– precise functional specifications
– model communication channels, process ids, etc. in
lCLL
Type-Directed Concurrency. CONCUR 2005
12
Where we are …
• Design Goals
• Computation-as-proof reduction,
Computation-as-proof search,
Computation-as-proof search and reduction
• Introduction to CLL
• fCLL: Functional core of CLL
• lCLL: Concurrent core of CLL
• Related Work and Conclusion
Type-Directed Concurrency. CONCUR 2005
13
fCLL: Type Syntax
Type-Directed Concurrency. CONCUR 2005
14
fCLL: Program Syntax
• Programs (P) divided into syntactic classes
Type-Directed Concurrency. CONCUR 2005
15
fCLL: Semantics
• Call-by-value reduction semantics
• Typing judgments:
Non-linear variables:
Linear variables:
Type-Directed Concurrency. CONCUR 2005
16
fCLL: Type-Safety
• Type-preservation:
If P : T and P reduces to P’, then P’ : T.
• Progress:
If P : T, then P is a value or P reduces.
Type-Directed Concurrency. CONCUR 2005
17
Where we are …
• Design Goals
• Computation-as-proof reduction,
Computation-as-proof search,
Computation-as-proof search and reduction
• Introduction to CLL
• fCLL: Functional core of CLL
• lCLL: Concurrent core of CLL
• Related Work and Conclusion
Type-Directed Concurrency. CONCUR 2005
18
lCLL: Concurrent Core of CLL
• Computation-as-proof search and reduction
• Functional part:
– Includes all of fCLL directly
• Concurrent part:
– Arises from proof-synthesis
– Resembles asynchronous -calculus in
communication primitives
• CHAM presentation
Type-Directed Concurrency. CONCUR 2005
19
lCLL: Syntax
fCLL values
with types
fCLL programs
with types
Replicable
Type-Directed Concurrency. CONCUR 2005
Linear
20
Type Constructs in lCLL
• Each construct has an intuitive meaning
Type-Directed Concurrency. CONCUR 2005
21
Interaction Example
Server: Listens on
channel k
Client: Listens on
channel k’
Computes factorials
k <6>
Objective:
compute
factorial(6)
k’ <720>
Return 720
and terminate
Compute
factorial(6)
= 720
Type-Directed Concurrency. CONCUR 2005
22
Modeling messages in lCLL
• Channels k, k’,… modeled as index terms
• messint : type constructor of arity 1
• (messint k) is the type of integer messages
on channel k
Type-Directed Concurrency. CONCUR 2005
23
Server Process
1. Wait for message
“y” on channel k
3. Send computed
result on channel k’
2. Extract content
of y and compute
its factorial
Type-Directed Concurrency. CONCUR 2005
24
Client Process
Send message
6 on channel k
Parallel
composition
Wait for message “x”
on channel k’, and
return content of x
Type-Directed Concurrency. CONCUR 2005
25
lCLL: Semantics
•
•
Type-directed rewrite semantics
Three alternating rewrite phases:
1. fCLL’s functional reduction (proof-term
reduction)
2. Structural decomposition
3. Synchronization (proof-term synthesis)
Type-Directed Concurrency. CONCUR 2005
26
1. Functional reduction
• Applies to all non-values in a configuration
• If P : T, then P’ : T by fCLL’s type-preservation
theorem!
Type-Directed Concurrency. CONCUR 2005
27
2. Structural decomposition
• Resemble -calculus structural decomposition
Type-Directed Concurrency. CONCUR 2005
28
3. Synchronization
• Takes several values in a configuration
and links them to form a larger program
• Site of all communication
• Directed by types
• Three golden rules:
– Applies to asynchronous types only
– Applies to values only
– Result must have type {S}
Type-Directed Concurrency. CONCUR 2005
29
Synchronization examples
Type-Directed Concurrency. CONCUR 2005
30
Incorrect Synchronizations
Not of
type {S}
Not a
value
Type-Directed Concurrency. CONCUR 2005
31
Why have a monad {…}
• Atomicity - {…} determines how far
each synchronization will go
Type-Directed Concurrency. CONCUR 2005
32
Interaction Example
Server: Listens on
channel k
Client: Listens on
channel k’
Computes factorials
k <6>
Objective:
compute
factorial(6)
k’ <720>
Return 720
and terminate
Compute
factorial(6)
= 720
Type-Directed Concurrency. CONCUR 2005
33
Example: Execution in lCLL
Type-Directed Concurrency. CONCUR 2005
34
Example: Execution in lCLL
Type-Directed Concurrency. CONCUR 2005
35
Are the rewrite rules ad-hoc?
• No!
• Rewrite rules obtained from a proof
search procedure by adding proof-terms
• See paper for details
Type-Directed Concurrency. CONCUR 2005
36
What does lCLL give us?
• A “well-typedness” preservation result:
If every program in a lCLL configuration is
well-typed with the type indicated, then after
any number of rewrite steps, the same
property still holds.
• Concurrent computation does not interfere
with functional type-safety!
Type-Directed Concurrency. CONCUR 2005
37
What lCLL lacks …
• Concurrent computations in lCLL may
deadlock
• Reason: Linear logic is not expressive
enough
Type-Directed Concurrency. CONCUR 2005
38
Where we are …
• Design Goals
• Computation-as-proof reduction,
Computation-as-proof search,
Computation-as-proof search and reduction
• Introduction to CLL
• fCLL: Functional core of CLL
• lCLL: Concurrent core of CLL
• Related Work and Conclusion
Type-Directed Concurrency. CONCUR 2005
39
Closely Related Work
• Facile, CML, Concurrent Haskell, JOCaml
– Combine functional and concurrent prog.
• Type Systems for -calculus
[Kobayashi ’03], [Igarashi, Kobayashi ’03],
[Yoshida ’04], [Kobayashi, Pierce, Turner ’95], …
– Properties like type-safety, deadlock freedom
• Computational Interpretations of Linear Logic
[Abramsky ’93]
– Classical linear logic and concurrency
Type-Directed Concurrency. CONCUR 2005
40
Closely Related Work
• MSR Framework [Cervesato ’04]
– Rewriting as logical rules
• CLF [Cervesato, Pfenning, Walker,
Watkins ’03],
LolliMon [ Lopez, Pfenning, Polakow,
Watkins’05]
– Share the same underlying logic
• Lots more …
Type-Directed Concurrency. CONCUR 2005
41
Future Work
• A realistic implementation
• Challenges
– Low level of concurrency in CLL
– Linear functional programming
– Type inference
• Reasoning about deadlock freedom
and program correctness
Type-Directed Concurrency. CONCUR 2005
42
Conclusion
• CLL
– Built from a logic
– Functional part arises from proof reduction
– Concurrent part arises from proof search
– Type-safety for functional reduction
• Concurrency does not interfere with functional
type-safety
Type-Directed Concurrency. CONCUR 2005
43
In the paper …
• Multi-sorted index terms
• Existential types
– Creating channel names
• Encoding the asynchronous -calculus
• A three phase classification of fCLL
programs
– Terms, expressions and monadic terms
Type-Directed Concurrency. CONCUR 2005
44
Download