src/ZF/AC/Transrec2.ML
author clasohm
Tue, 24 Oct 1995 13:53:09 +0100
changeset 1291 e173be970d27
parent 1211 653f33d8d791
child 1461 6bcb44e4d6e5
permissions -rw-r--r--
added generation of HTML files to thy_read.ML; removed old HTML package
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
992
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     1
(*  Title: 	ZF/AC/Transrec2.ML
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     2
    ID:         $Id$
1208
bc3093616ba4 Ran expandshort and corrected spelling of Grabczewski
paulson
parents: 992
diff changeset
     3
    Author: 	Krzysztof Grabczewski
992
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     4
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     5
Transfinite recursion introduced to handle definitions based on the three
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     6
cases of ordinals.
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     7
*)
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     8
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
     9
open Transrec2;
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    10
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    11
goal thy "transrec2(0,a,b) = a";
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    12
by (rtac (transrec2_def RS def_transrec RS trans) 1);
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    13
by (simp_tac ZF_ss 1);
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    14
val transrec2_0 = result();
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    15
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    16
goal thy "(THE j. succ(i)=succ(j)) = i";
1211
653f33d8d791 changed AC_... to OrdQuant_...
paulson
parents: 1208
diff changeset
    17
by (fast_tac (OrdQuant_cs addSIs [the_equality]) 1);
992
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    18
val THE_succ_eq = result();
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    19
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    20
goal thy "transrec2(succ(i),a,b) = b(i, transrec2(i,a,b))";
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    21
by (rtac (transrec2_def RS def_transrec RS trans) 1);
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    22
by (simp_tac (ZF_ss addsimps [succ_not_0, THE_succ_eq, if_P]
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    23
	            setsolver K (fast_tac FOL_cs)) 1);
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    24
val transrec2_succ = result();
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    25
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    26
goal thy "!!i. Limit(i) ==> transrec2(i,a,b) = (UN j<i. transrec2(j,a,b))";
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    27
by (rtac (transrec2_def RS def_transrec RS trans) 1);
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    28
by (resolve_tac [if_not_P RS trans] 1 THEN
1211
653f33d8d791 changed AC_... to OrdQuant_...
paulson
parents: 1208
diff changeset
    29
    fast_tac (OrdQuant_cs addSDs [Limit_has_0] addSEs [ltE]) 1);
992
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    30
by (resolve_tac [if_not_P RS trans] 1 THEN
1211
653f33d8d791 changed AC_... to OrdQuant_...
paulson
parents: 1208
diff changeset
    31
    fast_tac (OrdQuant_cs addSEs [succ_LimitE]) 1);
653f33d8d791 changed AC_... to OrdQuant_...
paulson
parents: 1208
diff changeset
    32
by (simp_tac OrdQuant_ss 1);
992
4ef4f7ff2aeb New example of AC Equivalences by Krzysztof Grabczewski
lcp
parents:
diff changeset
    33
val transrec2_Limit = result();