Combinatorial and sequential logic