Circuit minimization for Boolean functions