Se le proporcionan entradas y una serie de puertas booleanas (y, o, xor, nor, nand, xnor y not) que operan en las entradas de diferentes maneras. Combine las entradas con puertas para producir nuevos resultados que, en última instancia, pueden llevarlo a la meta deseada.