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}

Uses (17)

Used by (1)