According to the Specification, patch version must be reset to 0 when minor version is incremented and both patch and minor versions must be reset to 0 when major version is incremented. However, it doesn't specify the behavior of pre-release and build versions when the associated normal version is incremented. Supposedly, they shouldn't remain the same, and, if so, it should be explicitly stated in the Specification.
According to the Specification, patch version must be reset to 0 when minor version is incremented and both patch and minor versions must be reset to 0 when major version is incremented. However, it doesn't specify the behavior of pre-release and build versions when the associated normal version is incremented. Supposedly, they shouldn't remain the same, and, if so, it should be explicitly stated in the Specification.