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