@@ -2779,14 +2779,17 @@ and translvalue ue (env : EcEnv.env) lvalue =
27792779 let ty = ttuple (List. map snd xs) in
27802780 Lval (LvTuple xs), ty
27812781
2782- | PLvMap (x , tvi , es ) ->
2782+ | PLvMap (x , tvi , codom , es ) ->
27832783 let tvi = tvi |> omap (transtvi env ue) in
2784- let codomty = UE. fresh ue in
2784+ let codom = Option. map (transty tp_relax env ue) codom in
2785+ let codom = ofdfl (fun () -> UE. fresh ue) codom in
27852786 let pv, xty = trans_pv env x in
27862787 let e, ety = List. split (List. map (transexp env `InProc ue) es) in
2788+
27872789 let e, ety = e_tuple e, ttuple ety in
2790+
27882791 let name = ([] , EcCoreLib. s_set) in
2789- let esig = [xty; ety; codomty ] in
2792+ let esig = [xty; ety; codom ] in
27902793 let ops = select_exp_op env `InProc None name ue tvi (esig, None ) in
27912794
27922795 match ops with
@@ -2801,7 +2804,7 @@ and translvalue ue (env : EcEnv.env) lvalue =
28012804 let esig = Tuni. subst_dom uidmap esig in
28022805 let esig = toarrow esig xty in
28032806 unify_or_fail env ue lvalue.pl_loc ~expct: esig opty;
2804- LvMap ((p, tys), pv, e, xty), codomty
2807+ LvMap ((p, tys), pv, e, xty), codom
28052808
28062809 | [_] ->
28072810 let uidmap = UE. assubst ue in
@@ -3063,7 +3066,7 @@ and trans_form_or_pattern env mode ?mv ?ps ue pf tt =
30633066
30643067 | PFcast (pf , pty ) ->
30653068 let ty = transty tp_relax env ue pty in
3066- let aout = transf env pf in
3069+ let aout = transf env ~tt: ty pf in
30673070 unify_or_fail env ue pf.pl_loc ~expct: ty aout.f_ty; aout
30683071
30693072 | PFmem _ -> tyerror f.pl_loc env MemNotAllowed
@@ -3554,8 +3557,8 @@ and trans_memtype env ue (pmemtype : pmemtype) : memtype =
35543557 List. fold_left add_decl mt pmemtype
35553558
35563559(* -------------------------------------------------------------------- *)
3557- and transexp env mode ue { pl_desc = Expr e ; pl_loc = loc ; } =
3558- let f = trans_form_or_pattern env (`Expr mode) ue e None in
3560+ and transexp env ? tt mode ue { pl_desc = Expr e ; pl_loc = loc ; } =
3561+ let f = trans_form_or_pattern env (`Expr mode) ue e tt in
35593562 let m = Option. value ~default: mhr (EcEnv.Memory. get_active env) in
35603563 let e =
35613564 try
0 commit comments