equal
deleted
inserted
replaced
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"; |