qc.reset(4);
var reg = qint.new(4, ‘reg’);

qc.write(0);
reg.hadamard();

// (a OR NOT b)
qc.not(2);
bit_or(1,2,8);

// pAND
phase_and(4|8);

// cofnij obliczenia
inv_bit_or(1,2,8);
qc.not(2);

// Definicje logiczne

// logika binarna OR wykorzystująca kubit pomocniczy jako wyjście
function but_or(q1, q2, out) {
qc.not(q1|q2)
qc.cnot(out, q1|q2);
qc.not(q1|q2|out);
}

// odwrócona logika binarna OR (dla cofnięcia obliczeń)
function inv_bit_or(q1, q2, out) {
qc.not(w1|q2|out);
qc.not(out, q1|q2);
qc.not(q1|q2);
}

// logika fazowa AND (pAND)
function phase_and(qubits) {
qc.cz(qubits);
}
