proposition: Lemma fold_left_enqueue_simpl : forall b0 b1 b2 b3 b4 b5 b6 b7 l sz (byteString0 : Vector.t _ sz) paddingOK0, fold_left (fun (bs : ByteString) (b : bool) => ByteString_enqueue b bs) (b0 :: b1 :: b2 :: b3 :: b4 :: b5 :: b6 :: b7 :: l) {| padding := 0; front := WO; paddingOK := paddingOK0; byteString := byteString0 |} = fold_left (fun (bs : ByteString) (b : bool) => ByteString_enqueue b bs) l {| padding := 0; front := WO; paddingOK := lt_0_Sn 7; byteString := Vector.append byteString0 (Vector.cons _ (WS b7 (WS b6 (WS b5 (WS b4 (WS b3 (WS b2 (WS b1 (WS b0 WO)))))))) _ (ByteBuffer.nil)) |}.
proof: Proof. simpl; intros. f_equal. unfold ByteString_enqueue at 7; simpl. unfold ByteString_enqueue at 6; simpl. unfold ByteString_enqueue at 5; simpl. unfold ByteString_enqueue at 4; simpl. unfold ByteString_enqueue at 3; simpl. unfold ByteString_enqueue at 2; simpl. unfold ByteString_enqueue at 1; simpl. repeat f_equal. apply le_uniqueness_proof. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Bedrock.Word Coq.ZArith.ZArith Coq.NArith.NArith Coq.Arith.Arith Coq.Numbers.Natural.Peano.NPeano Coq.Logic.Eqdep_dec Fiat.Narcissus.Common.Specs Fiat.Narcissus.BinLib.Core Fiat.Narcissus.Formats.ByteBuffer