Skip to content

Commit 67da685

Browse files
committed
reduction
1 parent eb5fccf commit 67da685

1 file changed

Lines changed: 26 additions & 16 deletions

File tree

src/ecReduction.ml

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,37 +1491,46 @@ let rec conv ri env f1 f2 stk =
14911491
| FhoareS hs1, FhoareS hs2
14921492
when EqTest_i.for_stmt env hs1.hs_s hs2.hs_s ->
14931493
begin match check_me_binding env Fsubst.f_subst_id hs1.hs_m hs2.hs_m with
1494-
| subst ->
1495-
let subst = Fsubst.f_subst subst in
1496-
conv ri env hs1.hs_pr (subst hs2.hs_pr) (zhl f1 [hs1.hs_po] [subst hs2.hs_po] stk)
1494+
| _subst ->
1495+
let pr2 = (ss_inv_rebind (hs_pr hs2) (fst hs1.hs_m)).inv in
1496+
let po2 = (ss_inv_rebind (hs_po hs2) (fst hs1.hs_m)).inv in
1497+
conv ri env hs1.hs_pr pr2 (zhl f1 [hs1.hs_po] [po2] stk)
14971498
| exception NotConv -> force_head ri env f1 f2 stk
14981499
end
14991500

15001501
| FeHoareF hf1, FeHoareF hf2 when EqTest_i.for_xp env hf1.ehf_f hf2.ehf_f ->
1501-
conv ri env hf1.ehf_pr hf2.ehf_pr (zhl f1 [hf1.ehf_po] [hf2.ehf_po] stk)
1502+
let pr2 = (ss_inv_rebind (ehf_pr hf2) hf1.ehf_m).inv in
1503+
let po2 = (ss_inv_rebind (ehf_po hf2) hf1.ehf_m).inv in
1504+
conv ri env hf1.ehf_pr pr2 (zhl f1 [hf1.ehf_po] [po2] stk)
15021505

15031506
| FeHoareS hs1, FeHoareS hs2
15041507
when EqTest_i.for_stmt env hs1.ehs_s hs2.ehs_s ->
15051508
begin match check_me_binding env Fsubst.f_subst_id hs1.ehs_m hs2.ehs_m with
1506-
| subst ->
1507-
let subst = Fsubst.f_subst subst in
1508-
conv ri env hs1.ehs_pr (subst hs2.ehs_pr) (zhl f1 [hs1.ehs_po] [subst hs2.ehs_po] stk)
1509+
| _subst ->
1510+
let pr2 = (ss_inv_rebind (ehs_pr hs2) (fst hs1.ehs_m)).inv in
1511+
let po2 = (ss_inv_rebind (ehs_po hs2) (fst hs1.ehs_m)).inv in
1512+
conv ri env hs1.ehs_pr pr2 (zhl f1 [hs1.ehs_po] [po2] stk)
15091513
| exception NotConv -> force_head ri env f1 f2 stk
15101514
end
15111515

15121516
| FbdHoareF hf1, FbdHoareF hf2
15131517
when EqTest_i.for_xp env hf1.bhf_f hf2.bhf_f && hf1.bhf_cmp = hf2.bhf_cmp ->
1514-
conv ri env hf1.bhf_pr hf2.bhf_pr
1515-
(zhl f1 [hf1.bhf_po;hf1.bhf_bd] [hf2.bhf_po; hf2.bhf_bd] stk)
1518+
let pr2 = (ss_inv_rebind (bhf_pr hf2) hf1.bhf_m).inv in
1519+
let po2 = (ss_inv_rebind (bhf_po hf2) hf1.bhf_m).inv in
1520+
let bd2 = (ss_inv_rebind (bhf_bd hf2) hf1.bhf_m).inv in
1521+
conv ri env hf1.bhf_pr pr2
1522+
(zhl f1 [hf1.bhf_po;hf1.bhf_bd] [po2; bd2] stk)
15161523

15171524
| FbdHoareS hs1, FbdHoareS hs2
15181525
when EqTest_i.for_stmt env hs1.bhs_s hs2.bhs_s
15191526
&& hs1.bhs_cmp = hs2.bhs_cmp ->
15201527
begin match check_me_binding env Fsubst.f_subst_id hs1.bhs_m hs2.bhs_m with
1521-
| subst ->
1522-
let subst = Fsubst.f_subst subst in
1523-
conv ri env hs1.bhs_pr (subst hs2.bhs_pr)
1524-
(zhl f1 [hs1.bhs_po;hs1.bhs_bd] (List.map subst [hs2.bhs_po; hs2.bhs_bd]) stk)
1528+
| _subst ->
1529+
let pr2 = (ss_inv_rebind (bhs_pr hs2) (fst hs1.bhs_m)).inv in
1530+
let po2 = (ss_inv_rebind (bhs_po hs2) (fst hs1.bhs_m)).inv in
1531+
let bd2 = (ss_inv_rebind (bhs_bd hs2) (fst hs1.bhs_m)).inv in
1532+
conv ri env hs1.bhs_pr pr2
1533+
(zhl f1 [hs1.bhs_po;hs1.bhs_bd] [po2; bd2] stk)
15251534
| exception NotConv -> force_head ri env f1 f2 stk
15261535
end
15271536

@@ -1536,9 +1545,10 @@ let rec conv ri env f1 f2 stk =
15361545
when EqTest_i.for_stmt env es1.es_sl es2.es_sl
15371546
&& EqTest_i.for_stmt env es1.es_sr es2.es_sr ->
15381547
begin match check_me_bindings env Fsubst.f_subst_id [es1.es_ml; es1.es_mr] [es2.es_ml; es2.es_mr] with
1539-
| subst ->
1540-
let subst = Fsubst.f_subst subst in
1541-
conv ri env es1.es_pr (subst es2.es_pr) (zhl f1 [es1.es_po] [subst es2.es_po] stk)
1548+
| _subst ->
1549+
let pr2 = (ts_inv_rebind (es_pr es2) (fst es1.es_ml) (fst es1.es_mr)).inv in
1550+
let po2 = (ts_inv_rebind (es_po es2) (fst es1.es_ml) (fst es1.es_mr)).inv in
1551+
conv ri env es1.es_pr pr2 (zhl f1 [es1.es_po] [po2] stk)
15421552
| exception NotConv -> force_head ri env f1 f2 stk
15431553
end
15441554

0 commit comments

Comments
 (0)