diff --git a/jax/numpy/linalg.py b/jax/numpy/linalg.py
index <HASH>..<HASH> 100644
--- a/jax/numpy/linalg.py
+++ b/jax/numpy/linalg.py
@@ -26,10 +26,6 @@ from . import lax_numpy as np
 from ..util import get_module_functions
 
 
-dot = np.dot
-matmul = np.matmul
-trace = np.trace
-
 _T = lambda x: np.swapaxes(x, -1, -2)
 
 @_wraps(onp.linalg.cholesky)
diff --git a/jax/scipy/linalg.py b/jax/scipy/linalg.py
index <HASH>..<HASH> 100644
--- a/jax/scipy/linalg.py
+++ b/jax/scipy/linalg.py
@@ -27,11 +27,8 @@ from ..numpy import linalg as np_linalg
 @_wraps(scipy.linalg.cholesky)
 def cholesky(a, lower=False, overwrite_a=False, check_finite=True):
   del overwrite_a, check_finite
-  if not lower:
-    raise NotImplementedError(
-        "The lower=False case of Cholesky is not implemented.")
-
-  return lax_linalg.cholesky(a)
+  l = lax_linalg.cholesky(a)
+  return l if lower else np.conj(l.T)
 
 
 @_wraps(scipy.linalg.inv)
Implement lower=False case for scipy.linalg.cholesky.

Remove np.linalg.{dot,matmul,trace}, because these aren't part of the numpy API. I had previously misinterpreted the np.linalg documentation to mean that they also existed in that module.