anchor.diff:  //        check "aaaabb" 1
   //        check "aaaabb" 0
   //        
  -//        checkTime (String.replicate 300 "abb") 30
  +//        check (String.replicate 300 "abb") 100
  +        checkTime (String.replicate 300 "abb") 100
   //        checkTime ((String.replicate 511 "abbb") + "abb") 50
            
   //        check "aabb"
  
positive.code:                          searchLen
              checkOneType (fun str searchLen -> CYKMatrixBFS.recognize str rules nonterminals S searchLen false)
                           (fun toCheck -> isAnswerValid toCheck)
                           "not parallel"
                           str
                           searchLen
  
  //        check "abb"      2
          check "abb"      3    
  //        check "aaabbcc"  5
  //        check "aaabb"    5
  //        check "aaaaabbb" 6
  
negative.code:             assert (isAnswerValid toCheckBFS (String.length str) searchLen)
              let sameCells (i, j) = 
  //                (Probability.unwrap toCheck.[i, j]) = (Probability.unwrap toCheckBFS.[i, j])
                  (Probability.unwrap toCheck.[i, j]) - (Probability.unwrap toCheckBFS.[i, j]) < 0.0000000001
              let sameAnswers =
                  Seq.forall (fun i -> (Seq.forall (fun j -> sameCells (i,j)) [0 .. toCheck.GetLength(0) - 1]))
                             [0 .. toCheck.GetLength(0) - 1] 
              assert sameAnswers
  //            printMatrix toCheck (String.length str) searchLen 
  //            printMatrix toCheckBFS (String.length str) searchLen 
  
          let checkOneType task check taskType str searchLen =        
              let stopWatch = System.Diagnostics.Stopwatch.StartNew()
  //            List.iter (fun _ -> task str searchLen |> ignore) [1..10] 
              let toCheck = task str searchLen           
              stopWatch.Stop()
              printfn "type: %s, str length: %i, search length: %i, time(ms): %f." taskType (String.length str) searchLen stopWatch.Elapsed.TotalMilliseconds
              
          let checkTime str searchLen =
  //            checkOneType (fun str searchLen -> CYKMatrixBFS.recognize str rules nonterminals S searchLen true)
  //                         (fun toCheck -> isAnswerValid toCheck)
  //                         "parallel"
  //                         str
  //                         searchLen
              checkOneType (fun str searchLen -> CYKMatrix.recognize str rules nonterminals S searchLen)
                           (fun toCheck -> isAnswerValid toCheck)
                           "okhotin"
  