def get_final
bendtorch-core@0.1.0.0 · src/storage/refinement.bend:249
import bendtorch-core@0.1.0.0/src/storage/refinement.bend as Refinement
import Base
import bendtorch-core@0.1.0.0/src/storage/size.bend as Size
249def get_final(-T: Data, -d: Nat, -original: Array<T>, -sized_array: Array<T>, -n: U32, -i: U32,
250 measured: {(sized_array, n) == Array.size(T, original) : Array<T> & U32},
251 +retained: {sized_array == original : Array<T>}, extent: {n == Size.capacity(d) : U32},
252 child: Get<T, d, sized_array, n, masked(n, i), U32.is_lt(masked(n, i), U32.shr(n))>) ->
253 GetFull<T, d, original, i>:
254 match child:
255 case Get{array, value, equal, kept, observed, valid}:
256 GetFull{array, value,
257 Equal.trans(Array<T> & T, (array, value), Array.get.at(T, i, (sized_array, n)),
258 Array.get(T, original, i), equal,
259 Equal.cong(Array<T> & U32, Array<T> & T, r => Array.get.at(T, i, r),
260 (sized_array, n), Array.size(T, original), measured)),
261 Equal.trans(Array<T>, array, sized_array, original, kept, retained),
262 observed_transport(T, d, sized_array, original, n, i, value, retained, extent, observed),
263 valid}