anchor.diff:  
   /// Internal theorem list of distinctness theorems.
   let distinctness_store = ref ["bool", TAUT(parse_term @"(T <=> F) <=> F")]
  +
   /// Internal theorem list of injectivity theorems.
   let injectivity_store = ref []
   
  
positive.code: (*     the type constructor ":sum", used internally, must have been defined. *)
  (* ------------------------------------------------------------------------- *)
  
  // CAUTION: change to bypass value restrictions
  let define_type_raw_002 = 
      let generalize_recursion_theorem = 
          let ELIM_OUTCOMBS = GEN_REWRITE_RULE TOP_DEPTH_CONV [OUTL; OUTR]
  
negative.code:         let th1 = ASSUME(Option.get <| find (fun eq -> Choice.get <| lhand eq = epred) (hyp <| Choice.get exth))
          let th2 = TRANS th1 (SUBS_CONV cdefs (Choice.get <| rand(concl <| Choice.get th1)))
          let th3 = EQ_MP (AP_THM th2 (Choice.get <| rand extm)) exth
          let th4, _ = Choice.get <| Choice.List.fold (fun acc x -> SCRUB_EQUATION x acc) (th3, []) (hyp <| Choice.get th3)
          let mkname = "_mk_" + ename
          let destname = "_dest_" + ename
          let bij1, bij2 = new_basic_type_definition ename (mkname, destname) th4
  