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)))

Uses (14)

Used by (1)