how the plonkChip get the AIR?
we first check how the powdrChip gets its air:

it takes a machine as input, generate a PowdrAir.
check how the new function of powdrAir is implemented?

but it needs to define PlonkAir data structure
PowdrAir has this

it make sense to have machine for plonkAir,
Machine to Plonk circuit
the function generate_air_proof_input is where the trace generated, for plonkChip, to generate the trace, it necessary to build the plonkCircuit, knowing each gate, and generate witness based on it.

in air_to_plonkish, I make algebricExpression to plonk gate,
It is one element of SymbolicMachine,

algebricExpression belongs to constraints
now I can create a function to transfer bus_interactions to gates
I can find all the bus id definition here
I need to check in runtime example to see where is the bus type identifier
in the export_pil function, one of the inputs is bus_map, it is

it maps bus_id to bus type

it belongs to PowdrConfig, so I need to find out where this info is generated.
it seems it is not computed, but just set in the config

when create a new config, the code is:

BusMap::openvm_base is

so it is pre-defined, but I need this input to map the bus id with type
how to use an efficient way to map bus_id to type? let’s check how it is handled in export_pil function (then this busmap parameter is transferred to get_pil)

here the constraint is openvm equivalent of symbolic machine

I should find the symbolic machine, the id should match
as here it handle the openvm bus, I should check if the symbolic_machine from powdr, the bus id there is the interaction.bus_index
found this function, yes
