Exercise 5.15 (Scott 1981, PRG-19, Lecture V) — free-semigroup powerset and #
Arden's lemma
(For algebraists.) Regard
⟨{0,1}*, Λ, ·⟩as the free semigroup on two generators. The powersetP{0,1}*is a domain (Exercise 4.17). For a wordesete* = {Λ, e, e², …}.(1) The least fixed point of
z = {e}·z ∪ {e'}isz = e*·{e'}. (2) (David Park) The least solution ofx = a·x ∪ b·y ∪ c,y = b·x ∪ a·y ∪ disx = (a ∪ b·a*·b)*·(c ∪ b·a*·d), wherez* = Λ ∪ z*·z.
Following Exercise 4.17, the powerset domain P S of a monoid S is the complete
lattice
(Set S, ⊆) with pointwise product s·t = {u·v ∣ u ∈ s, v ∈ t} (Set.mul, open Pointwise).
Both parts are facts about the Kleene algebra (Set S, ∪, ·, ∅, {1}) and hold
for any monoid;
we prove them with S a general Monoid and specialise part (1) to S = FreeMonoid Bool = {0,1}*.
Choice discipline #
Mathlib's Set-level multiplicative lemmas (mul_assoc, Set.union_mul,
Set.mul_union,
Set.singleton_mul_singleton), the order lemmas
Set.subset_iUnion/Set.iUnion_subset, Set-power
(pow_succ'), Submonoid.mem_powers_iff, and Monotone over Set all depend on
Classical.choice
in this toolchain (they route through Set.image2/CompleteLattice choice-using
machinery). Every
membership iff (Set.mem_mul, Set.mem_union, Set.mem_one,
Set.mem_singleton_iff) and every
element-level monoid lemma is choice-free. So we reprove the small slice of
Kleene algebra we need
(smul_assoc, sunion_mul, smul_union) at the membership level, define star
by an explicit
recursion (kpow) rather than ⋃ₙ zⁿ, and phrase Arden's lemma without
Monotone — keeping
everything choice-free (#print axioms ⊆ {propext, Quot.sound}).
The star z* = ⋃ₙ zⁿ, by explicit recursion #
zⁿ as an iterated pointwise product (left-recursion z^{n+1} = z·zⁿ).
Equations
Instances For
Scott's z*: the set of all finite products of elements of z (including the
empty product
1). Defined as {s ∣ ∃ n, s ∈ zⁿ} to stay choice-free (avoiding ⋃ order
lemmas).
Equations
Instances For
Arden's lemma #
Scott's operator w ↦ z·w ∪ v, whose least fixed point is the least solution
of w = z·w ∪ v.
Equations
- Domain.Neighborhood.Exercise515.G z v w = z * w ∪ v
Instances For
Part (2): David Park's simultaneous system #
The "feedback" coefficient A = a ∪ b·a*·b of the eliminated system.
Equations
Instances For
The "feedback" constant C = c ∪ b·a*·d.
Equations
- Domain.Neighborhood.Exercise515.parkC a b c d = c ∪ b * Domain.Neighborhood.Exercise515.star a * d
Instances For
The accompanying least solution for y: y₀ = a*·(b·x₀ ∪ d).
Equations
- Domain.Neighborhood.Exercise515.parkY a b c d = Domain.Neighborhood.Exercise515.star a * (b * Domain.Neighborhood.Exercise515.parkX a b c d ∪ d)
Instances For
Exercise 5.15(2), leastness. Any solution (x, y) of the system dominates
(x₀, y₀). Hence
(x₀, y₀) is the least solution, and x₀ = (a ∪ b·a*·b)*·(c ∪ b·a*·d) as
claimed. The proof is
Gaussian elimination: solve the second equation for y by arden, substitute,
apply arden
again.