Recipes (docs/roleflow.tex, sec:typing, sec:inverse) #
A recipe is executable (XRecipe): the line that computes its targets from its arguments. The
recipes of lines under roles (xrecs) are one per conditioner, its own line, and one per spine
step, the line of its semi-inverse, from the results and the parameters to the consumed
arguments. Known R B is the least set containing B and closed under firing recipes of R.
Every recipe holds on every trace (xrecs_holds), conditioners by the trace and spine steps by
the left law. The typing (Recov), the density theorem and the schedule all use these recipes
and this one fact.
The executable recipes of lines under roles at scope n, in the order of the lines.
Equations
- One or more equations did not get rendered due to their size.
- RoleFlow.xrecs x✝ (l :: ls) (RoleFlow.Role.cond :: ρ) = { line := l, tgt := l.ys x✝ } :: RoleFlow.xrecs (x✝ + l.bs.length) ls ρ
- RoleFlow.xrecs x✝² x✝¹ x✝ = []
Instances For
Membership inversion: an executable recipe of l :: ls is one of the remaining lines,
the line's own (a conditioner) or that of its semi-inverse (a spine step).
Recomputability #
Known R B: the least set containing B and closed under firing recipes of R.
- base {S : Type} {Sg : Sig S} {R : List (XRecipe Sg)} {B : Set ℕ} {v : ℕ} : v ∈ B → Known R B v
- fire {S : Type} {Sg : Sig S} {R : List (XRecipe Sg)} {B : Set ℕ} {r : XRecipe Sg} {v : ℕ} : r ∈ R → (∀ w ∈ r.line.args, Known R B w) → v ∈ r.tgt → Known R B v
Instances For
The recipes hold #
Every executable recipe holds on every trace: conditioners by the trace, spine steps by the left law.