diff options
author | Son Ho | 2022-01-03 12:40:12 +0100 |
---|---|---|
committer | Son Ho | 2022-01-03 12:40:12 +0100 |
commit | ba77a9a882e3e8307c578db10c10dacaab9fa2d9 (patch) | |
tree | 0a6c23d04131f46d96d30409bc4aab1847b1df69 /src/Contexts.ml | |
parent | 5aa4607a5109939976cf692806789e003adb85e0 (diff) |
Start working on end_abstraction
Diffstat (limited to 'src/Contexts.ml')
-rw-r--r-- | src/Contexts.ml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Contexts.ml b/src/Contexts.ml index 7b9187bf..5e8ae3d0 100644 --- a/src/Contexts.ml +++ b/src/Contexts.ml @@ -186,6 +186,19 @@ let ctx_push_uninitialized_vars (ctx : eval_ctx) (vars : var list) : eval_ctx = let vars = List.map (fun v -> (v, mk_bottom v.var_ty)) vars in ctx_push_vars ctx vars +let env_lookup_abs (env : env) (abs_id : V.AbstractionId.id) : V.abs = + let rec lookup env = + match env with + | [] -> failwith "Unexpected" + | Var (_, _) :: env' -> lookup env' + | Abs abs :: env' -> if abs.abs_id = abs_id then abs else lookup env' + | Frame :: env' -> lookup env' + in + lookup env + +let ctx_lookup_abs (ctx : eval_ctx) (abs_id : V.AbstractionId.id) : V.abs = + env_lookup_abs ctx.env abs_id + (** Visitor to iterate over the values in the *current* frame *) class ['self] iter_frame = object (self : 'self) |