src/Provers/classical.ML
changeset 22468 01751f5b0657
parent 22360 26ead7ed4f4b
child 22474 ecdaec8cf13a
equal deleted inserted replaced
22467:c9357ef01168 22468:01751f5b0657
   600  CS{safeIs = safeIs, safeEs = safeEs, hazIs = hazIs, hazEs = hazEs,
   600  CS{safeIs = safeIs, safeEs = safeEs, hazIs = hazIs, hazEs = hazEs,
   601     swrappers = swrappers, uwrappers = f uwrappers,
   601     swrappers = swrappers, uwrappers = f uwrappers,
   602     safe0_netpair = safe0_netpair, safep_netpair = safep_netpair,
   602     safe0_netpair = safe0_netpair, safep_netpair = safep_netpair,
   603     haz_netpair = haz_netpair, dup_netpair = dup_netpair, xtra_netpair = xtra_netpair};
   603     haz_netpair = haz_netpair, dup_netpair = dup_netpair, xtra_netpair = xtra_netpair};
   604 
   604 
       
   605 fun overwrite_warn msg (p as (key : string, v)) xs =
       
   606   let
       
   607     fun over ((q as (keyi, _)) :: xs) =
       
   608           if keyi = key then p :: xs else q :: over xs
       
   609       | over [] = [p];
       
   610   in (
       
   611     if AList.defined (op =) xs key then () else warning msg;
       
   612     over xs
       
   613   ) end;
   605 
   614 
   606 (*Add/replace a safe wrapper*)
   615 (*Add/replace a safe wrapper*)
   607 fun cs addSWrapper new_swrapper = update_swrappers cs (fn swrappers =>
   616 fun cs addSWrapper new_swrapper = update_swrappers cs
   608     overwrite_warn (swrappers, new_swrapper)
   617   (overwrite_warn ("Overwriting safe wrapper " ^ fst new_swrapper) new_swrapper);
   609        ("Overwriting safe wrapper " ^ fst new_swrapper));
       
   610 
   618 
   611 (*Add/replace an unsafe wrapper*)
   619 (*Add/replace an unsafe wrapper*)
   612 fun cs addWrapper new_uwrapper = update_uwrappers cs (fn uwrappers =>
   620 fun cs addWrapper new_uwrapper = update_uwrappers cs
   613     overwrite_warn (uwrappers, new_uwrapper)
   621   (overwrite_warn ("Overwriting unsafe wrapper "^fst new_uwrapper) new_uwrapper);
   614         ("Overwriting unsafe wrapper "^fst new_uwrapper));
       
   615 
   622 
   616 (*Remove a safe wrapper*)
   623 (*Remove a safe wrapper*)
   617 fun cs delSWrapper name = update_swrappers cs (fn swrappers =>
   624 fun cs delSWrapper name = update_swrappers cs (fn swrappers =>
   618   let val swrappers' = filter_out (equal name o fst) swrappers in
   625   let val swrappers' = filter_out (equal name o fst) swrappers in
   619     if length swrappers <> length swrappers' then swrappers'
   626     if length swrappers <> length swrappers' then swrappers'