1234567891011121314151617181920212223242526(** Define a ghost signature that contain symbols used by the kernel
but not defined by the user. *)openTimedopenTermopenLplibopenExtraopenCommon(** The signature holding ghost symbols. *)letsign=(* a path that's not in the image of the parser *)letpath=Path.ghost"ghost"inletsign={(Sign.dummy())withsign_path=path}inSign.loaded:=Path.Map.addpathsign!(Sign.loaded);sign(** The path of the ghost signature *)letpath=sign.sign_path(** [mem s] returns [true] if [s] is a ghost symbol. *)letmems=StrMap.mems.sym_name!(sign.sign_symbols)(** [iter f] iters function [f] on ghost symbols. *)letiter:(sym->unit)->unit=funf->StrMap.iter(fun_s->fs)!(sign.sign_symbols)