You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here 4 and 5 are in the cutset ({4,5}) only because they are used as arguments to Mult. Ideally, the cutset should be empty because 4 and 5 are not used afterMult.
The reason they are in the cutset can be seen in the semantics of DataLang, here:
if op_requires_names op /\ IS_NONE names_opt then (SOME (Rerr(Rabort Rtype_error)),s) else
case cut_state_opt names_opt s of
| NONE => (SOME (Rerr(Rabort Rtype_error)),s)
| SOME s =>
(case get_vars args s.locals of
| NONE => (SOME (Rerr(Rabort Rtype_error)),s)
| SOME xs => (case do_app op xs s of
This needs to be corrected so that the arguments are read (get_vars) before the cutset is applied (cut_state_opt). With this change data_live can make the cutsets smaller. The data_to_word proofs need updating.
The text was updated successfully, but these errors were encountered:
@tanyongkiam noticed that cutsets are sometimes too large.
For example, the explorer output reveals:
Here 4 and 5 are in the cutset (
{4,5}
) only because they are used as arguments toMult
. Ideally, the cutset should be empty because 4 and 5 are not used afterMult
.The reason they are in the cutset can be seen in the semantics of DataLang, here:
cakeml/compiler/backend/semantics/dataSemScript.sml
Lines 1146 to 1153 in 48a421d
This needs to be corrected so that the arguments are read (
get_vars
) before the cutset is applied (cut_state_opt
). With this changedata_live
can make the cutsets smaller. Thedata_to_word
proofs need updating.The text was updated successfully, but these errors were encountered: