proposition: Lemma size_poly_bij {t: nat} (U: seq Party) (m m': Word) (q: {poly Word}): size U <= t -> size q <= t -> size (poly_bij U m m' q) <= t.
proof: Proof. move=> Hu Hq. apply: leq_trans. 1: by apply: size_add. rewrite geq_max. apply /andP. split => //. rewrite size_tail_poly leq_pred_S. apply: leq_trans. 1: by apply: size_add. rewrite geq_max. apply /andP. split. 2: rewrite size_opp. all: apply: (leq_trans (size_lagrange_poly _)). all: by rewrite /= size_map. Qed.
imports: Relational(OrderEnrichedCategory GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum ssrnat ssreflect ssrfun ssrbool ssrnum eqtype choice seq) Mon(SPropBase) Crypt(Axioms ChoiceAsOrd SubDistr Couplings UniformDistrLemmas FreeProbProg Theta_dens RulesStateProb pkg_core_definition choice_type pkg_composition pkg_rhl Package Prelude) extructures(ord fset fmap) Equations(Equations)