summaryrefslogtreecommitdiff
path: root/abstract/enum_domain.ml
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ansys.com>2014-07-30 15:45:28 +0200
committerAlex Auvolat <alex.auvolat@ansys.com>2014-07-30 15:45:28 +0200
commit93d924bb1017dc26a9735801e1b7f8b7a3f4ef2c (patch)
tree4ed81458db78bd851a6643230c953dceb3614de8 /abstract/enum_domain.ml
parent2a415b74b05644d9fa6023b66c6563484c787b8d (diff)
downloadscade-analyzer-93d924bb1017dc26a9735801e1b7f8b7a3f4ef2c.tar.gz
scade-analyzer-93d924bb1017dc26a9735801e1b7f8b7a3f4ef2c.zip
Refactor some stuff (this code sould be re-read.)
Diffstat (limited to 'abstract/enum_domain.ml')
-rw-r--r--abstract/enum_domain.ml7
1 files changed, 7 insertions, 0 deletions
diff --git a/abstract/enum_domain.ml b/abstract/enum_domain.ml
index 68b04f5..b035cc0 100644
--- a/abstract/enum_domain.ml
+++ b/abstract/enum_domain.ml
@@ -26,6 +26,7 @@ module type ENUM_ENVIRONMENT_DOMAIN = sig
val bottom : (id * item list) list -> t
val vtop : t -> t (* top with same vars *)
val is_bot : t -> bool
+ val is_top : t -> bool
(* variable management *)
val vars : t -> (id * item list) list
@@ -67,6 +68,7 @@ module Valuation : ENUM_ENVIRONMENT_DOMAIN = struct
let vtop x = { x with value = VarMap.empty }
let bottom vars = raise Bot (* we don't represent Bot *)
let is_bot x = false
+ let is_top x = VarMap.is_empty x.value
let vars x = x.vars
@@ -197,6 +199,11 @@ module MultiValuation : ENUM_ENVIRONMENT_DOMAIN = struct
let vtop x = { x with value = VarMap.empty }
let bottom vars = raise Bot (* we don't represent Bot *)
let is_bot x = false
+ let is_top x =
+ VarMap.for_all
+ (fun k v -> List.for_all (fun vv -> List.mem vv v)
+ (List.assoc k x.vars))
+ x.value
let vars x = x.vars