Skip to content

Commit 35d7505

Browse files
committed
Fix some relevances.
1 parent bf03406 commit 35d7505

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/parametricity.ml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ let rec relation order evd env (t : constr) : constr =
335335
debug_mode := false;
336336
let env_R = translate_env order evd env in
337337
let na = Namegen.named_hd env !evd t Anonymous in
338-
let lams = range (fun k -> (Context.make_annot (prime_name order k na) ERelevance.relevant, None, lift k (prime !evd order k t))) order in
338+
let rel = Retyping.relevance_of_type env !evd t in
339+
let lams = range (fun k -> (Context.make_annot (prime_name order k na) rel, None, lift k (prime !evd order k t))) order in
339340
let env_R = push_rel_context (List.map toDecl lams) env_R in
340341
debug_mode := true;
341342
debug [`Relation] "output =" env_R !evd res;
@@ -355,7 +356,8 @@ and translate order evd env (t : constr) : constr =
355356
| Sort _ | Prod (_,_,_) ->
356357
(* [..., _ : t'', _ : t', _ : t] *)
357358
let na = Namegen.named_hd env !evd t Anonymous in
358-
let lams = range (fun k -> (Context.make_annot (prime_name order k na) ERelevance.relevant, lift k (prime !evd order k t))) order in
359+
let rel = Retyping.relevance_of_type env !evd t in
360+
let lams = range (fun k -> (Context.make_annot (prime_name order k na) rel, lift k (prime !evd order k t))) order in
359361
compose_lam lams (relation order evd env t)
360362

361363
| App (c,l) ->
@@ -477,7 +479,8 @@ and translate_constant order (evd : Evd.evar_map ref) env cst : constr =
477479
let etyp = of_constr typ in
478480
let edef = of_constr def in
479481
let na = Namegen.named_hd env !evd etyp Anonymous in
480-
let pred = mkLambda (Context.make_annot na ERelevance.relevant, etyp, substl (range (fun _ -> mkRel 1) order) (relation order evd env etyp)) in
482+
let rel = Retyping.relevance_of_type env !evd etyp in
483+
let pred = mkLambda (Context.make_annot na rel, etyp, substl (range (fun _ -> mkRel 1) order) (relation order evd env etyp)) in
481484
let res = translate order evd env edef in
482485
let uf_opaque_stmt = CoqConstants.eq env evd [| etyp; edef; fold|] in
483486
let evd', sort = Typing.sort_of env !evd etyp in
@@ -888,7 +891,8 @@ and rewrite_fixpoints order evdr env (depth : int) (fix : fixpoint) source targe
888891
let env_R =
889892
if List.exists (fun x -> List.mem x [`Fix]) debug_flag then begin
890893
let env_R = translate_env order evdr env in
891-
let rc_order = rev_range (fun k -> Context.make_annot (Name (Id.of_string (Printf.sprintf "rel_%d" k))) ERelevance.relevant, None,
894+
let rel = Retyping.relevance_of_type env !evdr typ in
895+
let rc_order = rev_range (fun k -> Context.make_annot (Name (Id.of_string (Printf.sprintf "rel_%d" k))) rel, None,
892896
lift k (prime !evdr order k typ)) order in
893897
let env_R' = push_rel_context (List.map toDecl rc_order) env_R in
894898
debug [`Fix] "typ_R =" env_R' !evdr typ_R;

0 commit comments

Comments
 (0)