anchor.diff:  let applyd =
     let rec apply_listd l d x =
       match l with
  -      (a,b)::t -> let c = Pervasives.compare x a in
  +      (a,b)::t -> let c = compare x a in
                     if c = 0 then b else if c > 0 then apply_listd t d x else d x
       | [] -> d x in
     fun f d x ->
  
positive.code:   let rec ind n l =
      match l with
        [] -> failwith "index"
      | (h::t) -> if Pervasives.compare x h = 0 then n else ind (n + 1) t in
    ind 0;;
  
  (* ------------------------------------------------------------------------- *)
  
negative.code: 
  let rec assoc a l =
    match l with
      (x,y)::t -> if compare x a = 0 then y else assoc a t
    | [] -> failwith "find";;
  
  let rec rev_assoc a l =
    match l with
      (x,y)::t -> if compare y a = 0 then x else rev_assoc a t
    | [] -> failwith "find";;
  
  (* ------------------------------------------------------------------------- *)
  