src/HOL/Nitpick_Examples/Refute_Nits.thy
changeset 55893 aed17a173d16
parent 55867 79b915f26533
child 56245 84fc7dfa3cd4
equal deleted inserted replaced
55892:6fba7f6c532a 55893:aed17a173d16
     9 
     9 
    10 theory Refute_Nits
    10 theory Refute_Nits
    11 imports Main
    11 imports Main
    12 begin
    12 begin
    13 
    13 
    14 nitpick_params [verbose, card = 1\<emdash>6, max_potential = 0,
    14 nitpick_params [verbose, card = 1-6, max_potential = 0,
    15                 sat_solver = MiniSat_JNI, max_threads = 1, timeout = 240]
    15                 sat_solver = MiniSat_JNI, max_threads = 1, timeout = 240]
    16 
    16 
    17 lemma "P \<and> Q"
    17 lemma "P \<and> Q"
    18 apply (rule conjI)
    18 apply (rule conjI)
    19 nitpick [expect = genuine] 1
    19 nitpick [expect = genuine] 1
   281 oops
   281 oops
   282 
   282 
   283 text {* ``Every point is a fixed point of some function.'' *}
   283 text {* ``Every point is a fixed point of some function.'' *}
   284 
   284 
   285 lemma "\<exists>f. f x = x"
   285 lemma "\<exists>f. f x = x"
   286 nitpick [card = 1\<emdash>7, expect = none]
   286 nitpick [card = 1-7, expect = none]
   287 apply (rule_tac x = "\<lambda>x. x" in exI)
   287 apply (rule_tac x = "\<lambda>x. x" in exI)
   288 apply simp
   288 apply simp
   289 done
   289 done
   290 
   290 
   291 text {* Axiom of Choice: first an incorrect version *}
   291 text {* Axiom of Choice: first an incorrect version *}
   698 lemma "P E"
   698 lemma "P E"
   699 nitpick [expect = genuine]
   699 nitpick [expect = genuine]
   700 oops
   700 oops
   701 
   701 
   702 lemma "rec_T3 e (E x) = e x"
   702 lemma "rec_T3 e (E x) = e x"
   703 nitpick [card = 1\<emdash>4, expect = none]
   703 nitpick [card = 1-4, expect = none]
   704 apply simp
   704 apply simp
   705 done
   705 done
   706 
   706 
   707 lemma "P (rec_T3 e x)"
   707 lemma "P (rec_T3 e x)"
   708 nitpick [expect = genuine]
   708 nitpick [expect = genuine]
   727 lemma "P (Suc 0)"
   727 lemma "P (Suc 0)"
   728 nitpick [expect = genuine]
   728 nitpick [expect = genuine]
   729 oops
   729 oops
   730 
   730 
   731 lemma "P Suc"
   731 lemma "P Suc"
   732 nitpick [card = 1\<emdash>7, expect = none]
   732 nitpick [card = 1-7, expect = none]
   733 oops
   733 oops
   734 
   734 
   735 lemma "rec_nat zero suc 0 = zero"
   735 lemma "rec_nat zero suc 0 = zero"
   736 nitpick [expect = none]
   736 nitpick [expect = none]
   737 apply simp
   737 apply simp
   763 lemma "P [x, y]"
   763 lemma "P [x, y]"
   764 nitpick [expect = genuine]
   764 nitpick [expect = genuine]
   765 oops
   765 oops
   766 
   766 
   767 lemma "rec_list nil cons [] = nil"
   767 lemma "rec_list nil cons [] = nil"
   768 nitpick [card = 1\<emdash>5, expect = none]
   768 nitpick [card = 1-5, expect = none]
   769 apply simp
   769 apply simp
   770 done
   770 done
   771 
   771 
   772 lemma "rec_list nil cons (x#xs) = cons x xs (rec_list nil cons xs)"
   772 lemma "rec_list nil cons (x#xs) = cons x xs (rec_list nil cons xs)"
   773 nitpick [card = 1\<emdash>5, expect = none]
   773 nitpick [card = 1-5, expect = none]
   774 apply simp
   774 apply simp
   775 done
   775 done
   776 
   776 
   777 lemma "P (rec_list nil cons xs)"
   777 lemma "P (rec_list nil cons xs)"
   778 nitpick [expect = genuine]
   778 nitpick [expect = genuine]
   841 nitpick [expect = none]
   841 nitpick [expect = none]
   842 apply simp
   842 apply simp
   843 done
   843 done
   844 
   844 
   845 lemma "rec_BinTree l n (Node x y) = n x y (rec_BinTree l n x) (rec_BinTree l n y)"
   845 lemma "rec_BinTree l n (Node x y) = n x y (rec_BinTree l n x) (rec_BinTree l n y)"
   846 nitpick [card = 1\<emdash>5, expect = none]
   846 nitpick [card = 1-5, expect = none]
   847 apply simp
   847 apply simp
   848 done
   848 done
   849 
   849 
   850 lemma "P (rec_BinTree l n x)"
   850 lemma "P (rec_BinTree l n x)"
   851 nitpick [expect = genuine]
   851 nitpick [expect = genuine]
   879 lemma "\<forall>x\<Colon>'a bexp. P x"
   879 lemma "\<forall>x\<Colon>'a bexp. P x"
   880 nitpick [expect = genuine]
   880 nitpick [expect = genuine]
   881 oops
   881 oops
   882 
   882 
   883 lemma "rec_aexp_bexp_1 number ite equal (Number x) = number x"
   883 lemma "rec_aexp_bexp_1 number ite equal (Number x) = number x"
   884 nitpick [card = 1\<emdash>3, expect = none]
   884 nitpick [card = 1-3, expect = none]
   885 apply simp
   885 apply simp
   886 done
   886 done
   887 
   887 
   888 lemma "rec_aexp_bexp_1 number ite equal (ITE x y z) = ite x y z (rec_aexp_bexp_2 number ite equal x) (rec_aexp_bexp_1 number ite equal y) (rec_aexp_bexp_1 number ite equal z)"
   888 lemma "rec_aexp_bexp_1 number ite equal (ITE x y z) = ite x y z (rec_aexp_bexp_2 number ite equal x) (rec_aexp_bexp_1 number ite equal y) (rec_aexp_bexp_1 number ite equal z)"
   889 nitpick [card = 1\<emdash>3, expect = none]
   889 nitpick [card = 1-3, expect = none]
   890 apply simp
   890 apply simp
   891 done
   891 done
   892 
   892 
   893 lemma "P (rec_aexp_bexp_1 number ite equal x)"
   893 lemma "P (rec_aexp_bexp_1 number ite equal x)"
   894 nitpick [expect = genuine]
   894 nitpick [expect = genuine]
   897 lemma "P (case x of Number a \<Rightarrow> number a | ITE b a1 a2 \<Rightarrow> ite b a1 a2)"
   897 lemma "P (case x of Number a \<Rightarrow> number a | ITE b a1 a2 \<Rightarrow> ite b a1 a2)"
   898 nitpick [expect = genuine]
   898 nitpick [expect = genuine]
   899 oops
   899 oops
   900 
   900 
   901 lemma "rec_aexp_bexp_2 number ite equal (Equal x y) = equal x y (rec_aexp_bexp_1 number ite equal x) (rec_aexp_bexp_1 number ite equal y)"
   901 lemma "rec_aexp_bexp_2 number ite equal (Equal x y) = equal x y (rec_aexp_bexp_1 number ite equal x) (rec_aexp_bexp_1 number ite equal y)"
   902 nitpick [card = 1\<emdash>3, expect = none]
   902 nitpick [card = 1-3, expect = none]
   903 apply simp
   903 apply simp
   904 done
   904 done
   905 
   905 
   906 lemma "P (rec_aexp_bexp_2 number ite equal x)"
   906 lemma "P (rec_aexp_bexp_2 number ite equal x)"
   907 nitpick [expect = genuine]
   907 nitpick [expect = genuine]
   957 lemma "P (C (D (C F)))"
   957 lemma "P (C (D (C F)))"
   958 nitpick [expect = genuine]
   958 nitpick [expect = genuine]
   959 oops
   959 oops
   960 
   960 
   961 lemma "rec_X_Y_1 a b c d e f A = a"
   961 lemma "rec_X_Y_1 a b c d e f A = a"
   962 nitpick [card = 1\<emdash>5, expect = none]
   962 nitpick [card = 1-5, expect = none]
   963 apply simp
   963 apply simp
   964 done
   964 done
   965 
   965 
   966 lemma "rec_X_Y_1 a b c d e f (B x) = b x (rec_X_Y_1 a b c d e f x)"
   966 lemma "rec_X_Y_1 a b c d e f (B x) = b x (rec_X_Y_1 a b c d e f x)"
   967 nitpick [card = 1\<emdash>5, expect = none]
   967 nitpick [card = 1-5, expect = none]
   968 apply simp
   968 apply simp
   969 done
   969 done
   970 
   970 
   971 lemma "rec_X_Y_1 a b c d e f (C y) = c y (rec_X_Y_2 a b c d e f y)"
   971 lemma "rec_X_Y_1 a b c d e f (C y) = c y (rec_X_Y_2 a b c d e f y)"
   972 nitpick [card = 1\<emdash>5, expect = none]
   972 nitpick [card = 1-5, expect = none]
   973 apply simp
   973 apply simp
   974 done
   974 done
   975 
   975 
   976 lemma "rec_X_Y_2 a b c d e f (D x) = d x (rec_X_Y_1 a b c d e f x)"
   976 lemma "rec_X_Y_2 a b c d e f (D x) = d x (rec_X_Y_1 a b c d e f x)"
   977 nitpick [card = 1\<emdash>5, expect = none]
   977 nitpick [card = 1-5, expect = none]
   978 apply simp
   978 apply simp
   979 done
   979 done
   980 
   980 
   981 lemma "rec_X_Y_2 a b c d e f (E y) = e y (rec_X_Y_2 a b c d e f y)"
   981 lemma "rec_X_Y_2 a b c d e f (E y) = e y (rec_X_Y_2 a b c d e f y)"
   982 nitpick [card = 1\<emdash>5, expect = none]
   982 nitpick [card = 1-5, expect = none]
   983 apply simp
   983 apply simp
   984 done
   984 done
   985 
   985 
   986 lemma "rec_X_Y_2 a b c d e f F = f"
   986 lemma "rec_X_Y_2 a b c d e f F = f"
   987 nitpick [card = 1\<emdash>5, expect = none]
   987 nitpick [card = 1-5, expect = none]
   988 apply simp
   988 apply simp
   989 done
   989 done
   990 
   990 
   991 lemma "P (rec_X_Y_1 a b c d e f x)"
   991 lemma "P (rec_X_Y_1 a b c d e f x)"
   992 nitpick [expect = genuine]
   992 nitpick [expect = genuine]
  1013 lemma "P (CX (Some (CX None)))"
  1013 lemma "P (CX (Some (CX None)))"
  1014 nitpick [expect = genuine]
  1014 nitpick [expect = genuine]
  1015 oops
  1015 oops
  1016 
  1016 
  1017 lemma "rec_XOpt_1 cx dx n1 s1 n2 s2 (CX x) = cx x (rec_XOpt_2 cx dx n1 s1 n2 s2 x)"
  1017 lemma "rec_XOpt_1 cx dx n1 s1 n2 s2 (CX x) = cx x (rec_XOpt_2 cx dx n1 s1 n2 s2 x)"
  1018 nitpick [card = 1\<emdash>5, expect = none]
  1018 nitpick [card = 1-5, expect = none]
  1019 apply simp
  1019 apply simp
  1020 done
  1020 done
  1021 
  1021 
  1022 lemma "rec_XOpt_1 cx dx n1 s1 n2 s2 (DX x) = dx x (\<lambda>b. rec_XOpt_3 cx dx n1 s1 n2 s2 (x b))"
  1022 lemma "rec_XOpt_1 cx dx n1 s1 n2 s2 (DX x) = dx x (\<lambda>b. rec_XOpt_3 cx dx n1 s1 n2 s2 (x b))"
  1023 nitpick [card = 1\<emdash>3, expect = none]
  1023 nitpick [card = 1-3, expect = none]
  1024 apply simp
  1024 apply simp
  1025 done
  1025 done
  1026 
  1026 
  1027 lemma "rec_XOpt_2 cx dx n1 s1 n2 s2 None = n1"
  1027 lemma "rec_XOpt_2 cx dx n1 s1 n2 s2 None = n1"
  1028 nitpick [card = 1\<emdash>4, expect = none]
  1028 nitpick [card = 1-4, expect = none]
  1029 apply simp
  1029 apply simp
  1030 done
  1030 done
  1031 
  1031 
  1032 lemma "rec_XOpt_2 cx dx n1 s1 n2 s2 (Some x) = s1 x (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1032 lemma "rec_XOpt_2 cx dx n1 s1 n2 s2 (Some x) = s1 x (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1033 nitpick [card = 1\<emdash>4, expect = none]
  1033 nitpick [card = 1-4, expect = none]
  1034 apply simp
  1034 apply simp
  1035 done
  1035 done
  1036 
  1036 
  1037 lemma "rec_XOpt_3 cx dx n1 s1 n2 s2 None = n2"
  1037 lemma "rec_XOpt_3 cx dx n1 s1 n2 s2 None = n2"
  1038 nitpick [card = 1\<emdash>4, expect = none]
  1038 nitpick [card = 1-4, expect = none]
  1039 apply simp
  1039 apply simp
  1040 done
  1040 done
  1041 
  1041 
  1042 lemma "rec_XOpt_3 cx dx n1 s1 n2 s2 (Some x) = s2 x (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1042 lemma "rec_XOpt_3 cx dx n1 s1 n2 s2 (Some x) = s2 x (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1043 nitpick [card = 1\<emdash>4, expect = none]
  1043 nitpick [card = 1-4, expect = none]
  1044 apply simp
  1044 apply simp
  1045 done
  1045 done
  1046 
  1046 
  1047 lemma "P (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1047 lemma "P (rec_XOpt_1 cx dx n1 s1 n2 s2 x)"
  1048 nitpick [expect = genuine]
  1048 nitpick [expect = genuine]
  1069 lemma "P (CY (Some (\<lambda>a. CY None)))"
  1069 lemma "P (CY (Some (\<lambda>a. CY None)))"
  1070 nitpick [expect = genuine]
  1070 nitpick [expect = genuine]
  1071 oops
  1071 oops
  1072 
  1072 
  1073 lemma "rec_YOpt_1 cy n s (CY x) = cy x (rec_YOpt_2 cy n s x)"
  1073 lemma "rec_YOpt_1 cy n s (CY x) = cy x (rec_YOpt_2 cy n s x)"
  1074 nitpick [card = 1\<emdash>2, expect = none]
  1074 nitpick [card = 1-2, expect = none]
  1075 apply simp
  1075 apply simp
  1076 done
  1076 done
  1077 
  1077 
  1078 lemma "rec_YOpt_2 cy n s None = n"
  1078 lemma "rec_YOpt_2 cy n s None = n"
  1079 nitpick [card = 1\<emdash>2, expect = none]
  1079 nitpick [card = 1-2, expect = none]
  1080 apply simp
  1080 apply simp
  1081 done
  1081 done
  1082 
  1082 
  1083 lemma "rec_YOpt_2 cy n s (Some x) = s x (\<lambda>a. rec_YOpt_1 cy n s (x a))"
  1083 lemma "rec_YOpt_2 cy n s (Some x) = s x (\<lambda>a. rec_YOpt_1 cy n s (x a))"
  1084 nitpick [card = 1\<emdash>2, expect = none]
  1084 nitpick [card = 1-2, expect = none]
  1085 apply simp
  1085 apply simp
  1086 done
  1086 done
  1087 
  1087 
  1088 lemma "P (rec_YOpt_1 cy n s x)"
  1088 lemma "P (rec_YOpt_1 cy n s x)"
  1089 nitpick [expect = genuine]
  1089 nitpick [expect = genuine]
  1106 lemma "P (TR [TR []])"
  1106 lemma "P (TR [TR []])"
  1107 nitpick [expect = genuine]
  1107 nitpick [expect = genuine]
  1108 oops
  1108 oops
  1109 
  1109 
  1110 lemma "rec_Trie_1 tr nil cons (TR x) = tr x (rec_Trie_2 tr nil cons x)"
  1110 lemma "rec_Trie_1 tr nil cons (TR x) = tr x (rec_Trie_2 tr nil cons x)"
  1111 nitpick [card = 1\<emdash>4, expect = none]
  1111 nitpick [card = 1-4, expect = none]
  1112 apply simp
  1112 apply simp
  1113 done
  1113 done
  1114 
  1114 
  1115 lemma "rec_Trie_2 tr nil cons [] = nil"
  1115 lemma "rec_Trie_2 tr nil cons [] = nil"
  1116 nitpick [card = 1\<emdash>4, expect = none]
  1116 nitpick [card = 1-4, expect = none]
  1117 apply simp
  1117 apply simp
  1118 done
  1118 done
  1119 
  1119 
  1120 lemma "rec_Trie_2 tr nil cons (x#xs) = cons x xs (rec_Trie_1 tr nil cons x) (rec_Trie_2 tr nil cons xs)"
  1120 lemma "rec_Trie_2 tr nil cons (x#xs) = cons x xs (rec_Trie_1 tr nil cons x) (rec_Trie_2 tr nil cons xs)"
  1121 nitpick [card = 1\<emdash>4, expect = none]
  1121 nitpick [card = 1-4, expect = none]
  1122 apply simp
  1122 apply simp
  1123 done
  1123 done
  1124 
  1124 
  1125 lemma "P (rec_Trie_1 tr nil cons x)"
  1125 lemma "P (rec_Trie_1 tr nil cons x)"
  1126 nitpick [card = 1, expect = genuine]
  1126 nitpick [card = 1, expect = genuine]
  1143 lemma "P (Node (\<lambda>n. Leaf))"
  1143 lemma "P (Node (\<lambda>n. Leaf))"
  1144 nitpick [expect = genuine]
  1144 nitpick [expect = genuine]
  1145 oops
  1145 oops
  1146 
  1146 
  1147 lemma "rec_InfTree leaf node Leaf = leaf"
  1147 lemma "rec_InfTree leaf node Leaf = leaf"
  1148 nitpick [card = 1\<emdash>3, expect = none]
  1148 nitpick [card = 1-3, expect = none]
  1149 apply simp
  1149 apply simp
  1150 done
  1150 done
  1151 
  1151 
  1152 lemma "rec_InfTree leaf node (Node x) = node x (\<lambda>n. rec_InfTree leaf node (x n))"
  1152 lemma "rec_InfTree leaf node (Node x) = node x (\<lambda>n. rec_InfTree leaf node (x n))"
  1153 nitpick [card = 1\<emdash>3, expect = none]
  1153 nitpick [card = 1-3, expect = none]
  1154 apply simp
  1154 apply simp
  1155 done
  1155 done
  1156 
  1156 
  1157 lemma "P (rec_InfTree leaf node x)"
  1157 lemma "P (rec_InfTree leaf node x)"
  1158 nitpick [expect = genuine]
  1158 nitpick [expect = genuine]
  1167 lemma "\<forall>x\<Colon>'a lambda. P x"
  1167 lemma "\<forall>x\<Colon>'a lambda. P x"
  1168 nitpick [expect = genuine]
  1168 nitpick [expect = genuine]
  1169 oops
  1169 oops
  1170 
  1170 
  1171 lemma "P (Lam (\<lambda>a. Var a))"
  1171 lemma "P (Lam (\<lambda>a. Var a))"
  1172 nitpick [card = 1\<emdash>5, expect = none]
  1172 nitpick [card = 1-5, expect = none]
  1173 nitpick [card 'a = 4, card "'a lambda" = 5, expect = genuine]
  1173 nitpick [card 'a = 4, card "'a lambda" = 5, expect = genuine]
  1174 oops
  1174 oops
  1175 
  1175 
  1176 lemma "rec_lambda var app lam (Var x) = var x"
  1176 lemma "rec_lambda var app lam (Var x) = var x"
  1177 nitpick [card = 1\<emdash>3, expect = none]
  1177 nitpick [card = 1-3, expect = none]
  1178 apply simp
  1178 apply simp
  1179 done
  1179 done
  1180 
  1180 
  1181 lemma "rec_lambda var app lam (App x y) = app x y (rec_lambda var app lam x) (rec_lambda var app lam y)"
  1181 lemma "rec_lambda var app lam (App x y) = app x y (rec_lambda var app lam x) (rec_lambda var app lam y)"
  1182 nitpick [card = 1\<emdash>3, expect = none]
  1182 nitpick [card = 1-3, expect = none]
  1183 apply simp
  1183 apply simp
  1184 done
  1184 done
  1185 
  1185 
  1186 lemma "rec_lambda var app lam (Lam x) = lam x (\<lambda>a. rec_lambda var app lam (x a))"
  1186 lemma "rec_lambda var app lam (Lam x) = lam x (\<lambda>a. rec_lambda var app lam (x a))"
  1187 nitpick [card = 1\<emdash>3, expect = none]
  1187 nitpick [card = 1-3, expect = none]
  1188 apply simp
  1188 apply simp
  1189 done
  1189 done
  1190 
  1190 
  1191 lemma "P (rec_lambda v a l x)"
  1191 lemma "P (rec_lambda v a l x)"
  1192 nitpick [expect = genuine]
  1192 nitpick [expect = genuine]
  1208 lemma "P (E (C (\<lambda>a. True)))"
  1208 lemma "P (E (C (\<lambda>a. True)))"
  1209 nitpick [expect = genuine]
  1209 nitpick [expect = genuine]
  1210 oops
  1210 oops
  1211 
  1211 
  1212 lemma "rec_U_1 e c d nil cons (E x) = e x (rec_U_2 e c d nil cons x)"
  1212 lemma "rec_U_1 e c d nil cons (E x) = e x (rec_U_2 e c d nil cons x)"
  1213 nitpick [card = 1\<emdash>3, expect = none]
  1213 nitpick [card = 1-3, expect = none]
  1214 apply simp
  1214 apply simp
  1215 done
  1215 done
  1216 
  1216 
  1217 lemma "rec_U_2 e c d nil cons (C x) = c x"
  1217 lemma "rec_U_2 e c d nil cons (C x) = c x"
  1218 nitpick [card = 1\<emdash>3, expect = none]
  1218 nitpick [card = 1-3, expect = none]
  1219 apply simp
  1219 apply simp
  1220 done
  1220 done
  1221 
  1221 
  1222 lemma "rec_U_2 e c d nil cons (D x) = d x (rec_U_3 e c d nil cons x)"
  1222 lemma "rec_U_2 e c d nil cons (D x) = d x (rec_U_3 e c d nil cons x)"
  1223 nitpick [card = 1\<emdash>3, expect = none]
  1223 nitpick [card = 1-3, expect = none]
  1224 apply simp
  1224 apply simp
  1225 done
  1225 done
  1226 
  1226 
  1227 lemma "rec_U_3 e c d nil cons [] = nil"
  1227 lemma "rec_U_3 e c d nil cons [] = nil"
  1228 nitpick [card = 1\<emdash>3, expect = none]
  1228 nitpick [card = 1-3, expect = none]
  1229 apply simp
  1229 apply simp
  1230 done
  1230 done
  1231 
  1231 
  1232 lemma "rec_U_3 e c d nil cons (x#xs) = cons x xs (rec_U_1 e c d nil cons x) (rec_U_3 e c d nil cons xs)"
  1232 lemma "rec_U_3 e c d nil cons (x#xs) = cons x xs (rec_U_1 e c d nil cons x) (rec_U_3 e c d nil cons xs)"
  1233 nitpick [card = 1\<emdash>3, expect = none]
  1233 nitpick [card = 1-3, expect = none]
  1234 apply simp
  1234 apply simp
  1235 done
  1235 done
  1236 
  1236 
  1237 lemma "P (rec_U_1 e c d nil cons x)"
  1237 lemma "P (rec_U_1 e c d nil cons x)"
  1238 nitpick [expect = genuine]
  1238 nitpick [expect = genuine]