val point_add : BE.lmul_st U64 15ul 0ul mk_to_k256_comm_monoid
let point_add ctx x y xy =
  let h0 = ST.get () in
  SL.to_aff_point_add_lemma (point_eval h0 x) (point_eval h0 y);
  Hacl.Impl.K256.PointAdd.point_add xy x y
val point_add : BE.lmul_st U64 15ul 0ul mk_to_k256_comm_monoid
let point_add ctx x y xy =
let h0 = ST.get () in
SL.to_aff_point_add_lemma (point_eval h0 x) (point_eval h0 y);
Hacl.Impl.K256.PointAdd.point_add xy x y
Hacl.Impl.K256.Group.fst.checked
Spec.K256.Lemmas.fsti.checked Spec.K256.fst.checked prims.fst.checked Lib.Sequence.fsti.checked Lib.IntTypes.fsti.checked Lib.Buffer.fsti.checked Hacl.Impl.K256.PointDouble.fst.checked Hacl.Impl.K256.PointAdd.fst.checked Hacl.Impl.K256.Point.fsti.checked Hacl.Impl.Exponentiation.Definitions.fst.checked FStar.UInt32.fsti.checked FStar.Pervasives.fsti.checked FStar.Mul.fst.checked FStar.HyperStack.ST.fsti.checked FStar.HyperStack.fst.checked
Hacl.Impl.K256.Group.fst
Lib.Buffer.lbuffer Lib.IntTypes.uint_t Lib.IntTypes.U64 Lib.IntTypes.SEC FStar.UInt32.__uint_to_t Hacl.Impl.K256.PointAdd.point_add Prims.unit Spec.K256.Lemmas.to_aff_point_add_lemma Hacl.Impl.K256.Point.point_eval FStar.Monotonic.HyperStack.mem FStar.HyperStack.ST.get
module Hacl.Impl.K256.Group

open FStar.HyperStack
open FStar.HyperStack.ST
open FStar.Mul

open Lib.IntTypes
open Lib.Buffer

module ST = FStar.HyperStack.ST
module LSeq = Lib.Sequence

module BE = Hacl.Impl.Exponentiation.Definitions

module S = Spec.K256
module SL = Spec.K256.Lemmas

open Hacl.Impl.K256.Point

#set-options "--z3rlimit 50 --fuel 0 --ifuel 0"

unfold
let linv_ctx (a:LSeq.lseq uint64 0) : Type0 = True

unfold
let refl (p:LSeq.lseq uint64 15{point_inv_lseq p}) : GTot S.aff_point =
  S.to_aff_point (point_eval_lseq p)

inline_for_extraction noextract
let mk_to_k256_comm_monoid : BE.to_comm_monoid U64 15ul 0ul = {
  BE.a_spec = S.aff_point;
  BE.comm_monoid = S.mk_k256_comm_monoid;
  BE.linv_ctx = linv_ctx;
  BE.linv = point_inv_lseq;
  BE.refl = refl;
}


inline_for_extraction noextract
val point_add : BE.lmul_st U64 15ul 0ul mk_to_k256_comm_monoid
Hacl.Impl.Exponentiation.Definitions.lmul_st Lib.IntTypes.U64
  15ul
  0ul
  Hacl.Impl.K256.Group.mk_to_k256_comm_monoid