anchor.diff:                  then completeVLayer layer matricesSize
   
   
  -        for i in 1..matrixSizeExponent do
  +        let lastLayerToHandle = (log (double maxSearchLength + 1.)) / (log 2.) |> ceil |> int
  +        for i in 1..lastLayerToHandle do
               completeLayer i
               
           tMatrix.Item S
  
positive.code:             if rowLength <> colLength || rowLength <> strLen + 1 then
                  false
              else
                  let notRealCell (i, j) =
                          i > strLen 
                          || j > strLen 
                          || j <= i 
                          || j-i > searchLen 
  
                  [1..rowLength-1]
                  |> List.map (fun i -> [1..colLength-1] |> List.map (fun j -> (i,j))) 
                  |> List.concat
                  |> List.filter notRealCell
                  |> List.forall (fun (i, j) -> matrix.[i,j] = 0.)
  
          let check str = 
              let searchLen = String.length str
              let toCheck = recognize str crl srl erl nonterminals S searchLen
              assert (isAnswerValid toCheck (String.length str) searchLen)
              printMatrix toCheck (String.length str) searchLen
              
          check "aabb"
          check "abb"    
          check "aaabbcc"
          check "baaabbcc"
          check "aaaabbcc"
  
          System.Console.ReadLine() |> ignore
          0
negative.code:                         printf "%.8f  " matrix.[i, j]
                      else
                          assert (matrix.[i, j] = 0.)
  //                        printf "%.8f  " matrix.[i, j]
                          printf "----------  "
                  printfn ""
              printfn ""
  