src/Sequents/S43.thy
changeset 21426 87ac12bed1ab
parent 17481 75166ebb619b
child 30510 4120fc59dd85
equal deleted inserted replaced
21425:c11ab38b78a7 21426:87ac12bed1ab
    75   pi2:
    75   pi2:
    76    "[| $L |L> $Lbox;  $L |R> $Ldia;  $R1,[]P,$R2 |L> $Rbox;  $R1,[]P,$R2 |R> $Rdia;
    76    "[| $L |L> $Lbox;  $L |R> $Ldia;  $R1,[]P,$R2 |L> $Rbox;  $R1,[]P,$R2 |R> $Rdia;
    77       S43pi ; $Ldia;; $Rbox; $Lbox; $Rdia |] ==>
    77       S43pi ; $Ldia;; $Rbox; $Lbox; $Rdia |] ==>
    78    $L |- $R1, []P, $R2"
    78    $L |- $R1, []P, $R2"
    79 
    79 
    80 ML {* use_legacy_bindings (the_context ()) *}
    80 
       
    81 ML {*
       
    82 structure S43_Prover = Modal_ProverFun
       
    83 (
       
    84   val rewrite_rls = thms "rewrite_rls"
       
    85   val safe_rls = thms "safe_rls"
       
    86   val unsafe_rls = thms "unsafe_rls" @ [thm "pi1", thm "pi2"]
       
    87   val bound_rls = thms "bound_rls" @ [thm "boxL", thm "diaR"]
       
    88   val aside_rls = [thm "lstar0", thm "lstar1", thm "lstar2", thm "rstar0",
       
    89     thm "rstar1", thm "rstar2", thm "S43pi0", thm "S43pi1", thm "S43pi2"]
       
    90 )
       
    91 *}
       
    92 
       
    93 
       
    94 method_setup S43_solve = {*
       
    95   Method.no_args (Method.SIMPLE_METHOD
       
    96     (S43_Prover.solve_tac 2 ORELSE S43_Prover.solve_tac 3))
       
    97 *} "S4 solver"
       
    98 
       
    99 
       
   100 (* Theorems of system T from Hughes and Cresswell and Hailpern, LNCS 129 *)
       
   101 
       
   102 lemma "|- []P --> P" by S43_solve
       
   103 lemma "|- [](P-->Q) --> ([]P-->[]Q)" by S43_solve   (* normality*)
       
   104 lemma "|- (P--<Q) --> []P --> []Q" by S43_solve
       
   105 lemma "|- P --> <>P" by S43_solve
       
   106 
       
   107 lemma "|-  [](P & Q) <-> []P & []Q" by S43_solve
       
   108 lemma "|-  <>(P | Q) <-> <>P | <>Q" by S43_solve
       
   109 lemma "|-  [](P<->Q) <-> (P>-<Q)" by S43_solve
       
   110 lemma "|-  <>(P-->Q) <-> ([]P--><>Q)" by S43_solve
       
   111 lemma "|-        []P <-> ~<>(~P)" by S43_solve
       
   112 lemma "|-     [](~P) <-> ~<>P" by S43_solve
       
   113 lemma "|-       ~[]P <-> <>(~P)" by S43_solve
       
   114 lemma "|-      [][]P <-> ~<><>(~P)" by S43_solve
       
   115 lemma "|- ~<>(P | Q) <-> ~<>P & ~<>Q" by S43_solve
       
   116 
       
   117 lemma "|- []P | []Q --> [](P | Q)" by S43_solve
       
   118 lemma "|- <>(P & Q) --> <>P & <>Q" by S43_solve
       
   119 lemma "|- [](P | Q) --> []P | <>Q" by S43_solve
       
   120 lemma "|- <>P & []Q --> <>(P & Q)" by S43_solve
       
   121 lemma "|- [](P | Q) --> <>P | []Q" by S43_solve
       
   122 lemma "|- <>(P-->(Q & R)) --> ([]P --> <>Q) & ([]P--><>R)" by S43_solve
       
   123 lemma "|- (P--<Q) & (Q--<R) --> (P--<R)" by S43_solve
       
   124 lemma "|- []P --> <>Q --> <>(P & Q)" by S43_solve
       
   125 
       
   126 
       
   127 (* Theorems of system S4 from Hughes and Cresswell, p.46 *)
       
   128 
       
   129 lemma "|- []A --> A" by S43_solve             (* refexivity *)
       
   130 lemma "|- []A --> [][]A" by S43_solve         (* transitivity *)
       
   131 lemma "|- []A --> <>A" by S43_solve           (* seriality *)
       
   132 lemma "|- <>[](<>A --> []<>A)" by S43_solve
       
   133 lemma "|- <>[](<>[]A --> []A)" by S43_solve
       
   134 lemma "|- []P <-> [][]P" by S43_solve
       
   135 lemma "|- <>P <-> <><>P" by S43_solve
       
   136 lemma "|- <>[]<>P --> <>P" by S43_solve
       
   137 lemma "|- []<>P <-> []<>[]<>P" by S43_solve
       
   138 lemma "|- <>[]P <-> <>[]<>[]P" by S43_solve
       
   139 
       
   140 (* Theorems for system S4 from Hughes and Cresswell, p.60 *)
       
   141 
       
   142 lemma "|- []P | []Q <-> []([]P | []Q)" by S43_solve
       
   143 lemma "|- ((P>-<Q) --< R) --> ((P>-<Q) --< []R)" by S43_solve
       
   144 
       
   145 (* These are from Hailpern, LNCS 129 *)
       
   146 
       
   147 lemma "|- [](P & Q) <-> []P & []Q" by S43_solve
       
   148 lemma "|- <>(P | Q) <-> <>P | <>Q" by S43_solve
       
   149 lemma "|- <>(P --> Q) <-> ([]P --> <>Q)" by S43_solve
       
   150 
       
   151 lemma "|- [](P --> Q) --> (<>P --> <>Q)" by S43_solve
       
   152 lemma "|- []P --> []<>P" by S43_solve
       
   153 lemma "|- <>[]P --> <>P" by S43_solve
       
   154 
       
   155 lemma "|- []P | []Q --> [](P | Q)" by S43_solve
       
   156 lemma "|- <>(P & Q) --> <>P & <>Q" by S43_solve
       
   157 lemma "|- [](P | Q) --> []P | <>Q" by S43_solve
       
   158 lemma "|- <>P & []Q --> <>(P & Q)" by S43_solve
       
   159 lemma "|- [](P | Q) --> <>P | []Q" by S43_solve
       
   160 
       
   161 
       
   162 (* Theorems of system S43 *)
       
   163 
       
   164 lemma "|- <>[]P --> []<>P" by S43_solve
       
   165 lemma "|- <>[]P --> [][]<>P" by S43_solve
       
   166 lemma "|- [](<>P | <>Q) --> []<>P | []<>Q" by S43_solve
       
   167 lemma "|- <>[]P & <>[]Q --> <>([]P & []Q)" by S43_solve
       
   168 lemma "|- []([]P --> []Q) | []([]Q --> []P)" by S43_solve
       
   169 lemma "|- [](<>P --> <>Q) | [](<>Q --> <>P)" by S43_solve
       
   170 lemma "|- []([]P --> Q) | []([]Q --> P)" by S43_solve
       
   171 lemma "|- [](P --> <>Q) | [](Q --> <>P)" by S43_solve
       
   172 lemma "|- [](P --> []Q-->R) | [](P | ([]R --> Q))" by S43_solve
       
   173 lemma "|- [](P | (Q --> <>C)) | [](P --> C --> <>Q)" by S43_solve
       
   174 lemma "|- []([]P | Q) & [](P | []Q) --> []P | []Q" by S43_solve
       
   175 lemma "|- <>P & <>Q --> <>(<>P & Q) | <>(P & <>Q)" by S43_solve
       
   176 lemma "|- [](P | Q) & []([]P | Q) & [](P | []Q) --> []P | []Q" by S43_solve
       
   177 lemma "|- <>P & <>Q --> <>(P & Q) | <>(<>P & Q) | <>(P & <>Q)" by S43_solve
       
   178 lemma "|- <>[]<>P <-> []<>P" by S43_solve
       
   179 lemma "|- []<>[]P <-> <>[]P" by S43_solve
       
   180 
       
   181 (* These are from Hailpern, LNCS 129 *)
       
   182 
       
   183 lemma "|- [](P & Q) <-> []P & []Q" by S43_solve
       
   184 lemma "|- <>(P | Q) <-> <>P | <>Q" by S43_solve
       
   185 lemma "|- <>(P --> Q) <-> []P --> <>Q" by S43_solve
       
   186 
       
   187 lemma "|- [](P --> Q) --> <>P --> <>Q" by S43_solve
       
   188 lemma "|- []P --> []<>P" by S43_solve
       
   189 lemma "|- <>[]P --> <>P" by S43_solve
       
   190 lemma "|- []<>[]P --> []<>P" by S43_solve
       
   191 lemma "|- <>[]P --> <>[]<>P" by S43_solve
       
   192 lemma "|- <>[]P --> []<>P" by S43_solve
       
   193 lemma "|- []<>[]P <-> <>[]P" by S43_solve
       
   194 lemma "|- <>[]<>P <-> []<>P" by S43_solve
       
   195 
       
   196 lemma "|- []P | []Q --> [](P | Q)" by S43_solve
       
   197 lemma "|- <>(P & Q) --> <>P & <>Q" by S43_solve
       
   198 lemma "|- [](P | Q) --> []P | <>Q" by S43_solve
       
   199 lemma "|- <>P & []Q --> <>(P & Q)" by S43_solve
       
   200 lemma "|- [](P | Q) --> <>P | []Q" by S43_solve
       
   201 lemma "|- [](P | Q) --> []<>P | []<>Q" by S43_solve
       
   202 lemma "|- <>[]P & <>[]Q --> <>(P & Q)" by S43_solve
       
   203 lemma "|- <>[](P & Q) <-> <>[]P & <>[]Q" by S43_solve
       
   204 lemma "|- []<>(P | Q) <-> []<>P | []<>Q" by S43_solve
    81 
   205 
    82 end
   206 end