fact: Definition ndouble: zZ -> nelt -> (nelt * zZ):= fun (sc: zZ) (p1: nelt) => match p1 with nzero => (p1, sc) | (ntriple x1 y1 z1) => if (y1 ?= c0) then (nzero, z1 ** sc) else let m' := c3 ** x1 ** x1 ++ A ** z1 ** z1 in let l' := c2 ** y1 ** z1 in let m'2 := m' ** m' in let l'2 := l' ** l' in let l'3 := l'2 ** l' in let x3 := m'2 ** z1 -- c2 ** x1 ** l'2 in (ntriple (l' ** x3) (l'2 ** (m' ** x1 -- y1 ** l') -- m' ** x3) (z1 ** l'3), sc) end.
imports: ZArith Znumtheory Zpow_facts CyclicAxioms Cyclic63 Int63Compat Bignums(DoubleCyclic BigN) W Mod_op ZEll Bits Zmod