# HG changeset patch # User haftmann # Date 1146670888 -7200 # Node ID bc0bef4a124e11047bf69d8d483163c232c04e26 # Parent 9d15911f18938e2213ca9bdb63f03d6df9ff8e6b added world map diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/build/obfusmail.py --- a/Admin/website/build/obfusmail.py Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/build/obfusmail.py Wed May 03 17:41:28 2006 +0200 @@ -23,6 +23,18 @@ # global configuration outputEncoding = 'UTF-8' +def split_mail(mail): + + mail_arg = mail.split("?", 2) + if len(mail_arg) == 2: + mail, arg = mail_arg + else: + mail = mail_arg[0] + arg = None + name, host = mail.split("@", 2) + + return ((name, host), arg) + class FindHandler(TransformerHandler): class DevZero(object): @@ -31,11 +43,12 @@ pass - def __init__(self, dtd, filename, mails): + def __init__(self, dtd, filename, mails, encs): - super(FindHandler, self).__init__(self.DevZero(), outputEncoding, dtd) + super(FindHandler, self).__init__(self.DevZero(), 'UTF-8', dtd) self.filename = filename self.mails = mails + self.encs = encs self.pending_mail = None def startElement(self, name, attrs): @@ -45,13 +58,18 @@ if href.startswith(u'mailto:'): self.pending_mail = href[7:] super(FindHandler, self).startElement(name, attrs) + if name == u'meta' and attrs.get(u'http-equiv', u'').lower() == u'content-type': + content = attrs.get(u'content', u'') + if content.startswith(u'text/html; charset='): + self.encs[self.filename] = content[19:] def endElement(self, name): if name == u'a': if self.pending_mail is not None: - if self.currentContent() != self.pending_mail: - raise Exception("Inconsistent mail address: '%s' vs. '%s'" % (self.currentContent(), self.pending_mail)) + baremail = "%s@%s" % split_mail(self.pending_mail)[0] + if self.currentContent() != baremail: + raise Exception("In '%s', inconsistent mail address: '%s' vs. '%s'" % (self.filename, self.currentContent(), baremail)) self.mails[(self.filename, self.pending_mail)] = True self.pending_mail = None super(FindHandler, self).endElement(name) @@ -62,9 +80,9 @@ class ReplaceHandler(TransformerHandler): - def __init__(self, out, dtd, filename, mails): + def __init__(self, out, dtd, filename, encoding, mails): - super(ReplaceHandler, self).__init__(out, outputEncoding, dtd) + super(ReplaceHandler, self).__init__(out, encoding, dtd) self.filename = filename self.pending_mail = None self.mails = mails @@ -111,12 +129,17 @@ if n != 0: raise Exception("shell cmd error: %s" % n) - name, host = mailaddr.split("@", 2) - imgname = (name + "_" + host).replace(".", "_"). replace("?", "_") + ".png" + ((name, host), arg) = split_mail(mailaddr) + baremail = "%s@%s" % (name, host) + imgname = (name + "_" + host).replace(".", "_") + ".png" imgfile = path.join(path.split(htmlfile)[0], imgname) - cmd("convert label:'%s' '%s'" % (mailaddr, imgfile)) - mailsimple = u"{%s} AT [%s]" % (name, host) - mailscript = u" ".join(map(mk_line, [''])); + cmd("convert label:'%s' '%s'" % (baremail, imgfile)) + if arg is not None: + mailsimple = u"{%s} AT [%s] WITH (%s)" % (name, host, arg) + mailscript = u" ".join(map(mk_line, [''])); + else: + mailsimple = u"{%s} AT [%s]" % (name, host) + mailscript = u" ".join(map(mk_line, [''])); mailimg = '%s' % (quoteattr(imgname), quoteattr(mailsimple)) return (mk_script(mailscript) + mailimg + mk_script(mk_line(""))) @@ -139,22 +162,26 @@ # find mails mails = {} + encs = {} for filename in filenames: istream = open(filename, 'r') - findhandler = FindHandler(options.dtd, filename, mails) + findhandler = FindHandler(options.dtd, filename, mails, encs) parseWithER(istream, findhandler) istream.close() # transform mails mails_subst = {} + filenames = {} for filename, mail in mails.iterkeys(): + filenames[filename] = True mails_subst[(filename, mail)] = obfuscate(mail, filename) # transform pages - for filename in filenames: + for filename in filenames.iterkeys(): istream = StringIO(open(filename, 'r').read()) ostream = open(filename, 'wb') - replacehandler = ReplaceHandler(ostream, options.dtd, filename, mails_subst) + print "writing %s with %s" % (filename, encs.get(filename, outputEncoding)) + replacehandler = ReplaceHandler(ostream, options.dtd, filename, encs.get(filename, outputEncoding), mails_subst) parseWithER(istream, replacehandler) ostream.close() istream.close() diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/build/project.mak --- a/Admin/website/build/project.mak Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/build/project.mak Wed May 03 17:41:28 2006 +0200 @@ -7,7 +7,7 @@ @echo 'If you have no makedist at hand, check out default $@ from CVS'; \ @false; \ -STATICDIRS=css img media misc +STATICDIRS=css img media misc js STATICFILES=include/documentationdist.include.html OUTPUTDIST_REL=dist-$(DISTNAME) OUTPUTDIST=$(OUTPUTROOT)/$(OUTPUTDIST_REL) diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/build/pypager.py --- a/Admin/website/build/pypager.py Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/build/pypager.py Wed May 03 17:41:28 2006 +0200 @@ -273,7 +273,7 @@ if name == u"dummy:wrapper": return # this list is not exhaustive - for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href")): + for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href"), (u"script", u"src")): if name == tagname: attrs = self.transformAbsPath(attrs, attrname) super(FunctionsHandler, self).startElement(name, attrs) diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/community.html --- a/Admin/website/community.html Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/community.html Wed May 03 17:41:28 2006 +0200 @@ -27,6 +27,10 @@ "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/projects.html">projects undertaken using Isabelle.

