Wim,
There is no way to programatically create a filtered Primary index.
It is not good desing to do that anyway as you create a sitauation where the recall of an existing record could cause data integrity to be lost. Instead use surrogate pk's that are meaningless and never reuse a value for the PK. This way you don't care what the PK values are on the deleted records because you will never use them again anyway.
You can use candidate keys for those fields that must be unique.