---
title: "Syntactic Control of Interference"
authors:
  - "John C. Reynolds"
year: 1978
venue: "POPL"
arxiv: null
doi: "10.1145/512760.512766"
source: "https://doi.org/10.1145/512760.512766"
topics:
  - plt
  - capabilities
seed_rank: 158
seed_batch: "prefill-2026-08-13"
reviewed: "2026-08-13"
pool: "languages"
relevance_score: 9
cites:
  - title: "Monitors"
    url: "https://doi.org/10.1145/355620.361161"
    year: 1974
    arxiv: null
    doi: "10.1145/355620.361161"
  - title: "Proof of correctness of data representations"
    url: "https://doi.org/10.1007/bf00289507"
    year: 1972
    arxiv: null
    doi: "10.1007/bf00289507"
  - title: "The programming language pascal"
    url: "https://doi.org/10.1007/bf00264291"
    year: 1971
    arxiv: null
    doi: "10.1007/bf00264291"
  - title: "A lazy evaluator"
    url: "https://doi.org/10.1145/800168.811543"
    year: 1976
    arxiv: null
    doi: "10.1145/800168.811543"
  - title: "Towards a Theory of Parallel Programming"
    url: "https://doi.org/10.1007/978-1-4757-3472-0_6"
    year: 1972
    arxiv: null
    doi: "10.1007/978-1-4757-3472-0_6"
  - title: "User-Defined Types and Procedural Data Structures as Complementary Approaches to Data Abstraction"
    url: "https://doi.org/10.1007/978-1-4612-6315-9_22"
    year: 1978
    arxiv: null
    doi: "10.1007/978-1-4612-6315-9_22"
  - title: "Correspondence between ALGOL 60 and Church's Lambda-notation"
    url: "https://doi.org/10.1145/363744.363749"
    year: 1965
    arxiv: null
    doi: "10.1145/363744.363749"
  - title: "Structured multiprogramming"
    url: "https://doi.org/10.1145/361454.361473"
    year: 1972
    arxiv: null
    doi: "10.1145/361454.361473"
  - title: "Notes on the design of Euclid"
    url: "https://doi.org/10.1145/390018.808307"
    year: 1977
    arxiv: null
    doi: "10.1145/390018.808307"
  - title: "The Programming Language Pascal"
    url: "https://doi.org/10.1007/978-3-642-48354-7_22"
    year: 1971
    arxiv: null
    doi: "10.1007/978-3-642-48354-7_22"
  - title: "<scp>A. van Wijngaarden</scp> (Ed.), <scp>B. J. Mailloux</scp>, <scp>J. E. L. Peck</scp> and <scp>C. H. A. Koster</scp>, Report on the Algorithmic Language ALGOL 68. Amsterdam 1969. Printing by the Mathematisch Centrum. Preis brosch. $ 4.50 ."
    url: "https://doi.org/10.1002/zamm.19700501120"
    year: 1970
    arxiv: null
    doi: "10.1002/zamm.19700501120"
  - title: "CONS Should Not Evaluate its Arguments."
    url: "https://dblp.uni-trier.de/db/conf/icalp/icalp76.html#FriedmanW76"
    year: 1976
    arxiv: null
    doi: null
---

# Syntactic Control of Interference

## One-sentence takeaway

Reynolds gives syntactic restrictions that make interference between program phrases visible in the type structure, so aliased active use of the same storage cannot hide behind ordinary application.

## Why it matters here

Safe parallel ECS mutation is this problem: two systems that both write a component must be treated as interfering phrases, and the type/capability layer should refuse to compose them the way SCI refuses to compose interfering λ-terms.

## Key ideas

- Interference is not just alias analysis after the fact; it is a property of how phrases may share assignable storage.
- Passive phrases may be aliased freely; active phrases that write storage may not be used in interfering combination.
- The type system distinguishes these classes so illegal sharing is a type error rather than a runtime race.
- Procedure application is the dangerous combinator: passing the same writable cell to two active parameters is the canonical banned pattern.
- The paper is the ancestor of later capability, separation, and disjointness type systems for controlled mutation.

## Caveats

## Links

- DOI: [10.1145/512760.512766](https://doi.org/10.1145/512760.512766)
