Block validation does almost exactly that. We sum all the inputs (spent by the block) and sum all the outputs (created by the block) and verify these “sum to zero” by comparing this sum against the sum of all the kernels in the block. We know the expected supply on a per block basis every block has a 60 grin coinbase reward.
Initial “fast sync” does something very similar for the full chain state at the “horizon”, checking that everything “sums to zero” before beginning to download subsequent full blocks. We know the expected supply at the horizon block height as every block has a 60 grin coinbase reward.
The signature on every kernel means every kernel is a 0 value, so all kernels sum to 0 and we need inputs-outputs to also sum to zero for everything to match up.
Note: This is slightly more complex in reality as we introduce a kernel offset per tx, but the core idea still holds, we just need to account for the total offset at the block level.
“Hidden” inflation would cause the sum of inputs-outputs to no longer match the sum of the kernels plus the total kernel offset and validation would fail.
Does that make sense?