taco consists of two intertwined processes: one that compiles index
expressions to executable code and one that invokes executable code on
inputs to produce outputs.

The main modules are layered the following way:

![Modules](https://github.com/tensor-compiler/taco/wiki/images/modules.png)

The modules work together the following way to compile and execute code:

![Flow](https://github.com/tensor-compiler/taco/wiki/images/flow.png)