+

Isabelle in your neighbourhood

+ +

Find out on the world map!

+

Mailing list

You may use the mailing list archive to discuss problems and results. To subscribe, contact our robot: - Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe. + Cl-isabelle-users-request@lists.cam.ac.uk.

Contributing theorems

diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/css/isabelle_screen.css --- a/Admin/website/css/isabelle_screen.css Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/css/isabelle_screen.css Wed May 03 17:41:28 2006 +0200 @@ -134,7 +134,7 @@ div.mirrorlist ul li { font-size: 8pt; - font-style: italics; + font-style: italic; padding: 0pt 12pt 0pt 0pt; } diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/documentation.html --- a/Admin/website/documentation.html Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/documentation.html Wed May 03 17:41:28 2006 +0200 @@ -36,7 +36,7 @@ archive to discuss problems and results. To subscribe, contact our robot: - Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe. + Cl-isabelle-users-request@lists.cam.ac.uk.

Please consult the FAQ for answers to frequent problems.

diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/img/world_map.gif Binary file Admin/website/img/world_map.gif has changed diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/img/world_map_large.gif Binary file Admin/website/img/world_map_large.gif has changed diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/index.html --- a/Admin/website/index.html Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/index.html Wed May 03 17:41:28 2006 +0200 @@ -74,7 +74,7 @@ archive to discuss problems and results. To subscribe, contact our robot: - Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe. + Cl-isabelle-users-request@lists.cam.ac.uk.

diff -r 9d15911f1893 -r bc0bef4a124e Admin/website/overview.html --- a/Admin/website/overview.html Wed May 03 12:05:53 2006 +0200 +++ b/Admin/website/overview.html Wed May 03 17:41:28 2006 +0200 @@ -4,95 +4,12 @@ - Overview + World map - -

- -

-
- -

What is Isabelle?

-

- Isabelle is a generic proof assistant. It allows mathematical - formulas to be expressed in a formal language and provides tools - for proving those formulas in a logical calculus. The main - application is the formalization of mathematical proofs and in - particular formal verification, which includes proving - the correctness of computer hardware or software and proving - properties of computer languages and protocols.

-

Compared with similar tools, Isabelle's distinguishing feature is its - flexibility. Most proof assistants are built around a single formal calculus, - typically higher-order logic. Isabelle has the capacity to accept a variety - of formal calculi. The distributed version supports higher-order logic but - also axiomatic set theory and several other formalisms. See - logics for more details.

- -

Isabelle is a joint project between Lawrence C. Paulson - (University of Cambridge, UK) and Tobias Nipkow (Technical - University of Munich, Germany).

- -

Isabelle is distributed freely as Open Source - Software BSD - license; see the installation instructions.

- -

Preview of Isabelle

- - - Isabelle Screenshot - - -

Here is a hyperlinked preview demonstrating - Isabelle and ProofGeneral, in QuickTime - format and in PDF.

-
- -

What Isabelle offers

- -

Isabelle provides excellent notational support: new notations - can be introduced, using normal mathematical symbols. Proofs can - be written in a structured notation based upon traditional proof - style, or more straightforwardly as sequences of - commands. Definitions and proofs may include TeX source, from - which Isabelle can automatically generate typeset documents.

- -

The main limitation of all such proof systems is that proving - theorems requires much effort from an expert user. Isabelle - incorporates some tools to improve the user's productivity by - automating some parts of the proof process. In particular, - Isabelle's classical reasoner can perform long chains - of reasoning steps to prove formulas. The simplifier - can reason with and about equations. Linear arithmetic - facts are proved automatically.

- -

Isabelle comes with a large theory library of formally - verified mathematics, including elementary number theory (for - example, Gauss's law of quadratic reciprocity), analysis (basic - properties of limits, derivatives and integrals), algebra (up to - Sylow's theorem) and set theory (the relative consistency of the - Axiom of Choice). Also provided are numerous examples arising - from research into formal verification.

- -

With Isar, Isabelle offers a concise proof formulation language - which enables a user to write proof scripts naturally understandable for - both humans and computers.

- -

Isabelle is closely integrated with the ProofGeneral user interface, which - eases the task of writing and maintaining proof scripts.

- -

Ample documentation is available - about using Isabelle and its inner concepts, including a - Tutorial published by - Springer-Verlag.

- -