Skip to content

Commit 888de97

Browse files
committed
stop normalizing lemmas/operators w.r.t. module aliases
The environment module is currently pre-normalizin module aliases in lemmas & operators. This legacy code was a work-around w.r.t. the glob unsoundness. This behavior is now useless and kills the benefit of module aliases. This commit removes it.
1 parent 40b0473 commit 888de97

File tree

2 files changed

+0
-72
lines changed

2 files changed

+0
-72
lines changed

src/ecEnv.ml

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,75 +2413,6 @@ module NormMp = struct
24132413
let g = (norm_glob env mhr mp) in
24142414
g.f_ty
24152415
2416-
let rec norm_form env =
2417-
let has_mod b =
2418-
List.exists (fun (_,gty) ->
2419-
match gty with GTmodty _ -> true | _ -> false) b in
2420-
2421-
let norm_form = (* FIXME: use FSmart *)
2422-
EcCoreFol.Hf.memo_rec 107 (fun aux f ->
2423-
match f.f_node with
2424-
| Fquant(q,bd,f) ->
2425-
if has_mod bd then
2426-
let env = Mod.add_mod_binding bd env in
2427-
f_quant q bd (norm_form env f)
2428-
else
2429-
f_quant q bd (aux f)
2430-
2431-
| Fpvar(p,m) ->
2432-
let p' = norm_pvar env p in
2433-
if p == p' then f else
2434-
f_pvar p' f.f_ty m
2435-
2436-
| FhoareF hf ->
2437-
let pre' = aux hf.hf_pr and p' = norm_xfun env hf.hf_f
2438-
and post' = aux hf.hf_po in
2439-
if hf.hf_pr == pre' && hf.hf_f == p' && hf.hf_po == post' then f else
2440-
f_hoareF pre' p' post'
2441-
2442-
(* TODO: missing cases: FbdHoareF and every F*HoareS *)
2443-
2444-
| FequivF ef ->
2445-
let pre' = aux ef.ef_pr and l' = norm_xfun env ef.ef_fl
2446-
and r' = norm_xfun env ef.ef_fr and post' = aux ef.ef_po in
2447-
if ef.ef_pr == pre' && ef.ef_fl == l' &&
2448-
ef.ef_fr == r' && ef.ef_po == post' then f else
2449-
f_equivF pre' l' r' post'
2450-
2451-
| Fpr pr ->
2452-
let pr' = {
2453-
pr_mem = pr.pr_mem;
2454-
pr_fun = norm_xfun env pr.pr_fun;
2455-
pr_args = aux pr.pr_args;
2456-
pr_event = aux pr.pr_event;
2457-
} in f_pr_r pr'
2458-
2459-
| _ -> f)
2460-
in
2461-
norm_form
2462-
2463-
let norm_op env op =
2464-
let kind =
2465-
match op.op_kind with
2466-
| OB_pred (Some (PR_Plain f)) ->
2467-
OB_pred (Some (PR_Plain (norm_form env f)))
2468-
2469-
| OB_pred (Some (PR_Ind pri)) ->
2470-
let pri = { pri with pri_ctors =
2471-
List.map (fun x ->
2472-
{ x with prc_spec = List.map (norm_form env) x.prc_spec })
2473-
pri.pri_ctors }
2474-
in OB_pred (Some (PR_Ind pri))
2475-
2476-
| _ -> op.op_kind
2477-
in
2478-
{ op with
2479-
op_kind = kind;
2480-
op_ty = op.op_ty; }
2481-
2482-
let norm_ax env ax =
2483-
{ ax with ax_spec = norm_form env ax.ax_spec }
2484-
24852416
let is_abstract_fun f env =
24862417
let f = norm_xfun env f in
24872418
match (Fun.by_xpath f env).f_def with
@@ -2704,7 +2635,6 @@ module Op = struct
27042635
27052636
let bind ?(import = import0) name op env =
27062637
let env = if import.im_immediate then MC.bind_operator name op env else env in
2707-
let op = NormMp.norm_op env op in
27082638
let env_ntbase = update_ntbase (root env) (name, op) env.env_ntbase in
27092639
27102640
{ env with
@@ -2829,7 +2759,6 @@ module Ax = struct
28292759
fst (lookup name env)
28302760
28312761
let bind ?(import = import0) name ax env =
2832-
let ax = NormMp.norm_ax env ax in
28332762
let env = if import.im_immediate then MC.bind_axiom name ax env else env in
28342763
{ env with env_item = mkitem import (Th_axiom (name, ax)) :: env.env_item }
28352764

src/ecEnv.mli

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ module NormMp : sig
233233
val norm_mpath : env -> mpath -> mpath
234234
val norm_xfun : env -> xpath -> xpath
235235
val norm_pvar : env -> EcTypes.prog_var -> EcTypes.prog_var
236-
val norm_form : env -> form -> form
237236
val mod_use : env -> mpath -> use
238237
val fun_use : env -> xpath -> use
239238
val restr_use : env -> mod_restr -> use use_restr

0 commit comments

Comments
 (0)