Dear Blake,

Based on your input, I have been thinking more about making my
interface case sensitive.  It would be better.  After doing a little
research I tried:

       (setf (readtable-case *readtable*) :invert)

This seems to have made all the standard stuff ("car, cons, etc.")
lowercase as I'd prefer.  After that I tried creating lists:

        (setq x '(HELLO There how))

and the case seems to be preserved - not inverted.

I also tried things like:

(defun fun (x) (+ 1 x))
(defun Fun (x) (+ 2 x))
(defun FUN (x) (+ 3 x))

And it worked as expected.  I'm a bit confused.  Why aren't symbols
(as in '(HELLO There how)) inverted?  (I understand that :invert
doesn't change case on mixed case symbols but then all upper or all
lower should be inverted.)  Is *print-case* being affected?

*print-case* isn't being affected, but (readtable-case *readtable*) affects printer output: in order to make expressions readable on printing, the printer inverts the reader behaviour on *print-readably*.

To see what's really being returned, see the following transcript:

CL-USER(1): (defvar rt (copy-readtable nil))
RT
CL-USER(2): (setf (readtable-case rt) :invert)
:INVERT
CL-USER(3): (let ((*readtable* rt)) (read-from-string "(a A aa aA AA)"))
(A |a| AA |aA| |aa|)

This way, the reader settings applied when printing the READ-FROM-STRING result are the default reader settings, while the expression is being read using the :INVERT readtable-case.
 
At first test, it seems like :invert does exactly what most people
want - case sensitive lisp that has system symbols all lower case.
Are there instances in which this doesn't work?  Will this affect
lisp-java usage when it comes to case?

Any pointers would be appreciated.

See http://www.lispworks.com/documentation/HyperSpec/Body/22_accb.htm for the effects of READTABLE-CASE on the Lisp printer. You already knew about the effect of READTABLE-CASE on the lisp reader (http://www.lispworks.com/documentation/HyperSpec/Body/23_ab.htm).

Hope that helps!

Regards,

Erik.