Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
addresses Issue #4775
Embedded in the UMap of the DState, is the virtual DRep map with type
Map (Credential Staking c) (DRep c)
There is a related map in the VState
Map (Credential 'DRepRole c) (DRepState c)
Given the following two facts
A. every (Credential 'DRepRole c) corresponds to a unique DRep
B. Each DRepState contains a field drepDelegs:: DRepState -> Set (Credential Staking c)
There is a sort of inversse relation between the two maps
For every (Credential 'DRepRole c) in the Map in the VState, and every Set of Staking credentials associated with it, there is a corresponding entry in the DState Map, showing that each credential has delegated to the DRep uniquely identified by the (Credential 'DRepRole cere is a function that computes the invariant
Maintaining this invariant is crucial. The problem was that in our attempt to state this invariant, we over-constrained the system, and the generators could not solve the over-constrained system,
This PR slightly restructures things so the invariant is maintained, and the system is no longer over constrained.
Checklist
CHANGELOG.md
for the affected packages.New section is never added with the code changes. (See RELEASING.md)
.cabal
andCHANGELOG.md
files according to theversioning process.
.cabal
files for all affected packages are updated.If you change the bounds in a cabal file, that package itself must have a version increase. (See RELEASING.md)
fourmolu
(usescripts/fourmolize.sh
)scripts/cabal-format.sh
)hie.yaml
has been updated (usescripts/gen-hie.sh
)