Hi Bill,

| 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.

Yes, this may be the core problem: the default built-in miz3 prover
doesn't know much about sets, and may not know that, say, the formulas
S = {x | P x} and !x. x IN S <=> P x are equivalent, as you might have
expected. There is a standard HOL Light tactic called SET_TAC that
does some preprocessing of set operations and then calls MESON. It
would certainly be possible to change the default miz3 prover to do
something similar. 

You are probably going to hit quite a few such restrictions as you are
using miz3 pretty heavily, and it may make sense for us to improve the
default miz3 prover as you hit these issues rather than have you work
around them. However, I am a bit short of time to work on it right now
so I can't promise to fix these shortcomings myself in the short term.

| 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.

I don't know exactly what went wrong, but I can say that let is really
a (derived) HOL term construct and needs to conform to the syntax
"let x1 = e1 [and x2 = e2 and ... and xn = en] in E" as part of a
single term. By constrast, "set" is a Mizar and miz3 construct, and
that's what I would expect to work in this situation. (In the world of
standard HOL Light tactics, ABBREV_TAC plays a similar role.) I don't
know why you hit problems with it.

John.

------------------------------------------------------------------------------
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
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to