> at least for error detection you can also have none of X strings Yes, the result of a minimal perfect hash is always "it is either this specific string, or none of them; you'll have to compare to this specific string to tell". The result of a non-minimal perfect hash is "its none of these strings; or it's this specific string (compare to verify) or none of them". Error detection is part of the standard use case.
The "list of strings is known" is a common use case, e.g. for keywords in a stream parser, or an an IFF atom (... yes, I'm old), or Windows messages, etc. Obviously it's not for every use ... Am I understanding correctly that you want to implement BTrees for read-only compiled "case" statements or read only mapping types?