@@ -807,10 +807,13 @@ proof.
807807 rewrite (hrec (size (drop block_size p))) 2://; 1: smt(size_drop gt0_block_size).
808808 rewrite -{4}(cat_take_drop block_size p); congr.
809809 rewrite -!take_xor_map2_xor; apply (eq_from_nth Byte.zero).
810- + smt (size_map2 Block.bytes_of_blockP size_cat size_take gt0_block_size size_ge0).
810+ + rewrite size_take 1:#smt:(gt0_block_size).
811+ rewrite size_map2 size_cat size_map2 bytes_of_blockP.
812+ by rewrite /min; smt(size_ge0).
811813 move=> j hj.
812814 have [hj1 hj2] : j < block_size /\ j < size p.
813- + smt (size_map2 Block.bytes_of_blockP size_cat size_take gt0_block_size size_ge0).
815+ + move: hj; rewrite size_map2 size_cat size_map2 bytes_of_blockP /min.
816+ smt(size_ge0).
814817 rewrite
815818 (nth_map2 Byte.zero Byte.zero)
816819 ?(size_cat, size_map2, Block.bytes_of_blockP) 1:#smt:(size_ge0).
@@ -878,7 +881,9 @@ proof.
878881 move=> _; rewrite /dblock; apply eq_distr => b.
879882 rewrite !dmap1E.
880883 apply (eq_trans _ (mu1 (dpoly `*` dextra_block) ((topair b).`1, (topair b).`2))); last first.
881- + congr; apply fun_ext; smt (topairK).
884+ + congr; apply: fun_ext=> x @/(\o ) @/pred1.
885+ rewrite -{3}topairK; case: (topair b)=> />.
886+ by move: (can_inj _ _ ofpairK)=> /#.
882887 rewrite dprod1E (_:block_size = poly_size + extra_block_size) //.
883888 rewrite dlist_add 1:ge0_poly_size 1:ge0_extra_block_size dmapE.
884889 rewrite !dmap1E /(\o ) -dprodE &(mu_eq_support) => -[l1 l2] /supp_dprod /= [h1 h2].
@@ -946,7 +951,9 @@ proof.
946951 move=> _; rewrite /dpoly; apply eq_distr => b.
947952 rewrite !dmap1E.
948953 apply (eq_trans _ (mu1 (dpoly_in `*` dpoly_out) ((topair b).`1, (topair b).`2))); last first.
949- + congr; apply fun_ext; smt (topairK).
954+ + congr; apply: fun_ext=> x @/(\o ) @/pred1.
955+ rewrite -{3}(topairK b); case: (topair b)=> />.
956+ by move: (can_inj _ _ ofpairK)=> /#.
950957 rewrite dprod1E (_:poly_size = poly_in_size + poly_out_size) //.
951958 rewrite dlist_add 1:ge0_poly_in_size 1:ge0_poly_out_size dmapE.
952959 rewrite !dmap1E /(\o ) -dprodE &(mu_eq_support) => -[l1 l2] /supp_dprod /= [h1 h2].
@@ -1752,31 +1759,18 @@ section PROOFS.
17521759 let r = oget ROin.m {1 }.[(n, C.ofintd 0 )] in
17531760 let s = oget ROout.m {1 }.[(n, C.ofintd 0 )] in
17541761 s = t - poly1305_eval r (topol a c))); last first.
1755- + auto => /> ; smt (undup_uniq size_undup size_map).
1756-
1757- (* + auto => /> *; have [#] * :=H H0. *)
1758- (* rewrite H3/=. *)
1759- (* move:H4=> [][]->>[#] 3 ->> [#]*. *)
1760- (* move:H6=> [#] ->> * /=. *)
1761- (* rewrite undup_uniq // =; do ! split=> //=. *)
1762- (* - smt (undup_uniq size_undup size_map). *)
1763- (* - smt (undup_uniq size_undup size_map). *)
1764- (* - smt (undup_uniq size_undup size_map). *)
1765- (* - move=> *. *)
1766- (* pose n1:= nth witness _ _. *)
1767- (* have* :=H5 _ _ H19. *)
1768- (* have:=H16 _ H21; rewrite H20 /= => -> // =. *)
1769- (* rewrite/n1/=. *)
1770- (* pose l1:= List.map _ _. *)
1771- (* pose l := undup _. *)
1772- (* have:=mem_nth witness l j; rewrite H17 H18 /= =>*. *)
1773- (* move:H22; rewrite mem_undup mapP => [][] /= [] n2 y1 y2 y3 /= [] *. *)
1774- (* have:=H15 n1 x1 x2 x3. *)
1775- (* have:=H11 n1 x1 x2 x3. *)
1776- (* have := H19; rewrite -H8 => *. *)
1777- (* have :=H13 n1 x1 x2 x3; rewrite H20 /= -H18/= get_some // = => -> //=. *)
1778- (* smt (undup_uniq size_undup size_map). *)
1779-
1762+ + auto => /> &1 &2 + not_bad; rewrite not_bad=> />.
1763+ move=> inv_count inv_domRO inv_domSRO1 eq_domSRO2 inv_domSRO2.
1764+ move=> size_lenc inv_ndec inv_log inv_sc inv0 inv1 inv2 inv3 inv4.
1765+ do !split; [1 ..5 :smt (undup_uniq size_undup size_map)].
1766+ move=> j ge0_j gtj_size lc_j x1 x2 x3.
1767+ pose n0 := nth _ _ _; case _: (UFCMA.log .[n0]{2 })=> [/#|/> log_nth].
1768+ split=> [/#|]; case _: (SplitC2.I2 .RO .m {1 }.[n0, C.ofintd 0 ])=> [/#|].
1769+ case _: (RO.m {2 }.[n0, C.ofintd 0 ])=> [/#|/>].
1770+ move: (inv2 n0 _); 1 :by rewrite domE log_nth.
1771+ rewrite log_nth=> /> _ _ x0 m2_n0 x4 i2_n0.
1772+ move: (inv4 n0 _); 1 :exact: (inv_domSRO1 _ (C.ofintd 0 )).
1773+ by rewrite log_nth i2_n0 m2_n0.
17801774 inline {1 } 2 ; rcondt{1 } 3 .
17811775 + by move=> *;auto => />;rewrite /test /= C.ofintdK ; smt (C.gt0_max_counter ).
17821776 inline {1 } 3 ; inline {1 } 4 ; sp 0 1 ; wp.
@@ -2086,12 +2080,13 @@ section PROOFS.
20862080 - have:=allP (fun (n0 : nonce) => (n0, C.ofintd 0) \n otin ROout.m{2}) l2.
20872081 have-> /= -> //=:=filter_all (fun (n0 : nonce) => (n0, C.ofintd 0) \n otin SplitC2.I2.RO.m{2}) l.
20882082 by rewrite mem_nth //=.
2089- rewrite (drop_nth witness i{2} l2) //= drop0 //=; do ! split=> /> * .
2083+ rewrite (drop_nth witness i{2} l2) //= drop0 //=; do ! split=> />.
20902084 + smt().
20912085 + smt(mem_set).
2092- + rewrite get_set_neqE /=; smt(mem_nth).
2093- + smt(mem_set).
2086+ + move=> *; rewrite get_set_neqE /=; smt(mem_nth).
20942087 + smt(mem_set).
2088+ + move=> n0; rewrite mem_set; case=> [/#|/>].
2089+ by right; exists i{2}=> /#.
20952090 + smt(mem_set size_drop size_ge0 size_eq0).
20962091 + smt(mem_set size_drop size_ge0 size_eq0).
20972092 qed.
@@ -2479,8 +2474,8 @@ section PROOFS.
24792474 call (: ={glob BNR, UFCMA.cbad1 , UFCMA.cbad1 , glob RO, Mem.log , Mem.lc } /\
24802475 inv_lbad1 UFCMA_l.lbad1 {2 } BNR.lenc {2 } UFCMA.log {2 } Mem.log {2 } Mem.lc {2 } UFCMA.cbad1 {2 } BNR.ndec {2 } /\
24812476 (UFCMA.bad1 {1 } => exists (tt : tag * tag), (tt \in UFCMA_l.lbad1 {2 }) /\ tt.`1 = tt.`2 )); first last.
2482- + by proc; inline *; sp 1 1 ; if ; auto ; smt (in_cons make_lbad1_size_cons2 leq_make_lbad1).
2483- + by skip; smt ( mem_empty ge0_qenc ge0_qdec).
2477+ + proc; inline *; sp 1 1 ; if ; auto => & 1 & 2 /> ????????????? ; smt (in_cons make_lbad1_size_cons2 leq_make_lbad1).
2478+ + skip => & 1 & 2 />; rewrite ge0_qenc size_flatten /sumz /= ge0_qdec /=; smt (mem_empty).
24842479 proc; sp; if ; 1 , 3 : auto => />.
24852480 sp; wp=> /=.
24862481 case : (UFCMA.cbad1 {1 } < qenc); last first.
@@ -2492,8 +2487,19 @@ section PROOFS.
24922487 wp -7 -7 => />.
24932488 move => />; smt (get_setE).
24942489 conseq (: ={c1, t, RO.m , Mem.log }); [2 :sim=> /> /#].
2495- move => />.
2496- smt (get_setE leq_make_lbad1 make_lbad1_size_cons3 size_ge0).
2490+ move => &1 &2 /> 9 ? X ?????? c1_R t_R.
2491+ do ! split.
2492+ - smt ().
2493+ - rewrite (make_lbad1_size_cons3) // ; smt(leq_make_lbad1 size_ge0).
2494+ - smt (leq_make_lbad1).
2495+ - move => n D ad msg tag; rewrite get_setE.
2496+ case : D => />.
2497+ + by rewrite /dom get_setE.
2498+ smt (get_setE).
2499+ - move => n; rewrite /dom get_setE /#.
2500+ move => t t' tt' ; case : (X _ _ tt' ) => /> n hn ht ad msg ht' .
2501+ case : (n = n{!2 }); first smt ().
2502+ move => _; exists n; rewrite get_setE /#.
24972503 inline *; sp.
24982504 rcondt{1 } 5 ; 1 : auto => />.
24992505 - conseq (:_==> true )=> />; 1 : smt (size_map size_filter count_size).
@@ -2509,8 +2515,10 @@ section PROOFS.
25092515 - smt ().
25102516 - rewrite size_cat !size_map make_lbad1_size_cons3 // = /#.
25112517 - smt (leq_make_lbad1).
2512- - smt (get_setE).
2513- - smt (get_setE).
2518+ - move => n D ad msg tag; rewrite get_setE; case : D => />; first by rewrite /dom get_setE.
2519+ smt (get_setE).
2520+ - move => n; case : (n = n{!2 }) => />; first by rewrite /dom get_setE.
2521+ smt (get_setE).
25142522 - move=> ? ? H15; have:=H15; rewrite mem_cat=> [#][] H16 *.
25152523 + smt (get_setE).
25162524 have:= H16; rewrite mapP /= => [#][] t2 [#] h <<- <<-; have:=h.
@@ -2643,7 +2651,12 @@ section PROOFS.
26432651 inv_lbad1_i UFCMA_l.lbad1 {1 } BNR.lenc {1 } UFCMA.log {1 } Mem.log {1 } Mem.lc {1 } UFCMA.cbad1 {1 } BNR.ndec {1 } /\
26442652 (((nth (w1,w2) UFCMA_l.lbad1 {1 } nth0).`1 =
26452653 (nth (w1,w2) UFCMA_l.lbad1 {1 } nth0).`2 ) => UFCMA_li.badi {2 })); first last.
2646- + proc; sp; if ; auto ; inline *; auto ; smt (make_lbad1_size_cons2 size_ge0 leq_make_lbad1).
2654+ + proc; sp; if ; auto ; inline *; auto => &1 &2 /> *; do !split.
2655+ - case : (c{2 } \in Mem.log {2 }); first smt ().
2656+ rewrite make_lbad1_size_cons2 // /#.
2657+ - smt (leq_make_lbad1).
2658+ - smt ().
2659+ - smt ().
26472660 + by auto ; smt (neq_w1_w2 size_ge0 ge0_qdec size_flatten ge0_qenc).
26482661 + proc; inline *; sp; if ; 1 , 3 : auto ; sp.
26492662 swap [5 ..6 ] 7 .
@@ -2732,8 +2745,8 @@ section PROOFS.
27322745 proof.
27332746 apply (RealOrder.ler_trans _ _ _ (step4_bad1_lbad1 &m)).
27342747 apply (RealOrder.ler_trans _ _ _ (step4_lbad1_sum &m)).
2735- apply (RealOrder.ler_trans _ _ _ (StdBigop.Bigreal .ler_sum_seq _ _ (fun _ => pr1_poly_out) _ _));
2736- last by rewrite sumr_const count_predT size_iota; smt ( ge0_qdec) .
2748+ apply (RealOrder.ler_trans _ _ _ (StdBigop.Bigreal .ler_sum_seq _ _ (fun _ => pr1_poly_out) _ _));
2749+ last by rewrite sumr_const count_predT size_iota ler_maxr // ge0_qdec.
27372750 move=> nth0; rewrite mem_iota /predT /= => [#] *.
27382751 apply (RealOrder.ler_trans _ _ _ (step4_badi &m nth0 _))=> // .
27392752 exact (pr_step4_badi &m).
0 commit comments