anchor.diff:  open FSharp.Compatibility.OCaml.Num
   
   open ExtCore.Control
  +open ExtCore.Control.Collections
   
   open NHol
   open lib
  
positive.code:          (!f x y. P f x /\ y << G f x ==> y << x) /\
           (!f x. H f x = if P f x then f(G f x) else H' f x)
           ==> ?f. !x. f x = H f x"),
    REPEAT STRIP_TAC |>THEN<| ASM_REWRITE_TAC[] |>THEN<|
    MATCH_MP_TAC WF_REC_TAIL_GENERAL |>THEN<| ASM_MESON_TAC[])
  
  let WF_REC_CASES = 
   prove ((parse_term @"!(<<) clauses.
          WF((<<):A->A->bool) /\
          ALL (\(s,t). ?P G H.
                       (!f a y. P f a /\ y << G f a ==> y << s a) /\
  
negative.code:                        (\f x. _MATCH (e f x) (c2 f x))
          ==> admissible(<<) p s
                (\f x:P. _MATCH (e f x) (_SEQPATTERN (c1 f x) (c2 f x)))"),
          REWRITE_TAC [MATCH_SEQPATTERN; ADMISSIBLE_COND])
  
  (* ------------------------------------------------------------------------- *)
  (* Superadmissible generalizations where applicable.                         *)
  