From @IRAUN1.IRA.UKA.DE:kumar@ira.uka.de  Thu Apr 19 05:11:11 1990
Received: by iris.ucdavis.edu (5.57/UCD.EECS.2.0)
        id AA06442; Thu, 19 Apr 90 05:11:11 PDT
Received: from relay.cs.net by clover.ucdavis.edu (5.59/UCD.EECS.1.11)
        id AA06500; Thu, 19 Apr 90 05:15:38 PDT
Message-Id: <9004191215.AA06500@clover.ucdavis.edu>
Received: from iraun1.ira.uka.de by RELAY.CS.NET id aa27774; 19 Apr 90 8:11 EDT
Received: from i81s1.ira.uka.de by iraun1.ira.uka.de id aa24093;
          19 Apr 90 14:10 MET DST
Date:     Thu, 19 Apr 90 14:06:05 MET DST
From: Ramayya Kumar <kumar%ira.uka.de@RELAY.CS.NET>
To: info-hol@CLOVER.UCDAVIS.EDU
Subject:  HOL-Novice needs help!

I have been using HOL off and on for about 4 weeks now. I would like one
of the better experienced users to give me an introduction to the
elimination of the choice operator. I have been trying to prove the
simple theorem

#set_goal
 ([],
  "!m. n<m ==> (n MOD m = n)");;

#e (REWRITE_TAC[MOD] THEN REPEAT STRIP_TAC);;
Definition MOD autoloaded from theory `arithmetic`.
MOD = |- !k n. k MOD n = (@r. ?q. (k = (q * n) + r) /\ r < n)

OK..
"(@r. ?q. (n = (q * m) + r) /\ r < m) = n"
    [ "n < m" ]

 () : void

This is as far as I got with my above goal. I do not know how to get rid
of the choice operator and the existential quantification. I do know that
by setting r = n and q = 0 I have done my job but I can't get to say it in
HOL. Thanks in advance!

By the by would the experienced users advice me to go through the HOL
Detailed Description manuals before one goes on to work with HOL?
Proceeding through the Tutorial is also painfully slow as I do not know
what are all the pre-proved theorems in the HOL-theory and how does one
use them. I find myself inches better than what I was when I started,
at least I can use REWRITE_TAC and STRIP_TAC :-) All kinds of suggestions
are welcome including I am not fit for using HOL :-)

I guess one of my problems are that I am working on it all alone with no
partner for discussion!

Kumar

