In recent versions you can write
Head[, guard] =>, $, Body.
$/0
tells the system that the body should succeed deterministically. Note that this is just an error (or warning). The compiler doesn’t do anything with it. You can also use det/1 to declare your predicates to be deterministic. Again, this is merely a pretty cheap runtime check that should help you to make your code deterministic. For 99% of the cases once/1 should be deprecated. It prunes choice points too late.