SV assertion related to req and grant

When req is high , grant should be asserted within 2 to 20 clk cycles until request should be high. In the next clk cycle, req should be low

Can someone help me with above assertion, I have tried the below approach
assert property (@(posedge clk) req |→ ##[2:20] gnt and req[*3:23] ##1 !req);

I am not clear on the 2nd half of the intention. Could you please elaborate ?

until request should be high. In the next clk cycle, req should be low

Do you expect request / req to remain high till grant is asserted ? ( where grant itself should be asserted within 2 to 20 clks post request going high )

If yes, the following should work

assert property( @(posedge clk) $rose(req) |-> ( req throughout (##[2:20] gnt) ) ##1 !req );