popcount[n_Integer]:=IntegerDigits[n,2] // Total

popcount2[n_Integer]:=Equal[popcount[n],2]

popcount3[n_Integer]:=Equal[popcount[n],3]

newcell[center_Integer,neighbours_Integer]:=(center==1 && (popcount2[neighbours]|| popcount3[neighbours]))||(center==0 && popcount3[neighbours])

NewCellIsTrue=Flatten[Table[Join[{center},PadLeft[IntegerDigits[neighbours,2],8]] ->Boole[newcell[center, neighbours]],{neighbours,0,255},{center,0,1}]]

BooleanConvert[BooleanFunction[NewCellIsTrue,{center,a,b,c,d,e,f,g,h}],"CNF"]

NewCellIsFalse=Flatten[Table[Join[{center},PadLeft[IntegerDigits[neighbours,2],8]] ->Boole[Not[newcell[center, neighbours]]],{neighbours,0,255},{center,0,1}]]

BooleanConvert[BooleanFunction[NewCellIsFalse,{center,a,b,c,d,e,f,g,h}],"CNF"]

stillife=Flatten[Table[Join[{center},PadLeft[IntegerDigits[neighbours,2],8]]->Boole[Boole[newcell[center,neighbours]]==center],{neighbours,0,255},{center,0,1}]]

BooleanConvert[BooleanFunction[stillife,{center,a,b,c,d,e,f,g,h}],"CNF"]