| 105 |      1 | (**** quantifier examples -- process using Doc/tout quant.txt  ****)
 | 
|  |      2 | 
 | 
|  |      3 | Pretty.setmargin 72;  (*existing macros just allow this margin*)
 | 
|  |      4 | print_depth 0;
 | 
|  |      5 | 
 | 
|  |      6 | 
 | 
|  |      7 | goal Int_Rule.thy "(ALL x y.P(x,y))  -->  (ALL z w.P(w,z))";
 | 
|  |      8 | by (resolve_tac [impI] 1);
 | 
|  |      9 | by (dresolve_tac [spec] 1);
 | 
|  |     10 | by (resolve_tac [allI] 1);
 | 
|  |     11 | by (dresolve_tac [spec] 1);
 | 
|  |     12 | by (resolve_tac [allI] 1);
 | 
|  |     13 | by (assume_tac 1);
 | 
|  |     14 | choplev 1;
 | 
|  |     15 | by (resolve_tac [allI] 1);
 | 
|  |     16 | by (resolve_tac [allI] 1);
 | 
|  |     17 | by (dresolve_tac [spec] 1);
 | 
|  |     18 | by (dresolve_tac [spec] 1);
 | 
|  |     19 | by (assume_tac 1);
 | 
|  |     20 | 
 | 
|  |     21 | choplev 0;
 | 
|  |     22 | by (REPEAT (assume_tac 1
 | 
|  |     23 |      ORELSE resolve_tac [impI,allI] 1
 | 
|  |     24 |      ORELSE dresolve_tac [spec] 1));
 | 
|  |     25 | 
 | 
|  |     26 | 
 | 
|  |     27 | - goal Int_Rule.thy "(ALL x y.P(x,y))  -->  (ALL z w.P(w,z))";
 | 
|  |     28 | Level 0
 | 
