fact: Definition amd (A: Type) (a b c: int) (f: int -> int -> A): A := match a *c b with | W0 => f c 0 | WW resh resl => let u := (resl + c)%uint63 in match u ?= resl with | Lt => f u (succ resh) | _ => f u resh end end.
imports: List ZArith Znumtheory Uint63 Cyclic63