def store

stelliferous@0.0.2.0 · proofs/traversal_witness.bend:18

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

18def store(~Reader: Type,~Element: Data,~Context: Data,~destination: Context -> U32 -> U32,
19  +depth: Nat,-reader: Reader,+position: U32,+context: Context,-output: Array<Element>,-result: Reader & Element,
20  output_evidence: Witness.Witness(Element,depth,output),sample: Sample<Reader,Element,reader,result>) ->
21  StateEvidence<Reader,Element,Context,reader,depth,Traversal.store(~Reader,~Element,~Context,~destination,position,context,output,result)>:
22  match sample:
23    case Sample{value,equation}:
24      %Equal.sym(Reader & Element,result,(reader,value),equation) :
25        StateEvidence<Reader,Element,Context,reader,depth,Traversal.store(~Reader,~Element,~Context,~destination,position,context,output,_)>
26      StateEvidence{Array.set(Element,output,destination(context,position),value),(position + 1 : U32),context,{==},
27        Witness.write(Element,depth,output,destination(context,position),value,output_evidence)}

Uses (13)

Used by (1)