https://github.com/project-everest/hacl-star
Raw File
Tip revision: 0fd88925631c6ff17603a469b5fde2533df77269 authored by Chris Hawblitzel on 25 April 2019, 12:51:41 UTC
Remove copy from call to Vale poly1305
Tip revision: 0fd8892
Lib.Loops.fst
module Lib.Loops

open FStar.HyperStack
open FStar.HyperStack.ST

open Lib.IntTypes
open Lib.RawIntTypes

let for start finish inv f =
  C.Loops.for
    (size_to_UInt32 start)
    (size_to_UInt32 finish)
    (fun h i -> v start <= i /\ i <= v finish /\ inv h i)
    (fun i -> f (size_from_UInt32 i))

let while inv guard test body =
  let test: unit -> Stack bool
    (requires inv)
    (ensures  fun _ b h -> inv h /\ b == guard h)
  = test
  in
  C.Loops.while #inv #(fun b h -> inv h /\ b == guard h) test body
back to top