anchor.diff:  let MOD_EXISTS = 
       prove
           ((parse_term 
  -              "!m n. (?q. m = n * q) <=> if n = 0 |>THEN<| (m = 0) else (m MOD n = 0)"), 
  +              "!m n. (?q. m = n * q) <=> if n = 0 then (m = 0) else (m MOD n = 0)"), 
            REPEAT GEN_TAC
            |> THEN <| COND_CASES_TAC
            |> THEN <| ASM_REWRITE_TAC [MULT_CLAUSES]
  
positive.code: let PRE_ELIM_THM = 
      prove
          ((parse_term 
                "P(PRE n) <=> !m. n = SUC m \/ m = 0 /\ n = 0 ==> P m(parse_term @"), 
           SPEC_TAC((parse_term @"n:num"), (parse_term @"n:num"))
           |> THEN <| INDUCT_TAC
           |> THEN <| REWRITE_TAC [NOT_SUC; SUC_INJ; PRE]
  
negative.code: (* Maximum and minimum of natural numbers.                                   *)
  (* ------------------------------------------------------------------------- *)
  let MAX = 
      new_definition(parse_term @"!m n. MAX m n = if m <= n then n else m")
  
  let MIN = 
      new_definition(parse_term @"!m n. MIN m n = if m <= n then m else n")
  
  (* ------------------------------------------------------------------------- *)
  (* Step cases.                                                               *)
  