anchor.diff:          let a = mkFreeV aa in
           let x = mkFreeV xx in
           let y = mkFreeV yy in
  -        let valid = mkApp("Valid", [mkApp(eq2, [a;x;y])]) in
  -        [Term.Assume(mkForall([[valid]], [aa;xx;yy], mkIff(mkEq(x, y), valid)), Some "Eq2 interpretation", "eq2-interp")] in
  +        let eq2_x_y = mkApp(eq2, [a;x;y]) in
  +        let valid = mkApp("Valid", [eq2_x_y]) in
  +        [Term.Assume(mkForall([[eq2_x_y]], [aa;xx;yy], mkIff(mkEq(x, y), valid)), Some "Eq2 interpretation", "eq2-interp")] in
       let mk_eq3_interp : env -> string -> term -> decls_t = fun env eq3 tt ->
           let aa = ("a", Term_sort) in
           let bb = ("b", Term_sort) in
  
positive.code:         let a = mkFreeV aa in
          let b = mkFreeV bb in
          let x = mkFreeV xx in
          let valid = mkApp("Valid", [mkApp(for_some, [a;b])]) in
          let valid_b_x = mkApp("Valid", [mk_ApplyTT b x]) in
          [Term.Assume(mkForall([[valid]], [aa;bb], mkIff(mkExists([[mk_HasTypeZ x a]], [xx], mkImp(mk_HasTypeZ x a, valid_b_x)), valid)),
                       Some "exists interpretation",
                       "exists-interp")] in
     let mk_range_interp : env -> string -> term -> decls_t = fun env range tt ->
  
negative.code:         let a = mkFreeV aa in
          let b = mkFreeV bb in
          let x = mkFreeV xx in
          let l_forall_a_b = mkApp(for_all, [a;b]) in
          let valid = mkApp("Valid", [l_forall_a_b]) in
          let valid_b_x = mkApp("Valid", [mk_ApplyTT b x]) in
          [Term.Assume(mkForall([[l_forall_a_b]], [aa;bb], mkIff(mkForall([[mk_HasTypeZ x a]], [xx], mkImp(mk_HasTypeZ x a, valid_b_x)), valid)),
                       Some "forall interpretation",
                       "forall-interp")] in
      let mk_exists_interp : env -> string -> term -> decls_t = fun env for_some tt ->
  