The crime building sources are currently all constant sources (type PROPERTYSOURCE_CONSTANT). Law buildings are negative crime sources. CvPropertySourceConstant::getAmountPerTurn() returns the amount of the property, CvPropertySource::getProperty() the property type. There is also a global crime source that adds crime per population each turn to each city (type PROPERTYSOURCE_ATTRIBUTE_CONSTANT). Currently set to 5 per population and turn. The decay (type PROPERTYSOURCE_DECAY) currently decays 4% of crime (or law) each turn. Crime diffuses from cities to surrounding plots with 5% each turn and from plot to plot with 4%. There is also a diffusion to cities that a city has a trade route with (5%). There are a number of pseudo buildings representing crimes that are auto built when the crime rating is in a certain range (and the prerequisites of the building are met). So the cost of having a certain crime rating compared to another can be evaluated by the value of the buildings that are built/removed by the change.