|  |     29 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     30 |  1. (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     31 | val it = [] : thm list
 | 
|  |     32 | - by (resolve_tac [impI] 1);
 | 
|  |     33 | Level 1
 | 
|  |     34 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     35 |  1. ALL x y. P(x,y) ==> ALL z w. P(w,z)
 | 
|  |     36 | val it = () : unit
 | 
|  |     37 | - by (dresolve_tac [spec] 1);
 | 
|  |     38 | Level 2
 | 
|  |     39 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     40 |  1. ALL y. P(?x1,y) ==> ALL z w. P(w,z)
 | 
|  |     41 | val it = () : unit
 | 
|  |     42 | - by (resolve_tac [allI] 1);
 | 
|  |     43 | Level 3
 | 
|  |     44 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     45 |  1. !!z. ALL y. P(?x1,y) ==> ALL w. P(w,z)
 | 
|  |     46 | val it = () : unit
 | 
|  |     47 | - by (dresolve_tac [spec] 1);
 | 
|  |     48 | Level 4
 | 
|  |     49 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     50 |  1. !!z. P(?x1,?y3(z)) ==> ALL w. P(w,z)
 | 
|  |     51 | val it = () : unit
 | 
|  |     52 | - by (resolve_tac [allI] 1);
 | 
|  |     53 | Level 5
 | 
|  |     54 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     55 |  1. !!z w. P(?x1,?y3(z)) ==> P(w,z)
 | 
|  |     56 | val it = () : unit
 | 
|  |     57 | - by (assume_tac 1);
 | 
|  |     58 | by: tactic returned no results
 | 
|  |     59 | 
 | 
|  |     60 | uncaught exception ERROR
 | 
|  |     61 | - choplev 1;
 | 
|  |     62 | Level 1
 | 
|  |     63 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     64 |  1. ALL x y. P(x,y) ==> ALL z w. P(w,z)
 | 
|  |     65 | val it = () : unit
 | 
|  |     66 | - by (resolve_tac [allI] 1);
 | 
|  |     67 | Level 2
 | 
|  |     68 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     69 |  1. !!z. ALL x y. P(x,y) ==> ALL w. P(w,z)
 | 
|  |     70 | val it = () : unit
 | 
|  |     71 | - by (resolve_tac [allI] 1);
 | 
|  |     72 | Level 3
 | 
|  |     73 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     74 |  1. !!z w. ALL x y. P(x,y) ==> P(w,z)
 | 
|  |     75 | val it = () : unit
 | 
|  |     76 | - by (dresolve_tac [spec] 1);
 | 
|  |     77 | Level 4
 | 
|  |     78 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     79 |  1. !!z w. ALL y. P(?x3(z,w),y) ==> P(w,z)
 | 
|  |     80 | val it = () : unit
 | 
|  |     81 | - by (dresolve_tac [spec] 1);
 | 
|  |     82 | Level 5
 | 
|  |     83 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     84 |  1. !!z w. P(?x3(z,w),?y4(z,w)) ==> P(w,z)
 | 
|  |     85 | val it = () : unit
 | 
|  |     86 | - by (assume_tac 1);
 | 
|  |     87 | Level 6
 | 
|  |     88 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     89 | No subgoals!
 | 
|  |     90 | 
 | 
|  |     91 | > choplev 0;
 | 
|  |     92 | Level 0
 | 
|  |     93 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     94 |  1. (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |     95 | > by (REPEAT (assume_tac 1
 | 
|  |     96 | #      ORELSE resolve_tac [impI,allI] 1
 | 
|  |     97 | #      ORELSE dresolve_tac [spec] 1));
 | 
|  |     98 | Level 1
 | 
|  |     99 | (ALL x y. P(x,y)) --> (ALL z w. P(w,z))
 | 
|  |    100 | No subgoals!
 | 
|  |    101 | 
 | 
|  |    102 | 
 | 
|  |    103 | 
 | 
|  |    104 | goal FOL_thy "ALL x. EX y. x=y";
 | 
|  |    105 | by (resolve_tac [allI] 1);
 | 
|  |    106 | by (resolve_tac [exI] 1);
 | 
|  |    107 | by (resolve_tac [refl] 1);
 | 
|  |    108 | 
 | 
|  |    109 | - goal Int_Rule.thy "ALL x. EX y. x=y";
 | 
|  |    110 | Level 0
 | 
|  |    111 | ALL x. EX y. x = y
 | 
|  |    112 |  1. ALL x. EX y. x = y
 | 
|  |    113 | val it = [] : thm list
 | 
|  |    114 | - by (resolve_tac [allI] 1);
 | 
|  |    115 | Level 1
 | 
|  |    116 | ALL x. EX y. x = y
 | 
|  |    117 |  1. !!x. EX y. x = y
 | 
|  |    118 | val it = () : unit
 | 
|  |    119 | - by (resolve_tac [exI] 1);
 | 
|  |    120 | Level 2
 | 
|  |    121 | ALL x. EX y. x = y
 | 
|  |    122 |  1. !!x. x = ?y1(x)
 | 
|  |    123 | val it = () : unit
 | 
|  |    124 | - by (resolve_tac [refl] 1);
 | 
|  |    125 | Level 3
 | 
|  |    126 | ALL x. EX y. x = y
 | 
|  |    127 | No subgoals!
 | 
|  |    128 | val it = () : unit
 | 
|  |    129 | -
 | 
|  |    130 | 
 | 
|  |    131 | goal FOL_thy "EX y. ALL x. x=y";
 | 
|  |    132 | by (resolve_tac [exI] 1);
 | 
|  |    133 | by (resolve_tac [allI] 1);
 | 
|  |    134 | by (resolve_tac [refl] 1);
 | 
|  |    135 | 
 | 
|  |    136 | - goal Int_Rule.thy "EX y. ALL x. x=y";
 | 
|  |    137 | Level 0
 | 
|  |    138 | EX y. ALL x. x = y
 | 
|  |    139 |  1. EX y. ALL x. x = y
 | 
|  |    140 | val it = [] : thm list
 | 
|  |    141 | - by (resolve_tac [exI] 1);
 | 
|  |    142 | Level 1
 | 
|  |    143 | EX y. ALL x. x = y
 | 
|  |    144 |  1. ALL x. x = ?y
 | 
|  |    145 | val it = () : unit
 | 
|  |    146 | - by (resolve_tac [allI] 1);
 | 
|  |    147 | Level 2
 | 
|  |    148 | EX y. ALL x. x = y
 | 
|  |    149 |  1. !!x. x = ?y
 | 
|  |    150 | val it = () : unit
 | 
|  |    151 | - by (resolve_tac [refl] 1);
 | 
|  |    152 | by: tactic returned no results
 | 
|  |    153 | 
 | 
|  |    154 | uncaught exception ERROR
 | 
|  |    155 | 
 | 
|  |    156 | 
 | 
|  |    157 | 
 | 
|  |    158 | goal FOL_thy "EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)";
 | 
|  |    159 | by (resolve_tac [exI, allI] 1);
 | 
|  |    160 | by (resolve_tac [exI, allI] 1);
 | 
|  |    161 | by (resolve_tac [exI, allI] 1);
 | 
|  |    162 | by (resolve_tac [exI, allI] 1);
 | 
|  |    163 | by (resolve_tac [exI, allI] 1);
 | 
|  |    164 | 
 | 
|  |    165 | - goal Int_Rule.thy "EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)";
 | 
|  |    166 | Level 0
 | 
|  |    167 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    168 |  1. EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    169 | val it = [] : thm list
 | 
|  |    170 | - by (resolve_tac [exI, allI] 1);
 | 
|  |    171 | Level 1
 | 
|  |    172 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    173 |  1. ALL x. EX v. ALL y. EX w. P(?u,x,v,y,w)
 | 
|  |    174 | val it = () : unit
 | 
|  |    175 | - by (resolve_tac [exI, allI] 1);
 | 
|  |    176 | Level 2
 | 
|  |    177 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    178 |  1. !!x. EX v. ALL y. EX w. P(?u,x,v,y,w)
 | 
|  |    179 | val it = () : unit
 | 
|  |    180 | - by (resolve_tac [exI, allI] 1);
 | 
|  |    181 | Level 3
 | 
|  |    182 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    183 |  1. !!x. ALL y. EX w. P(?u,x,?v2(x),y,w)
 | 
|  |    184 | val it = () : unit
 | 
|  |    185 | - by (resolve_tac [exI, allI] 1);
 | 
|  |    186 | Level 4
 | 
|  |    187 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    188 |  1. !!x y. EX w. P(?u,x,?v2(x),y,w)
 | 
|  |    189 | val it = () : unit
 | 
|  |    190 | - by (resolve_tac [exI, allI] 1);
 | 
|  |    191 | Level 5
 | 
|  |    192 | EX u. ALL x. EX v. ALL y. EX w. P(u,x,v,y,w)
 | 
|  |    193 |  1. !!x y. P(?u,x,?v2(x),y,?w4(x,y))
 | 
|  |    194 | val it = () : unit
 | 
|  |    195 | 
 | 
|  |    196 | 
 | 
|  |    197 | goal FOL_thy "(ALL x.P(x) --> Q) --> (EX x.P(x))-->Q";
 | 
|  |    198 | by (REPEAT (resolve_tac [impI] 1));
 | 
|  |    199 | by (eresolve_tac [exE] 1);
 | 
|  |    200 | by (dresolve_tac [spec] 1);
 | 
|  |    201 | by (eresolve_tac [mp] 1);
 | 
|  |    202 | by (assume_tac 1);
 | 
|  |    203 | 
 | 
|  |    204 | - goal Int_Rule.thy "(ALL x.P(x) --> Q) --> (EX x.P(x))-->Q";
 | 
|  |    205 | Level 0
 | 
|  |    206 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    207 |  1. (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    208 | val it = [] : thm list
 | 
|  |    209 | - by (REPEAT (resolve_tac [impI] 1));
 | 
|  |    210 | Level 1
 | 
|  |    211 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    212 |  1. [| ALL x. P(x) --> Q; EX x. P(x) |] ==> Q
 | 
|  |    213 | val it = () : unit
 | 
|  |    214 | - by (eresolve_tac [exE] 1);
 | 
|  |    215 | Level 2
 | 
|  |    216 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    217 |  1. !!x. [| ALL x. P(x) --> Q; P(x) |] ==> Q
 | 
|  |    218 | val it = () : unit
 | 
|  |    219 | - by (dresolve_tac [spec] 1);
 | 
|  |    220 | Level 3
 | 
|  |    221 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    222 |  1. !!x. [| P(x); P(?x3(x)) --> Q |] ==> Q
 | 
|  |    223 | val it = () : unit
 | 
|  |    224 | - by (eresolve_tac [mp] 1);
 | 
|  |    225 | Level 4
 | 
|  |    226 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    227 |  1. !!x. P(x) ==> P(?x3(x))
 | 
|  |    228 | val it = () : unit
 | 
|  |    229 | - by (assume_tac 1);
 | 
|  |    230 | Level 5
 | 
|  |    231 | (ALL x. P(x) --> Q) --> (EX x. P(x)) --> Q
 | 
|  |    232 | No subgoals!
 | 
|  |    233 | 
 | 
|  |    234 | 
 | 
|  |    235 | goal FOL_thy "((EX x.P(x)) --> Q) --> (ALL x.P(x)-->Q)";
 | 
|  |    236 | by (REPEAT (resolve_tac [impI] 1));
 | 
|  |    237 | 
 | 
|  |    238 | 
 | 
|  |    239 | goal FOL_thy "(EX x.P(x) --> Q) --> (ALL x.P(x))-->Q";
 | 
|  |    240 | by (REPEAT (resolve_tac [impI] 1));
 | 
|  |    241 | by (eresolve_tac [exE] 1);
 | 
|  |    242 | by (eresolve_tac [mp] 1);
 | 
|  |    243 | by (eresolve_tac [spec] 1);
 | 
|  |    244 | 
 |