src/HOL/Tools/Nitpick/nitpick_kodkod.ML
changeset 38164 346df80a0924
parent 38160 d04aceff43cf
child 38182 747f8077b09a
equal deleted inserted replaced
38163:bc546396b818 38164:346df80a0924
   434         (kk as {kk_intersect, kk_product, kk_join, kk_project_seq, ...}) one R1
   434         (kk as {kk_intersect, kk_product, kk_join, kk_project_seq, ...}) one R1
   435         res_R r1 r2 =
   435         res_R r1 r2 =
   436   case arity_of_rep R1 of
   436   case arity_of_rep R1 of
   437     1 => kk_join r1 r2
   437     1 => kk_join r1 r2
   438   | arity1 =>
   438   | arity1 =>
   439     let
   439     let val unpacked_rs1 = unpack_products r1 in
   440       val unpacked_rs1 =
       
   441         if inline_rel_expr r1 then unpack_vect_in_chunks kk 1 arity1 r1
       
   442         else unpack_products r1
       
   443     in
       
   444       if one andalso length unpacked_rs1 = arity1 then
   440       if one andalso length unpacked_rs1 = arity1 then
   445         fold kk_join unpacked_rs1 r2
   441         fold kk_join unpacked_rs1 r2
       
   442       else if one andalso inline_rel_expr r1 then
       
   443         fold kk_join (unpack_vect_in_chunks kk 1 arity1 r1) r2
   446       else
   444       else
   447         kk_project_seq
   445         kk_project_seq
   448             (kk_intersect (kk_product r1 (full_rel_for_rep res_R)) r2)
   446             (kk_intersect (kk_product r1 (full_rel_for_rep res_R)) r2)
   449             arity1 (arity_of_rep res_R)
   447             arity1 (arity_of_rep res_R)
   450     end
   448     end