While it is possible to keep providing more and more definitions, it is not
the correct approach to building a theory. We often get the idea that a
mathematical theory is built in a logical way starting from definitions and
axioms. This is not the case. The definitions and axioms appear at the very
end of the development of a good theory. It invariably starts with simple
facts that later on are generalized into theorems, and only at the very end
the formal definitions and axioms are developed. Sadly enough, many people
who try to apply mathematics to programming start with axioms and then end up
criticizing the real programs for not corresponding to their âbeautifulâ
axioms. To build a theory of data structures we need to start with simple
algorithms operating on data structures and only when we have looked at many
specific algorithms can we come up with satisfactory theories.

Eric Ries tells in The Lean Startup how to move from an idea to
a working product. You start somewhere and move in the direction that looks
most promising while in the meantime testing the idea in the real world.