A basic description of the catmull-clark subdivision algorithm can be found here and on this page (it seems that blender does not differentiate between corner and side case - tested with this python script) .
How does blender calculate the catmull-clark subdivision mesh including edge creases?