Hash Function Example
To illustrate how to use components, we will create two components where the main component calls a hash function component. For simplicity, instead of an actual hash function, the second component will compute from an input . This component will have, in total, three columns: [input, intermediate, output], which will correspond to the values . Our main component, on the other hand, will have two columns, [input, output], which corresponds to the values . We’ll refer to the main component as the scheduling component and the hash function component as the computing component, since the main component is essentially scheduling the hash function component to run its function with a given input and the hash function component computes on the provided input. As can be seen in Figure 1, the input and output of each component are connected by lookups.
Design

| Input | Output |
|---|---|
| x | y^5 + 1 |
| y | x^5 + 1 |
| Input | Intermediate | Output |
|---|---|---|
| x | x^3 + 1 | x^5 + 1 |
| y | y^3 + 1 | y^5 + 1 |
Implementation
Let’s move on to the implementation.ComponentsStatement0, ComponentsStatement1, Components, and ComponentsProof, but the main logic is the same.
Let’s take a closer look at how the LogUp columns are generated.