anchor.diff:  ﻿module Persimmon.Dried.Runner
   
   open FsRandom
  -
  -type Parameters = {
  -  MinSuccessfulTests: int
  -  MinSize: int
  -  MaxSize: int
  -  PrngState: PrngState
  -  Workers: int
  -  MaxDiscardRatio: float32
  -}
  -
  -[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  -module Parameters =
  -
  -  let Default = {
  -    MinSuccessfulTests = 100
  -    MinSize = 0
  -    MaxSize = Gen.Parameters.Default.Size
  -    PrngState = Gen.Parameters.Default.PrngState
  -    Workers = 1
  -    MaxDiscardRatio = 5.0f
  -  }
   
   type Status =
     | Passed
  
positive.code:   FreqMap: FreqMap<obj list>
    Time: int64
  }
  
  [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module Result =
  
negative.code:         match propRes.Status with
          | Undecided ->
            d <- d + 1
            prms.Callback.OnPropEval("", workerIdx, n, d)
            if n + d > prms.MinSuccessfulTests && 1 + prms.Workers * int prms.MaxDiscardRatio * n < d then
              res <- Some { Status = Exhausted; Succeeded = n; Discarded = d; FreqMap = fm; Time = 0L }
          | True ->
            n <- n + 1
            prms.Callback.OnPropEval("", workerIdx, n, d)
          | Proof ->
            n <- n + 1
            res <- Some { Status = Proved propRes.Args; Succeeded = n; Discarded = d; FreqMap = fm; Time = 0L }
  