def bounded_read_is_get

stelliferous@0.0.2.0 · proofs/storage_refinement.bend:208

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
import stelliferous@0.0.2.0/proofs/storage_tree_model.bend as Tree

208def bounded_read_is_get(~Element: Data,+fallback: Element,+tree: Tree.Tree<Element>,+index: U32,+logical_length: U32,
209  inside: {U32.is_lt(index,logical_length) == True{} : Bool},
210  room: {U32.is_le(logical_length,Tree.capacity(Element,tree)) == True{} : Bool}) ->
211  {Storage.read_or(Element,fallback,Tree.pack(Element,tree),index,logical_length) ==
212    Array.get(Element,Tree.pack(Element,tree),index) : Array<Element> & Element}:
213  %Equal.sym(Array<Element> & U32,Array.size(Element,Tree.pack(Element,tree)),(Tree.pack(Element,tree),Tree.capacity(Element,tree)),
214    size(Element,tree)) :
215    {Storage.read_sized(Element,fallback,index,logical_length,_) == Array.get(Element,Tree.pack(Element,tree),index) : Array<Element> & Element}
216  %Equal.sym(Bool,U32.is_lt(index,logical_length),True{},inside) :
217    {Storage.read_when(Element,fallback,_ && U32.is_le(logical_length,Tree.capacity(Element,tree)),Tree.pack(Element,tree),index) ==
218      Array.get(Element,Tree.pack(Element,tree),index) : Array<Element> & Element}
219  %Equal.sym(Bool,U32.is_le(logical_length,Tree.capacity(Element,tree)),True{},room) :
220    {Storage.read_when(Element,fallback,_,Tree.pack(Element,tree),index) == Array.get(Element,Tree.pack(Element,tree),index) : Array<Element> & Element}
221  {==}

Uses (18)

Used by (0)

No other definition uses this definition.