def gall
bend-collections-laws-math@1.0.0.0 · proofs/math/typed/u32int.bend:193
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/u32int.bend as U32int
import Base
import bend-collections-laws-math@1.0.0.0/src/math/generic.bend as G
import bend-collections-laws-math@1.0.0.0/src/math/natural.bend as M
import bend-collections-laws-math@1.0.0.0/src/math/instances.bend as I
193def gall(+xs: List<&2, U32>, +acc: U32) -> {v(G.gcd_all_go(~U32, ~I.u32_op, ~I.u32_is, xs, acc)) == M.gcd_all_go(vals(xs), v(acc)) : Nat}:
194 match xs:
195 case Nil{}:
196 {==}
197 case Con{+x, +t}:
198 +g = G.gcd(~U32, ~I.u32_op, ~I.u32_is, acc, x)
199 Equal.trans(Nat, v(G.gcd_all_go(~U32, ~I.u32_op, ~I.u32_is, t, g)), M.gcd_all_go(vals(t), v(g)), M.gcd_all_go(vals(t), M.gcd(v(acc), v(x))), gall(t, g), Equal.cong(Nat, Nat, z => M.gcd_all_go(vals(t), z), v(g), M.gcd(v(acc), v(x)), gcd_val(acc, x)))