Local Diamond Unfolding (Section 3.2 and 3.3) #
Diamonds: Dset, Y and Φ_⋄ #
Unfold a given program into combinations of test formulas and lists of programs, assuming the program is used inside a diamond.
Equations
Instances For
This is used by PreState.loadedExists
Φ_◇(α,ψ)
Equations
- PDL.unfoldDiamond α φ = List.map (fun (Fδ : List PDL.Formula × List PDL.Program) => PDL.Yset Fδ φ) (PDL.Dset α)
Instances For
Where formulas in the diamond unfolding can come from. Inspired by unfoldBoxContent.
Helper function to trick "List.Chain r" to use a different r at each step.
Equations
- PDL.pairRel M (fst, v) (α, w) = PDL.relate M α v w
Instances For
Loaded Diamonds (Section 3.3) #
The Option is used here because unfolding of tests can lead to free nodes.
Attach a residual program sequence to an already loaded continuation.
Equations
- PDL.YsetLoad (F, δ) x✝ = (F, some (PDL.NegLoadFormula.neg (PDL.LoadFormula.boxes δ x✝)))
Instances For
Load a residual sequence over an ordinary formula, or unload it when the sequence is empty.
Equations
Instances For
Loaded unfolding for ~'⌊α⌋(χ : LoadFormula)
Equations
- PDL.unfoldDiamondLoaded α χ = List.map (fun (Fδ : List PDL.Formula × List PDL.Program) => PDL.YsetLoad Fδ χ) (PDL.Dset α)
Instances For
Loaded unfolding for ~'⌊α⌋(φ : Formula)
Equations
- PDL.unfoldDiamondLoaded' α φ = List.map (fun (Fδ : List PDL.Formula × List PDL.Program) => PDL.YsetLoad' Fδ φ) (PDL.Dset α)
Instances For
Merge an optional loaded formula into a list of ordinary formulas by unloading it.
Instances For
Merge an optional loaded formula into a finset of ordinary formulas by unloading it.