ROOT.ML
changeset 166 c59c471126ab
parent 163 edadccb76178
child 173 3748d9398c43
equal deleted inserted replaced
165:eb8a3a991c08 166:c59c471126ab
    28 
    28 
    29 structure Hypsubst_Data =
    29 structure Hypsubst_Data =
    30   struct
    30   struct
    31   (*Take apart an equality judgement; otherwise raise Match!*)
    31   (*Take apart an equality judgement; otherwise raise Match!*)
    32   fun dest_eq (Const("Trueprop",_) $ (Const("op =",_)  $ t $ u)) = (t,u);
    32   fun dest_eq (Const("Trueprop",_) $ (Const("op =",_)  $ t $ u)) = (t,u);
    33 
       
    34   val imp_intr = impI
    33   val imp_intr = impI
    35 
       
    36   (*etac rev_cut_eq moves an equality to be the last premise. *)
       
    37   val rev_cut_eq = prove_goal HOL.thy "[| a=b;  a=b ==> R |] ==> R"
       
    38    (fn prems => [ REPEAT(resolve_tac prems 1) ]);
       
    39 
       
    40   val rev_mp = rev_mp
    34   val rev_mp = rev_mp
    41   val subst = subst
    35   val subst = subst
    42   val sym = sym
    36   val sym = sym
    43   end;
    37   end;
    44 
    38 
    45 structure Hypsubst = HypsubstFun(Hypsubst_Data);
    39 structure Hypsubst = HypsubstFun(Hypsubst_Data);
    46 open Hypsubst;
    40 open Hypsubst;
    47 
    41 
    48 (** Applying ClassicalFun to create a classical prover **)
    42 (*** Applying ClassicalFun to create a classical prover ***)
    49 structure Classical_Data =
    43 structure Classical_Data = 
    50   struct
    44   struct
    51   val sizef = size_of_thm
    45   val sizef	= size_of_thm
    52   val mp = mp
    46   val mp	= mp
    53   val not_elim = notE
    47   val not_elim	= notE
    54   val classical = classical
    48   val classical	= classical
    55   val hyp_subst_tacs=[hyp_subst_tac]
    49   val hyp_subst_tacs=[hyp_subst_tac]
    56   end;
    50   end;
    57 
    51 
    58 structure Classical = ClassicalFun(Classical_Data);
    52 structure Classical = ClassicalFun(Classical_Data);
    59 open Classical;
    53 open Classical;
    63                        addSEs [conjE,disjE,impCE,FalseE,iffE];
    57                        addSEs [conjE,disjE,impCE,FalseE,iffE];
    64 
    58 
    65 (*Quantifier rules*)
    59 (*Quantifier rules*)
    66 val HOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I]
    60 val HOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I]
    67                      addSEs [exE,ex1E] addEs [allE];
    61                      addSEs [exE,ex1E] addEs [allE];
    68 
       
    69 val HOL_dup_cs = prop_cs addSIs [allI] addIs [exCI,ex1I]
       
    70                          addSEs [exE,ex1E] addEs [all_dupE];
       
    71 
    62 
    72 structure HOL_Induction = InductionFun(struct val spec=spec end);
    63 structure HOL_Induction = InductionFun(struct val spec=spec end);
    73 open HOL_Induction;
    64 open HOL_Induction;
    74 
    65 
    75 use     "simpdata.ML";
    66 use     "simpdata.ML";