proposition: Lemma sec_poly_bij_part (x: Party) (U: seq Party) (m m': Word) (q: {poly Word}): uniq U -> x \in U -> (cons_poly m' (poly_bij U m m' q)).[party_to_word x] = (cons_poly m q ).[party_to_word x].
proof: Proof. move=> Huniq Hin. rewrite (cons_poly_add m). rewrite lagrange_sub_zero_cons. 2: by rewrite /= no_zero_share uniq_make_shares. rewrite hornerD cons_eq_head_tail_poly. 2: { rewrite /head_poly -horner_coef0. rewrite (lagrange_poly_correct 0 (m' - m)) //. - by rewrite /unzip1 /= -/unzip1 unzip1_zero_points no_zero_share uniq_make_shares. - by rewrite in_cons eq_refl. } rewrite (lagrange_poly_correct (party_to_word x) 0%R) ?GRing.addr0 //. - by rewrite /unzip1 /= -/unzip1 unzip1_zero_points no_zero_share uniq_make_shares. - by rewrite in_cons pt_in_zero_points ?Bool.orb_true_r // in_make_shares. 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)