forked from OCamlPro/alt-ergo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathac.mli
More file actions
78 lines (59 loc) · 3.3 KB
/
Copy pathac.mli
File metadata and controls
78 lines (59 loc) · 3.3 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(**************************************************************************)
(* *)
(* Alt-Ergo: The SMT Solver For Software Verification *)
(* Copyright (C) 2013-2024 --- OCamlPro SAS *)
(* *)
(* This file is distributed under the terms of OCamlPro *)
(* Non-Commercial Purpose License, version 1. *)
(* *)
(* As an exception, Alt-Ergo Club members at the Gold level can *)
(* use this file under the terms of the Apache Software License *)
(* version 2.0. *)
(* *)
(* --------------------------------------------------------------- *)
(* *)
(* The Alt-Ergo theorem prover *)
(* *)
(* Sylvain Conchon, Evelyne Contejean, Francois Bobot *)
(* Mohamed Iguernelala, Stephane Lescuyer, Alain Mebsout *)
(* *)
(* CNRS - INRIA - Universite Paris Sud *)
(* *)
(* --------------------------------------------------------------- *)
(* *)
(* More details can be found in the directory licenses/ *)
(* *)
(**************************************************************************)
module type S = sig
(* the type of amalgamated AC semantic values *)
type r
(* the type of AC semantic values used by the theory *)
type t = r Sig.ac
(* builds an embeded semantic value from an AC term *)
val make : Expr.t -> r * Expr.t list
(** Tells whether the given symbol is AC. *)
val is_mine_symb : Symbols.t -> bool
(* compares two AC semantic values *)
val compare : t -> t -> int
(* tests if two values are equal (using tags) *)
val equal : t -> t -> bool
(* hash function for ac values *)
val hash : t -> int
(* returns the type infos of the given term *)
val type_info : t -> Ty.t
(* prints the AC semantic value *)
val print : Format.formatter -> t -> unit
(* returns the leaves of the given AC semantic value *)
val leaves : t -> r list
(* replaces the first argument by the second one in the given AC value *)
val subst : r -> r -> t -> r
(* add flatten the 2nd arg w.r.t HS.t, add it to the given list
and compact the result *)
val add : Symbols.t -> r * int -> (r * int) list -> (r * int) list
val fully_interpreted : Symbols.t -> bool
val abstract_selectors : t -> (r * r) list -> r * (r * r) list
val compact : (r * int) list -> (r * int) list
val assign_value :
r -> r list -> (Expr.t * r) list -> (Expr.t * bool) option
end
module Make (X : Sig.X) : S with type r = X.r