Documentation

LeanPool.DomainTheory.InfoSys

Scott Information Systems #

Following Dana Scott, "Domains for Denotational Semantics" (ICALP 1982) and the compact presentation in Glynn Winskel, The Formal Semantics of Programming Languages, Chapter 8.

Following Scott's Definition 2.1, an information system is a structure (P, Δ, Con, ⊢) where

Scott's six axioms (Def. 2.1) are, for finite u, v ⊆ P and X ∈ P:

The domain determined by an information system is the poset of its elements (a.k.a. ideals): sets of tokens that are consistent on every finite subset and closed under entailment, ordered by inclusion. This file sets up the structure, the notion of element, and the partial order; later files build the function, product, and sum spaces.

This is the 1982 presentation; the development is kept choice-free (constructive), matching Scott's emphasis on the constructive nature of the definitions.

structure InfoSys (α : Type u_1) [DecidableEq α] :
Type u_1

A Scott information system on a type of tokens α, following Scott's Definition 2.1 in "Domains for Denotational Semantics" (ICALP 1982).

DecidableEq α is required so that finite token sets support union (X ∪ {a}) and the other Finset operations the axioms mention.

  • bot : α

    The distinguished least-informative object Δ.

  • Con : Set (Finset α)

    The consistent finite sets of tokens.

  • Ent : Finset ααProp

    Entailment: Ent u a means the consistent set u forces the token a.

  • con_subset {u v : Finset α} : u self.Conv uv self.Con

    (i) Consistency is downward closed under .

  • con_sing (a : α) : {a} self.Con

    (ii) Every singleton is consistent.

  • ent_con {u : Finset α} {a : α} : self.Ent u ainsert a u self.Con

    (iii) A set entailing a stays consistent when a is added. Scott writes this as u ∪ {a} ∈ Con; we use the definitionally identical insert a u, because mathlib's Finset union instance (unlike insert) depends on Classical.choice, which would break the constructive development.

  • ent_bot {u : Finset α} : u self.Conself.Ent u self.bot

    (iv) The least token Δ is entailed by every consistent set.

  • ent_refl {u : Finset α} {a : α} : u self.Cona uself.Ent u a

    (v) Entailment is reflexive on members of a consistent set.

  • ent_trans {u v : Finset α} {c : α} : v self.Conu self.Con(∀ yu, self.Ent v y)self.Ent u cself.Ent v c

    (vi) Entailment is transitive (cut): if a consistent v entails every member of a consistent u, and u ⊢ c, then v ⊢ c.

Instances For
    structure InfoSys.Element {α : Type u_1} [DecidableEq α] (sys : InfoSys α) :
    Type u_1

    An element (ideal) of the domain: a set of tokens that is consistent on every finite subset and closed under entailment.

    • carrier : Set α

      The underlying set of tokens.

    • consistent (Y : Finset α) : Y self.carrierY sys.Con

      Every finite subset of the element is consistent.

    • closed (Y : Finset α) (a : α) : Y self.carriersys.Ent Y aa self.carrier

      The element is closed under entailment.

    Instances For
      @[implicit_reducible]

      Elements are ordered by inclusion of their carriers; this is the Scott ordering.

      Equations