summaryrefslogtreecommitdiff
path: root/abstract/varenv.ml
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ansys.com>2014-07-09 15:32:28 +0200
committerAlex Auvolat <alex.auvolat@ansys.com>2014-07-09 15:32:28 +0200
commitbc9ad2280839677bb46acfd846ff05bb37719b6e (patch)
tree238de281268baef8399d52c7315eb618b7e120d9 /abstract/varenv.ml
parent52a7d356a1c1c1bf0d1881d0cf6e13bb94dbc1a4 (diff)
downloadscade-analyzer-bc9ad2280839677bb46acfd846ff05bb37719b6e.tar.gz
scade-analyzer-bc9ad2280839677bb46acfd846ff05bb37719b6e.zip
Begin dynamic partitionning ; CORRECT BUG IN unpass_cycle !!
Diffstat (limited to 'abstract/varenv.ml')
-rw-r--r--abstract/varenv.ml8
1 files changed, 7 insertions, 1 deletions
diff --git a/abstract/varenv.ml b/abstract/varenv.ml
index 8bd3971..450bef3 100644
--- a/abstract/varenv.ml
+++ b/abstract/varenv.ml
@@ -20,6 +20,7 @@ type varenv = {
cycle : (id * id * typ) list; (* s'(x) = s(y) *)
forget : (id * typ) list; (* s'(x) not specified *)
+ forget_inv : (id * typ) list;
}
@@ -267,7 +268,12 @@ let mk_varenv (rp : rooted_prog) f cl =
[] last_vars
in
let forget = List.map (fun (_, id, ty) -> (id, ty)) rp.all_vars in
+ let forget_inv = List.map (fun (_, id, ty) -> (id, ty))
+ (List.filter
+ (fun (_, id, _) ->
+ not (List.exists (fun (_, b, _) -> b = id) cycle))
+ all_vars) in
{ evars = enum_vars; nvars = num_vars; ev_order;
- last_vars; all_vars; cycle; forget }
+ last_vars; all_vars; cycle; forget; forget_inv }