[Haskell-cafe] RE: [Haskell] [Fwd: undecidable & overlapping instances: a bug?]

Simon Peyton-Jones simonpj at microsoft.com
Thu Oct 18 04:21:16 EDT 2007

| I believe that this "weak coverage condition" (which is also called
| "the dependency condition" somewhere on the wiki) is exactly what GHC
| 6.4 used to implement but than in 6.6 this changed.  According to
| Simon's comments on the trac ticket, this rule requires FDs to be
| "full" to preserve the confluence of the system that is described in
| the "Understanding Fds via CHRs" paper.  I have looked at the paper
| many times, and I am very unclear on this point, any enlightenment
| would be most appreciated.

Right.  In the language of http://hackage.haskell.org/trac/ghc/ticket/1241, last comment (date 10/17/07), it would be *great* to

        replace the Coverage Condition (CC)
        with the Weak Coverage Condition (WCC)

as Mark suggests.  BUT to retain soundness we can only replace CC with
        WCC + B
WCC alone without (B) threatens soundness.  To retain termination as well (surely desirable) we must have
        WCC + B + C

(You'll have to look at the ticket to see what B,C are.)

And since A+B+C are somewhat onerous, we probably want to have
        CC  or  (WCC + B + C)

At least we know of nothing else weaker that will do (apart from CC of course).

Like you, Iavor, I find it very hard to internalise just why (B) and (C) are important.  But I believe the paper gives examples of why they are, and Martin is getting good at explaining it. Martin: can you give an example, once more, of the importance of (B) (=fullness)?

Anyway that's why I have been moving slowly in "fixing" GHC: the rule
        CC or (WCC + B + C)
just seems too baroque.


More information about the Haskell-Cafe mailing list