From: John R Harrison <johnh@ichips.intel.com>
To: caml-list@inria.fr
Cc: John Harrison <johnh@ichips.intel.com>
Subject: Re: de Bruijn indices
Date: Tue, 10 Oct 2000 11:30:32 -0700 [thread overview]
Message-ID: <200010101830.LAA25018@dhpc0010.pdx.intel.com> (raw)
It's been interesting for me to see a discussion of de Bruijn versus
name-carrying term representations, since it's an issue I've spent some
time thinking about and on which I've changed my opinion at least once. The
different versions of the HOL theorem proving system:
HOL88 - http://www.cl.cam.ac.uk/Research/HVG/FTP/#hol88
hol90 - http://www.cl.cam.ac.uk/Research/HVG/FTP/#hol90
HOL Light - http://www.cl.cam.ac.uk/users/jrh/hol-light/index.html
hol98 - http://www.cl.cam.ac.uk/Research/HVG/FTP/#hol98
have gone through several different term representations over the years:
HOL88 - name-carrying
hol90 - name-carrying at first then de Bruijn
HOL Light - de Bruijn at first then name-carrying
hol98 - de Bruijn at first then explicit substitutions
The original HOL88 name-carrying implementation was probably inherited
from Edinburgh or Cambridge LCF. This was quite satisfactory, but over
the years several obscure bugs were found in variable renaming which
could have caused unsoundness, an embarrassment in a system that
stresses its logical consistency. To avoid having the soundness of the
system depend on tricky programming, hol90 changed to using a de Bruijn
representation.
However, all versions of HOL maintain an abstract type of terms with a
name-carrying interface, so the de Bruijn indices must be an internal
detail that is hidden from the user. This makes de Bruijn terms grossly
inefficient for very large abstraction-rich terms. The trivial operation
of recursively descending a term can involve a quadratic amount of work,
since each time a binder is traversed, a variable must be substituted
for a de Bruijn index throughout the body. For this reason, although I
was initially enthusiastic about de Bruijn terms, I rapidly decided they
didn't fit with the HOL worldview and changed HOL Light (my small clean
reimplementation of the system in CAML Light) back to a name-carrying
approach.
Very recently, Bruno Barras has been the driving force behind yet
another term representation for hol98 that admits an efficient ML-style
reduction algorithm. See:
@INPROCEEDINGS{tphols2000-Barras,
crossref = "tphols2000",
title = "Programming and computing in {HOL}",
author = "Bruno Barras",
pages = "17--37"}
@PROCEEDINGS{tphols2000,
editor = "M. Aagaard and J. Harrison",
booktitle = "Theorem Proving in Higher Order Logics:
13th International Conference, TPHOLs 2000",
series = "Lecture Notes in Computer Science",
volume = 1869,
year = 2000,
publisher = "Springer-Verlag"}
All of this goes to show that despite intensive activity in the field,
the basic question of the most appropriate term representation -- even
for a particular narrowly focused application -- is not yet clearly
agreed on.
Cheers,
John.
next reply other threads:[~2000-10-10 19:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-10-10 18:30 John R Harrison [this message]
-- strict thread matches above, loose matches on Subject: below --
2000-10-12 19:09 John R Harrison
2000-10-12 17:33 Greg Morrisett
2000-10-11 11:26 Simon Peyton-Jones
2000-10-11 20:12 ` Markus Mottl
2000-10-10 18:09 Greg Morrisett
2000-10-12 14:57 ` Chet Murthy
2000-10-12 18:08 ` Benjamin C. Pierce
2000-10-12 18:19 ` Trevor Jim
2000-10-09 7:19 de Bruijn indices (Re: WWW Page of Team PLClub) Eijiro Sumii
2000-10-10 14:04 ` de Bruijn indices Gerard Huet
2000-10-10 17:29 ` Chet Murthy
2000-10-11 22:35 ` John Max Skaller
2000-10-05 23:29 Patrick M Doane
2000-10-06 8:15 ` Markus Mottl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200010101830.LAA25018@dhpc0010.pdx.intel.com \
--to=johnh@ichips.intel.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox