In coq different modules may contain definition with the same
name, because for coq they have different "absolute names" because
they are in different modules.

To provoke an error inside ProofGeneral on correct coq input,
do the following: 
- Start a fresh emacs and delete (or comment out) the lines
    (add-hook 'proof-deactivate-scripting-hook
	      'coq-switch-buffer-kill-proof-shell
	      t)
  in coq/coq.el. Safe that file.
- Visit a.v and script the initial comment. 
- Set proof-no-fully-processed-buffer to nil.
- assert buffer a.v completely
- switch to b.v
- scripting "Definition a" in b.v will give the error "a already
  exists"

Now retract a.v, set proof-no-fully-processed-buffer to t and try
again.

To see that the example is indeed valid, script c.v. (For c.v you
either have to switch coq-recompile-before-require to t or you
have to compile modules a and b yourself with "coqc a" and "coqc b".)


The following problem has been fixed by the commit of David Aspinall
around 2011-01-25 20:54:54 UTC. It can no longer be reproduced.

There is a bug present on 2011-01-21 09:49:36 UTC, to reproduce:
- visit a.v, do C-c C-n twice to fully assert the buffer
- kill buffer a.v, notice that there is no "coq killed" message
  apprears, and that the *coq* buffer is still live and that there is
  no undo command in it
- visit b.v, do C-c C-n twice to get the error "a already exists"

See "no deactivation-hooks when killing fully asserted active buffer"
on the pg-devel list.
