Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1040305.1040327acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Permission accounting in separation logic

Published: 12 January 2005 Publication History

Abstract

A lightweight logical approach to race-free sharing of heap storage between concurrent threads is described, based on the notion of permission to access. Transfer of permission between threads, subdivision and combination of permission is discussed. The roots of the approach are in Boyland's [3] demonstration of the utility of fractional permissions in specifying non-interference between concurrent threads. We add the notion of counting permission, which mirrors the programming technique called permission counting. Both fractional and counting permissions permit passivity, the specification that a program can be permitted to access a heap cell yet prevented from altering it. Models of both mechanisms are described. The use of two different mechanisms is defended. Some interesting problems are acknowledged and some intriguing possibilities for future development, including the notion of resourcing as a step beyond typing, are paraded.

References

[1]
R. Bornat. Proving pointer programs in Hoare logic. In R. C. Backhouse and J. N. Oliveira, editors, Mathematics of Program Construction, 5th International Conference, LNCS, pages 102--126. Springer, 2000.]]
[2]
R. Bornat, C. Calcagno, and P. O'Hearn. Local reasoning, separation and aliasing. SPACE Workshop, Venice, 2004.]]
[3]
J. Boyland. Checking interference with fractional permissions. In R. Cousot, editor, Static Analysis: 10th International Symposium, volume 2694 of Lecture Notes in Computer Science, pages 55--72, Berlin, Heidelberg, New York, 2003. Springer.]]
[4]
P. Brinch Hansen. Operating System Principles. Prentice Hall, 1973.]]
[5]
P. Brinch Hansen, editor. The Origin of Concurrent Programming. Springer-Verlag, 2002.]]
[6]
S. D. Brookes. A semantics for concurrent separation logic. In CONCUR'04: 15th International Conference on Concurrency Theory, volume 3170 of Lecture Notes in Computer Science, pages 16--34, London, August 2004. Springer. Extended version to appear in Theoretical Computer Science.]]
[7]
R. Burstall. Some techniques for proving correctness of programs which alter data structures. Machine Intelligence, 7:23--50, 1972.]]
[8]
P. J. Courtois, F. Heymans, and D. L. Parnas. Concurrent control with "readers" and "writers". Commun. ACM, 14(10):667--668, 1971.]]
[9]
E. W. Dijkstra. Cooperating sequential processes. In F. Genuys, editor, Programming Languages, pages 43--112. Academic Press, 1968. Reprinted in {5}.]]
[10]
R. Ennals, R. Sharp, and A. Mycroft. Linear types for packet processing. In To appear. Proceedings of the 2004 European Symposium on Programming (ESOP), LNCS. Springer-Verlag, 2004.]]
[11]
C. A. R. Hoare. Towards a theory of parallel programming. In Hoare and Perrott, editors, in, ed. Operating System Techniques, 1972., pages 61--71. Academic Press, 1972.]]
[12]
E. J. Johnson and A. Kunze. IXP2400/2800 Programming: The Complete Microengine Coding Guide. Intel Press, 2003.]]
[13]
P. O'Hearn. Notes on separation logic for shared-variable concurrency. unpublished, Jan. 2002.]]
[14]
P. O'Hearn, J. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In L. Fribourg, editor, CSL 2001, pages 1--19. Springer-Verlag, 2001. LNCS 2142.]]
[15]
P. W. O'Hearn. Resources, concurrency and local reasoning. to appear in Theoretical Computer Science; preliminary version published as {16}.]]
[16]
P. W. O'Hearn. Resources, concurrency and local reasoning. In CONCUR'04: 15th International Conference on Concurrency Theory, volume 3170 of Lecture Notes in Computer Science, pages 49--67, London, August 2004. Springer. Extended version is {15}.]]
[17]
P. W. O'Hearn and D. J. Pym. The logic of bunched implications. Bulletin of Symbolic Logic, 5(2):215--244, June 1999.]]
[18]
D. Pym. The Semantics and Proof Theory of the Logic of Bunched Implications, volume 26 of Applied Logic Series. Kluwer Academic Publishers, 2002.]]
[19]
J. Reynolds. Separation logic: a logic for shared mutable data structures. Invited Paper, LICS'02, 2002.]]
[20]
J. C. Reynolds. Intuitionistic reasoning about shared mutable data structure. In J. Davies, B. Roscoe, and J. Woodcock, editors, Millennial Perspectives in Computer Science, pages 303--321. Palgrave, 2000.]]
[21]
H. Yang and P. O'Hearn. A semantic basis for local reasoning. In 5th FOSSACS, pages 402--416. Springer-Verlag, 2002.]]

