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