anchor.diff:  type goal = (string * thm) list * term;;
   
   let equals_goal ((a,w):goal) ((a',w'):goal) =
  -  forall2 (fun (s,th) (s',th') -> s = s' & equals_thm th th') a a' & w = w';;
  +  forall2 (fun (s,th) (s',th') -> s = s' && equals_thm th th') a a' && w = w';;
   
   (* ------------------------------------------------------------------------- *)
   (* A justification function for a goalstate [A1 ?- g1; ...; An ?- gn],       *)
  
positive.code:   fun (asl,w) ->
      try let l,r = dest_eq w in
          let lv,lb = dest_abs l
          and rv,rb = dest_abs r in
          let avoids = itlist (union o thm_frees o snd) asl (frees w) in
          let v = mk_primed_var avoids lv in
          null_meta,[asl,mk_eq(vsubst[v,lv] lb,vsubst[v,rv] rb)],
          fun i [th] -> let ath = ABS v th in
  
negative.code: (* ------------------------------------------------------------------------- *)
  
  let (CONV_TAC: conv -> tactic) =
    let t_tm = parse_term "T" in
    fun conv ((asl,w) as g) ->
      let th = conv w in
      let tm = concl th in
  