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
As mentioned in this issue, Carbon is slow when it needs to deal with a sequence of conditional exhale statements, which, for example, are used to encode IO. The problem is that to be able to show that current activation record does not have bounded obligation, the prover needs to traverse entire inhale-exhale history for each exhale. In most cases, the prover cannot reuse information from previous queries because the token for which the permission is queried is almost always fresh. However, Nagini in many cases knows that the token is fresh, which implies that it has no bounded obligations associated with it, and, therefore, can emit assumption assume perm(MustInvokeBounded(t_100)) == none;, which would prevent the prover from exploring the entire history. Modified example from the Carbon issue would look like this:
As mentioned in this issue, Carbon is slow when it needs to deal with a sequence of conditional exhale statements, which, for example, are used to encode IO. The problem is that to be able to show that current activation record does not have bounded obligation, the prover needs to traverse entire inhale-exhale history for each exhale. In most cases, the prover cannot reuse information from previous queries because the token for which the permission is queried is almost always fresh. However, Nagini in many cases knows that the token is fresh, which implies that it has no bounded obligations associated with it, and, therefore, can emit assumption
assume perm(MustInvokeBounded(t_100)) == none;
, which would prevent the prover from exploring the entire history. Modified example from the Carbon issue would look like this:The text was updated successfully, but these errors were encountered: