Documentation

Computable2Guarded

Computable2Guarded's entry point β€” π’ž_Dβ†’G := π’ž_reord ∘ π’ž_flat ∘ π’ž_par ∘ π’ž_cflow, matching the <InputType>.<verb> convention the other passes use. π’ž_cflow/π’ž_par run first, both whole-Algorithm rewrites within ComputablePlusCal's own type (their order doesn't matter); only then does the merged π’ž_flat/π’ž_reord walk change shape, applied per (label, Block) pair across every thread of every process. Declarations/Process/Algorithm's outer shape is otherwise a plain structural copy β€” ComputablePlusCal's Typ/Expression and this pass's own pinning of GuardedPlusCal's are the identical types, so only threads genuinely changes shape. Declarations is still a distinct (if identically-shaped) structure between the two namespaces, so Declarations.toGuarded below is a one-line field-for-field repackaging, not a real translation.

ElaboratedPlusCal.Declarations and GuardedPlusCal.Declarations share every field's name and type (see the module doc above) β€” this only exists because they're nominally distinct structures, not because anything actually needs converting.

Equations
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For