Qiskit provides a phase oracle method that takes a Boolean formula as input and returns a phase oracle circuit for that function as output.
Their source code informed me that the synthesis uses the Tweedledum's pkrm_synth
method for the actual synthesis.
However, apart from the fact that it somehow uses some combination of things called psuedo-Kronecker expression and Reed-Muller code (hence the 'pkrm' acronym), I could not decipher how the synthesis is being performed and what kind of algorithm is being used due to the lack of C++ proficiency.
If there are any documentations for the pkrm_synth
method or the Tweedledum
package in general, or if anyone recognizes the algorithm being used in the method, any such help would be greatly appreciated.