1 / 44

Type-Directed Concurrency

Type-Directed Concurrency. Deepak Garg, Frank Pfenning {dg+, fp+}@cs.cmu.edu Carnegie Mellon University. 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

baris
Download Presentation

Type-Directed Concurrency

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Type-Directed Concurrency Deepak Garg, Frank Pfenning {dg+, fp+}@cs.cmu.edu Carnegie Mellon University

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Example (N: A!B), (M: A) FACTS Proof reduction Functional reduction, parallelism (V: A!B), (U: A) Proof search Synchronization (V U): B Proof reduction Functional reduction W: B ?: B GOAL Type-Directed Concurrency. CONCUR 2005

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. fCLL: Type Syntax Type-Directed Concurrency. CONCUR 2005

  15. fCLL: Program Syntax • Programs (P) divided into syntactic classes Type-Directed Concurrency. CONCUR 2005

  16. Linear variables: Non-linear variables: fCLL: Semantics • Call-by-value reduction semantics • Typing judgments: Type-Directed Concurrency. CONCUR 2005

  17. 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

  18. 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

  19. 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

  20. lCLL: Syntax fCLL values with types fCLL programs with types Replicable Linear Type-Directed Concurrency. CONCUR 2005

  21. Type Constructs in lCLL • Each construct has an intuitive meaning Type-Directed Concurrency. CONCUR 2005

  22. Interaction Example Server: Listens on channel k Computes factorials Client: Listens on channel k’ k <6> Objective: compute factorial(6) Compute factorial(6) = 720 Return 720and terminate k’ <720> Type-Directed Concurrency. CONCUR 2005

  23. Modeling messages in lCLL • Channels k, k’,… modeled as index terms • messint : type constructor of arity 1 • (messintk) is the type of integer messages on channel k Type-Directed Concurrency. CONCUR 2005

  24. Server Process 3. Send computed result on channel k’ 1. Wait for message “y” on channel k 2. Extract content of y and compute its factorial Type-Directed Concurrency. CONCUR 2005

  25. Client Process Wait for message “x” on channel k’, and return content of x Send message 6 on channel k Parallel composition Type-Directed Concurrency. CONCUR 2005

  26. lCLL: Semantics • Type-directed rewrite semantics • Three alternating rewrite phases: • fCLL’s functional reduction (proof-term reduction) • Structural decomposition • Synchronization (proof-term synthesis) Type-Directed Concurrency. CONCUR 2005

  27. 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

  28. 2. Structural decomposition • Resemble -calculus structural decomposition Type-Directed Concurrency. CONCUR 2005

  29. 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 asynchronoustypes only • Applies to values only • Result must have type {S} Type-Directed Concurrency. CONCUR 2005

  30. Synchronization examples Type-Directed Concurrency. CONCUR 2005

  31. Incorrect Synchronizations Not of type {S} Not a value Type-Directed Concurrency. CONCUR 2005

  32. Why have a monad {…} • Atomicity - {…} determines how far each synchronization will go Type-Directed Concurrency. CONCUR 2005

  33. Interaction Example Server: Listens on channel k Computes factorials Client: Listens on channel k’ k <6> Objective: compute factorial(6) Compute factorial(6) = 720 Return 720and terminate k’ <720> Type-Directed Concurrency. CONCUR 2005

  34. Example: Execution in lCLL Type-Directed Concurrency. CONCUR 2005

  35. Example: Execution in lCLL Type-Directed Concurrency. CONCUR 2005

  36. 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

  37. 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

  38. What lCLL lacks … • Concurrent computations in lCLL may deadlock • Reason: Linear logic is not expressive enough Type-Directed Concurrency. CONCUR 2005

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

More Related