def lift_observation

stelliferous@0.0.2.0 · proofs/storage_refinement.bend:471

import stelliferous@0.0.2.0/proofs/storage_refinement.bend as StorageRefinement
import Base
import stelliferous@0.0.2.0/proofs/storage_tree_model.bend as Tree

471# Transport a concrete owner observation into a proposition checked on trees.
472# The proposition and canonical proof are proof-only; they are not loop inputs.
473def lift_observation(~Element: Data,~Context: Data,
474  ~Proposition: Context -> @-storage: Array<Element> -> @-tree: Tree.Tree<Element> -> Type,
475  +context: Context,-storage: Array<Element>,observation: Observation<Element,storage>,
476  canonical: @+tree: Tree.Tree<Element> -> Proposition(context,Tree.pack(Element,tree),tree)) ->
477  Proposition(context,storage,Tree.reflect(Element,storage)):
478  Observation{+tree,packed,reflected} = observation
479  %reflected : Proposition(context,storage,_)
480  %packed : Proposition(context,_,tree)
481  canonical(tree)

Uses (5)

Used by (1)