Skip to main content

🍬 Script_timestamp.v

Proofs

See code, Gitlab , OCaml

of_string (to_string t) preserves t
to_string and of_string are inverse
Lemma to_string_of_string_is_inverse : t s,
  Int64.Valid.t (Script_timestamp.to_zint t)
  Script_timestamp.of_string s = Some t
  Script_timestamp.to_string t = s.
Proof.
  autounfold with script_timestamp_repr.
  intros t s HInt H.
  destruct t as [t].
  rewrite Option.catch_no_errors.
  rewrite Z.to_int64_eq by lia.
  destruct Time.of_notation eqn:H_notation_eq.
  { pose proof (Time.of_notation_some_implies _ _ H_notation_eq) as H_inv.
    hauto lq: on.
  }
  { rewrite Option.catch_no_errors in H.
    inversion H.
    apply Time.to_notation_of_string_eq.
  }
Qed.

Lemma encoding_is_valid :
  Data_encoding.Valid.t (fun _True) Script_timestamp.encoding.
  Data_encoding.Valid.data_encoding_auto.
Qed.
#[global] Hint Resolve encoding_is_valid : Data_encoding_db.