let add g =
  begin
    let bmap =
      try Kfmap.find g.po_fun system.index
      with Not_found -> Imap.empty
    in
    let bhv = match g.po_bhv with None -> "" | Some b -> b in
    let pset =
      try Imap.find bhv bmap
      with Not_found -> WPOset.empty
    in
    if WPOset.mem g pset then
      begin
        let pi = ( g.po_model , WpAnnot.property_of_id g.po_pid ) in
        Hproof.remove system.proofs pi ;
        Hpo.remove system.results g ;
      end ;
    let pset' = WPOset.add g pset in
    let bmap' = Imap.add bhv pset' bmap in
    system.index <- Kfmap.add g.po_fun bmap' system.index ;
  end