PowdrAir Eval
PowdrAir eval is in the chip.rs
following the implementation of powdrChip powdrAir, the eval function add constraint and bus interactions, powdrAir stores the symbolic_machine

let’s see where the powdrAir is initiated
it’s new function take machine as an input:

check where thies new function is called.

in powdrChip, where air is built.
PlonkAir
Plonk air is in the air.rs file
current its evaluation only have

I am not sure how this eval is used, let’s see how powdrAir generate_air_input deal with the bus interaction
The function is defined in Chip trait for plonkChip
I found how it is defined for Chip trait in PowdrChip

check how the generate_witness function handle the bus interaction

it generates trace as dneseMatrix, so it should be actual witness values. as bus interactions witness are also participate in normal constraint, how are they be separated?
now when run the test command, the bus interactions is unbalanced, because there should be some bus send or received from plonk circuit to the VM, if not, the overall buses are not balanced (there is not only plonk circuit!)

now let’s go back to the eval function of powdrChip, you see the interactions, its mul and args are evaluated, and then push to builder, I need to do something similar, but the interaction should be pushed for every gate, it is just push mul to be zero when it is not a bus gate.

let’s try to balance the bus 0, should be bitwise lookup
bus is balanced by adding push_interaction.

but these bus ids should not be fixed, instead, they should be configured by a config.buss_map. as receive a comment from Georg
let’s actually check this config
Configuration
when run a test, a config needs to be setup

The config includes:

when the config is created, it always use open_vm_base

which gives the default option

I need to make the backend, plonkAir able to read this info
see the chain of config is passed through:
prove_mock -> compiled_and_prove-> compile_guest

-> compile_exe (where the customize function is located)-> customize ->
Then there are several function use config, I need to figure out which one initialize PlonkAir


specially, figure out these three:
- generate_autoprecompile,
- extension_push
- PowdrExtension::new
generate_autoprecompile: seems for generate symbolic machine
push_precompile new:

