sign non-forgetfulness



My solution is the function forgetful_csign. Maybe using a private context would be better, but
this seems to work for what I was doing.

/* On exiting from sign or csign, temporary assumptions are not immediately forgotten. This function
   removes these temporary assumptions before returning. */

forgetful_csign(e) := block([fcts : setify(facts())],
  unwind_protect(csign(e),
    fcts : setdifference(setify(facts()), fcts),
    for f in fcts do (forget(f))));

--Barton