defproc inverter (bool? i; bool! o) { prs { i => o- } } defproc nand2 (bool? a, b; bool! c) { prs { a & b => c- } } defproc and2 (bool? a, b; bool! c) { nand2 n(.a=a, .b=b); inverter i(.i=n.c, .o=c); // note that we don't need the intermediate name _c }