| author | clasohm | 
| Wed, 04 Oct 1995 13:12:14 +0100 | |
| changeset 1266 | 3ae9fe3c0f68 | 
| parent 1264 | 3eb91524b938 | 
| child 1273 | 6960ec882bca | 
| permissions | -rw-r--r-- | 
| 1264 
3eb91524b938
added local simpsets; removed IOA from 'make test'
 clasohm parents: 
1165diff
changeset | 1 | (* Title: HOL/ROOT.ML | 
| 923 | 2 | ID: $Id$ | 
| 3 | Author: Tobias Nipkow | |
| 4 | Copyright 1993 University of Cambridge | |
| 5 | ||
| 6 | Adds Classical Higher-order Logic to a database containing Pure Isabelle. | |
| 7 | Should be executed in the subdirectory HOL. | |
| 8 | *) | |
| 9 | ||
| 10 | val banner = "Higher-Order Logic with curried functions"; | |
| 11 | writeln banner; | |
| 12 | ||
| 13 | print_depth 1; | |
| 14 | set eta_contract; | |
| 15 | ||
| 16 | (* Add user sections *) | |
| 17 | use "../Pure/section_utils.ML"; | |
| 18 | use "thy_syntax.ML"; | |
| 19 | ||
| 20 | use_thy "HOL"; | |
| 1024 | 21 | use "../Provers/splitter.ML"; | 
| 923 | 22 | use "../Provers/hypsubst.ML"; | 
| 23 | use "../Provers/classical.ML"; | |
| 24 | ||
| 25 | (** Applying HypsubstFun to generate hyp_subst_tac **) | |
| 26 | ||
| 27 | structure Hypsubst_Data = | |
| 28 | struct | |
| 1024 | 29 | structure Simplifier = Simplifier | 
| 923 | 30 | (*Take apart an equality judgement; otherwise raise Match!*) | 
| 31 |   fun dest_eq (Const("Trueprop",_) $ (Const("op =",_)  $ t $ u)) = (t,u);
 | |
| 1024 | 32 | val eq_reflection = eq_reflection | 
| 923 | 33 | val imp_intr = impI | 
| 34 | val rev_mp = rev_mp | |
| 35 | val subst = subst | |
| 36 | val sym = sym | |
| 37 | end; | |
| 38 | ||
| 39 | structure Hypsubst = HypsubstFun(Hypsubst_Data); | |
| 40 | open Hypsubst; | |
| 41 | ||
| 42 | (*** Applying ClassicalFun to create a classical prover ***) | |
| 43 | structure Classical_Data = | |
| 44 | struct | |
| 45 | val sizef = size_of_thm | |
| 46 | val mp = mp | |
| 47 | val not_elim = notE | |
| 48 | val classical = classical | |
| 49 | val hyp_subst_tacs=[hyp_subst_tac] | |
| 50 | end; | |
| 51 | ||
| 52 | structure Classical = ClassicalFun(Classical_Data); | |
| 53 | open Classical; | |
| 54 | ||
| 55 | (*Propositional rules*) | |
| 56 | val prop_cs = empty_cs addSIs [refl,TrueI,conjI,disjCI,impI,notI,iffI] | |
| 57 | addSEs [conjE,disjE,impCE,FalseE,iffE]; | |
| 58 | ||
| 59 | (*Quantifier rules*) | |
| 60 | val HOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I] | |
| 61 | addSEs [exE,ex1E] addEs [allE]; | |
| 62 | ||
| 63 | use "simpdata.ML"; | |
| 64 | use_thy "Ord"; | |
| 65 | use_thy "subset"; | |
| 66 | use "hologic.ML"; | |
| 67 | use "subtype.ML"; | |
| 68 | use_thy "Prod"; | |
| 69 | use_thy "Sum"; | |
| 70 | use_thy "Gfp"; | |
| 71 | use_thy "Nat"; | |
| 72 | ||
| 73 | use "datatype.ML"; | |
| 74 | use "ind_syntax.ML"; | |
| 75 | use "add_ind_def.ML"; | |
| 76 | use "intr_elim.ML"; | |
| 77 | use "indrule.ML"; | |
| 78 | use_thy "Inductive"; | |
| 79 | ||
| 80 | use_thy "Finite"; | |
| 81 | use_thy "Sexp"; | |
| 82 | use_thy "List"; | |
| 83 | ||
| 84 | init_pps (); | |
| 85 | print_depth 8; | |
| 86 | ||
| 1165 | 87 | val HOL_build_completed = (); (*indicate successful build*) |