src/HOL/MetisExamples/set.thy
changeset 32705 04ce6bb14d85
parent 32685 29e4e567b5f4
child 32864 a226f29d4bdc
equal deleted inserted replaced
32682:304a47739407 32705:04ce6bb14d85
     1 (*  Title:      HOL/MetisExamples/set.thy
     1 (*  Title:      HOL/MetisExamples/set.thy
     2     ID:         $Id$
       
     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     2     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     4 
     3 
     5 Testing the metis method
     4 Testing the metis method
     6 *)
     5 *)
     7 
     6 
    34 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    33 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    35 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    34 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    36 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    35 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
    37 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
    36 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
    38 have 6: "sup Y Z = X \<or> Y \<subseteq> X"
    37 have 6: "sup Y Z = X \<or> Y \<subseteq> X"
    39   by (metis 0 sup_set_eq)
    38   by (metis 0)
    40 have 7: "sup Y Z = X \<or> Z \<subseteq> X"
    39 have 7: "sup Y Z = X \<or> Z \<subseteq> X"
    41   by (metis 1 sup_set_eq)
    40   by (metis 1)
    42 have 8: "\<And>X3. sup Y Z = X \<or> X \<subseteq> X3 \<or> \<not> Y \<subseteq> X3 \<or> \<not> Z \<subseteq> X3"
    41 have 8: "\<And>X3. sup Y Z = X \<or> X \<subseteq> X3 \<or> \<not> Y \<subseteq> X3 \<or> \<not> Z \<subseteq> X3"
    43   by (metis 5 sup_set_eq)
    42   by (metis 5)
    44 have 9: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    43 have 9: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    45   by (metis 2 sup_set_eq)
    44   by (metis 2)
    46 have 10: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    45 have 10: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    47   by (metis 3 sup_set_eq)
    46   by (metis 3)
    48 have 11: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    47 have 11: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
    49   by (metis 4 sup_set_eq)
    48   by (metis 4)
    50 have 12: "Z \<subseteq> X"
    49 have 12: "Z \<subseteq> X"
    51   by (metis Un_upper2 sup_set_eq 7)
    50   by (metis Un_upper2 7)
    52 have 13: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
    51 have 13: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
    53   by (metis 8 Un_upper2 sup_set_eq)
    52   by (metis 8 Un_upper2)
    54 have 14: "Y \<subseteq> X"
    53 have 14: "Y \<subseteq> X"
    55   by (metis Un_upper1 sup_set_eq 6)
    54   by (metis Un_upper1 6)
    56 have 15: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
    55 have 15: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
    57   by (metis 10 12)
    56   by (metis 10 12)
    58 have 16: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
    57 have 16: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
    59   by (metis 9 12)
    58   by (metis 9 12)
    60 have 17: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X"
    59 have 17: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X"
    64 have 19: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
    63 have 19: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
    65   by (metis 15 14)
    64   by (metis 15 14)
    66 have 20: "Y \<subseteq> x \<or> sup Y Z \<noteq> X"
    65 have 20: "Y \<subseteq> x \<or> sup Y Z \<noteq> X"
    67   by (metis 16 14)
    66   by (metis 16 14)
    68 have 21: "sup Y Z = X \<or> X \<subseteq> sup Y Z"
    67 have 21: "sup Y Z = X \<or> X \<subseteq> sup Y Z"
    69   by (metis 13 Un_upper1 sup_set_eq)
    68   by (metis 13 Un_upper1)
    70 have 22: "sup Y Z = X \<or> \<not> sup Y Z \<subseteq> X"
    69 have 22: "sup Y Z = X \<or> \<not> sup Y Z \<subseteq> X"
    71   by (metis equalityI 21)
    70   by (metis equalityI 21)
    72 have 23: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
    71 have 23: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
    73   by (metis 22 Un_least sup_set_eq)
    72   by (metis 22 Un_least)
    74 have 24: "sup Y Z = X \<or> \<not> Y \<subseteq> X"
    73 have 24: "sup Y Z = X \<or> \<not> Y \<subseteq> X"
    75   by (metis 23 12)
    74   by (metis 23 12)
    76 have 25: "sup Y Z = X"
    75 have 25: "sup Y Z = X"
    77   by (metis 24 14)
    76   by (metis 24 14)
    78 have 26: "\<And>X3. X \<subseteq> X3 \<or> \<not> Z \<subseteq> X3 \<or> \<not> Y \<subseteq> X3"
    77 have 26: "\<And>X3. X \<subseteq> X3 \<or> \<not> Z \<subseteq> X3 \<or> \<not> Y \<subseteq> X3"
    79   by (metis Un_least sup_set_eq 25)
    78   by (metis Un_least 25)
    80 have 27: "Y \<subseteq> x"
    79 have 27: "Y \<subseteq> x"
    81   by (metis 20 25)
    80   by (metis 20 25)
    82 have 28: "Z \<subseteq> x"
    81 have 28: "Z \<subseteq> x"
    83   by (metis 19 25)
    82   by (metis 19 25)
    84 have 29: "\<not> X \<subseteq> x"
    83 have 29: "\<not> X \<subseteq> x"
   103 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   102 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   104 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   103 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   105 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   104 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   106 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   105 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   107 have 6: "sup Y Z = X \<or> Y \<subseteq> X"
   106 have 6: "sup Y Z = X \<or> Y \<subseteq> X"
   108   by (metis 0 sup_set_eq)
   107   by (metis 0)
   109 have 7: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   108 have 7: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   110   by (metis 2 sup_set_eq)
   109   by (metis 2)
   111 have 8: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   110 have 8: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   112   by (metis 4 sup_set_eq)
   111   by (metis 4)
   113 have 9: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
   112 have 9: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
   114   by (metis 5 sup_set_eq Un_upper2 sup_set_eq)
   113   by (metis 5 Un_upper2)
   115 have 10: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   114 have 10: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   116   by (metis 3 sup_set_eq Un_upper2 sup_set_eq sup_set_eq)
   115   by (metis 3 Un_upper2)
   117 have 11: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X"
   116 have 11: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X"
   118   by (metis 8 Un_upper2 sup_set_eq sup_set_eq)
   117   by (metis 8 Un_upper2)
   119 have 12: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   118 have 12: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   120   by (metis 10 Un_upper1 sup_set_eq)
   119   by (metis 10 Un_upper1)
   121 have 13: "sup Y Z = X \<or> X \<subseteq> sup Y Z"
   120 have 13: "sup Y Z = X \<or> X \<subseteq> sup Y Z"
   122   by (metis 9 Un_upper1 sup_set_eq)
   121   by (metis 9 Un_upper1)
   123 have 14: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
   122 have 14: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
   124   by (metis equalityI 13 Un_least sup_set_eq)
   123   by (metis equalityI 13 Un_least)
   125 have 15: "sup Y Z = X"
   124 have 15: "sup Y Z = X"
   126   by (metis 14 sup_set_eq 1 sup_set_eq sup_set_eq 6)
   125   by (metis 14 1 6)
   127 have 16: "Y \<subseteq> x"
   126 have 16: "Y \<subseteq> x"
   128   by (metis 7 Un_upper2 sup_set_eq sup_set_eq Un_upper1 sup_set_eq 15)
   127   by (metis 7 Un_upper2 Un_upper1 15)
   129 have 17: "\<not> X \<subseteq> x"
   128 have 17: "\<not> X \<subseteq> x"
   130   by (metis 11 Un_upper1 sup_set_eq 15)
   129   by (metis 11 Un_upper1 15)
   131 have 18: "X \<subseteq> x"
   130 have 18: "X \<subseteq> x"
   132   by (metis Un_least sup_set_eq 15 12 15 16)
   131   by (metis Un_least 15 12 15 16)
   133 show "False"
   132 show "False"
   134   by (metis 18 17)
   133   by (metis 18 17)
   135 qed
   134 qed
   136 
   135 
   137 declare [[sledgehammer_modulus = 3]]
   136 declare [[sledgehammer_modulus = 3]]
   146 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   145 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   147 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   146 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   148 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   147 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   149 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   148 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   150 have 6: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   149 have 6: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   151   by (metis 3 sup_set_eq)
   150   by (metis 3)
   152 have 7: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
   151 have 7: "\<And>X3. sup Y Z = X \<or> X \<subseteq> sup X3 Z \<or> \<not> Y \<subseteq> sup X3 Z"
   153   by (metis 5 sup_set_eq Un_upper2 sup_set_eq)
   152   by (metis 5 Un_upper2)
   154 have 8: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   153 have 8: "Y \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   155   by (metis 2 sup_set_eq Un_upper2 sup_set_eq sup_set_eq)
   154   by (metis 2 Un_upper2)
   156 have 9: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   155 have 9: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   157   by (metis 6 Un_upper2 sup_set_eq sup_set_eq Un_upper1 sup_set_eq sup_set_eq)
   156   by (metis 6 Un_upper2 Un_upper1)
   158 have 10: "sup Y Z = X \<or> \<not> sup Y Z \<subseteq> X"
   157 have 10: "sup Y Z = X \<or> \<not> sup Y Z \<subseteq> X"
   159   by (metis equalityI 7 Un_upper1 sup_set_eq)
   158   by (metis equalityI 7 Un_upper1)
   160 have 11: "sup Y Z = X"
   159 have 11: "sup Y Z = X"
   161   by (metis 10 Un_least sup_set_eq sup_set_eq 1 sup_set_eq sup_set_eq 0 sup_set_eq)
   160   by (metis 10 Un_least 1 0)
   162 have 12: "Z \<subseteq> x"
   161 have 12: "Z \<subseteq> x"
   163   by (metis 9 11)
   162   by (metis 9 11)
   164 have 13: "X \<subseteq> x"
   163 have 13: "X \<subseteq> x"
   165   by (metis Un_least sup_set_eq 11 12 8 Un_upper1 sup_set_eq sup_set_eq 11)
   164   by (metis Un_least 11 12 8 Un_upper1 11)
   166 show "False"
   165 show "False"
   167   by (metis 13 4 sup_set_eq Un_upper2 sup_set_eq sup_set_eq Un_upper1 sup_set_eq sup_set_eq 11)
   166   by (metis 13 4 Un_upper2 Un_upper1 11)
   168 qed
   167 qed
   169 
   168 
   170 (*Example included in TPHOLs paper*)
   169 (*Example included in TPHOLs paper*)
   171 
   170 
   172 declare [[sledgehammer_modulus = 4]]
   171 declare [[sledgehammer_modulus = 4]]
   181 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   180 assume 2: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Y \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   182 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   181 assume 3: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> Z \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   183 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   182 assume 4: "(\<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X \<or> \<not> X \<subseteq> x) \<or> X \<noteq> Y \<union> Z"
   184 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   183 assume 5: "\<And>V. ((\<not> Y \<subseteq> V \<or> \<not> Z \<subseteq> V) \<or> X \<subseteq> V) \<or> X = Y \<union> Z"
   185 have 6: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   184 have 6: "sup Y Z \<noteq> X \<or> \<not> X \<subseteq> x \<or> \<not> Y \<subseteq> X \<or> \<not> Z \<subseteq> X"
   186   by (metis 4 sup_set_eq)
   185   by (metis 4)
   187 have 7: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   186 have 7: "Z \<subseteq> x \<or> sup Y Z \<noteq> X \<or> \<not> Y \<subseteq> X"
   188   by (metis 3 sup_set_eq Un_upper2 sup_set_eq sup_set_eq)
   187   by (metis 3 Un_upper2)
   189 have 8: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   188 have 8: "Z \<subseteq> x \<or> sup Y Z \<noteq> X"
   190   by (metis 7 Un_upper1 sup_set_eq sup_set_eq)
   189   by (metis 7 Un_upper1)
   191 have 9: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
   190 have 9: "sup Y Z = X \<or> \<not> Z \<subseteq> X \<or> \<not> Y \<subseteq> X"
   192   by (metis equalityI 5 sup_set_eq Un_upper2 sup_set_eq Un_upper1 sup_set_eq Un_least sup_set_eq)
   191   by (metis equalityI 5 Un_upper2 Un_upper1 Un_least)
   193 have 10: "Y \<subseteq> x"
   192 have 10: "Y \<subseteq> x"
   194   by (metis 2 sup_set_eq Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq 9 Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq)
   193   by (metis 2 Un_upper2 1 Un_upper1 0 9 Un_upper2 1 Un_upper1 0)
   195 have 11: "X \<subseteq> x"
   194 have 11: "X \<subseteq> x"
   196   by (metis Un_least sup_set_eq 9 Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq 8 9 Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq 10)
   195   by (metis Un_least 9 Un_upper2 1 Un_upper1 0 8 9 Un_upper2 1 Un_upper1 0 10)
   197 show "False"
   196 show "False"
   198   by (metis 11 6 Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq 9 Un_upper2 sup_set_eq 1 sup_set_eq Un_upper1 sup_set_eq 0 sup_set_eq)
   197   by (metis 11 6 Un_upper2 1 Un_upper1 0 9 Un_upper2 1 Un_upper1 0)
   199 qed 
   198 qed 
   200 
   199 
   201 ML {*AtpWrapper.problem_name := "set__equal_union"*}
   200 ML {*AtpWrapper.problem_name := "set__equal_union"*}
   202 lemma (*equal_union: *)
   201 lemma (*equal_union: *)
   203    "(X = Y \<union> Z) =
   202    "(X = Y \<union> Z) =
   236 by (metis Set.subsetI Union_upper insertCI set_eq_subset)
   235 by (metis Set.subsetI Union_upper insertCI set_eq_subset)
   237   --{*found by SPASS*}
   236   --{*found by SPASS*}
   238 
   237 
   239 lemma (*singleton_example_2:*)
   238 lemma (*singleton_example_2:*)
   240      "\<forall>x \<in> S. \<Union>S \<subseteq> x \<Longrightarrow> \<exists>z. S \<subseteq> {z}"
   239      "\<forall>x \<in> S. \<Union>S \<subseteq> x \<Longrightarrow> \<exists>z. S \<subseteq> {z}"
   241 by (metis Set.subsetI Union_upper insert_code mem_def set_eq_subset)
   240 by (metis Set.subsetI Union_upper insert_iff set_eq_subset)
   242 
   241 
   243 lemma singleton_example_2:
   242 lemma singleton_example_2:
   244      "\<forall>x \<in> S. \<Union>S \<subseteq> x \<Longrightarrow> \<exists>z. S \<subseteq> {z}"
   243      "\<forall>x \<in> S. \<Union>S \<subseteq> x \<Longrightarrow> \<exists>z. S \<subseteq> {z}"
   245 proof (neg_clausify)
   244 proof (neg_clausify)
   246 assume 0: "\<And>x. \<not> S \<subseteq> {x}"
   245 assume 0: "\<And>x. \<not> S \<subseteq> {x}"