Rob, you seem to understand Hilbert axioms pretty well:
> let Line_DEF = new_definition
> `!A B. Line(A, B) = {X | ~(A = B) /\ (Collinear(X, A, B) \/ Collinear(A, X,
> B) \/ Collinear(A, B, X))}`;;
Yeah, that looks simpler than my Hilibert-choice operator (@), but
again it didn't work. Maybe John's let expansion will fix it.
John, thanks for the message, and handling Binyameen's question, which
was beyond me! I'm having problems even without let, as you'll see
from the script I just posted. I would have thought that
let Bool_DEF = new_definition
`!A, B, C. boolean-function(A, B, P) <=> alpha`;;
used in the proof as
boolean-function(A, B, P) by ... Bool_DEF;
would be the same as using
P IN set-function(A, B) by ... Set_DEF;
with the definition
let Set_DEF = new_definition
`!A, B, C. set-function(A, B) = {P | alpha}`;;
Without seeing the exact script I can't be absolutely sure, but I
think it's very likely that the default prover is failing to expand
or otherwise take account of the "let" construct. Can you try it
with the lets manually expanded? For example, do
let InteriorAngle_ALT =
CONV_RULE(TOP_DEPTH_CONV let_CONV) InteriorAngle_DEF;;
I tried it and I get the same error message. I just posted my code
(sorry I didn't see that you & Rob had written), and maybe I'll say
the problems I'm having can probably all be circumvented, as in this
case I replaced a {P | ... } definition by a boolean function. But it
would be nice to do exactly what I want as an exercise to show that
HOL Light is very flexible and can handle the set-theoretic
constructions that come up naturally in math.
Here's another thing I couldn't do. Let's define Line(A, B) to be the
(unique if A <> B) line through the points A and B. Well, then I'd
like to say in my miz3 code
let a = Line(A, B);
I can't get anything like that to work. You ought to be able to do
that, right? I see that Freek in lagrange1.ml did this:
set coset = \a. {b | b IN g /\ ?x. x IN h /\ b = a**x} [coset];
!a. coset a = {b' | b' IN g /\ ?x. x IN h /\ b' = a**x} [13];
So maybe it's set and not let, but that didn't work for me.
BTW Makarius seemed to say on the Isabelle group that Mizar is exactly
FOL with some automation to relieve the tedious parts of FOL. And
that's exactly what I want! That would explain why Mizar (and miz3)
is such a good thing. Does that sound right? I may have
misunderstood Makarius. I certainly don't understand how FOL relates
to the Isabelle frameworks Pure & Isar.
--
Best,
Bill
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
hol-info mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info