fact: Definition Otest cl1 cl2 := let: (ij1, kvs1) := cl1 in let: (ij2, kvs2) := cl2 in let fix loop s1 s2 kvs2 := if kvs2 is (k, v2) :: kvs2 then if get_lit k kvs1 is Some v1 then loop (v1 * v2 + s1) s2 kvs2 else loop s1 s2.+1 kvs2 else (s1, if norm_cl kvs1 == 3%N then 0%N else s2) in let: (s1, s2) := loop 0 0%N kvs2 in (norm_cl kvs2 == 3%N) ==> (`|s1 - dot_ref ij1 ij2| <= s2)%N.
imports: mathcomp.ssreflect.ssreflect mathcomp(ssrbool ssrfun eqtype ssrnat seq path div choice fintype) mathcomp(tuple finfun bigop order prime ssralg matrix poly finset) mathcomp(fingroup morphism perm automorphism quotient action finalg zmodp) mathcomp(gfunctor center gproduct cyclic pgroup abelian frobenius) mathcomp(mxalgebra mxrepresentation vector falgebra fieldext galois) mathcomp(ssrnum rat algC algnum classfun character) mathcomp(integral_char inertia vcharacter) odd_order(PFsection1 PFsection2)