2012 · 22 citations · 29 references
EngineeringCompiler TechnologyComputer ArchitectureSoftware AnalysisFormal VerificationRefinement TypesDependently Typed ProgrammingParallel Complexity TheoryDeterministic ParallelismParallel ComputingCompiler SupportConcurrent ProgrammingComputer EngineeringShared Memory MultithreadingComputer ScienceType SystemLiquid EffectsProgram AnalysisAutomated ReasoningParallel ProcessingFormal MethodsParallel ProgrammingData-level Parallelism
Shared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multi-threading while statically guaranteeing that a program is deterministic. Liquid Effects records the effect of an expression as a for- mula in first-order logic, making our type-and-effect system highly expressive. Further, effects like Read and Write are recorded in Liquid Effects as ordinary uninterpreted predicates, leaving the effect system open to extension by the user. By building our system as an extension to an existing dependent refinement type system, our system gains precise value- and branch-sensitive reasoning about effects. Finally, our system exploits the Liquid Types refinement type inference technique to automatically infer refinement types and effects. We have implemented our type-and-effect checking techniques in CSOLVE, a refinement type inference system for C programs. We demonstrate how CSOLVE uses Liquid Effects to prove the determinism of a variety of benchmarks.
29
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.1K citations
STAMP: Stanford Transactional Applications for Multi-Processing
Chi Cao Minh, JaeWoong Chung, Christos Kozyrakis et al. · 2008 · 878 citations
Engineering, Computer Architecture, Software Engineering +20
Trevor Jim, J. Greg Morrisett, Dan Grossman et al. · 2002 · 617 citations
Ownership types for safe programming
Chandrasekhar Boyapati, Robert Lee, Martin Rinard · 2002 · 567 citations
Enforcing high-level protocols in low-level software
Robert DeLine, Manuel Fähndrich · 2001 · 481 citations