population.py: module that generate a population, i.e. distribution of types
model.py: module that builds the linear programming model
simulation.py: solve an instance of the problem and give the optimal solution
counter_finder.py: search for counterexamples based on solution patterns
joint_mono.py: check joint monotonicity in discrete cases