src/FOL/ROOT.ML
changeset 666 4d9f6d83c2bf
parent 393 02b27671b899
child 731 435ff9ec4058
equal deleted inserted replaced
665:97e9ad6c1c4a 666:4d9f6d83c2bf
    26 
    26 
    27 structure Hypsubst_Data =
    27 structure Hypsubst_Data =
    28   struct
    28   struct
    29   (*Take apart an equality judgement; otherwise raise Match!*)
    29   (*Take apart an equality judgement; otherwise raise Match!*)
    30   fun dest_eq (Const("Trueprop",_) $ (Const("op =",_)  $ t $ u)) = (t,u);
    30   fun dest_eq (Const("Trueprop",_) $ (Const("op =",_)  $ t $ u)) = (t,u);
    31 
       
    32   val imp_intr = impI
    31   val imp_intr = impI
    33 
       
    34   (*etac rev_cut_eq moves an equality to be the last premise. *)
       
    35   val rev_cut_eq = prove_goal IFOL.thy "[| a=b;  a=b ==> R |] ==> R"
       
    36    (fn prems => [ REPEAT(resolve_tac prems 1) ]);
       
    37 
       
    38   val rev_mp = rev_mp
    32   val rev_mp = rev_mp
    39   val subst = subst
    33   val subst = subst
    40   val sym = sym
    34   val sym = sym
    41   end;
    35   end;
    42 
    36 
    46 use "intprover.ML";
    40 use "intprover.ML";
    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 swap = swap
    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 Cla = ClassicalFun(Classical_Data);
    52 structure Cla = ClassicalFun(Classical_Data);
    59 open Cla;
    53 open Cla;
    66 
    60 
    67 (*Quantifier rules*)
    61 (*Quantifier rules*)
    68 val FOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I] 
    62 val FOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I] 
    69                      addSEs [exE,ex1E] addEs [allE];
    63                      addSEs [exE,ex1E] addEs [allE];
    70 
    64 
    71 val FOL_dup_cs = prop_cs addSIs [allI] addIs [exCI,ex1I] 
    65 val ex1_functional = prove_goal FOL.thy
    72                          addSEs [exE,ex1E] addEs [all_dupE];
    66     "!!a b c. [| EX! z. P(a,z);  P(a,b);  P(a,c) |] ==> b = c"
       
    67  (fn _ => [ (deepen_tac FOL_cs 1 1) ]);
    73 
    68 
    74 use "simpdata.ML";
    69 use "simpdata.ML";
    75 
    70 
    76 use "../Pure/install_pp.ML";
    71 use "../Pure/install_pp.ML";
    77 print_depth 8;
    72 print_depth 8;