(* FIPS 197 section 5.3.5 mentions that ShiftRows and SubBytes (or InvShiftRows and * InvSubBytes) can commute. Normally, we would stipulate that the blocks are in bounds, * but it actually turns out to be unnecessary for the proof. *)

(* Specifications: *)
Lemma subbytes_shiftrows_comm : forall b : block,
ShiftRows (SubBytes b) = SubBytes (ShiftRows b).
Lemma invsubbytes_invshiftrows_comm : forall b : block,
InvShiftRows (InvSubBytes b) = InvSubBytes (InvShiftRows b).