"the identifier is foo" does not mean "the identifier MUST always be expressed using the literal sequence of characters f, o, o".
It does literally mean that. Furthermore, ActivityPub requires identifiers to be dereferenceable URIs, so even in an alternative reality where "X is Y" has a different meaning, as:Public is not a valid identifier.
ActivityStreams requirements don't matter because we're implementing ActivityPub, not ActivityStreams.