def ASet.copy_node
bend-ml-tensor-array@0.1.19.0 · main.bend:2010
import bend-ml-tensor-array@0.1.19.0/main.bend as BendMlTensorArray
import Base
2010def ASet.copy_node(-T: Data, -xs: Array<T>, ys: Array<T>, r: ASet.Copy(T, xs)) -> ASet.Copy(T, ANode{xs, ys}):
2011 match r:
2012 case Tuple{b, r1}:
2013 match r1:
2014 case Tuple{+m, r2}:
2015 match r2:
2016 case Tuple{+p, r3}:
2017 match r3:
2018 case Tuple{+q, r4}:
2019 match r4:
2020 case Tuple{+s, u}:
2021 (ANode{b, ys}, U32.shl(m),
2022 {(%p : {ANode{b, ys} == ANode{_, ys} : Array<T>}; {==}) : {ANode{b, ys} == ANode{xs, ys} : Array<T>}},
2023 {(%s : {U32.shl(m) == Pair.snd(Array<T>, U32, Array.size.node(T, ys, _)) : U32}; %q : {U32.shl(m) == U32.shl(_) : U32}; {==}) : {U32.shl(m) == ASet.sz(T, ANode{b, ys}) : U32}},
2024 {(%s : {(ANode{b, ys}, Pair.snd(Array<T>, U32, Array.size.node(T, ys, _))) == Array.size.node(T, ys, _) : Array<T> & U32}; {==}) : {(ANode{b, ys}, ASet.sz(T, ANode{b, ys})) == Array.size(T, ANode{b, ys}) : Array<T> & U32}},
2025 Unit{})