diff options
author | Sebastian Graf <sebastian.graf@kit.edu> | 2022-02-21 13:32:27 +0100 |
---|---|---|
committer | Sebastian Graf <sebastian.graf@kit.edu> | 2022-02-21 18:30:46 +0100 |
commit | 03c9d654ceb9fe76630a6b817321041c07f3d135 (patch) | |
tree | 66db0af830ce218b913553f5d87d1763fe8d5056 /hadrian | |
parent | a14eac08c7ab490258ff0fd62065bfb8fb8b53df (diff) | |
download | haskell-wip/T21085.tar.gz |
Demand: Don't rewrite `CS(S)` to `S` (#21085)wip/T21085
In #21085 we established that we have
`CS(S) > S`, otherwise `plusSubDmd` is non-monotone:
```
L + S = S = CS(S) < CS(L) = C(L+S)(LuS) = L + CS(S)
```
That means that `CS(S) /= S` and we may not do the rewrite from `CS(S)` to `S`
in `mkCall`. We may still rewrite `S` to `CS(S)` in `viewCall`, which is a
monotone transition, in that
```
viewCall S = CS(S) <= CS(S) = viewCall CS(S)
```
We still have `L=CL(L)`, so we are allowed to rewrite it in `mkCall`.
Fixes #21085.
Diffstat (limited to 'hadrian')
0 files changed, 0 insertions, 0 deletions