Implication operator in cover property

I’m trying to understand existing code that someone else wrote. I see occurrences as such:

some_cover_property: cover property (@(posedge clk) ((a && b) |-> (c && d)));

Is this valid syntax?

And is it the same as:

some_cover_property: cover property (@(posedge clk) ((a && b) && (c && d)));

It’s valid syntax and it’s the same as the boolean expression. You could also use boolean implication here

some_cover_property: cover property (@(posedge clk) ((a && b) -> (c && d)));