TraversalArrayRefinement.model_update_step: def of stelliferous@0.0.2.0 Import: import stelliferous@0.0.2.0/proofs/traversal_array_refinement.bend as TraversalArrayRefinement Lines 178-186 of stelliferous@0.0.2.0/proofs/traversal_array_refinement.bend: https://jend.leeeet.dev/read.txt?path=stelliferous@0.0.2.0/proofs/traversal_array_refinement.bend&start_line=178&end_line=186 import Base import stelliferous@0.0.2.0/traversal_array.bend as Traversal import stelliferous@0.0.2.0/proofs/storage_tree_model.bend as Tree # In-place binary updates use the current destination value in left position. # This theorem models sequential writes, including modular/overlapping raw # addresses. Valid view guards and non-overlap are separate obligations. def model_update_step(~Model: Data,~Element: Data,~Sample: Data,~Context: Data, ~sample: Model -> Context -> U32 -> Sample,~combine: Element -> Sample -> Element,~destination: Context -> U32 -> U32, state: Traversal.State<&2,&2,Model,Tree.Tree,Context>) -> Traversal.State<&2,&2,Model,Tree.Tree,Context>: Traversal.State{+reader,+output,+position,+context} = state Traversal.State{reader,Tree.write(Element,output,destination(context,position), combine(Tree.read(Element,output,destination(context,position)),sample(reader,context,position))),(position + 1 : U32),context} Uses (6): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add https://jend.leeeet.dev/definition.txt?path=stelliferous@0.0.2.0/proofs/storage_tree_model.bend&name=Tree https://jend.leeeet.dev/definition.txt?path=stelliferous@0.0.2.0/proofs/storage_tree_model.bend&name=read https://jend.leeeet.dev/definition.txt?path=stelliferous@0.0.2.0/proofs/storage_tree_model.bend&name=write https://jend.leeeet.dev/definition.txt?path=stelliferous@0.0.2.0/traversal_array.bend&name=State