Skip to content

Commit b50fa2f

Browse files
authored
Merge pull request #22 from imandra-ai/nicola/reflect
feat: add reflect
2 parents bafb066 + 89ec6b4 commit b50fa2f

File tree

6 files changed

+35
-11
lines changed

6 files changed

+35
-11
lines changed

bin/test_http_api_instance.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ let () =
3333
syntax = Iml;
3434
hints = None;
3535
instance_printer = Some { name = "Z.sprint ()"; cx_var_name = "x" };
36+
reflect = true;
3637
}
3738
in
3839
Log.debug (fun k -> k "Shutting down server...");

bin/test_http_api_verify.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ let () =
3333
syntax = Iml;
3434
hints = Some { method_ = Auto };
3535
instance_printer = None;
36+
reflect = false;
3637
}
3738
in
3839
Log.debug (fun k -> k "Shutting down server...");

src/api.ml

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,29 @@ module Request = struct
5858
src: string;
5959
instance_printer: printer_details option;
6060
hints: Hints.t option;
61+
reflect: bool;
6162
}
6263

6364
type verify_req_name = {
6465
name: string;
6566
instance_printer: printer_details option;
6667
hints: Hints.t option;
68+
reflect: bool;
6769
}
6870

6971
type instance_req_src = {
7072
syntax: src_syntax;
7173
src: string;
7274
instance_printer: printer_details option;
7375
hints: Hints.t option;
76+
reflect: bool;
7477
}
7578

7679
type instance_req_name = {
7780
name: string;
7881
instance_printer: printer_details option;
7982
hints: Hints.t option;
83+
reflect: bool;
8084
}
8185

