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