@@ -453,66 +453,65 @@ module Fsubst = struct
453453 | FhoareF hf ->
454454 let hf_f = x_subst s hf.hf_f in
455455 let (s, m) = add_m_binding s hf.hf_m in
456- let hf_pr = f_subst ~tx s hf. hf_pr [ @ alert " -priv_pl " ] in
457- let hf_po = f_subst ~tx s hf. hf_po [ @ alert " -priv_pl " ] in
456+ let hf_pr = f_subst ~tx s ( hf_pr hf).inv in
457+ let hf_po = f_subst ~tx s ( hf_po hf).inv in
458458 f_hoareF {m;inv= hf_pr} hf_f {m;inv= hf_po}
459459
460460 | FhoareS hs ->
461461 let hs_s = s_subst s hs.hs_s in
462- let s, hs_m = add_me_binding s hs.hs_m in
463- let m = fst hs_m in
464- let hs_pr = f_subst ~tx s hs.hs_pr in
465- let hs_po = f_subst ~tx s hs.hs_po in
466- f_hoareS (snd hs_m) {m;inv= hs_pr} hs_s {m;inv= hs_po}
462+ let s, (m, mt) = add_me_binding s hs.hs_m in
463+ let hs_pr = f_subst ~tx s (hs_pr hs).inv in
464+ let hs_po = f_subst ~tx s (hs_po hs).inv in
465+ f_hoareS mt {m;inv= hs_pr} hs_s {m;inv= hs_po}
467466
468467 | FeHoareF hf ->
469468 let hf_f = x_subst s hf.ehf_f in
470469 let (s, m) = add_m_binding s hf.ehf_m in
471- let hf_pr = f_subst ~tx s hf.ehf_pr in
472- let hf_po = f_subst ~tx s hf.ehf_po in
473- f_eHoareF_old hf_pr hf_f hf_po
470+ let hf_pr = f_subst ~tx s (ehf_pr hf).inv in
471+ let hf_po = f_subst ~tx s (ehf_po hf).inv in
472+ f_eHoareF {m;inv = hf_pr} hf_f {m;inv = hf_po}
474473
475474 | FeHoareS hs ->
476475 let hs_s = s_subst s hs.ehs_s in
477- let s, hs_m = add_me_binding s hs.ehs_m in
478- let hs_pr = f_subst ~tx s hs.ehs_pr in
479- let hs_po = f_subst ~tx s hs.ehs_po in
480- f_eHoareS_old hs_m hs_pr hs_s hs_po
476+ let s, (m, mt) = add_me_binding s hs.ehs_m in
477+ let hs_pr = f_subst ~tx s (ehs_pr hs).inv in
478+ let hs_po = f_subst ~tx s (ehs_po hs).inv in
479+ f_eHoareS mt {m;inv = hs_pr} hs_s {m;inv = hs_po}
481480
482481 | FbdHoareF hf ->
483482 let hf_f = x_subst s hf.bhf_f in
484483 let (s, m) = add_m_binding s hf.bhf_m in
485- let hf_pr = f_subst ~tx s hf.bhf_pr in
486- let hf_po = f_subst ~tx s hf.bhf_po in
487- let hf_bd = f_subst ~tx s hf.bhf_bd in
484+ let hf_pr = f_subst ~tx s (bhf_pr hf).inv in
485+ let hf_po = f_subst ~tx s (bhf_po hf).inv in
486+ let hf_bd = f_subst ~tx s (bhf_bd hf).inv in
488487 f_bdHoareF {m;inv= hf_pr} hf_f {m;inv= hf_po} hf.bhf_cmp {m;inv= hf_bd}
489488
490489 | FbdHoareS hs ->
491490 let hs_s = s_subst s hs.bhs_s in
492491 let s, hs_m = add_me_binding s hs.bhs_m in
493492 let m = fst hs_m in
494- let hs_pr = f_subst ~tx s hs.bhs_pr in
495- let hs_po = f_subst ~tx s hs.bhs_po in
496- let hs_bd = f_subst ~tx s hs.bhs_bd in
493+ let hs_pr = f_subst ~tx s (bhs_pr hs).inv in
494+ let hs_po = f_subst ~tx s (bhs_po hs).inv in
495+ let hs_bd = f_subst ~tx s (bhs_bd hs).inv in
497496 f_bdHoareS (snd hs_m) {m;inv= hs_pr} hs_s {m;inv= hs_po} hs.bhs_cmp {m;inv= hs_bd}
498497
499498 | FequivF ef ->
500499 let ef_fl = x_subst s ef.ef_fl in
501500 let ef_fr = x_subst s ef.ef_fr in
502501 let (s, ml) = add_m_binding s ef.ef_ml in
503502 let (s, mr) = add_m_binding s ef.ef_mr in
504- let ef_pr = f_subst ~tx s ef.ef_pr in
505- let ef_po = f_subst ~tx s ef.ef_po in
503+ let ef_pr = f_subst ~tx s (ef_pr ef).inv in
504+ let ef_po = f_subst ~tx s (ef_po ef).inv in
506505 f_equivF {ml;mr;inv= ef_pr} ef_fl ef_fr {ml;mr;inv= ef_po}
507506
508507 | FequivS es ->
509508 let es_sl = s_subst s es.es_sl in
510509 let es_sr = s_subst s es.es_sr in
511- let s, es_ml = add_me_binding s es.es_ml in
512- let s, es_mr = add_me_binding s es.es_mr in
513- let es_pr = f_subst ~tx s es.es_pr in
514- let es_po = f_subst ~tx s es.es_po in
515- f_equivS_old es_ml es_mr es_pr es_sl es_sr es_po
510+ let s, (ml, mlt) = add_me_binding s es.es_ml in
511+ let s, (mr, mrt) = add_me_binding s es.es_mr in
512+ let es_pr = f_subst ~tx s (es_pr es).inv in
513+ let es_po = f_subst ~tx s (es_po es).inv in
514+ f_equivS mlt mrt {ml;mr;inv = es_pr} es_sl es_sr {ml;mr;inv = es_po}
516515
517516 | FeagerF eg ->
518517 let eg_fl = x_subst s eg.eg_fl in
@@ -521,8 +520,8 @@ module Fsubst = struct
521520 let eg_sr = s_subst s eg.eg_sr in
522521 let (s, ml) = add_m_binding s eg.eg_ml in
523522 let (s, mr) = add_m_binding s eg.eg_mr in
524- let eg_pr = f_subst ~tx s eg.eg_pr in
525- let eg_po = f_subst ~tx s eg.eg_po in
523+ let eg_pr = f_subst ~tx s (eg_pr eg).inv in
524+ let eg_po = f_subst ~tx s (eg_po eg).inv in
526525 f_eagerF {ml;mr;inv= eg_pr} eg_sl eg_fl eg_fr eg_sr {ml;mr;inv= eg_po}
527526
528527 | Fpr pr ->
0 commit comments