Skip to content

Commit a80e8c2

Browse files
committed
regenerates I/O spec for DH
1 parent dac6109 commit a80e8c2

File tree

8 files changed

+42
-37
lines changed

8 files changed

+42
-37
lines changed

dh/implementation/verification/fact/fact.gobra

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,20 +147,20 @@ ghost type Fact domain {
147147

148148
}
149149
ghost
150-
decreases
151150
// returns a multiset containing just the persistent facts of l all with multiplicity 1
152151
ensures forall f Fact :: { f # result } (f # result) == (persistent(f) && (f # l) > 0 ? 1 : 0)
152+
decreases
153153
pure func persistentFacts(l mset[Fact]) (result mset[Fact])
154154

155155
ghost
156-
decreases
157156
// returns a multiset containing just the non-persistent facts of l while retaining their multiplicity
158157
ensures forall f Fact :: { f # result } (f # result) == (persistent(f) ? 0 : (f # l))
158+
decreases
159159
pure func linearFacts(l mset[Fact]) (result mset[Fact])
160160

161161
ghost
162-
decreases
163162
ensures res == (linearFacts(l) subset s && persistentFacts(l) subset s)
163+
decreases
164164
pure func M(l mset[Fact], s mset[Fact]) (res bool) {
165165
// non-persistent facts
166166
return linearFacts(l) subset s &&
@@ -169,6 +169,6 @@ pure func M(l mset[Fact], s mset[Fact]) (res bool) {
169169
}
170170

171171
ghost
172-
decreases
173172
ensures result == s setminus linearFacts(l) union r
173+
decreases
174174
pure func U(l mset[Fact], r mset[Fact], s mset[Fact]) (result mset[Fact])

dh/implementation/verification/iospec/permissions_Alice_internal.gobra

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,58 @@ import . "dh-gobra/verification/fresh"
1414
pred e_Alice_send(ghost tami_p Place, ghost ridA Term, ghost A Term, ghost B Term, ghost skA Term, ghost skB Term, ghost x Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
1515

1616
ghost
17-
decreases
1817
requires e_Alice_send(tami_p, ridA, A, B, skA, skB, x, tami_lp, tami_ap, tami_rp)
18+
decreases
1919
pure func get_e_Alice_send_placeDst(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
2020

2121
ghost
22-
decreases
2322
requires token(tami_p) && e_Alice_send(tami_p, ridA, A, B, skA, skB, x, tami_lp, tami_ap, tami_rp)
2423
ensures token(tami_pp) && tami_pp == old(get_e_Alice_send_placeDst(tami_p, ridA, A, B, skA, skB, x, tami_lp, tami_ap, tami_rp))
24+
decreases
2525
func internBIO_e_Alice_send(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
2626

2727

2828
// permission e_Alice_recvAndSend
2929
pred e_Alice_recvAndSend(ghost tami_p Place, ghost ridA Term, ghost A Term, ghost B Term, ghost skA Term, ghost skB Term, ghost x Term, ghost Y Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
3030

3131
ghost
32-
decreases
3332
requires e_Alice_recvAndSend(tami_p, ridA, A, B, skA, skB, x, Y, tami_lp, tami_ap, tami_rp)
33+
decreases
3434
pure func get_e_Alice_recvAndSend_placeDst(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
3535

3636
ghost
37-
decreases
3837
requires token(tami_p) && e_Alice_recvAndSend(tami_p, ridA, A, B, skA, skB, x, Y, tami_lp, tami_ap, tami_rp)
3938
ensures token(tami_pp) && tami_pp == old(get_e_Alice_recvAndSend_placeDst(tami_p, ridA, A, B, skA, skB, x, Y, tami_lp, tami_ap, tami_rp))
39+
decreases
4040
func internBIO_e_Alice_recvAndSend(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
4141

4242

4343
// permission e_Alice_sendMsg
4444
pred e_Alice_sendMsg(ghost tami_p Place, ghost ridA Term, ghost A Term, ghost B Term, ghost skA Term, ghost skB Term, ghost x Term, ghost Y Term, ghost msgIn Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
4545

4646
ghost
47-
decreases
4847
requires e_Alice_sendMsg(tami_p, ridA, A, B, skA, skB, x, Y, msgIn, tami_lp, tami_ap, tami_rp)
48+
decreases
4949
pure func get_e_Alice_sendMsg_placeDst(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, msgIn Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
5050

5151
ghost
52-
decreases
5352
requires token(tami_p) && e_Alice_sendMsg(tami_p, ridA, A, B, skA, skB, x, Y, msgIn, tami_lp, tami_ap, tami_rp)
5453
ensures token(tami_pp) && tami_pp == old(get_e_Alice_sendMsg_placeDst(tami_p, ridA, A, B, skA, skB, x, Y, msgIn, tami_lp, tami_ap, tami_rp))
54+
decreases
5555
func internBIO_e_Alice_sendMsg(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, msgIn Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
5656

5757

5858
// permission e_Alice_recvMsg
5959
pred e_Alice_recvMsg(ghost tami_p Place, ghost ridA Term, ghost A Term, ghost B Term, ghost skA Term, ghost skB Term, ghost x Term, ghost Y Term, ghost msgOut Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
6060

6161
ghost
62-
decreases
6362
requires e_Alice_recvMsg(tami_p, ridA, A, B, skA, skB, x, Y, msgOut, tami_lp, tami_ap, tami_rp)
63+
decreases
6464
pure func get_e_Alice_recvMsg_placeDst(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, msgOut Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
6565

6666
ghost
67-
decreases
6867
requires token(tami_p) && e_Alice_recvMsg(tami_p, ridA, A, B, skA, skB, x, Y, msgOut, tami_lp, tami_ap, tami_rp)
6968
ensures token(tami_pp) && tami_pp == old(get_e_Alice_recvMsg_placeDst(tami_p, ridA, A, B, skA, skB, x, Y, msgOut, tami_lp, tami_ap, tami_rp))
69+
decreases
7070
func internBIO_e_Alice_recvMsg(tami_p Place, ridA Term, A Term, B Term, skA Term, skB Term, x Term, Y Term, msgOut Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
7171

dh/implementation/verification/iospec/permissions_Bob_internal.gobra

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,58 @@ import . "dh-gobra/verification/fresh"
1414
pred e_Bob_recvAndSend(ghost tami_p Place, ghost ridB Term, ghost B Term, ghost A Term, ghost skB Term, ghost skA Term, ghost y Term, ghost X Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
1515

1616
ghost
17-
decreases
1817
requires e_Bob_recvAndSend(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp)
18+
decreases
1919
pure func get_e_Bob_recvAndSend_placeDst(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
2020

2121
ghost
22-
decreases
2322
requires token(tami_p) && e_Bob_recvAndSend(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp)
2423
ensures token(tami_pp) && tami_pp == old(get_e_Bob_recvAndSend_placeDst(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp))
24+
decreases
2525
func internBIO_e_Bob_recvAndSend(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
2626

2727

2828
// permission e_Bob_recv
2929
pred e_Bob_recv(ghost tami_p Place, ghost ridB Term, ghost B Term, ghost A Term, ghost skB Term, ghost skA Term, ghost y Term, ghost X Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
3030

3131
ghost
32-
decreases
3332
requires e_Bob_recv(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp)
33+
decreases
3434
pure func get_e_Bob_recv_placeDst(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
3535

3636
ghost
37-
decreases
3837
requires token(tami_p) && e_Bob_recv(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp)
3938
ensures token(tami_pp) && tami_pp == old(get_e_Bob_recv_placeDst(tami_p, ridB, B, A, skB, skA, y, X, tami_lp, tami_ap, tami_rp))
39+
decreases
4040
func internBIO_e_Bob_recv(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
4141

4242

4343
// permission e_Bob_recvMsg
4444
pred e_Bob_recvMsg(ghost tami_p Place, ghost ridB Term, ghost B Term, ghost A Term, ghost skB Term, ghost skA Term, ghost y Term, ghost X Term, ghost msgOut Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
4545

4646
ghost
47-
decreases
4847
requires e_Bob_recvMsg(tami_p, ridB, B, A, skB, skA, y, X, msgOut, tami_lp, tami_ap, tami_rp)
48+
decreases
4949
pure func get_e_Bob_recvMsg_placeDst(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, msgOut Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
5050

5151
ghost
52-
decreases
5352
requires token(tami_p) && e_Bob_recvMsg(tami_p, ridB, B, A, skB, skA, y, X, msgOut, tami_lp, tami_ap, tami_rp)
5453
ensures token(tami_pp) && tami_pp == old(get_e_Bob_recvMsg_placeDst(tami_p, ridB, B, A, skB, skA, y, X, msgOut, tami_lp, tami_ap, tami_rp))
54+
decreases
5555
func internBIO_e_Bob_recvMsg(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, msgOut Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
5656

5757

5858
// permission e_Bob_sendMsg
5959
pred e_Bob_sendMsg(ghost tami_p Place, ghost ridB Term, ghost B Term, ghost A Term, ghost skB Term, ghost skA Term, ghost y Term, ghost X Term, ghost msgIn Term, ghost tami_lp mset[Fact], ghost tami_ap mset[Claim], ghost tami_rp mset[Fact])
6060

6161
ghost
62-
decreases
6362
requires e_Bob_sendMsg(tami_p, ridB, B, A, skB, skA, y, X, msgIn, tami_lp, tami_ap, tami_rp)
63+
decreases
6464
pure func get_e_Bob_sendMsg_placeDst(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, msgIn Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (placeDst Place)
6565

6666
ghost
67-
decreases
6867
requires token(tami_p) && e_Bob_sendMsg(tami_p, ridB, B, A, skB, skA, y, X, msgIn, tami_lp, tami_ap, tami_rp)
6968
ensures token(tami_pp) && tami_pp == old(get_e_Bob_sendMsg_placeDst(tami_p, ridB, B, A, skB, skA, y, X, msgIn, tami_lp, tami_ap, tami_rp))
69+
decreases
7070
func internBIO_e_Bob_sendMsg(tami_p Place, ridB Term, B Term, A Term, skB Term, skA Term, y Term, X Term, msgIn Term, tami_lp mset[Fact], tami_ap mset[Claim], tami_rp mset[Fact]) (tami_pp Place)
7171

dh/implementation/verification/iospec/permissions_in.gobra

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,84 +14,84 @@ import . "dh-gobra/verification/fresh"
1414
pred e_FrFact(ghost tami_p Place, ghost tami_rid Term)
1515

1616
ghost
17-
decreases
1817
requires e_FrFact(tami_p, tami_rid)
18+
decreases
1919
pure func get_e_FrFact_r1(tami_p Place, tami_rid Term) (r1 Term)
2020

2121
ghost
22-
decreases
2322
requires e_FrFact(tami_p, tami_rid)
23+
decreases
2424
pure func get_e_FrFact_placeDst(tami_p Place, tami_rid Term) (placeDst Place)
2525

2626

2727
// permission e_InFact
2828
pred e_InFact(ghost tami_p Place, ghost tami_rid Term)
2929

3030
ghost
31-
decreases
3231
requires e_InFact(tami_p, tami_rid)
32+
decreases
3333
pure func get_e_InFact_r1(tami_p Place, tami_rid Term) (r1 Term)
3434

3535
ghost
36-
decreases
3736
requires e_InFact(tami_p, tami_rid)
37+
decreases
3838
pure func get_e_InFact_placeDst(tami_p Place, tami_rid Term) (placeDst Place)
3939

4040

4141
// permission e_Setup_Alice
4242
pred e_Setup_Alice(ghost tami_p Place, ghost tami_rid Term)
4343

4444
ghost
45-
decreases
4645
requires e_Setup_Alice(tami_p, tami_rid)
46+
decreases
4747
pure func get_e_Setup_Alice_r1(tami_p Place, tami_rid Term) (r1 Term)
4848

4949
ghost
50-
decreases
5150
requires e_Setup_Alice(tami_p, tami_rid)
51+
decreases
5252
pure func get_e_Setup_Alice_r2(tami_p Place, tami_rid Term) (r2 Term)
5353

5454
ghost
55-
decreases
5655
requires e_Setup_Alice(tami_p, tami_rid)
56+
decreases
5757
pure func get_e_Setup_Alice_r3(tami_p Place, tami_rid Term) (r3 Term)
5858

5959
ghost
60-
decreases
6160
requires e_Setup_Alice(tami_p, tami_rid)
61+
decreases
6262
pure func get_e_Setup_Alice_r4(tami_p Place, tami_rid Term) (r4 Term)
6363

6464
ghost
65-
decreases
6665
requires e_Setup_Alice(tami_p, tami_rid)
66+
decreases
6767
pure func get_e_Setup_Alice_placeDst(tami_p Place, tami_rid Term) (placeDst Place)
6868

6969

7070
// permission e_Setup_Bob
7171
pred e_Setup_Bob(ghost tami_p Place, ghost tami_rid Term)
7272

7373
ghost
74-
decreases
7574
requires e_Setup_Bob(tami_p, tami_rid)
75+
decreases
7676
pure func get_e_Setup_Bob_r1(tami_p Place, tami_rid Term) (r1 Term)
7777

7878
ghost
79-
decreases
8079
requires e_Setup_Bob(tami_p, tami_rid)
80+
decreases
8181
pure func get_e_Setup_Bob_r2(tami_p Place, tami_rid Term) (r2 Term)
8282

8383
ghost
84-
decreases
8584
requires e_Setup_Bob(tami_p, tami_rid)
85+
decreases
8686
pure func get_e_Setup_Bob_r3(tami_p Place, tami_rid Term) (r3 Term)
8787

8888
ghost
89-
decreases
9089
requires e_Setup_Bob(tami_p, tami_rid)
90+
decreases
9191
pure func get_e_Setup_Bob_r4(tami_p Place, tami_rid Term) (r4 Term)
9292

9393
ghost
94-
decreases
9594
requires e_Setup_Bob(tami_p, tami_rid)
95+
decreases
9696
pure func get_e_Setup_Bob_placeDst(tami_p Place, tami_rid Term) (placeDst Place)
9797

dh/implementation/verification/iospec/permissions_out.gobra

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import . "dh-gobra/verification/fresh"
1414
pred e_OutFact(ghost tami_p Place, ghost tami_rid Term, ghost new_x Term)
1515

1616
ghost
17-
decreases
1817
requires e_OutFact(tami_p, tami_rid, new_x)
18+
decreases
1919
pure func get_e_OutFact_placeDst(tami_p Place, tami_rid Term, new_x Term) (placeDst Place)
2020

dh/model/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ Version 1.10.0 is known to work.
1414
To verify the model with Tamarin, use the following command:
1515

1616
`tamarin-prover --prove dh.spthy --derivcheck-timeout=0`
17+
18+
19+
## Generate I/O specification
20+
Adapt the absolute paths in `generate-spec.sh` and `generate-spec-config.txt` to point to the files in this repository and the specification generator from the [`viperproject/protocol-verification-refinement` repository](https://github.com/viperproject/protocol-verification-refinement) before running `generate-spec.sh`.
21+
The resulting files will be stored in the `generated_iospecs` directory.

dh/model/generate-spec.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22

33
cwd=$(pwd)
4-
cd /Users/arquintlinard/ETH/PhD/tamigloo-compiler/tamarin-prover || exit
4+
cd /Users/arquintlinard/ETH/PhD/protocol-verification-refinement/specification-generator/src || exit
55
echo $PWD
66
stack build
77
stack exec -- tamarin-prover --tamigloo-compiler "$cwd"/generate-spec-config.txt

docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ RUN curl -q -s -S -L --create-dirs -o maude.zip $MAUDE_URL && \
4747
chmod a+x /.local/bin/maude
4848

4949
# install tamarin-prover
50-
ENV TAMARIN_VERSION="1.8.0"
50+
ENV TAMARIN_VERSION="1.10.0"
5151
RUN curl -q -s -S -L --create-dirs -o tamarin.tar.gz https://github.com/tamarin-prover/tamarin-prover/releases/download/$TAMARIN_VERSION/tamarin-prover-$TAMARIN_VERSION-linux64-ubuntu.tar.gz && \
5252
tar -x -C /.local/bin/ -f tamarin.tar.gz && \
5353
rm tamarin.tar.gz && \

0 commit comments

Comments
 (0)