anchor.diff:              | Failure _ -> REFL tm'
       NNF_CONV
   
  -///(* ------------------------------------------------------------------------- *)
  -///(* Some common special cases.                                                *)
  -///(* ------------------------------------------------------------------------- *)
  +(* ------------------------------------------------------------------------- *)
  +(* Some common special cases.                                                *)
  +(* ------------------------------------------------------------------------- *)
   let NNF_CONV = 
       (GEN_NNF_CONV false (ALL_CONV, fun t -> REFL t, REFL(mk_neg t)) : conv)
   
   let NNFC_CONV = 
       (GEN_NNF_CONV true (ALL_CONV, fun t -> REFL t, REFL(mk_neg t)) : conv)
   
  -///(* ------------------------------------------------------------------------- *)
  -///(* Skolemize a term already in NNF (doesn't matter if it's not prenex).      *)
  -///(* ------------------------------------------------------------------------- *)
  +(* ------------------------------------------------------------------------- *)
  +(* Skolemize a term already in NNF (doesn't matter if it's not prenex).      *)
  +(* ------------------------------------------------------------------------- *)
   let SKOLEM_CONV = 
       GEN_REWRITE_CONV TOP_DEPTH_CONV 
           [EXISTS_OR_THM; LEFT_EXISTS_AND_THM; RIGHT_EXISTS_AND_THM; 
  
positive.code:         | _ -> REFL tm
      assoc
  
  ///(* ------------------------------------------------------------------------- *)
  ///(* Eliminate select terms from a goal.                                       *)
  ///(* ------------------------------------------------------------------------- *)
  let SELECT_ELIM_TAC = 
      let SELECT_ELIM_CONV = 
          let SELECT_ELIM_THM = 
  
negative.code:         TRANS th (strengthen(rand(concl th)))
      weakdnf, strongdnf
  
  (* ------------------------------------------------------------------------- *)
  (* Likewise for CNF.                                                         *)
  (* ------------------------------------------------------------------------- *)
  let WEAK_CNF_CONV, CNF_CONV = 
      let pth1 = TAUT(parse_term "a \/ (b /\ c) <=> (a \/ b) /\ (a \/ c)")
      let pth2 = TAUT(parse_term "(a /\ b) \/ c <=> (a \/ c) /\ (b \/ c)")
  