I recently tried to make HOL-Algebra compliant to this, but
unfortunately got stuck in HOL already, where Big_Operators didn't
comply either (but that's unlikely the only theory).
If we are serious about forbidding duplicate theorem names eventually
we probably need to start by introducing a flag to enable/disable
this, so that it doesn't get introduced by accident to theories where
duplicate names had already been eliminated. As other have noted
before, this is not going to be a one-man effort. It is quite a bit
of work, but more importantly, it involves design decisions (namely
whether to rename theorems or introduce qualifiers) which is best done
by a theory's author.
Clemens
Quoting Makarius <makar...@sketis.net>:
On Tue, 9 Oct 2012, Makarius wrote:
On Sun, 7 Oct 2012, Florian Haftmann wrote:
After some pondering I would argue that this should be forbidden:
* (Complete) shadowing is a constant source of confusion.
* Global interpretations are impossible then, since they would result in
two global theorems with the same name.
I've started some experiments with this idea and will report the
empirical results soon ...
After some detours I am now back on Isabelle/28e37eab4e6f.
In principle, the last big reform of locale + interpretation name
space prefixes has addressed the situation already, where each
locale scope is locally strict, but composing several of them in
locale expressions etc. works by mandatory or non-mandatory prefixes.
Actual strictness checking is part of the underlying name space
policy, when bindings are applied and react with some naming. The
"local" context of the locale construction is particularly important
here. It was merely a historical left-over that fact bindings were
not checked strictly:
(1) in distant past facts were never strict and totally un-authentic
(2) the Isar proof "body" mode allows to override 'notes' as it does for
'fixes'.
So with the "ch-strict" changeset applied to the critical spot of
local notes, the namespace policy enforces the concentual locale
scopes.
Applying this in practice leads to many surprises about situations
found in existing theory libraries, though. Some of the changsets
leading up to Isabelle/28e37eab4e6f already sort this out. Some
other ad-hoc changes are attached as ch-test here.
With Isabelle/28e37eab4e6f + ch-strict + ch-test and AFP/77f79b2076f1
the following sessions fail:
BDD, Dijkstra_Shortest_Path, Free-Groups, Group-Ring-Module,
HOL-Algebra, HOL-Number_Theory, HOL-ex, JinjaThreads, KBPs,
Markov_Models, Ordinal, Ordinary_Differential_Equations,
Pi_Calculus, Presburger-Automata, PseudoHoops, Psi_Calculi,
Refine_Monadic, Simpl, Slicing, Topology, Transitive-Closure-II,
Valuation
So the question if ch-strict can be activated soon is mainly a
matter of library space. It is up to emerging volunteers to sort it
out further.
(For me it was interesting to see how Isabell/jEdit works on the
JinjaThreads monster session. See also AFP/77f79b2076f1 of the
result of investing 3GB for poly, 4GB for java, and quite a bit of
CPU time and elapsed time.)
Makarius
_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev