def bounded_read_is_get
import stelliferous@0.0.2.0/proofs/storage_refinement.bend as StorageRefinementimport 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.