fixed bug introduced when reintroducing set constructor, and visible when applying <= to 2- or more-ary relations, e.g. "(R::'a=>'a=>bool) <= R"
authorblanchet
Sat, 11 May 2013 16:00:24 +0200
changeset 51928 a5265222d6e6
parent 51927 bcd6898ac613
child 51936 972c4f42fd52
fixed bug introduced when reintroducing set constructor, and visible when applying <= to 2- or more-ary relations, e.g. "(R::'a=>'a=>bool) <= R"
src/HOL/Tools/Nitpick/nitpick_kodkod.ML
--- a/src/HOL/Tools/Nitpick/nitpick_kodkod.ML	Fri May 10 19:41:23 2013 +0200
+++ b/src/HOL/Tools/Nitpick/nitpick_kodkod.ML	Sat May 11 16:00:24 2013 +0200
@@ -1379,9 +1379,11 @@
       in
         case min_R of
           Vect (k, Atom _) => kk_vect_set_bool_op connective k r1 r2
-        | Func (_, Formula Neut) => set_oper r1 r2
-        | Func (_, Atom _) => set_oper (kk_join r1 true_atom)
-                                       (kk_join r2 true_atom)
+        | Func (_, R') =>
+          (case body_rep R' of
+             Formula Neut => set_oper r1 r2
+           | Atom _ => set_oper (kk_join r1 true_atom) (kk_join r2 true_atom)
+           | _ => raise REP ("Nitpick_Kodkod.to_set_bool_op", [min_R]))
         | _ => raise REP ("Nitpick_Kodkod.to_set_bool_op", [min_R])
       end
     and to_bit_word_unary_op T R oper =