Skip to content

Commit 89a20e4

Browse files
committed
fixes #122
1 parent 16e38b6 commit 89a20e4

12 files changed

+68
-63
lines changed

ecc_modern/ldpc_algo.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ Extract Constant Rmult => "( *.)".
203203
Extract Constant Rplus => "(+.)".
204204
Extract Constant Rinv => "fun x -> 1. /. x".
205205
Extract Constant Ropp => "(~-.)".
206-
(*Extraction "extraction/sumprod.ml" sumprod estimation.*)
206+
Extraction "extraction/sumprod.ml" sumprod estimation.
207207
208208
Section ToGraph.
209209

information_theory/channel_code.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Proof.
7373
rewrite /CodeErrRate div1R.
7474
apply/RleP/ (@leR_pmul2l (INR #|M|)); first exact/ltR0n.
7575
rewrite mulRA mulRV ?INR_eq0' -?lt0n // mul1R -iter_addR -big_const.
76-
by apply: leR_sumR => m _; exact: Pr_1.
76+
by apply: leR_sumR => m _; exact: Pr_le1.
7777
Qed.
7878

7979
Definition scha (W : `Ch(A, B)) (c : code) := (1 - echa(W , c))%R.

information_theory/channel_coding_direct.v

+2-2
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ apply (@leR_ltR_trans
734734
move: (preimC_Cal_E epsilon0 i tb); by rewrite inE.
735735
apply (@leR_trans (Pr (W ``(| i ord0)) (~: Cal_E i ord0) +
736736
Pr (W ``(| i ord0)) (\bigcup_(i0 | i0 != ord0) (Cal_E i i0)))%R).
737-
exact: Pr_union.
737+
exact: le_Pr_setU.
738738
exact/leR_add2l/Pr_bigcup.
739739
rewrite first_summand //.
740740
set lhs := (\sum_(_ < _ | _) _)%R.
@@ -756,7 +756,7 @@ rewrite card_ord /=.
756756
apply (@leR_ltR_trans (epsilon0 + k%:R *
757757
Pr P `^ n `x (`O(P , W)) `^ n [set x | prod_rV x \in `JTS P W n epsilon0])%R).
758758
apply leR_add2r.
759-
rewrite Pr_of_cplt leR_subl_addr addRC -leR_subl_addr; apply/JTS_1 => //.
759+
rewrite Pr_setC leR_subl_addr addRC -leR_subl_addr; apply/JTS_1 => //.
760760
by case: Hepsilon0.
761761
by case: Hn => _ [_ []].
762762
apply (@leR_ltR_trans (epsilon0 +

information_theory/entropy.v

+7-7
Original file line numberDiff line numberDiff line change
@@ -490,8 +490,8 @@ rewrite fdistXE fdist_proj13E big_distrl /= -big_split; apply eq_bigr => b _ /=.
490490
rewrite !(fdistXE,fdistAE,fdistC12E) /= -mulRDr.
491491
have [->|H0] := eqVneq (PQR (a, b, c)) 0; first by rewrite !mul0R.
492492
rewrite -logM; last 2 first.
493-
by rewrite -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1; exact: fdist_proj13_dominN H0.
494-
by rewrite -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1 fdistAE /= fdistC12E.
493+
by rewrite -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1; exact: fdist_proj13_dominN H0.
494+
by rewrite -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1 fdistAE /= fdistC12E.
495495
congr (_ * log _).
496496
by rewrite -setX1 product_ruleC !setX1 mulRC.
497497
Qed.
@@ -570,7 +570,7 @@ transitivity (- (\sum_(a in A) \sum_(b in B) PQ (a, b) * log (P a)) +
570570
rewrite addRC -mulRN -mulRDr addR_opp.
571571
have [->|H0] := eqVneq (PQ (a, b)) 0; first by rewrite !mul0R.
572572
congr (_ * _); rewrite logDiv //.
573-
- by rewrite -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1.
573+
- by rewrite -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1.
574574
- by apply/RltP; rewrite -fdist_gt0; exact: dom_by_fdist_fstN H0.
575575
rewrite -subR_opp; congr (_ - _).
576576
- rewrite /entropy; congr (- _); apply/eq_bigr => a _.
@@ -759,12 +759,12 @@ rewrite fdistXE fdistAE /= -mulRN -mulRDr.
759759
have [->|H0] := eqVneq (PQR (a, b, c)) 0; first by rewrite !mul0R.
760760
congr (_ * _).
761761
rewrite addRC addR_opp -logDiv; last 2 first.
762-
by rewrite -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1; exact: fdistA_dominN H0.
763-
by rewrite -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1; exact: fdist_proj13_dominN H0.
762+
by rewrite -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1; exact: fdistA_dominN H0.
763+
by rewrite -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1; exact: fdist_proj13_dominN H0.
764764
congr (log _).
765765
rewrite divRM; last 2 first.
766-
by rewrite -jcPr_gt0 -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1; exact: fdist_proj13_dominN H0.
767-
by rewrite -jcPr_gt0 -Pr_jcPr_gt0 Pr_gt0 setX1 Pr_set1; exact: fdist_proj23_dominN H0.
766+
by rewrite -jcPr_gt0 -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1; exact: fdist_proj13_dominN H0.
767+
by rewrite -jcPr_gt0 -Pr_jcPr_gt0 Pr_gt0P setX1 Pr_set1; exact: fdist_proj23_dominN H0.
768768
rewrite {2}/Rdiv -mulRA mulRCA {1}/Rdiv [in LHS]mulRC; congr (_ * _).
769769
rewrite -[in X in _ = X * _]setX1 jproduct_rule_cond setX1 -mulRA mulRV ?mulR1 //.
770770
rewrite /jcPr divR_neq0' // ?setX1 !Pr_set1.

information_theory/joint_typ_seq.v

+5-5
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ have : (JTS_1_bound <= n)%nat ->
130130
have : 1 <= 3 by lra.
131131
move/(set_typ_seq_incl P m (ltRW He)) => Hincl.
132132
rewrite (Pr_DMC_fst P W (fun x => x \notin `TS P m epsilon)).
133-
apply/Pr_incl/subsetP => i /=; rewrite !inE.
133+
apply/subset_Pr/subsetP => i /=; rewrite !inE.
134134
apply contra.
135135
by move/subsetP : Hincl => /(_ i); rewrite !inE.
136136
have {H1}HnP : forall n, ('| up (aep_bound P (epsilon / 3)) | <= n)%nat ->
@@ -159,7 +159,7 @@ have : (JTS_1_bound <= n)%nat ->
159159
have : 1 <= 3 by lra.
160160
move/(set_typ_seq_incl (`O(P , W)) m (ltRW He)) => Hincl.
161161
rewrite Pr_DMC_out.
162-
apply/Pr_incl/subsetP => i /=; rewrite !inE.
162+
apply/subset_Pr/subsetP => i /=; rewrite !inE.
163163
apply contra.
164164
move/subsetP : Hincl => /(_ i).
165165
by rewrite !inE.
@@ -187,7 +187,7 @@ have : (JTS_1_bound <= n)%nat ->
187187
Pr (((P `X W) ) `^ m) (~: `TS ((P `X W)) m (epsilon / 3)).
188188
have : 1 <= 3 by lra.
189189
move/(set_typ_seq_incl ((P `X W)) m (ltRW He)) => Hincl.
190-
apply/Pr_incl/subsetP => /= v; rewrite !inE.
190+
apply/subset_Pr/subsetP => /= v; rewrite !inE.
191191
apply contra.
192192
by move/subsetP : Hincl => /(_ v); by rewrite !inE.
193193
have {H1}HnP_W m : ('| up (aep_bound ((P `X W)) (epsilon / 3)) | <= m)%nat ->
@@ -229,8 +229,8 @@ apply (@leR_trans (
229229
Pr ((P `X W) `^ n) [set x | (rV_prod x).1 \notin `TS P n epsilon] +
230230
Pr ((P `X W) `^ n) ([set x | ((rV_prod x).2 \notin `TS (`O( P , W)) n epsilon)] :|:
231231
(~: `TS ((P `X W)) n epsilon)))).
232-
exact: Pr_union.
233-
rewrite -addRA !Pr_DMC_rV_prod; apply/leR_add2l; apply: leR_trans (Pr_union _ _ _).
232+
exact: le_Pr_setU.
233+
rewrite -addRA !Pr_DMC_rV_prod; apply/leR_add2l; apply: leR_trans (le_Pr_setU _ _ _).
234234
by apply/Req_le; congr Pr; apply/setP => t; rewrite !inE rV_prodK.
235235
Qed.
236236

information_theory/jtypes.v

+8-8
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,13 @@ by move=> a b; rewrite ffunE.
252252
Defined.
253253

254254
Definition jtype_enum A B n := pmap (@jtype_enum_f A B n)
255-
(enum [finType of { f : {ffun A -> {ffun B -> 'I_n.+1}} | (\sum_(a in A) \sum_(b in B) f a b == n)%nat}]).
255+
(enum (Finite.clone _ { f : {ffun A -> {ffun B -> 'I_n.+1}} | (\sum_(a in A) \sum_(b in B) f a b == n)%nat})).
256256

257257
Lemma jtype_enumP A B n : Finite.axiom (@jtype_enum A B n).
258258
Proof.
259259
case=> d f Hf H /=.
260-
have : Finite.axiom (enum [finType of { f : {ffun A -> {ffun B -> 'I_n.+1}} |
261-
(\sum_(a in A) \sum_(b in B) f a b == n)%nat }]).
260+
have : Finite.axiom (enum (Finite.clone _ { f : {ffun A -> {ffun B -> 'I_n.+1}} |
261+
(\sum_(a in A) \sum_(b in B) f a b == n)%nat })).
262262
rewrite enumT; by apply enumP.
263263
move/(_ (@exist _ _ f Hf)) => <-.
264264
rewrite /jtype_enum /=.
@@ -291,8 +291,8 @@ eq_ind_r
291291
else
292292
(sval f a b)%:R /
293293
(\sum_(b0 in B) (sval f a) b0)%:R)*) |}
294-
) (enum [finType of { f : {ffun A -> {ffun B -> 'I_n.+1}} |
295-
(\sum_(a in A) \sum_(b in B) f a b)%nat == n}]).
294+
) (enum (Finite.clone _ { f : {ffun A -> {ffun B -> 'I_n.+1}} |
295+
(\sum_(a in A) \sum_(b in B) f a b)%nat == n})).
296296
apply: eq_pmap => V.
297297
destruct Sumbool.sumbool_of_bool; last by rewrite Anot0 in e.
298298
destruct Sumbool.sumbool_of_bool; last by rewrite Bnot0 in e0.
@@ -357,13 +357,13 @@ move=> Anot0 Bnot0.
357357
move: (Anot0); case/card_gt0P => a _.
358358
move: (Bnot0); case/card_gt0P => b _.
359359
apply/card_gt0P.
360-
have [tmp Htmp] : [finType of {f : {ffun A -> {ffun B -> 'I_n.+1}} |
361-
\sum_(a1 in A) \sum_(b1 in B) f a1 b1 == n}].
360+
have [tmp Htmp] : {f : {ffun A -> {ffun B -> 'I_n.+1}} |
361+
\sum_(a1 in A) \sum_(b1 in B) f a1 b1 == n}.
362362
exists [ffun a1 => [ffun b1 => if (a1, b1) == (a, b) then
363363
Ordinal (ltnSn n) else Ordinal (ltn0Sn n)]].
364364
rewrite pair_big /=.
365365
rewrite (bigD1 (a, b)) //= big1 ; first by rewrite 2!ffunE eqxx addn0.
366-
move=> p /negbTE Hp ; by rewrite 2!ffunE -surjective_pairing Hp.
366+
by move=> p /negbTE Hp ; rewrite 2!ffunE -surjective_pairing Hp.
367367
have Htmp' : (forall a b,
368368
(chan_of_jtype Anot0 Bnot0 tmp) a b =
369369
(let ln := \sum_(b0 in B) (tmp a) b0 in

information_theory/source_coding_vl_converse.v

+2-2
Original file line numberDiff line numberDiff line change
@@ -689,9 +689,9 @@ Proof.
689689
pose m' := m.-1.
690690
have mpos : m = m'.+1.
691691
rewrite prednK // -ltR_nat ltR_neqAle; split => //; exact/leR0n.
692-
have: (@extension [finType of 'rV[A]_n] _ f) \o
692+
have: (@extension 'rV[A]_n _ f) \o
693693
(flatten \o map (fun x => @tval m _ (tuple_of_row x))) =1
694-
@extension [finType of {: 'rV[ 'rV[A]_n ]_m} ] _ fm.
694+
@extension {: 'rV[ 'rV[A]_n ]_m} _ fm.
695695
by elim => //= ta sta; rewrite /extension /= map_cat flatten_cat => <-.
696696
apply: eq_inj.
697697
apply: inj_comp => //.

information_theory/typ_seq.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ Lemma TS_inf : aep_bound P epsilon <= n.+1%:R ->
237237
Proof.
238238
move=> k0_k.
239239
have H1 : (1 - epsilon <= Pr (P `^ n.+1) (`TS P n.+1 epsilon) <= 1)%mcR.
240-
by apply/andP; split; apply/RleP; [exact: Pr_TS_1 | exact: Pr_1].
240+
by apply/andP; split; apply/RleP; [exact: Pr_TS_1 | exact: Pr_le1].
241241
have H2 : (forall x, x \in `TS P n.+1 epsilon ->
242242
exp2 (- n.+1%:R * (`H P + epsilon)) <=
243243
P `^ n.+1 x <= exp2 (- n.+1%:R * (`H P - epsilon)))%mcR.

information_theory/types.v

+3-2
Original file line numberDiff line numberDiff line change
@@ -473,10 +473,11 @@ case/boolP : [exists x, x \in T_{P}] => x_T_P.
473473
rewrite -(row_of_tupleK ta) in Hta.
474474
rewrite -(tuple_dist_type_entropy Hta).
475475
rewrite [X in X <= _](_ : _ = Pr (type.d P) `^ n (@row_of_tuple A n @: T_{P})).
476-
by apply Pr_1.
476+
exact: Pr_le1.
477477
symmetry.
478478
rewrite /Pr.
479-
transitivity (\sum_(a| (a \in [finType of 'rV[A]_n]) && [pred x in (@row_of_tuple A n @: T_{P})] a)
479+
transitivity (\sum_(a | (a \in [finType of 'rV[A]_n]) &&
480+
[pred x in (@row_of_tuple A n @: T_{P})] a)
480481
exp2 (- INR n * `H P)).
481482
apply eq_big => // ta'/= Hta'.
482483
rewrite -(@tuple_dist_type_entropy ta') //.

probability/bayes.v

+14-14
Original file line numberDiff line numberDiff line change
@@ -421,10 +421,10 @@ split.
421421
case ac: (a == c).
422422
rewrite -(eqP ac); exact.
423423
move=> _ _ _.
424-
rewrite (proj2 (cPr_eq0 _ _ _)); last first.
424+
rewrite (proj2 (cPr_eq0P _ _ _)); last first.
425425
apply/Pr_set0P => u.
426426
by rewrite !inE => /andP [] /andP [] /= /eqP ->; rewrite ac.
427-
rewrite (proj2 (cPr_eq0 _ _ _)); last first.
427+
rewrite (proj2 (cPr_eq0P _ _ _)); last first.
428428
apply/Pr_set0P => u.
429429
by rewrite !inE => /andP [] /= /eqP ->; rewrite ac.
430430
by rewrite mul0R.
@@ -441,7 +441,7 @@ split.
441441
set x := (X in X = X * X).
442442
move/Rxx2 => [] Hx.
443443
rewrite -/x Hx.
444-
rewrite (proj2 (cPr_eq0 _ _ _)) ?mul0R //.
444+
rewrite (proj2 (cPr_eq0P _ _ _)) ?mul0R //.
445445
apply/Pr_set0P => u.
446446
by rewrite !inE => /andP [] /andP [] /= /eqP ->; rewrite ab.
447447
rewrite /cPr.
@@ -459,17 +459,17 @@ split.
459459
move/eqP in Hden.
460460
rewrite /cPr /Rdiv -mulRA mulVR // mulR1 mul1R.
461461
move/(f_equal (Rminus den)).
462-
rewrite subRR setIC -Pr_diff => /Pr_set0P/(_ u).
463-
rewrite !inE (eqP Hi) Hk eq_sym ab; exact.
462+
rewrite subRR setIC -Pr_setD => /Pr_set0P/(_ u).
463+
by rewrite !inE (eqP Hi) Hk eq_sym ab; exact.
464464
case: (ord_eq_dec k j).
465465
move=> <- {j} ik b.
466466
case bc: (b == c).
467467
rewrite (eqP bc); exact.
468468
move=> _ _ _.
469-
rewrite (proj2 (cPr_eq0 _ _ _)); last first.
469+
rewrite (proj2 (cPr_eq0P _ _ _)); last first.
470470
apply/Pr_set0P => u.
471471
by rewrite !inE => /andP [] /andP [] _ /= /eqP ->; rewrite bc.
472-
rewrite mulRC (proj2 (cPr_eq0 _ _ _)) ?mul0R //.
472+
rewrite mulRC (proj2 (cPr_eq0P _ _ _)) ?mul0R //.
473473
by apply/Pr_set0P => u; rewrite !inE => /andP [] /= /eqP ->; rewrite bc.
474474
move=> nkj nij b HG Hvals; apply: HG => //.
475475
by rewrite Hvals set_val_tl // set_val_tl // set_val_hd.
@@ -631,10 +631,10 @@ case /boolP: [forall i in (e :&: g), _].
631631
rewrite negb_forall => /existsP [i].
632632
rewrite inE negb_imply => /andP [] /andP [Hie Hig] /eqP Hvi.
633633
right; rewrite /cinde_events.
634-
rewrite (proj2 (cPr_eq0 _ _ _)); last first.
634+
rewrite (proj2 (cPr_eq0P _ _ _)); last first.
635635
apply/Pr_set0P => u; rewrite !inE => Hprod; elim: Hvi.
636636
case/andP: Hprod => /andP[] /eqP <- _ /eqP <-; exact: prod_vars_inter.
637-
rewrite (proj2 (cPr_eq0 _ _ _)) ?mul0R //.
637+
rewrite (proj2 (cPr_eq0P _ _ _)) ?mul0R //.
638638
apply/Pr_set0P => u; rewrite !inE => Hprod; elim: Hvi.
639639
case/andP: Hprod => /eqP <- /eqP <-; exact: prod_vars_inter.
640640
Qed.
@@ -664,7 +664,7 @@ rewrite (proj2 (Pr_set0P _ _)); last first.
664664
suff : `Pr_P[finset (prod_vars f @^-1 B) | finset (prod_vars g @^-1 C)] = 0.
665665
by rewrite /cPr => ->; rewrite mulR0 div0R.
666666
(* prove incompatibility between B and C *)
667-
apply/cPr_eq0/Pr_set0P => u.
667+
apply/cPr_eq0P/Pr_set0P => u.
668668
rewrite !inE => /andP [] /eqP HB /eqP HC.
669669
move: Hnum; rewrite /den.
670670
have -> : g = (e :&: f :|: g) :\: ((e :&: f) :\: g).
@@ -745,7 +745,7 @@ split.
745745
rewrite negb_imply /vals => /andP [Hif].
746746
case /boolP: (i \in g) => Hig.
747747
(* B and C are incompatible *)
748-
move: (Hfg i); by rewrite inE Hif Hig /= (set_vals_hd vals0) // => ->.
748+
by move: (Hfg i); rewrite inE Hif Hig /= (set_vals_hd vals0) // => ->.
749749
case /boolP: (i \in e) => Hie;
750750
last by rewrite set_vals_tl // set_vals_tl // eqxx.
751751
(* A and B are incompatible *)
@@ -756,7 +756,7 @@ split.
756756
rewrite {1}/cinde_events -!preim_vars_inter setUid /=.
757757
case/Rxx2.
758758
(* cPr = 0 *)
759-
move/cPr_eq0/Pr_set0P => Hx.
759+
move/cPr_eq0P/Pr_set0P => Hx.
760760
have HAC :
761761
Pr P (finset (prod_vars e @^-1 A) :&: finset (prod_vars g @^-1 C)) = 0.
762762
apply Pr_set0P => u Hu; apply Hx.
@@ -767,8 +767,8 @@ split.
767767
by rewrite set_vals_prod_vars.
768768
case/boolP: (j \in e) => // je.
769769
by rewrite set_vals_tl // set_vals_prod_vars.
770-
rewrite /cinde_events (proj2 (cPr_eq0 _ _ _)).
771-
by rewrite (proj2 (cPr_eq0 _ _ _)) // mul0R.
770+
rewrite /cinde_events (proj2 (cPr_eq0P _ _ _)).
771+
by rewrite (proj2 (cPr_eq0P _ _ _)) // mul0R.
772772
apply/Pr_set0P => u Hu.
773773
apply(proj1 (Pr_set0P _ _) HAC).
774774
move: Hu; by rewrite !inE => /andP[] /andP[] -> _ ->.

probability/jfdist_cond.v

+5-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Require Import fdist proba.
2020
(* jfdist_cond PQ a == The conditional distribution derived from PQ *)
2121
(* given a; same as fdist_cond0 when *)
2222
(* fdist_fst PQ a != 0. *)
23-
(* PQ `(| a |) == notation jfdist_cond PQ a *)
23+
(* PQ `(| a ) == notation jfdist_cond PQ a *)
2424
(* *)
2525
(******************************************************************************)
2626

@@ -59,10 +59,10 @@ Lemma jcPr_ge0 E F : 0 <= \Pr_[E | F].
5959
Proof. by rewrite jcPrE. Qed.
6060

6161
Lemma jcPr_le1 E F : \Pr_[E | F] <= 1.
62-
Proof. by rewrite jcPrE; exact: cPr_max. Qed.
62+
Proof. by rewrite jcPrE; exact: cPr_le1. Qed.
6363

6464
Lemma jcPr_gt0 E F : 0 < \Pr_[E | F] <-> \Pr_[E | F] != 0.
65-
Proof. by rewrite !jcPrE; apply cPr_gt0. Qed.
65+
Proof. by rewrite !jcPrE; apply cPr_gt0P. Qed.
6666

6767
Lemma Pr_jcPr_gt0 E F : 0 < Pr P (E `* F) <-> 0 < \Pr_[E | F].
6868
Proof.
@@ -73,11 +73,13 @@ split.
7373
by apply/Pr_cPr_gt0; move: H; rewrite jcPrE -setTE -EsetT.
7474
Qed.
7575

76+
(* TODO: rename *)
7677
Lemma jcPr_cplt E F : Pr (P`2) F != 0 -> \Pr_[ ~: E | F] = 1 - \Pr_[E | F].
7778
Proof.
7879
by move=> PF0; rewrite 2!jcPrE EsetT setCX cPr_cplt ?EsetT // setTE Pr_setTX.
7980
Qed.
8081

82+
(* TODO: rename *)
8183
Lemma jcPr_diff E1 E2 F : \Pr_[E1 :\: E2 | F] = \Pr_[E1 | F] - \Pr_[E1 :&: E2 | F].
8284
Proof.
8385
rewrite jcPrE DsetT cPr_diff jcPrE; congr (_ - _).

0 commit comments

Comments
 (0)