Return-Path: <john.harrison-request@uk.ac.cam.cl>
Delivery-Date: 
Received: from ted.cs.uidaho.edu by swan.cl.cam.ac.uk with SMTP (PP-6.2);
          Sat, 19 Dec 1992 03:04:34 +0000
Received: by ted.cs.uidaho.edu (16.6/1.34) id AA05484;
          Fri, 18 Dec 92 16:55:41 -0800
Sender: info-hol-request@edu.uidaho.cs.ted
Errors-To: info-hol-request@edu.uidaho.cs.ted
Precedence: bulk
Received: from panther.cs.uidaho.edu by ted.cs.uidaho.edu (16.6/1.34) 
          id AA05478; Fri, 18 Dec 92 16:55:36 -0800
Received: from localhost by panther.cs.uidaho.edu with SMTP 
          id AA11158 (5.65c/IDA-1.4.4 for info-hol@cs.uidaho.edu);
          Fri, 18 Dec 1992 17:02:13 -0800
Message-Id: <199212190102.AA11158@panther.cs.uidaho.edu>
To: info-hol@edu.uidaho.cs.ted
Subject: Well founded induction
Date: Fri, 18 Dec 92 17:02:12 -0800
From: Phil Windley <windley@edu.uidaho.cs.panther>
X-Mts: smtp


I'm trying to prove something (which is obviously true... ;-) and I seem to
need wel founded induction. Basically, its a theorem about a temporal
abstraction function (ala Melham, Herbert, Joyce, etc.)  Here are the
definitions:

let First = new_definition
   (`First`,
    "! g t. First g t = 
        (!p:time. p < t ==> ~(g p)) /\
        (g t)"
   );;

let Next = new_definition
   (`Next`,
    "! g t1 t2. Next g (t1,t2) = 
        (t1 < t2) /\ 
        (!t:time . t1 < t /\ t < t2 ==> ~(g t)) /\
        (g t2)"
   );;

let Temp_Abs = new_prim_rec_definition
   (`Temp_Abs`,
    "(Temp_Abs g 0 = @ t:time . First g t) /\
     (Temp_Abs g (SUC n) = @ t:time . Next g (Temp_Abs g n,t))"
   );;

Now, I want to prove:

g
"! f t.
  (f t)  ==>
  ? t'' .
  (Temp_Abs f t'') = t";;

Essentially, this says that temporal abstraction function, (Temp_Abs f) is
a surjection from the nats to the characteristic set of f.  The most
straightforward approach seems to be induction on t, but then f is not true
of ALL t so mathematical induction won't work. But, (Next f) is well
founded and so it seems that well founded induction would.

So, for the question: I've never done well founded induction in HOL, anyone
have the right theorem to supply to INDUCT_THEN?  The library on wellorder
doesn't seem to apply and I didn't see anything else.

--phil--
