(* This file contains highly trivial proofs, but they are carefully engineered in such a way that the Qed is fast. This is tricky because we have to avoid that constants such as 12 or 13 are unfolded by the typechecker while unifying two terms. *)
Local Open Scope Z.

(* This is more general than what we need (we only need it for i=12), but if we prove it for i=12 directly, the Qed takes forever. *)
Lemma round13_eq_assemble_general: forall i buf plaintext S0 S12 S13,
S0 = mbed_tls_initial_add_round_key plaintext buf ->
S12 = mbed_tls_enc_rounds i S0 buf 4 ->
S13 = mbed_tls_fround S12 buf (4 + 4 * Z.of_nat i) ->
S13 = mbed_tls_enc_rounds (S i) (mbed_tls_initial_add_round_key plaintext buf) buf 4.