D allow a knowledge based to be partitioned.
Every construct defined must be placed in a module. The programmer
can explicitly control which constructs in a module are visible
to other modules and which constructs from other modules are visible
to a module. The visibility of facts and instances between modules
can be controlled in a similar manner. Modules can also be used
to control the flow of execution of rules. Defmodules are covered
comprehensively in Section 10.