Cited By

View all
  • (2025)Will it Fit? Verifying Heap Space Bounds of Concurrent Programs under Garbage CollectionACM Transactions on Programming Languages and Systems10.1145/3716312Online publication date: 10-Feb-2025
  • (2025)Archmage and CompCertCast: End-to-End Verification Supporting Integer-Pointer CastingProceedings of the ACM on Programming Languages10.1145/37048819:POPL(1326-1354)Online publication date: 9-Jan-2025
  • (2024)Design of Fractional Permissions for a Gradual VerifierCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689972(40-42)Online publication date: 20-Oct-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2005
402 pages
ISBN:158113830X
DOI:10.1145/1040305
  • General Chair:
  • Jens Palsberg,
  • Program Chair:
  • Martín Abadi
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 40, Issue 1
    Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 2005
    391 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1047659
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 January 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concurrency
  2. logic
  3. permissions
  4. separation

Qualifiers

  • Article

Conference

POPL05

Acceptance Rates

Overall Acceptance Rate 860 of 4,328 submissions, 20%

Upcoming Conference

POPL '26

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)70
  • Downloads (Last 6 weeks)7
Reflects downloads up to 08 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Will it Fit? Verifying Heap Space Bounds of Concurrent Programs under Garbage CollectionACM Transactions on Programming Languages and Systems10.1145/3716312Online publication date: 10-Feb-2025
  • (2025)Archmage and CompCertCast: End-to-End Verification Supporting Integer-Pointer CastingProceedings of the ACM on Programming Languages10.1145/37048819:POPL(1326-1354)Online publication date: 9-Jan-2025
  • (2024)Design of Fractional Permissions for a Gradual VerifierCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689972(40-42)Online publication date: 20-Oct-2024
  • (2024)A Logical Approach to Type SoundnessJournal of the ACM10.1145/367695471:6(1-75)Online publication date: 11-Nov-2024
  • (2024)Scenario-Based Proofs for Concurrent ObjectsProceedings of the ACM on Programming Languages10.1145/36498578:OOPSLA1(1294-1323)Online publication date: 29-Apr-2024
  • (2024)Functional Ownership through Fractional UniquenessProceedings of the ACM on Programming Languages10.1145/36498488:OOPSLA1(1040-1070)Online publication date: 29-Apr-2024
  • (2024)DisLog: A Separation Logic for DisentanglementProceedings of the ACM on Programming Languages10.1145/36328538:POPL(302-331)Online publication date: 5-Jan-2024
  • (2024)Refinement of Parallel Algorithms Down to LLVM: Applied to Practically Efficient Parallel SortingJournal of Automated Reasoning10.1007/s10817-024-09701-w68:3Online publication date: 19-Jun-2024
  • (2024)Deductive Verification of SYCL in VerCorsSoftware Engineering and Formal Methods10.1007/978-3-031-77382-2_11(182-199)Online publication date: 4-Nov-2024
  • (2024)VeyMont: Choreography-Based Generation of Correct Concurrent Programs with Shared MemoryIntegrated Formal Methods10.1007/978-3-031-76554-4_12(217-236)Online publication date: 11-Nov-2024
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media