Skip to content

Commit cbcb12e

Browse files
authored
Merge pull request #513 from mtzguido/misc
Misc
2 parents dac3a56 + 23b85d6 commit cbcb12e

File tree

2 files changed

+44
-43
lines changed

2 files changed

+44
-43
lines changed

share/pulse/examples/by-example/PulseByExample.fst

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
module PulseByExample
1818

1919
open Pulse.Lib.Core
20+
open Pulse.Class.PtsTo
2021

2122
(*
2223
Things to note:
@@ -64,11 +65,11 @@ module R = Pulse.Lib.Reference
6465
*)
6566
fn ref_swap (r1 r2:ref int)
6667
requires
67-
R.pts_to r1 'n1 **
68-
R.pts_to r2 'n2
68+
r1 |-> 'n1 **
69+
r2 |-> 'n2
6970
ensures
70-
R.pts_to r1 'n2 **
71-
R.pts_to r2 'n1
71+
r1 |-> 'n2 **
72+
r2 |-> 'n1
7273

7374
{
7475
let v1 = !r1;
@@ -78,26 +79,26 @@ fn ref_swap (r1 r2:ref int)
7879

7980
fn ref_non_zero (r1:ref int) (n1:Ghost.erased int)
8081
requires
81-
R.pts_to r1 n1
82+
r1 |-> n1
8283
returns b:bool
83-
ensures R.pts_to r1 n1 ** pure (b == (Ghost.reveal n1 <> 0))
84+
ensures r1 |-> n1 ** pure (b == (Ghost.reveal n1 <> 0))
8485
{
8586
(0 <> !r1);
8687
}
8788

8889
fn id (r:ref int)
8990
requires
90-
R.pts_to r 'n
91+
r |-> 'n
9192
returns r':ref int
9293
ensures
93-
R.pts_to r' 'n ** pure (r == r')
94+
r' |-> 'n ** pure (r == r')
9495
{
9596
r;
9697
}
9798

9899
fn set (r:ref int) (x:int)
99-
requires R.pts_to r 'n
100-
ensures R.pts_to r x
100+
requires r |-> 'n
101+
ensures r |-> x
101102
{
102103
r := x;
103104
}
@@ -109,9 +110,9 @@ fn go () () ()
109110

110111
fn test (r:ref int)
111112
requires
112-
R.pts_to r 'n
113+
r |-> 'n
113114
ensures
114-
R.pts_to r 2
115+
r |-> 2
115116
{
116117
go (set r 1) (set r 4) (set r 2);
117118
}
@@ -131,11 +132,11 @@ open Pulse.Lib.BoundedIntegers
131132

132133
fn arr_swap (#t:Type0) (n i j:SZ.t) (a:larray t (v n))
133134
requires
134-
A.pts_to a 's0 **
135+
a |-> 's0 **
135136
pure (Seq.length 's0 == v n /\ i < n /\ j < n)
136137
ensures
137138
exists* s.
138-
A.pts_to a s **
139+
a |-> s **
139140
pure (Seq.length 's0 == v n /\ Seq.length s == v n /\ i < n /\ j < n
140141
/\ (forall (k:nat). k < v n /\ k <> v i /\ k <> v j ==> Seq.index 's0 k == Seq.index s k)
141142
/\ Seq.index 's0 (v i) == Seq.index s (v j)
@@ -156,21 +157,21 @@ fn arr_swap (#t:Type0) (n i j:SZ.t) (a:larray t (v n))
156157

157158
fn max (n:SZ.t) (a:larray nat (v n))
158159
requires
159-
A.pts_to a #'p 's **
160+
a |-> Frac 'p 's **
160161
pure (Seq.length 's == v n)
161162
returns r:nat
162163
ensures
163-
A.pts_to a #'p 's **
164+
a |-> Frac 'p 's **
164165
pure (Seq.length 's == v n /\
165166
(forall (i:nat). i < v n ==> Seq.index 's i <= r))
166167
{
167168
let mut i : SZ.t = 0sz;
168169
let mut max : nat = 0;
169170
while (!i < n)
170171
invariant exists* (vi:SZ.t) (vmax:nat).
171-
A.pts_to a #'p 's **
172-
R.pts_to i vi **
173-
R.pts_to max vmax **
172+
a |-> Frac 'p 's **
173+
i |-> vi **
174+
max |-> vmax **
174175
pure (vi <= n
175176
/\ (forall (j:nat). j < v vi ==> Seq.index 's j <= vmax))
176177
{
@@ -186,21 +187,21 @@ fn max (n:SZ.t) (a:larray nat (v n))
186187

187188
fn max_alt (n:SZ.t) (a:larray nat (v n))
188189
requires
189-
A.pts_to a #'p 's **
190+
a |-> Frac 'p 's **
190191
pure (Seq.length 's == v n)
191192
returns r:nat
192193
ensures
193-
A.pts_to a #'p 's **
194+
a |-> Frac 'p 's **
194195
pure (Seq.length 's == v n /\
195196
(forall (i:nat). i < v n ==> Seq.index 's i <= r))
196197
{
197198
let mut i = 0sz;
198199
let mut max : nat = 0;
199200
while (!i < n)
200201
invariant exists* (vi:SZ.t) (vmax:nat).
201-
A.pts_to a #'p 's **
202-
R.pts_to i vi **
203-
R.pts_to max vmax **
202+
a |-> Frac 'p 's **
203+
i |-> vi **
204+
max |-> vmax **
204205
pure (vi <= n
205206
/\ (forall (j:nat). j < v vi ==> Seq.index 's j <= vmax))
206207
{
@@ -211,4 +212,4 @@ fn max_alt (n:SZ.t) (a:larray nat (v n))
211212
}
212213
};
213214
!max
214-
}
215+
}

src/checker/Pulse.Checker.Pure.fst

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ let check_ln (g:env) (label:string) (t:R.term) : Tac unit =
6666
let rtb_core_compute_term_type g f e =
6767
debug g (fun _ ->
6868
Printf.sprintf "(%s) Calling core_compute_term_type on %s"
69-
(T.range_to_string (RU.range_of_term e))
70-
(T.term_to_string e));
69+
(show (RU.range_of_term e))
70+
(show e));
7171
let res = RU.with_context (get_context g) (fun _ -> RTB.core_compute_term_type f e) in
7272
res
7373

@@ -76,17 +76,17 @@ let rtb_tc_term g f e =
7676
let e = RU.deep_transform_to_unary_applications e in
7777
debug g (fun _ ->
7878
Printf.sprintf "(%s) Calling tc_term on %s"
79-
(T.range_to_string (RU.range_of_term e))
80-
(T.term_to_string e));
79+
(show (RU.range_of_term e))
80+
(show e));
8181
let res = RU.with_context (get_context g) (fun _ -> RTB.tc_term f e) in
8282
res
8383

8484
let rtb_universe_of (g:env) (f:T.env) (e: T.term)
8585
: T.Tac (option (u:T.universe{typing_token f e (E_Total, T.pack_ln (Tv_Type u))}) & issues)
8686
= debug g (fun _ ->
8787
Printf.sprintf "(%s) Calling universe_of on %s"
88-
(T.range_to_string (RU.range_of_term e))
89-
(T.term_to_string e));
88+
(show (RU.range_of_term e))
89+
(show e));
9090
let res = RU.with_context (get_context g) (fun _ -> RTB.universe_of f e) in
9191
res
9292

@@ -100,17 +100,17 @@ let universe_of_well_typed_term_internal (g:env) (f:T.env) (e: T.term)
100100
let rtb_check_subtyping g (t1 t2:term) : Tac (ret_t (subtyping_token g t1 t2)) =
101101
debug g (fun _ ->
102102
Printf.sprintf "(%s, %s) Calling check_subtyping on %s <: %s"
103-
(T.range_to_string (RU.range_of_term t1))
104-
(T.range_to_string (RU.range_of_term t2))
105-
(P.term_to_string t1)
106-
(P.term_to_string t2));
103+
(show (RU.range_of_term t1))
104+
(show (RU.range_of_term t2))
105+
(show t1)
106+
(show t2));
107107
let f = elab_env_with_range g None in
108108
let res = RU.with_context (get_context g) (fun _ -> RTB.check_subtyping f t1 t2) in
109109
res
110110

111111
let rtb_instantiate_implicits g f t expected inst_extra =
112112
debug g (fun _ -> Printf.sprintf "Calling instantiate_implicits on %s"
113-
(T.term_to_string t));
113+
(show t));
114114
(* WARN: unary dependence, see comment in RU *)
115115
let t = RU.deep_transform_to_unary_applications t in
116116
let res, iss = RU.with_context (get_context g) (fun _ -> RTB.instantiate_implicits f t expected inst_extra) in
@@ -151,8 +151,8 @@ let rtb_check_prop_validity (g:env) (sync:bool) (f:_{f == elab_env g }) (p:_) (p
151151
in
152152
debug g (fun _ ->
153153
Printf.sprintf "(%s) Calling check_prop_validity on %s"
154-
(T.range_to_string (RU.range_of_term p))
155-
(T.term_to_string p));
154+
(show (RU.range_of_term p))
155+
(show p));
156156
let sp = mk_squash0 p in
157157
let _ : squash (typing_token f sp (E_Total, (`prop))) = magic () in //squash typing
158158
let res, issues =
@@ -178,7 +178,7 @@ let catch_all (f:unit -> Tac (option 'a & issues))
178178

179179
let readback_failure (s:R.term) =
180180
Printf.sprintf "Internal error: failed to readback F* term %s"
181-
(T.term_to_string s)
181+
(show s)
182182

183183
(* Set got_typ = None if we don't have a good type for `t`.
184184
Note that calling this with None for expected_typ, but Some _ for got_typ
@@ -347,8 +347,8 @@ let compute_term_type (g:env) (t:term)
347347
= let rng, fg = elab_env_with_term_range g t in
348348
debug g (fun _ ->
349349
Printf.sprintf "check_tot : called on %s elaborated to %s"
350-
(P.term_to_string t)
351-
(T.term_to_string t));
350+
(show t)
351+
(show t));
352352
let res, issues = tc_meta_callback g fg t in
353353
match res with
354354
| None ->
@@ -595,7 +595,7 @@ let try_get_non_informative_witness_aux (g:env) (u:universe) (ty:term) (ty_typin
595595
| None, issues ->
596596
None, issues
597597
| Some r_dict, issues -> (
598-
// T.print (Printf.sprintf "Resolved to %s" (T.term_to_string r_dict));
598+
// T.print (Printf.sprintf "Resolved to %s" (show r_dict));
599599
assert (typing_token r_env r_dict (E_Total, goal));
600600
assume (~(Tv_Unknown? (inspect_ln r_dict)));
601601
let dict = wr r_dict (RU.range_of_term ty) in
@@ -711,4 +711,4 @@ let norm_well_typed_term_alt
711711
= let (| t, ty, rel |) = RU.norm_well_typed_term ty steps in
712712
(|t, ty, rel|)
713713
in
714-
RU.record_stats "Pulse.norm_well_typed_term_alt" aux
714+
RU.record_stats "Pulse.norm_well_typed_term_alt" aux

0 commit comments

Comments
 (0)