diff options
Diffstat (limited to 'compiler/SymbolicAst.ml')
-rw-r--r-- | compiler/SymbolicAst.ml | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/SymbolicAst.ml b/compiler/SymbolicAst.ml index 4ecb194b..7f682c9c 100644 --- a/compiler/SymbolicAst.ml +++ b/compiler/SymbolicAst.ml @@ -160,6 +160,22 @@ type expression = We use it to compute meaningful names for the variables we introduce, to prettify the generated code. *) + | IntroSymbolic of + Contexts.eval_ctx + * mplace option + * V.symbolic_value + * V.typed_value + * expression + (** We introduce a new symbolic value, equal to some other value. + + This is used for instance when reorganizing the environment to compute + fixed points: we duplicate some shared symbolic values to destructure + the shared values, in order to make the environment a bit more general + (while losing precision of course). + + The context is the evaluation context from before introducing the new + value. It has the same purpose as for the {!Return} case. + *) | ForwardEnd of Contexts.eval_ctx * V.typed_value symbolic_value_id_map option |