anchor.diff:  let check (maxTypes : int) (maxTestsPerType : int) (predicate : IPredicate) =
       let tconf = { Config.QuickThrowOnFailure with MaxTest = maxTypes }
       let vconf = { Config.QuickThrowOnFailure with MaxTest = maxTestsPerType }
  -    let runOnType (atype : TypeAlg) =
  -        let stype = toSysType atype
  -        let shape = TypeShape.Create stype
  +    let runOnType (tAlg : TypeAlg) =
  +        let sysType = toSysType tAlg
  +        let shape = TypeShape.Create sysType
           shape.Accept {
               new ITypeShapeVisitor<bool> with
                   member __.Visit<'T>() =
  -                    printfn "Testing type: %s" (toString atype)
  +                    printfn "Testing type: %s" (toString tAlg)
                       Check.One(vconf, fun (t:'T) -> predicate.Invoke t)
                       true
           }
  
positive.code:     | Tuple3 of TypeAlg * TypeAlg * TypeAlg
  
  /// Type Algebra pretty-printer
  let rec toString (atype : TypeAlg) =
      match atype with
      | Unit -> "unit"
      | Bool -> "bool"
      | Int32 -> "int"
  
negative.code: type IPredicate =
      abstract Invoke<'T> : value:'T -> bool
  
  /// Type Algebra we will be testing our code against
  type TypeAlg =
      | Unit
      | Bool
  