The functions `par' and `seq' are really just renamings:
par a b = _par_ a b seq a b = _seq_ a b
The functions `_par_' and `_seq_' are built into GHC, and unfold into uses of the `par#' and `seq#' primitives, respectively. If you'd like to see this with your very own eyes, just run GHC with the `-ddump-simpl' option. (Anything for a good time...)
You can use `_par_' and `_seq_' in Concurrent Haskell, though I'm not sure why you would want to.