let iter ?on_environment ?on_function ?on_behavior ?on_goal () =
begin
match on_environment with
| None -> ()
| Some phi ->
Imap.iter
(fun m k ->
for i = 1 to k do
phi (env_name m i)
done)
system.environments
end ;
if on_function <> None || on_behavior <> None || on_goal <> None
then
Kfmap.iter
(fun kf bmap ->
if (on_behavior <> None || on_goal <> None) &&
not (Imap.is_empty bmap)
then
begin
( match on_function with
| None -> ()
| Some phi -> phi kf ) ;
Imap.iter
(fun b pset ->
if not (WPOset.is_empty pset) then
begin
( match on_behavior with
| None -> ()
| Some phi ->
phi kf (if b="" then None else Some b) ) ;
match on_goal with
| None -> ()
| Some f -> WPOset.iter f pset
end
) bmap
end)
system.index