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.