1 Pretty.setmargin 72; (*existing macros just allow this margin*)
4 (*operations for "thm"*)
10 prth (conjunct1 RS mp);
11 prth (conjunct1 RSN (2,mp));
13 prth (mp RS conjunct1);
19 prth (it RS conjunct1);
23 ALL x. ?P(x) ==> ?P(?x)
25 [| ALL x. ?P3(x) --> ?Q2(x); ?P3(?x1) |] ==> ?Q2(?x1)
26 - prth (it RS conjunct1);
27 [| ALL x. ?P4(x) --> ?P6(x) & ?Q5(x); ?P4(?x2) |] ==> ?P6(?x2)
29 [| ALL x. ?P(x) --> ?Pa(x) & ?Q(x); ?P(?x) |] ==> ?Pa(?x)
35 ?P(?x) ==> EX x. ?P(x)
37 ?a3(?x) == ?a2(?x) ==> EX x. ?a3(x) = ?a2(x)
38 - prthq (flexflex_rule it);
42 - val reflk = prth (read_instantiate [("a","k")] refl);
44 val reflk = Thm {hyps=#,maxidx=#,prop=#,sign=#} : thm
45 - prth (reflk RS exI);
47 uncaught exception THM
48 - prths ([reflk] RL [exI]);
61 goal FOL.thy "P|P --> P";
62 by (resolve_tac [impI] 1);
63 by (resolve_tac [disjE] 1);
67 val mythm = prth(result());
70 goal FOL.thy "(P & Q) | R --> (P | R)";
71 by (resolve_tac [impI] 1);
72 by (eresolve_tac [disjE] 1);
73 by (dresolve_tac [conjunct1] 1);
74 by (resolve_tac [disjI1] 1);
75 by (resolve_tac [disjI2] 2);
76 by (REPEAT (assume_tac 1));
79 - goal FOL.thy "(P & Q) | R --> (P | R)";
82 1. P & Q | R --> P | R
83 - by (resolve_tac [impI] 1);
86 1. P & Q | R ==> P | R
87 - by (eresolve_tac [disjE] 1);
92 - by (dresolve_tac [conjunct1] 1);
97 - by (resolve_tac [disjI1] 1);
102 - by (resolve_tac [disjI2] 2);
107 - by (REPEAT (assume_tac 1));
113 goal FOL.thy "(P | Q) | R --> P | (Q | R)";
114 by (resolve_tac [impI] 1);
115 by (eresolve_tac [disjE] 1);
116 by (eresolve_tac [disjE] 1);
117 by (resolve_tac [disjI1] 1);
118 by (resolve_tac [disjI2] 2);
119 by (resolve_tac [disjI1] 2);
120 by (resolve_tac [disjI2] 3);
121 by (resolve_tac [disjI2] 3);
122 by (REPEAT (assume_tac 1));