// Verify that COMP accrual never exceeds the maximum possible rate
function assertionValidCompAccrual() external {
PhEvm.CallInputs[] memory distributions = ph.getCallInputs(address(compound), Comptroller.distributeSupplierComp.selector);
for (uint256 i = 0; i < distributions.length; i++) {
bytes memory data = distributions[i].input;
(address cToken, address supplier) = abi.decode(stripSelector(data), (address, address));
// Check COMP accrued before and after distribution
ph.forkPreCallState();
uint256 preAccrued = compound.compAccrued[supplier];
CompMarketState storage supplyState = comptroller.compSupplyState[cToken];
uint supplyIndex = supplyState.index;
uint maxDeltaPerToken = sub_(supplyIndex, comptroller.compInitialIndex);
uint supplierTokens = CToken(cToken).balanceOf(supplier);
uint maxIncrease = mul_(supplierTokens, maxDeltaPerToken);
ph.forkPostCallState();
uint256 postAccrued = compound.compAccrued[supplier];
if (postAccrued > preAccrued) {
uint256 increase = postAccrued - preAccrued;
require(increase <= maxIncrease, "COMP accrual increase exceeds maximum possible rate");
}
}
}