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.
3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory
4 Copyright 1993 University of Cambridge
6 Adds Zermelo-Fraenkel Set Theory to a database containing First-Order Logic.
8 This theory is the work of Martin Coen, Philippe Noel and Lawrence Paulson.
11 val banner = "ZF Set Theory (in FOL)";
14 (*For Pure/drule?? Multiple resolution infixes*)
17 (*Resolve a list of rules against bottom_rl from right to left*)
18 fun rls MRS bottom_rl =
19 let fun rs_aux i [] = bottom_rl
20 | rs_aux i (rl::rls) = rl RSN (i, rs_aux (i+1) rls)
23 fun rlss MRL bottom_rls =
24 let fun rs_aux i [] = bottom_rls
25 | rs_aux i (rls::rlss) = rls RLN (i, rs_aux (i+1) rlss)
28 fun CHECK_SOLVED (Tactic tf) =
30 case Sequence.pull (tf state) of
31 None => error"DO_GOAL: tactic list failed"
33 if has_fewer_prems 1 x then
34 Sequence.cons(x, Sequence.null)
35 else (writeln"DO_GOAL: unsolved goals!!";
36 writeln"Final proof state was ...";
37 print_goals (!goals_limit) x;
40 fun DO_GOAL tfs = SELECT_GOAL (CHECK_SOLVED (EVERY1 tfs));
53 (*further development*)
60 (*Inductive/co-inductive definitions*)
65 use "co-inductive.ML";
75 (*Datatype/co-datatype definitions*)
85 (*printing functions are inherited from FOL*)
88 val ZF_build_completed = (); (*indicate successful build*)