The quantum simulation kernel is to (approximately) implement the operator \({\rm exp}({\rm i}Ht)\)  where \(H\)  is the Hamiltonian of the simulated system and \(t \in \mathbb {R}\) .
Since directly compiling \({\rm exp}({\rm i}Ht)\)  into single- and two-qubit gates is hard, a compiler usually expands \(H\)  in the Pauli basis, i.e., \(H=\sum _{j=1}^{N}w_jP_j\)  where \(w_j \in \mathbb {R}\)  and \(P_j\)  is a Pauli string.
Then \({\rm exp}({\rm i}Ht)\)  is approximated using the Trotter formula [1]}:
\({\rm exp}({\rm i}Ht) = \left[\prod _{j=1}^{N}{\rm exp}({\rm i}P_jw_j\Delta t)\right]^{\frac{t}{\Delta t}} + O(t\Delta t)\) .
\(\Delta t\)  is a parameter determined by the simulation accuracy.
Figure REF  (a) shows the expansion process. \({\rm exp}({\rm i}Ht)\)  is first converted to \(\frac{t}{\Delta t}\)  terms of \({\rm exp}({\rm i}H\Delta t)\) . Each \({\rm exp}({\rm i}H\Delta t)\)  is then expanded to an array of \({\rm exp}({\rm i}P_jw_j\Delta t)\) 
and converted to basic gates.
