fact: Definition ndouble := fun (sc: Z) (p1: nelt) => match p1 with nzero => (p1, sc) | (ntriple x1 y1 z1) => if (y1 ?= 0) then (nzero, z1 ** sc) else let m' := 3 ** x1 ** x1 ++ A ** z1 ** z1 in let l' := 2 ** 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 -- 2 ** x1 ** l'2 in (ntriple (l' ** x3) (l'2 ** (m' ** x1 -- y1 ** l') -- m' ** x3) (z1 ** l'3), sc) end.
imports: Ring Field_tac Ring_tac Eqdep_dec ZArith ZCAux Ppow GZnZ EGroup SMain Zmod