Im writing assertions for a handshake protocol where there can be back to back requests and acks. Acks can come between 1 to 5 cycles after req. How can I use assertions to make sure there is 1 ack for every req while also taking glitching on req or ack into account ?

property p1:
@(posedge clk) req ##[1:5] ack ;
endproperty

property p2:
@(posedge clk) $rose(ack) |-> $past(req,5);

Im not sure if this keeps 1-to-1 mapping of req vs ack.