Skip to main content

🦏 Sc_rollup_proof_repr.v

Proofs

See code, Gitlab , OCaml

The encoding [reveal_proof_encoding] is valid.
Lemma reveal_proof_encoding_is_valid :
  Data_encoding.Valid.t (fun _True) Sc_rollup_proof_repr.reveal_proof_encoding.
Proof.
  Data_encoding.Valid.data_encoding_auto.
Admitted.
#[global] Hint Resolve reveal_proof_encoding_is_valid : Data_encoding_db.

Lemma input_proof_encoding_is_valid :
  Data_encoding.Valid.t (fun _True) Sc_rollup_proof_repr.input_proof_encoding.
Proof.
  Data_encoding.Valid.data_encoding_auto.
  intros.
  step; [| sfirstorder | sfirstorder].
  split; [| sfirstorder].
  split; [trivial |].
  split; [admit |].
  split; [admit | trivial].
Admitted.
#[global] Hint Resolve input_proof_encoding_is_valid : Data_encoding_db.

The encoding [encoding] is valid.
Lemma encoding_is_valid :
  Data_encoding.Valid.t (fun _True) Sc_rollup_proof_repr.encoding.
Proof.
  Data_encoding.Valid.data_encoding_auto.
  intros.
  repeat split.
  step; exact I.
Qed.
#[global] Hint Resolve encoding_is_valid : Data_encoding_db.

[proof_error] is valid.
[check] is valid.
Lemma check_is_valid p_value reason_value :
  letP? res := Sc_rollup_proof_repr.check p_value reason_value in True.
Proof.
  unfold Sc_rollup_proof_repr.check.
  step; [sfirstorder |].
  apply proof_error_is_valid.
Qed.

[check true _] returns [Pervasives.Ok tt] and [check false _] returns [Pervasives.Error _]
Lemma check_eq (b : bool) (reason : string) :
  match Sc_rollup_proof_repr.check b reason with
  | Pervasives.Ok ttb = true
  | Pervasives.Error _b = false
  end.
Proof.
  destruct b eqn:H_b; [easy|].
  cbv.
  (* @TODO Lwt_tzresult_syntax is opaque *)
  (* unfold V0.Error_monad.Lwt_tzresult_syntax.fail. *)
Admitted.

[cut_at_level level input] returns [Some input] when [level > input.(Sc_rollup_PVM_sem.input.inbox_level]
(* 
Lemma cut_at_level_gt_eq level input
  (H : 
    let input_level := input.(Sc_rollup_PVM_sig.input.inbox_level) in
    level > input_level) :
  Sc_rollup_proof_repr.cut_at_level level input = Some input.
Proof.
  unfold Sc_rollup_proof_repr.cut_at_level.
  step; [|reflexivity].
  simpl in *.
  unfold Raw_level_repr.op_lteq in *. simpl in *. lia.
Qed.
*)