Проблема в том, что вы смешиваете выражения и определения.Идиоматический способ вычисления эффективного выражения после некоторых определений состоит в использовании let () = ...
:
let () = if n<1 || n > 30 || k<1 || k>n then raise Invalid_input
В противном случае вы можете отделить это выражение от приведенных выше определений с помощью ;;
;; if n<1 || n > 30 || k<1 || k>n then raise Invalid_input