Hi, I'm working on a challenge-response protocol that can detect prover response losses. The idea was for the prover itself to be the observer of the detection, receiving a challenge where the verifier's state doesn't match the prover's updated state.
However, to implement response loss detection, I need to include a challenge timeout rule. This prevents deadlocks due to the fact that the verifier is stateful and, once it sends a challenge, would remain in the verify state forever if we don't implement the timeout.
However, as soon as I insert the timeout rule, the GUI displays eight partial constructions, causing almost all my lemmas to fail.
rule Register:
[ ... ]
--[ ... ]-->
[ ...
St_V_Challenge(~idV, %1, 'null'),
... ]
rule V_challenge:
[ ...
St_V_Challenge(~idV, %prev_cP, prev_nP),
Fr(~ch),
... ]
--[ ... ]-->
[ ...
St_V_Verify(~idV, %prev_cP, prev_nP, ~ch),
... ]
rule V_timeout:
[ ...
St_V_Verify(~idV, %prev_cP, prev_nP, ~ch),
... ]
--[ ... ]-->
[ ...
St_V_Challenge(~idV, %prev_cP, prev_nP),
... ]