BGP does not use any transport protocol-based keep-alive mechanism to determine if peers are reachable. Instead, KEEPALIVE messages are exchanged between peers often enough as not to cause the Hold Timer to expire. A reasonable maximum time between KEEPALIVE messages would be one third of the Hold Time interval. KEEPALIVE messages MUST NOT be sent more frequently than one per second. An implementation MAY adjust the rate at which it sends KEEPALIVE

Example of this:

R3 and R4 in AS 34

Smaller integer in relation to (holtime/3), if holdtime of neigh is used and keepalive > (holdtime/3)

One time I wasted a lot of time trying to work with the keepalive/holddown and the key to understand it, is in your paragraph “if the holddtime interval of the neigbor is selected and the locally configured keepalive is less than a third of the holdtime intercal the peers use the locally configured keep alive”.