HR F#: Functions or Not?

The Functions or Not? problem is defined as follows:

You are given a set of unique (x, y) ordered pairs constituting a relation. For each of these relations, identify whether they may possibly represent a valid function or not. On a new line for each test case, print YES if the set of ordered pairs represent a valid function, or NO if they do not.

The definition of the function helps to get the idea on how to solve this problem (from Wikipedia):

In mathematics, a function is a relation between a set of inputs and a set of permissible outputs with the property that each input is related to exactly one output.

This property holds for the both sample inputs so they result in YES. There is no sample negative input. It should be crafted in order to test the code:

2
2
1 2
2 3
2
1 1
1 2

There is a function for the first set of pairs and there is no function for the second set.

F# solution:

open System

[<EntryPoint>]
let main argv = 
  let t = Console.ReadLine () |> int
  seq { for _ in 1..t do
          let n = Console.ReadLine () |> int
          yield seq { for _ in 1..n do
                        yield (Console.ReadLine ()).Split(' ') }
                |> Seq.groupBy (fun v -> v.[0])
                |> Seq.forall (fun v -> 1 = ((snd v)
                                             |> Seq.map (fun q -> q.[1])
                                             |> Seq.distinct
                                             |> Seq.length))
                |> function | true -> "YES" | _ -> "NO" }
  |> Seq.iter (printfn "%s")
  0 // return an integer exit code