Omega Complete Partial Orders #
An omega-complete partial order is a partial order with a supremum
operation on increasing sequences indexed by natural numbers (which we
call ωSup
). In this sense, it is strictly weaker than join complete
semi-lattices as only ω-sized totally ordered sets have a supremum.
The concept of an omega-complete partial order (ωCPO) is useful for the formalization of the semantics of programming languages. Its notion of supremum helps define the meaning of recursive procedures.
Main definitions #
- class
OmegaCompletePartialOrder
ite
,map
,bind
,seq
as continuous morphisms
Instances of OmegaCompletePartialOrder
#
Part
- every
CompleteLattice
- pi-types
- product types
OrderHom
ContinuousHom
(with notation →𝒄)- an instance of
OmegaCompletePartialOrder (α →𝒄 β)
- an instance of
ContinuousHom.ofFun
ContinuousHom.ofMono
- continuous functions:
References #
- [Chain-complete posets and directed sets with applications][markowsky1976]
- [Recursive definitions of partial functions and their computations][cadiou1972]
- [Semantics of Programming Languages: Structures and Techniques][gunter1992]
A chain is a monotone sequence.
See the definition on page 114 of [gunter1992].
Equations
- OmegaCompletePartialOrder.Chain α = (ℕ →o α)
Instances For
Equations
- OmegaCompletePartialOrder.Chain.instOrderHomClassChainNatInstLENatToLE = inferInstanceAs (OrderHomClass (ℕ →o α) ℕ α)
Equations
- OmegaCompletePartialOrder.Chain.instCoeFunChainForAllNat = { coe := FunLike.coe }
Equations
- One or more equations did not get rendered due to their size.
Equations
Instances For
OmegaCompletePartialOrder.Chain.zip
pairs up the elements of two chains
that have the same index.
Equations
- OmegaCompletePartialOrder.Chain.zip c₀ c₁ = OrderHom.prod c₀ c₁
Instances For
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- ωSup : OmegaCompletePartialOrder.Chain α → α
The supremum of an increasing sequence
- le_ωSup : ∀ (c : OmegaCompletePartialOrder.Chain α) (i : ℕ), ↑c i ≤ OmegaCompletePartialOrder.ωSup c
ωSup
is an upper bound of the increasing sequence - ωSup_le : ∀ (c : OmegaCompletePartialOrder.Chain α) (x : α), (∀ (i : ℕ), ↑c i ≤ x) → OmegaCompletePartialOrder.ωSup c ≤ x
ωSup
is a lower bound of the set of upper bounds of the increasing sequence
An omega-complete partial order is a partial order with a supremum
operation on increasing sequences indexed by natural numbers (which we
call ωSup
). In this sense, it is strictly weaker than join complete
semi-lattices as only ω-sized totally ordered sets have a supremum.
See the definition on page 114 of [gunter1992].
Instances
Transfer an OmegaCompletePartialOrder
on β
to an OmegaCompletePartialOrder
on α
using a strictly monotone function f : β →o α
, a definition of ωSup and a proof that f
is
continuous with regard to the provided ωSup
and the ωCPO on α
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A subset p : α → Prop
of the type closed under ωSup
induces an
OmegaCompletePartialOrder
on the subtype {a : α // p a}
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A monotone function f : α →o β
is continuous if it distributes over ωSup.
In order to distinguish it from the (more commonly used) continuity from topology
(see Mathlib/Topology/Basic.lean
), the present definition is often referred to as
"Scott-continuity" (referring to Dana Scott). It corresponds to continuity
in Scott topological spaces (not defined here).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Continuous' f
asserts that f
is both monotone and continuous.
Equations
- OmegaCompletePartialOrder.Continuous' f = ∃ hf, OmegaCompletePartialOrder.Continuous { toFun := f, monotone' := hf }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The supremum of a chain in the product ω
-CPO.
Equations
- Prod.ωSup c = (OmegaCompletePartialOrder.ωSup (OmegaCompletePartialOrder.Chain.map c OrderHom.fst), OmegaCompletePartialOrder.ωSup (OmegaCompletePartialOrder.Chain.map c OrderHom.snd))
Instances For
Equations
- One or more equations did not get rendered due to their size.
Any complete lattice has an ω
-CPO structure where the countable supremum is a special case
of arbitrary suprema.
Equations
- One or more equations did not get rendered due to their size.
The ωSup
operator for monotone functions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- toFun : α → β
- monotone' : Monotone s.toFun
- cont : OmegaCompletePartialOrder.Continuous s.toOrderHom
The underlying function of a
ContinuousHom
is continuous, i.e. it preservesωSup
A monotone function on ω
-continuous partial orders is said to be continuous
if for every chain c : chain α
, f (⊔ i, c i) = ⊔ i, f (c i)
.
This is just the bundled version of OrderHom.continuous
.
Instances For
A monotone function on ω
-continuous partial orders is said to be continuous
if for every chain c : chain α
, f (⊔ i, c i) = ⊔ i, f (c i)
.
This is just the bundled version of OrderHom.continuous
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- OmegaCompletePartialOrder.instPartialOrderContinuousHom α β = PartialOrder.lift (fun f => f.toFun) (_ : ∀ ⦃a₁ a₂ : α →𝒄 β⦄, (fun f => f.toFun) a₁ = (fun f => f.toFun) a₂ → a₁ = a₂)
See Note [custom simps projection]. We specify this explicitly because we don't have a FunLike instance.
Equations
Instances For
Construct a continuous function from a bare function, a continuous function, and a proof that they are equal.
Equations
- OmegaCompletePartialOrder.ContinuousHom.copy f g h = { toOrderHom := OrderHom.copy g.toOrderHom f h, cont := (_ : OmegaCompletePartialOrder.Continuous (OrderHom.copy g.toOrderHom f h)) }
Instances For
The identity as a continuous function.
Equations
- OmegaCompletePartialOrder.ContinuousHom.id = { toOrderHom := OrderHom.id, cont := (_ : OmegaCompletePartialOrder.Continuous OrderHom.id) }
Instances For
The composition of continuous functions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Function.const
is a continuous function.
Equations
- OmegaCompletePartialOrder.ContinuousHom.const x = { toOrderHom := ↑(OrderHom.const α) x, cont := (_ : OmegaCompletePartialOrder.Continuous (↑(OrderHom.const α) x)) }
Instances For
Equations
- OmegaCompletePartialOrder.ContinuousHom.instInhabitedContinuousHom = { default := OmegaCompletePartialOrder.ContinuousHom.const default }
The map from continuous functions to monotone functions is itself a monotone function.
Equations
Instances For
When proving that a chain of applications is below a bound z
, it suffices to consider the
functions and values being selected from the same index in the chains.
This lemma is more specific than necessary, i.e. c₀
only needs to be a
chain of monotone functions, but it is only used with continuous functions.
The ωSup
operator for continuous functions, which takes the pointwise countable supremum
of the functions in the ω
-chain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The application of continuous functions as a continuous function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A family of continuous functions yields a continuous family of functions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Part.bind
as a continuous function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Part.seq
as a continuous function.
Equations
- One or more equations did not get rendered due to their size.