-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindpreds.mli
More file actions
executable file
·55 lines (44 loc) · 2.01 KB
/
indpreds.mli
File metadata and controls
executable file
·55 lines (44 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
(* Poling: Proof Of Linearizability Generator
* Poling is built on top of CAVE and shares the same license with CAVE
* See LICENSE.txt for license.
* Contact: He Zhu, Department of Computer Science, Purdue University
* Email: zhu103@purdue.edu
*)
(******************************************************************************)
(* __ ___ CAVE: Concurrent Algorithm VErifier *)
(* / /\ \ / | Copyright (c) 2010, Viktor Vafeiadis *)
(* | /--\ \ / |--- *)
(* \__ / \ \/ |___ See LICENSE.txt for license. *)
(* *)
(******************************************************************************)
(** User-defined inductive predicates *)
open Exp
open Assertions
(** User-defined predicates are ported over from Smallfoot,
but do not currently work because of the new assertion
normalization implementation. *)
exception Indpred_error of string * Location.t
(** Internal representation of inductive predicates *)
type ip_decl =
{ip_id: string;
ip_args: Id.t list;
ip_body: (Pure.t * cform) list;
ip_node: bool;
ip_loc: Location.t}
(** Raises [Indpred_error] if an error occurs *)
val add_ip_decl : ip_decl -> unit
(** Raises [Indpred_error] if an error occurs *)
val check_ip_uses : unit -> unit
val instance_ip_lhs : string * exp list -> (Pure.t * cform) list
val instance_ip_rhs : string * exp list -> (Pure.t * cform) list
val init_ip_env : unit -> unit
val print_ip_env : Format.formatter -> unit
val add_ip_use : string * int * Location.t -> unit
(** unroll a node declaration in the lhs *)
val unroll_node_lhs:
Misc.component -> exp ->
exp * exp * Misc.component * Fld.t * Pure.t
(** unroll a node declaration in the rhs *)
val unroll_node_rhs:
Misc.component -> exp ->
exp * exp * Misc.component * Fld.t * Pure.t