proposition: Theorem estimation_ok : estimation_spec vb.
proof: Proof. split=> [|n0]. rewrite /build_tree. have Hun0 : uniq_path (tanner_rel H) (id_of_kind kv ord0) [::] by []. have := uniq_labels_build_tree_rec tanner_acyclic rW #|id'| Hun0. rewrite -labels_sumprod_up -(@labels_sumprod_down kv _ None). apply: subseq_uniq. exact: subseq_estimation. have Hn0 := get_esti_ok n0. set estimations := estimation _ in Hn0 *. have := get_esti_subseq n0 estimations. by rewrite Hn0 /= -sub1seq. Qed.
imports: Wf_nat Init.Wf Recdef Reals mathcomp(all_ssreflect perm zmodp matrix ssralg) mathcomp(Rstruct) ssrR Reals_ext ssr_ext ssralg_ext bigop_ext f2 fdist channel pproba linearcode subgraph_partition tanner tanner_partition summary ldpc checksum ldpc_algo