anchor.diff:      | Tuple3 (t1,t2,t3) -> sprintf "(%s * %s * %s)" (toString t1) (toString t2) (toString t3)
   
   /// Converts a TypeAlg representation to its corresponding System.Type
  -let rec toSysType (atype : TypeAlg) : Type =
  -    match atype with
  +let rec toSysType (tAlg : TypeAlg) : Type =
  +    match tAlg with
       | Unit -> typeof<unit>
       | Bool -> typeof<bool>
       | Int32 -> typeof<int>
  
positive.code: type IPredicate =
      abstract Invoke<'T> : value:'T -> bool
  
  /// Type Algebra implementation
  type TypeAlg =
      | Unit
      | Bool
  
negative.code: let check (maxTypes : int) (maxTestsPerType : int) (predicate : IPredicate) =
      let tconf = { Config.QuickThrowOnFailure with MaxTest = maxTypes }
      let vconf = { Config.QuickThrowOnFailure with MaxTest = maxTestsPerType }
      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 tAlg)
                      Check.One(vconf, fun (t:'T) -> predicate.Invoke t)
                      true
          }
  