Proto rests on four primitives: sequences, constraints, generators, and optimizers. Constraints score designs, generators propose candidates, and optimizers steer the search toward better ones.
Formally, a Proto program defines an energy-based model. A useful consequence is that constraints combine by summation, making multi-objective design a natural part of the framework.