IntersectMBO/plutus

`dischargeCekValue` doesn't handle open terms correctly

Open

#7526 opened on Jan 15, 2026

View on GitHub
 (5 comments) (1 reaction) (1 assignee)Haskell (1,637 stars) (511 forks)batch import
Good first issuebugstatus: triaged

Description

dischargeCekValue has the following code:

                  -- var is free, leave it alone
                  (Var () named)

which means that

(\0 \0 var 2) (delay (var 1))

evaluates to

[1 :-> delay (var 1)] (\0 var 2)

which then discharges to

\0 delay (var 1)

which is variable capture.

Contributor guide