Combine all the Things!

Yoann Trellu


What are your primitives?

Thus, when we describe a language, we should pay particular attention to the means that the language provides for combining simple ideas to form more complex ideas. Every powerful language has three mechanisms for accomplishing this:

Here is a claim: education about engineered systems should always explicitly follow the above threefold pattern.

Primitives Combination Abstraction
Mathematics Axioms Logical Rules
  • Definitions
  • Theorems
Sciences Observations Statistical Methods Models
  • Resistors,
  • capacitors
  • Wires in parrallel
  • in Series
  • Currencies,
  • clocks
  • And
  • or

This pattern can also be thought of in terms of ‘combinator libraries’. Given a particular topic wouldn’t one love to have such a library? Especially once one realizes it would directly have nice graphical representations?

Set out to demonstrate this, let us consider a well-known construct, the Pythagorean Theorem. One way to make the axioms explicit is to look at the proof described in

This description is well suited since the whole book is well structured with numbered references. By following these references, one is able to construct a directed graph. Below is what we get when blindly following them. Nodes are labeled just like in the book, with the top node (without incoming arrows) mentioning its name: the Pythagoras Theorem. The bottom of the graph contains the required axioms, from A1 to A9.

From axioms to propositions, to Pythagoras theorem
From axioms to propositions, to Pythagoras theorem

This graph needs some more work before being useful. In the next parts, we will go over general techniques to improve its readability, and more…