Skip to content

Commit d1e8b38

Browse files
committed
feat(theories, SplitRO): remove requirement of axiom ofpairK
1 parent 1393a49 commit d1e8b38

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

theories/crypto/SplitRO.ec

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ op topair : to -> to1 * to2.
8888
op ofpair : to1 * to2 -> to.
8989

9090
axiom topairK: cancel topair ofpair.
91-
axiom ofpairK: cancel ofpair topair.
9291

9392
op sampleto1 : from -> to1 distr.
9493
op sampleto2 : from -> to2 distr.
@@ -153,15 +152,19 @@ section PROOFS.
153152
swap{2} 5 -3; swap{2} 6 -2; sp 0 2.
154153
seq 1 2 : (#pre /\ r{1} = ofpair (r{2}, r0{2})).
155154
+ conseq />.
156-
outline {2} [1 .. 2] ~ S.sample2.
157-
rewrite equiv[{2} 1 -sample_sample2].
158-
inline *; wp; rnd topair ofpair; auto => /> &2 ?; split.
159-
+ by move=> ??; rewrite ofpairK.
160-
move=> _; split.
161-
+ move=> [t1 t2]?; rewrite sample_spec dmap1E; congr; apply fun_ext => p.
162-
by rewrite /pred1 /(\o) (can_eq _ _ ofpairK).
163-
move=> _ t; rewrite sample_spec supp_dmap => -[[t1 t2] []] + ->>.
164-
by rewrite topairK ofpairK => ->.
155+
alias{2} 2 one = 1. swap{2} 2 1.
156+
alias{2} 3 rr = ofpair (r, r0).
157+
kill{2} 4 ! 1; first by auto.
158+
transitivity{2}
159+
{
160+
r <$ sampleto1 x;
161+
r0 <$ sampleto2 x;
162+
rr <- ofpair (r, r0);
163+
}
164+
(={x} /\ (x0 = x /\ x1 = x){2} ==> r{1} = rr{2})
165+
(={x} /\ (x0 = x /\ x1 = x){2} ==> rr{1} = ofpair(r, r0){2}); 1,2,4: by auto => /#.
166+
rndsem*{2} 0.
167+
auto => *. rewrite -dmap_dprodE sample_spec. by smt().
165168
by auto => />; smt (get_setE map_set set_pair_map mem_map mem_pair_map mem_set mapE mergeE).
166169
qed.
167170

@@ -178,7 +181,7 @@ section PROOFS.
178181
by rewrite /pair_map merge_empty // map_empty /= => ?; rewrite !mem_empty.
179182
+ by conseq RO_get.
180183
+ by proc; inline *; auto => />;
181-
smt (get_setE map_set set_pair_map mem_map mem_pair_map mem_set mapE mergeE ofpairK topairK).
184+
smt (get_setE map_set set_pair_map mem_map mem_pair_map mem_set mapE mergeE topairK).
182185
+ by proc; inline *; auto; smt (map_rem rem_merge mem_map mem_pair_map mem_rem).
183186
+ proc *.
184187
inline {1} 1.

0 commit comments

Comments
 (0)