Mating and population
Villagers will mate depending on the number of valid doors. A valid door is any door (within the city radius) where the number of "outside" spaces within 5 blocks (in a straight line) on one side of the door is not the same as the number of "inside" spaces within 5 blocks on the other side of the door. A space is considered to be "outside" if it is hit by the sun during the day, i.e. it is transparent, and has nothing but transparent blocks above it all the way to the sky. Notice that a door is not a valid door without a roof on one side, or with equal amount of roof on both sides. Sometimes the villager AI (such as mating and housing) doesn't behave as expected until the game is restarted (as in save and quit, then reload the world).
Once housing has been established,
villagers will then mate until the number of adult villagers equals 0.35 times the number of doors. Any remaining children will grow up as usual, resulting in a total number of adult villagers somewhere above one third of the number of nearby wooden doors. The type of villager that the child is doesn't depend on what type the parents are, e.g., two farmer villagers can have a child that is any of the occupations. Unlike other breed-able mobs, the parents and child have no personal interactions other than socializing.
The game engine periodically takes a census to determine the current population of the village. All villagers within the horizontal boundary of the village, and within 5 vertical blocks of the center will be counted as part of the population to determine if continued villager mating is allowed. However, any villager within a vertical distance of 32 blocks of the center of the village will attempt to enter mating mode as long as there is at least one villager within the boundary. Therefore, it is possible to create an unlimited population by holding a single villager within the village boundary and forcing all other villagers outside the 5 block vertical range of the census. The villagers on the "outskirts" of the town will periodically enter mating mode in an attempt to mate with the villager that is still within the boundary. If two villagers on the outskirts simultaneously enter mating mode while they are close to one another, they will mate with each other and produce a child.