def equivalent_sequence_read

stelliferous@0.0.2.0 · proofs/storage_refinement.bend:425

import stelliferous@0.0.2.0/proofs/storage_refinement.bend as StorageRefinement
import Base
import stelliferous@0.0.2.0/storage_buffer.bend as Storage

425def equivalent_sequence_read(~Element: Data,+fallback: Element,+length: Nat,+values: List<&2,Element>,
426  +left: SequenceEvidence<Element,length,values>,+right: SequenceEvidence<Element,length,values>,
427  +index: U32,+native_length: U32,+length_exact: {U32.to_nat(native_length) == length : Nat}) ->
428  {Storage.read_or(Element,fallback,sequence_owner(Element,length,values,left),index,native_length) ==
429    replace_read_owner(~Array<Element>,~Element,sequence_owner(Element,length,values,left),
430      Storage.read_or(Element,fallback,sequence_owner(Element,length,values,right),index,native_length)) : Array<Element> & Element}:
431  %Equal.sym(Array<Element> & Element,
432    Storage.read_or(Element,fallback,sequence_owner(Element,length,values,right),index,native_length),
433    (sequence_owner(Element,length,values,right),Maybe.default(&2,Element,List.get(&2,Element,values,U32.to_nat(index)),fallback)),
434    read_sequence_evidence(~Element,fallback,length,values,right,index,native_length,length_exact)) :
435    {Storage.read_or(Element,fallback,sequence_owner(Element,length,values,left),index,native_length) ==
436      replace_read_owner(~Array<Element>,~Element,sequence_owner(Element,length,values,left),_) : Array<Element> & Element}
437  read_sequence_evidence(~Element,fallback,length,values,left,index,native_length,length_exact)

Uses (15)

Used by (0)

No other definition uses this definition.