`not` is a unary operator, not a function. Looks a little strange to me to have the parentheses right up against it. I'd write as `(not divisible_by(Year, 100))` or omit the parentheses entirely. `not` has higher precedence than `andalso`, otherwise something like `true andalso not false` would not be valid syntax.

The indentation here also looks a bit extreme :)

If you really wanted to write it short you could use guards (this precludes abstractions though):
```erlang
leap_year(Y) when Y rem 400 =:= 0; Y rem 4 =:= 0, Y rem 100 =/= 0 ->
  true;
leap_year(_) ->
  false.
```