8286
type decomp_req_src = {
@@ -219,39 +223,43 @@ module Decoders (D : Decoders.Decode.S) = struct
219223
field_opt "syntax" src_syntax >>= fun syntax ->
220224
field "src" string >>= fun src ->
221225
field_opt "instance_printer" printer_details >>= fun instance_printer ->
226+
field "reflect" bool >>= fun reflect ->
222227
field_opt "hints" Hints.t >>= fun hints ->
223228
let syntax = Option.value ~default:Iml syntax in
224229
let r : Request.verify_req_src =
225-
Request.{ syntax; src; instance_printer; hints }
230+
Request.{ syntax; src; instance_printer; hints; reflect }
226231
in
227232
succeed r
228233

229234
let verify_req_name : Request.verify_req_name decoder =
230235
field "name" string >>= fun name ->
231236
field_opt "instance_printer" printer_details >>= fun instance_printer ->
232237
field_opt "hints" Hints.t >>= fun hints ->
238+
field "reflect" bool >>= fun reflect ->
233239
let r : Request.verify_req_name =
234-
Request.{ name; instance_printer; hints }
240+
Request.{ name; instance_printer; hints; reflect }
235241
in
236242
succeed r
237243

238244
let instance_req_src : Request.instance_req_src decoder =
239245
field_opt "syntax" src_syntax >>= fun syntax ->
240246
field "src" string >>= fun src ->
247+
field "reflect" bool >>= fun reflect ->
241248
field_opt "instance_printer" printer_details >>= fun instance_printer ->
242249
field_opt "hints" Hints.t >>= fun hints ->
243250
let syntax = Option.value ~default:Iml syntax in
244251
let r : Request.instance_req_src =
245-
Request.{ syntax; src; instance_printer; hints }
252+
Request.{ syntax; src; instance_printer; hints; reflect }
246253
in
247254
succeed r
248255

249256
let instance_req_name : Request.instance_req_name decoder =
250257
field "name" string >>= fun name ->
258+
field "reflect" bool >>= fun reflect ->
251259
field_opt "instance_printer" printer_details >>= fun instance_printer ->
252260
field_opt "hints" Hints.t >>= fun hints ->
253261
let r : Request.instance_req_name =
254-
Request.{ name; instance_printer; hints }
262+
Request.{ name; instance_printer; hints; reflect }
255263
in
256264
succeed r
257265

@@ -429,37 +437,45 @@ module Encoders (E : D.Encode.S) = struct
429437

430438
let verify_req_src (x : Request.verify_req_src) =
431439
obj
432-
([ "syntax", src_syntax x.syntax; "src", string x.src ]
440+
([
441+
"syntax", src_syntax x.syntax;
442+
"src", string x.src;
443+
"reflect", bool x.reflect;
444+
]
433445
|> append_opt_key "instance_printer" printer_details x.instance_printer
434446
|> append_opt_key "hints" Hints_e.t x.hints)
435447

436448
let verify_req_name (x : Request.verify_req_name) =
437449
obj
438-
([ "name", string x.name ]
450+
([ "name", string x.name; "reflect", bool x.reflect ]
439451
|> append_opt_key "instance_printer" printer_details x.instance_printer
440452
|> append_opt_key "hints" Hints_e.t x.hints)
441453

442454
let instance_req_src (x : Request.instance_req_src) =
443455
obj
444-
([ "syntax", src_syntax x.syntax; "src", string x.src ]
456+
([
457+
"syntax", src_syntax x.syntax;
458+
"src", string x.src;
459+
"reflect", bool x.reflect;
460+
]
445461
|> append_opt_key "instance_printer" printer_details x.instance_printer
446462
|> append_opt_key "hints" Hints_e.t x.hints)
447463

448464
let instance_req_name (x : Request.instance_req_name) =
449465
obj
450-
([ "name", string x.name ]
466+
([ "name", string x.name; "reflect", bool x.reflect ]
451467
|> append_opt_key "instance_printer" printer_details x.instance_printer
452468
|> append_opt_key "hints" Hints_e.t x.hints)
453469

454-
let eval_req_src (x : Request.eval_req_src) =
455-
obj [ "syntax", src_syntax x.syntax; "src", string x.src ]
456-
457470
let decomp_req_src (x : Request.decomp_req_src) =
458471
obj
459472
([ "name", string x.name; "prune", bool x.prune ]
460473
|> append_opt_key "assuming" string x.assuming
461474
|> append_opt_key "max_rounds" int x.max_rounds
462475
|> append_opt_key "stop_at" int x.stop_at)
476+
477+
let eval_req_src (x : Request.eval_req_src) =
478+
obj [ "syntax", src_syntax x.syntax; "src", string x.src ]
463479
end
464480

465481
module Response = struct

src/api.mli

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,29 @@ module Request : sig
4949
src: string;
5050
instance_printer: printer_details option;
5151
hints: Hints.t option;
52+
reflect: bool;
5253
}
5354

5455
type verify_req_name = {
5556
name: string;
5657
instance_printer: printer_details option;
5758
hints: Hints.t option;
59+
reflect: bool;
5860
}
5961

6062
type instance_req_src = {
6163
syntax: src_syntax;
6264
src: string;
6365
instance_printer: printer_details option;
6466
hints: Hints.t option;
67+
reflect: bool;
6568
}
6669

6770
type instance_req_name = {
6871
name: string;
6972
instance_printer: printer_details option;
7073
hints: Hints.t option;
74+
reflect: bool;
7175
}
7276

7377
type decomp_req_src = {

tests/instance.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ let tests (module Log : Logs.LOG) : unit Alcotest_lwt.test_case list =
2121
hints = None;
2222
instance_printer =
2323
Some { name = "Z.sprint ()"; cx_var_name = "x" };
24+
reflect = true;
2425
}
2526
in
2627
Lwt.return result

tests/verification.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ let tests (module Log : Logs.LOG) : unit Alcotest_lwt.test_case list =
1919
syntax = Iml;
2020
hints = Some { method_ = Auto };
2121
instance_printer = None;
22+
reflect = false;
2223
}
2324
in
2425
Lwt.return result

0 commit comments

Comments
 (0)