val fmul (x y: felem) : felem
let fmul (x:felem) (y:felem) : felem = (x * y) % prime
val fmul (x y: felem) : felem
let fmul (x y: felem) : felem =
(x * y) % prime
Spec.Poly1305.fst.checked
prims.fst.checked Lib.Sequence.fsti.checked Lib.IntTypes.fsti.checked Lib.ByteSequence.fsti.checked FStar.Pervasives.Native.fst.checked FStar.Pervasives.fsti.checked FStar.Mul.fst.checked FStar.Math.Lemmas.fst.checked
Spec.Poly1305.fst
Spec.Poly1305.felem Prims.op_Modulus FStar.Mul.op_Star Spec.Poly1305.prime
module Spec.Poly1305

#reset-options "--z3rlimit 60 --initial_fuel 0 --max_fuel 0 --initial_ifuel 0 --max_ifuel 0"

open FStar.Mul

open Lib.IntTypes
open Lib.Sequence
open Lib.ByteSequence

/// Constants and Types

(* Field types and parameters *)
let prime : pos =
  let p = pow2 130 - 5 in
  assert_norm (p > 0);
  p

let felem = x:nat{x < prime}
val fmul (x y: felem) : felem
x: Spec.Poly1305.felem -> y: Spec.Poly1305.felem -> Spec.Poly1305.felem