def update_step

stelliferous@0.0.2.0 · proofs/traversal_witness.bend:136

import stelliferous@0.0.2.0/proofs/traversal_witness.bend as TraversalWitness
import Base
import stelliferous@0.0.2.0/traversal_array.bend as Traversal
import stelliferous@0.0.2.0/proofs/storage_witness.bend as Witness

136def update_step(~Reader: Type,~Element: Data,~Value: Data,~Context: Data,~ReaderEvidence: @-reader: Reader -> Data,
137  ~read: Reader -> Context -> U32 -> Reader & Value,~combine: Element -> Value -> Element,~destination: Context -> U32 -> U32,
138  ~read_preserves: @-reader: Reader -> @context: Context -> @index: U32 -> ReaderEvidence(reader) ->
139    Sample<Reader,Value,reader,read(reader,context,index)>,
140  +depth: Nat,-reader: Reader,-state: Traversal.State<&1,&1,Reader,Array<Element>,Context>,
141  reader_evidence: ReaderEvidence(reader),evidence: StateEvidence<Reader,Element,Context,reader,depth,state>) ->
142  StateEvidence<Reader,Element,Context,reader,depth,
143    Traversal.update_step(~Reader,~Element,~Value,~Context,~read,~combine,~destination,state)>:
144  match evidence:
145    case StateEvidence{output,+position,+context,equation,+output_evidence}:
146      %Equal.sym(Traversal.State<&1,&1,Reader,Array<Element>,Context>,state,Traversal.State{reader,output,position,context},equation) :
147        StateEvidence<Reader,Element,Context,reader,depth,
148          Traversal.update_step(~Reader,~Element,~Value,~Context,~read,~combine,~destination,_)>
149      update_current(~Reader,~Element,~Value,~Context,~read,~combine,~destination,depth,reader,position,context,output,
150        Array.get(Element,output,destination(context,position)),output_evidence,
151        Witness.read(Element,depth,output,destination(context,position),output_evidence),
152        read_preserves(reader,context,position,reader_evidence))

Uses (12)

Used by (1)