Zero Multiplicities for Linear Haskell

Hello GHC developers, I am Joseph Zullo, a PhD student at Purdue University. I am newly subscribed to this mailing list and my approval for GitLab is awaiting approval: my username is jazullo. I may be interested in adding Zero as a multiplicity to Linear Haskell as discussed in the source code noteshttps://github.com/ghc/ghc/blob/e258ad546d96fcfffd525f9b51d237cee467ad73/com.... My current use-case is with Liquid Haskell: I have Liquid Haskell proof terms embedded in linearly typed procedures, but the "ghost" proof terms consume terms nonlinearly even though they have no bearing on the linear style of the procedure (a binary "?" operator is used with terms to the left and proofs to the right). I am looking for any work arounds for this issue, or for any help or interest in adding zero as a multiplicity so that proof terms can be casted as non-consuming. Let me know if there are any proper avenues for this problem and/or proposal. I greatly appreciate any direction or assistance. Joseph

Joseph
Great!
At the moment we have one undisputed King of Linear Haskell, and that is
Arnaud Spiwak (cc'd). He's the person to talk to.
Everyone: it would great to broaden the base. Relying only on Arnaud puts
him under pressure; it'd be great to have more champions for Linear Haskell
and its implementation in GHC.
Simon
On Thu, 1 Aug 2024 at 22:12, Zullo, Joseph Anthony
Hello GHC developers,
I am Joseph Zullo, a PhD student at Purdue University. I am newly subscribed to this mailing list and my approval for GitLab is awaiting approval: my username is jazullo. I may be interested in adding Zero as a multiplicity to Linear Haskell as discussed in the source code notes https://github.com/ghc/ghc/blob/e258ad546d96fcfffd525f9b51d237cee467ad73/com.... My current use-case is with Liquid Haskell: I have Liquid Haskell proof terms embedded in linearly typed procedures, but the “ghost” proof terms consume terms nonlinearly even though they have no bearing on the linear style of the procedure (a binary “?” operator is used with terms to the left and proofs to the right). I am looking for any work arounds for this issue, or for any help or interest in adding zero as a multiplicity so that proof terms can be casted as non-consuming. Let me know if there are any proper avenues for this problem and/or proposal. I greatly appreciate any direction or assistance.
Joseph
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Dear Joseph,
My familiarity with Liquid Haskell is evidently less than what I'd like to
as I don't know what you mean by a ghost proof term in this context. That
being said, there are design decisions to make regarding the 0
multiplicity. The biggest one is: can we pattern-match on 0-multiplicity
data? The type system is much easier if we can (also it's got pretty
interesting consequences in my opinion, such as the ability to call `seq`
on a linear variable). But as Rodrigo Mesquita indirectly points out in his
master thesis, it's probably unsound to have a case on a 0-multiplicity
expression which isn't a variable. Another obstacle is that type inference
for multiplicity is heuristic, and I don't think I'm being overly prudent
in saying that some of these heuristics will be broken by adding a
multiplicity 0. So it's quite a bit of work to get there. It's not
necessarily a good idea to block your PhD on solving this particular
problem. That being said, don't hesitate to reach out to me: we can have a
call and discuss the particular of your problem, and maybe find
workarounds, and also discuss the design of the 0 multiplicity.
/Arnaud
On Thu, 1 Aug 2024 at 23:12, Zullo, Joseph Anthony
Hello GHC developers,
I am Joseph Zullo, a PhD student at Purdue University. I am newly subscribed to this mailing list and my approval for GitLab is awaiting approval: my username is jazullo. I may be interested in adding Zero as a multiplicity to Linear Haskell as discussed in the source code notes https://github.com/ghc/ghc/blob/e258ad546d96fcfffd525f9b51d237cee467ad73/com.... My current use-case is with Liquid Haskell: I have Liquid Haskell proof terms embedded in linearly typed procedures, but the “ghost” proof terms consume terms nonlinearly even though they have no bearing on the linear style of the procedure (a binary “?” operator is used with terms to the left and proofs to the right). I am looking for any work arounds for this issue, or for any help or interest in adding zero as a multiplicity so that proof terms can be casted as non-consuming. Let me know if there are any proper avenues for this problem and/or proposal. I greatly appreciate any direction or assistance.
Joseph
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- Arnaud Spiwack Director, Research at https://moduscreate.com and https://tweag.io.
participants (3)
-
Arnaud Spiwack
-
Simon Peyton Jones
-
Zullo, Joseph Anthony