doc-src/Logics/FOL-eg.txt
changeset 5151 1e944fe5ce96
parent 104 d8205bb279a7
equal deleted inserted replaced
5150:6e2e9b92c301 5151:1e944fe5ce96
     3 Pretty.setmargin 72;  (*existing macros just allow this margin*)
     3 Pretty.setmargin 72;  (*existing macros just allow this margin*)
     4 print_depth 0;
     4 print_depth 0;
     5 
     5 
     6 (*** Intuitionistic examples ***)
     6 (*** Intuitionistic examples ***)
     7 
     7 
       
     8 context IFOL.thy;
       
     9 
     8 (*Quantifier example from Logic&Computation*)
    10 (*Quantifier example from Logic&Computation*)
     9 goal Int_Rule.thy "(EX y. ALL x. Q(x,y)) -->  (ALL x. EX y. Q(x,y))";
    11 Goal "(EX y. ALL x. Q(x,y)) -->  (ALL x. EX y. Q(x,y))";
    10 by (resolve_tac [impI] 1);
    12 by (resolve_tac [impI] 1);
    11 by (resolve_tac [allI] 1);
    13 by (resolve_tac [allI] 1);
    12 by (resolve_tac [exI] 1);
    14 by (resolve_tac [exI] 1);
    13 by (eresolve_tac [exE] 1);
    15 by (eresolve_tac [exE] 1);
    14 choplev 2;
    16 choplev 2;
    17 by (eresolve_tac [allE] 1);
    19 by (eresolve_tac [allE] 1);
    18 by (assume_tac 1);
    20 by (assume_tac 1);
    19 
    21 
    20 
    22 
    21 (*Example of Dyckhoff's method*)
    23 (*Example of Dyckhoff's method*)
    22 goalw Int_Rule.thy [not_def] "~ ~ ((P-->Q) | (Q-->P))";
    24 Goalw [not_def] "~ ~ ((P-->Q) | (Q-->P))";
    23 by (resolve_tac [impI] 1);
    25 by (resolve_tac [impI] 1);
    24 by (eresolve_tac [disj_impE] 1);
    26 by (eresolve_tac [disj_impE] 1);
    25 by (eresolve_tac [imp_impE] 1);
    27 by (eresolve_tac [imp_impE] 1);
    26 by (eresolve_tac [imp_impE] 1);
    28 by (eresolve_tac [imp_impE] 1);
    27 by (REPEAT (eresolve_tac [FalseE] 2));
    29 by (REPEAT (eresolve_tac [FalseE] 2));
    28 by (assume_tac 1);
    30 by (assume_tac 1);
    29 
    31 
    30 
    32 
    31 
    33 
    32 - goal Int_Rule.thy "(EX ay. ALL x. Q(x,y)) -->  (ALL x. EX y. Q(x,y))";
       
    33 Level 0
       
    34 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    35  1. (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    36 - by (resolve_tac [impI] 1);
       
    37 Level 1
       
    38 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    39  1. EX y. ALL x. Q(x,y) ==> ALL x. EX y. Q(x,y)
       
    40 - by (resolve_tac [allI] 1);
       
    41 Level 2
       
    42 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    43  1. !!x. EX y. ALL x. Q(x,y) ==> EX y. Q(x,y)
       
    44 - by (resolve_tac [exI] 1);
       
    45 Level 3
       
    46 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    47  1. !!x. EX y. ALL x. Q(x,y) ==> Q(x,?y2(x))
       
    48 - by (eresolve_tac [exE] 1);
       
    49 Level 4
       
    50 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    51  1. !!x y. ALL x. Q(x,y) ==> Q(x,?y2(x))
       
    52 - choplev 2;
       
    53 Level 2
       
    54 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    55  1. !!x. EX y. ALL x. Q(x,y) ==> EX y. Q(x,y)
       
    56 - by (eresolve_tac [exE] 1);
       
    57 Level 3
       
    58 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    59  1. !!x y. ALL x. Q(x,y) ==> EX y. Q(x,y)
       
    60 - by (resolve_tac [exI] 1);
       
    61 Level 4
       
    62 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    63  1. !!x y. ALL x. Q(x,y) ==> Q(x,?y3(x,y))
       
    64 - by (eresolve_tac [allE] 1);
       
    65 Level 5
       
    66 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    67  1. !!x y. Q(?x4(x,y),y) ==> Q(x,?y3(x,y))
       
    68 - by (assume_tac 1);
       
    69 Level 6
       
    70 (EX y. ALL x. Q(x,y)) --> (ALL x. EX y. Q(x,y))
       
    71 No subgoals!
       
    72 
       
    73 
       
    74 
       
    75 > goalw Int_Rule.thy [not_def] "~ ~ ((P-->Q) | (Q-->P))";
       
    76 Level 0
       
    77 ~ ~ ((P --> Q) | (Q --> P))
       
    78  1. ((P --> Q) | (Q --> P) --> False) --> False
       
    79 > by (resolve_tac [impI] 1);
       
    80 Level 1
       
    81 ~ ~ ((P --> Q) | (Q --> P))
       
    82  1. (P --> Q) | (Q --> P) --> False ==> False
       
    83 > by (eresolve_tac [disj_impE] 1);
       
    84 Level 2
       
    85 ~ ~ ((P --> Q) | (Q --> P))
       
    86  1. [| (P --> Q) --> False; (Q --> P) --> False |] ==> False
       
    87 > by (eresolve_tac [imp_impE] 1);
       
    88 Level 3
       
    89 ~ ~ ((P --> Q) | (Q --> P))
       
    90  1. [| (Q --> P) --> False; P; Q --> False |] ==> Q
       
    91  2. [| (Q --> P) --> False; False |] ==> False
       
    92 > by (eresolve_tac [imp_impE] 1);
       
    93 Level 4
       
    94 ~ ~ ((P --> Q) | (Q --> P))
       
    95  1. [| P; Q --> False; Q; P --> False |] ==> P
       
    96  2. [| P; Q --> False; False |] ==> Q
       
    97  3. [| (Q --> P) --> False; False |] ==> False
       
    98 > by (REPEAT (eresolve_tac [FalseE] 2));
       
    99 Level 5
       
   100 ~ ~ ((P --> Q) | (Q --> P))
       
   101  1. [| P; Q --> False; Q; P --> False |] ==> P
       
   102 > by (assume_tac 1);
       
   103 Level 6
       
   104 ~ ~ ((P --> Q) | (Q --> P))
       
   105 No subgoals!
       
   106 
       
   107 
       
   108 
    34 
   109 
    35 
   110 (*** Classical examples ***)
    36 (*** Classical examples ***)
   111 
    37 
   112 goal cla_thy "EX y. ALL x. P(y)-->P(x)";
    38 context FOL.thy;
       
    39 
       
    40 Goal "EX y. ALL x. P(y)-->P(x)";
   113 by (resolve_tac [exCI] 1);
    41 by (resolve_tac [exCI] 1);
   114 by (resolve_tac [allI] 1);
    42 by (resolve_tac [allI] 1);
   115 by (resolve_tac [impI] 1);
    43 by (resolve_tac [impI] 1);
   116 by (eresolve_tac [allE] 1);
    44 by (eresolve_tac [allE] 1);
   117 prth (allI RSN (2,swap));
    45 prth (allI RSN (2,swap));
   118 by (eresolve_tac [it] 1);
    46 by (eresolve_tac [it] 1);
   119 by (resolve_tac [impI] 1);
    47 by (resolve_tac [impI] 1);
   120 by (eresolve_tac [notE] 1);
    48 by (eresolve_tac [notE] 1);
   121 by (assume_tac 1);
    49 by (assume_tac 1);
   122 goal cla_thy "EX y. ALL x. P(y)-->P(x)";
    50 Goal "EX y. ALL x. P(y)-->P(x)";
   123 by (best_tac FOL_dup_cs 1);
    51 by (Blast_tac 1);
   124 
    52 
   125 
    53 
   126 
    54 
   127 - goal cla_thy "EX y. ALL x. P(y)-->P(x)";
    55 - Goal "EX y. ALL x. P(y)-->P(x)";
   128 Level 0
    56 Level 0
   129 EX y. ALL x. P(y) --> P(x)
    57 EX y. ALL x. P(y) --> P(x)
   130  1. EX y. ALL x. P(y) --> P(x)
    58  1. EX y. ALL x. P(y) --> P(x)
   131 - by (resolve_tac [exCI] 1);
    59 - by (resolve_tac [exCI] 1);
   132 Level 1
    60 Level 1
   160  1. !!x xa. [| P(?a); P(?y3(x)) |] ==> P(x)
    88  1. !!x xa. [| P(?a); P(?y3(x)) |] ==> P(x)
   161 - by (assume_tac 1);
    89 - by (assume_tac 1);
   162 Level 8
    90 Level 8
   163 EX y. ALL x. P(y) --> P(x)
    91 EX y. ALL x. P(y) --> P(x)
   164 No subgoals!
    92 No subgoals!
   165 - goal cla_thy "EX y. ALL x. P(y)-->P(x)";
    93 - Goal "EX y. ALL x. P(y)-->P(x)";
   166 Level 0
    94 Level 0
   167 EX y. ALL x. P(y) --> P(x)
    95 EX y. ALL x. P(y) --> P(x)
   168  1. EX y. ALL x. P(y) --> P(x)
    96  1. EX y. ALL x. P(y) --> P(x)
   169 - by (best_tac FOL_dup_cs 1);
    97 - by (best_tac FOL_dup_cs 1);
   170 Level 1
    98 Level 1