anchor.diff:  type OneOrFiveRoll =
       static member Roll() =
           let g = gen {
  -            return Common.oneOrFiveRoll()
  -        }
  -        g |> Arb.fromGen
  +            return! Gen.listOfLength 6 Die.Gen
  +        }
  +        let byFreq = Seq.groupBy id >> Seq.map (fun (_,s) -> s |> Seq.length)
  +        g |> Arb.fromGen
  +          |> Arb.filter (fun r -> let freq = r |> byFreq
  +                                  r |> List.exists (fun x -> x = 1 || x = 5)
  +                                  && freq |> Seq.forall (fun c -> c < 3)
  +                                  && freq |> Seq.exists (fun c -> c <> 2)
  +                                  && r |> Seq.distinct |> Seq.length |> (fun c -> c < 6))
   
   type FiveOfAKindWithExtraPointsPropertyAttribute () =
       inherit PropertyAttribute (
  
positive.code: type RoyalRollPropertyAttribute () =
      inherit PropertyAttribute (
          Arbitrary = [| typeof<RoyalRoll> |])
  
  module BigRoller =
      [<Property(Arbitrary = [| typeof<NonScoringDie> |])>]
  
negative.code:                          | 5,r -> r |> Seq.exists (fun x -> x = 1)
                           | _,r -> r |> Seq.exists (fun x -> x = 1 || x = 5)
  
      let randomizeOrder roll = 
          let rmem = roll |> List.toArray
          rmem
          |> Array.iteri (fun i1 x -> let i2 = rand.Next(i1)
                                      rmem.[i1] <- rmem.[i2]
                                      rmem.[i2] <- x)
          rmem |> Array.toList
  
  type Die =
      static member Gen = Gen.choose (1,6)
  