Second-order cellular automata

Second-order elementary rules can be implemented using

CA2EvolveList[rule_List, {a_List, b_List}, t_Integer] := Map[First, NestList[CA2Step[rule, #]&, {a, b}, t]]

CA2Step[rule_List, {a_, b_}] := {b, Mod[a + rule[[8 - (RotateLeft[b] + 2 (b + 2 RotateRight[b]))]], 2]}

where rule is obtained from the rule number using IntegerDigits[n, 2, 8].

The combination Drop[list,-1]+2 Drop[list,1] of the result from CA2EvolveList corresponds to evolution according to a first-order k=4, r=1 rule.