def get_low
bendtorch-core@0.1.0.0 · src/storage/refinement.bend:33
import bendtorch-core@0.1.0.0/src/storage/refinement.bend as Refinement
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
33def get_low(-T: Data, -p: Nat, -original: Array<T>, -n: U32, -i: U32,
34 ys: Array<T>,
35 child: Get<T, p, original, U32.shr(n), i, U32.is_lt(i, U32.shr(U32.shr(n)))>,
36 ey: Model.Balanced(T, p, ys)) -> Get<T, 1n+p, ANode{original, ys}, n, i, True{}>:
37 match child:
38 case Get{xs, value, equal, kept, observed, ex}:
39 Get{ANode{xs, ys}, value,
40 Equal.cong(Array<T> & T, Array<T> & T, r => Array.swap.lo(T, ys, r),
41 (xs, value), Array.get.go(T, original, U32.shr(n), i,
42 U32.is_lt(i, U32.shr(U32.shr(n)))), equal),
43 Equal.cong(Array<T>, Array<T>, x => ANode{x, ys}, xs, original, kept),
44 observed, (ex, ey)}