src/ZF/ROOT.ML
author lcp
Fri, 17 Sep 1993 16:16:38 +0200
changeset 6 8ce8c4d13d4d
parent 5 75e163863e16
child 14 1c0926788772
permissions -rw-r--r--
Installation of new simplifier for ZF. Deleted all congruence rules not involving local assumptions. NB the congruence rules for Sigma and Pi (dependent type constructions) cause difficulties and are not used by default.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	ZF/ROOT
6
8ce8c4d13d4d Installation of new simplifier for ZF. Deleted all congruence rules not
lcp
parents: 5
diff changeset
     2
    ID:         $Id$
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1993  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
Adds Zermelo-Fraenkel Set Theory to a database containing First-Order Logic.
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
This theory is the work of Martin Coen, Philippe Noel and Lawrence Paulson.
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
val banner = "ZF Set Theory (in FOL)";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
writeln banner;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
(*For Pure/drule??  Multiple resolution infixes*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
infix 0 MRS MRL;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
(*Resolve a list of rules against bottom_rl from right to left*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
fun rls MRS bottom_rl = 
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
  let fun rs_aux i [] = bottom_rl
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
	| rs_aux i (rl::rls) = rl RSN (i, rs_aux (i+1) rls)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
  in  rs_aux 1 rls  end;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
fun rlss MRL bottom_rls = 
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
  let fun rs_aux i [] = bottom_rls
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    25
	| rs_aux i (rls::rlss) = rls RLN (i, rs_aux (i+1) rlss)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    26
  in  rs_aux 1 rlss  end;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
5
75e163863e16 test commit
lcp
parents: 0
diff changeset
    28
fun CHECK_SOLVED (Tactic tf) = 
75e163863e16 test commit
lcp
parents: 0
diff changeset
    29
  Tactic (fn state => 
75e163863e16 test commit
lcp
parents: 0
diff changeset
    30
    case Sequence.pull (tf state) of
75e163863e16 test commit
lcp
parents: 0
diff changeset
    31
	None => error"DO_GOAL: tactic list failed"
75e163863e16 test commit
lcp
parents: 0
diff changeset
    32
      | Some(x,_) => 
75e163863e16 test commit
lcp
parents: 0
diff changeset
    33
		if has_fewer_prems 1 x then
75e163863e16 test commit
lcp
parents: 0
diff changeset
    34
		    Sequence.cons(x, Sequence.null)
75e163863e16 test commit
lcp
parents: 0
diff changeset
    35
		else (writeln"DO_GOAL: unsolved goals!!";
75e163863e16 test commit
lcp
parents: 0
diff changeset
    36
		      writeln"Final proof state was ...";
75e163863e16 test commit
lcp
parents: 0
diff changeset
    37
		      print_goals (!goals_limit) x;
75e163863e16 test commit
lcp
parents: 0
diff changeset
    38
		      raise ERROR));
75e163863e16 test commit
lcp
parents: 0
diff changeset
    39
75e163863e16 test commit
lcp
parents: 0
diff changeset
    40
fun DO_GOAL tfs = SELECT_GOAL (CHECK_SOLVED (EVERY1 tfs));
75e163863e16 test commit
lcp
parents: 0
diff changeset
    41
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    42
print_depth 1;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    43
use_thy "zf";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    44
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    45
use     "upair.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    46
use     "subset.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    47
use     "pair.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    48
use     "domrange.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    49
use     "func.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    50
use     "equalities.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    51
use     "simpdata.ML";  
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    52
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    53
(*further development*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    54
use_thy "bool";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    55
use_thy "sum";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    56
use_thy "qpair";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    57
use     "mono.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    58
use_thy "fixedpt";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    59
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    60
(*Inductive/co-inductive definitions*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    61
use     "ind-syntax.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    62
use     "intr-elim.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    63
use     "indrule.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    64
use     "inductive.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    65
use     "co-inductive.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    66
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    67
use_thy "perm";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    68
use_thy "trancl";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    69
use_thy "wf";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    70
use_thy "ordinal";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    71
use_thy "nat";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    72
use_thy "epsilon";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    73
use_thy "arith";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    74
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    75
(*Datatype/co-datatype definitions*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    76
use_thy "univ";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    77
use_thy "quniv";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    78
use     "constructor.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    79
use     "datatype.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    80
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    81
use     "fin.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    82
use     "list.ML";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    83
use_thy "list-fn";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    84
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    85
(*printing functions are inherited from FOL*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    86
print_depth 8;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    87
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    88
val ZF_build_completed = ();	(*indicate successful build*)