1signature separationLogicSyntax =
2sig
3
4include Abbrev;
5
6val safe_dest_pair : term -> term * term
7
8val FEMPTY_tm : term
9val FUPDATE_tm : term
10val strip_finite_map : term -> (term * term) list * term option
11
12val list2tuple1 : 'a list -> 'a
13val list2tuple2 : 'a list -> 'a * 'a
14val list2tuple3 : 'a list -> 'a * 'a * 'a
15val list2tuple4 : 'a list -> 'a * 'a * 'a * 'a
16val list2tuple5 : 'a list -> 'a * 'a * 'a * 'a * 'a
17val list2tuple6 : 'a list -> 'a * 'a * 'a * 'a * 'a * 'a
18val list2tuple7 : 'a list -> 'a * 'a * 'a * 'a * 'a * 'a * 'a
19val list2tuple8 : 'a list -> 'a * 'a * 'a * 'a * 'a * 'a * 'a * 'a
20val list2tuple9 : 'a list -> 'a * 'a * 'a * 'a * 'a * 'a * 'a * 'a * 'a
21
22val strip_comb_num : int -> term -> term -> term list
23val strip_comb_1 : term -> term -> term
24val strip_comb_2 : term -> term -> term * term
25val strip_comb_3 : term -> term -> term * term * term
26val strip_comb_4 : term -> term -> term * term * term * term
27val strip_comb_5 : term -> term -> term * term * term * term * term
28val strip_comb_6 : term -> term -> term * term * term * term * term * term
29val strip_comb_7 : term -> term -> term * term * term * term * term * term * term
30val strip_comb_8 : term -> term -> term * term * term * term * term * term * term * term
31val strip_comb_9 : term -> term -> term * term * term * term * term * term * term * term * term
32
33val asl_prog_parallel_term : term
34val dest_asl_prog_parallel : term -> term * term
35val is_asl_prog_parallel : term -> bool
36
37val asl_prog_seq_term : term
38val dest_asl_prog_seq : term -> term * term
39val is_asl_prog_seq : term -> bool
40
41val asl_prog_block_term : term
42val dest_asl_prog_block : term -> term
43val is_asl_prog_block : term -> bool
44val mk_asl_prog_block : term -> term
45
46val asl_prog_assume_term : term
47val dest_asl_prog_assume : term -> term
48val is_asl_prog_assume   : term -> bool
49
50val asl_prog_cond_term : term
51val dest_asl_prog_cond : term -> term * term * term
52val is_asl_prog_cond : term -> bool
53val mk_asl_prog_cond : term * term * term -> term
54
55val asl_prog_while_term : term
56val dest_asl_prog_while : term -> term * term
57val is_asl_prog_while : term -> bool
58val mk_asl_prog_while : term * term -> term
59
60
61val asl_prog_cond_critical_section_term : term
62val dest_asl_prog_cond_critical_section : term -> term * term * term
63val is_asl_prog_cond_critical_section : term -> bool
64
65val asl_prog_best_local_action_term : term
66val dest_asl_prog_best_local_action : term -> term * term
67val is_asl_prog_best_local_action : term -> bool
68
69val ASL_PROGRAM_HOARE_TRIPLE_term : term
70val dest_ASL_PROGRAM_HOARE_TRIPLE : term -> term * term * term * term * term
71val is_ASL_PROGRAM_HOARE_TRIPLE : term -> bool
72
73val ASL_PROGRAM_IS_ABSTRACTION_term : term
74val dest_ASL_PROGRAM_IS_ABSTRACTION : term -> term * term * term * term
75val is_ASL_PROGRAM_IS_ABSTRACTION : term -> bool
76val mk_ASL_PROGRAM_IS_ABSTRACTION : term * term * term * term -> term
77
78val ASL_SPECIFICATION_term : term
79
80val COND_PROP___IMP_term : term
81val dest_COND_PROP___IMP : term -> term * term
82val is_COND_PROP___IMP : term -> bool
83
84val COND_PROP___EQUIV_term : term
85val dest_COND_PROP___EQUIV : term -> term * term
86val is_COND_PROP___EQUIV : term -> bool
87
88val COND_PROP___STRONG_EXISTS_term : term
89val dest_COND_PROP___STRONG_EXISTS : term -> term * term
90val is_COND_PROP___STRONG_EXISTS : term -> bool
91
92val COND_PROP___EXISTS_term : term
93val dest_COND_PROP___EXISTS : term -> term * term
94val is_COND_PROP___EXISTS : term -> bool
95
96val COND_PROP___ADD_COND_term : term
97val dest_COND_PROP___ADD_COND : term -> term * term
98val is_COND_PROP___ADD_COND : term -> bool
99
100val asl_cond_star_term : term
101val dest_asl_cond_star : term -> term * term * term
102val is_asl_cond_star   : term -> bool
103
104val asl_pred_false_term  : term
105val asl_pred_true_term   : term
106val asl_pred_neg_term    : term
107val asl_pred_and_term    : term
108val asl_pred_or_term     : term
109val asl_pred_prim_term   : term
110
111
112val asl_exists_term       : term
113val asl_exists_list_term  : term
114val fasl_star_term        : term
115val asl_star_term         : term
116val asl_bigstar_list_term : term
117val asl_trivial_cond_term : term
118val asl_emp_term          : term
119val asl_false_term        : term
120val is_asl_false          : term -> bool
121val dest_asl_trival_cond  : term -> term * term
122val is_asl_trivial_cond   : term -> bool
123val dest_asl_star         : term -> term * term * term
124val strip_asl_star        : term -> term list
125val is_asl_star           : term -> bool
126val dest_asl_exists       : term -> term * term
127val is_asl_exists         : term -> bool
128val dest_asl_exists_list  : term -> term * term
129val is_asl_exists_list    : term -> bool
130
131
132val asl_comment_loop_invariant_term : term
133val dest_asl_comment_loop_invariant : term -> term * term;
134val is_asl_comment_loop_invariant : term -> bool;
135
136
137val asl_comment_block_spec_term : term
138val dest_asl_comment_block_spec : term -> term * term;
139val is_asl_comment_block_spec : term -> bool;
140
141val asl_comment_loop_spec_term : term
142val dest_asl_comment_loop_spec : term -> term * term;
143val is_asl_comment_loop_spec : term -> bool;
144
145val asl_comment_loop_unroll_term : term
146val dest_asl_comment_loop_unroll : term -> term * term;
147val is_asl_comment_loop_unroll   : term -> bool;
148
149val asl_comment_location_term : term
150val dest_asl_comment_location : term -> term * term
151val save_dest_asl_comment_location : term -> term * term * (unit -> thm)
152val is_asl_comment_location : term -> bool
153val mk_asl_comment_location : term * term -> term
154val empty_label_list : term
155val dest_list_asl_comment_location : term -> term * term
156val save_dest_list_asl_comment_location : term -> term * term * (unit -> thm)
157
158val asl_comment_assert_term : term
159val dest_asl_comment_assert : term -> term
160val is_asl_comment_assert   : term -> bool;
161
162val asl_comment_location_string_term : term
163val dest_asl_comment_location_string : term -> term * term
164val is_asl_comment_location_string : term -> bool
165
166val asl_comment_location2_term : term
167val dest_asl_comment_location2 : term -> term * term
168val save_dest_asl_comment_location2 : term -> term * term * (unit -> thm)
169val is_asl_comment_location2 : term -> bool
170val mk_asl_comment_location2 : term * term -> term
171
172val asl_comment_abstraction_term : term
173val dest_asl_comment_abstraction : term -> term * term
174val is_asl_comment_abstraction : term -> bool
175
176val dest_asl_comment : term -> term * term * term * thm
177
178val asl_procedure_call_preserve_names_wrapper_term : term;
179val dest_asl_procedure_call_preserve_names_wrapper : term -> term * term * term * term
180val is_asl_procedure_call_preserve_names_wrapper   : term -> bool
181val dest_ASL_SPECIFICATION : term -> term * term * term;
182val is_ASL_SPECIFICATION : term -> bool;
183
184
185val asl_prog_choice_term : term;
186val dest_asl_prog_choice : term -> term * term;
187val is_asl_prog_choice : term -> bool;
188
189val asl_prog_diverge_term : term;
190val asl_prog_fail_term : term;
191
192
193end
194
195