File A.rkt:
#lang racket
(provide procA (contract-out [procB (-> any/c any/c boolean?)])
(define (procA x y) (equal? x y))
(define (procB x y) (equal? x y ))
file B.rkt:
(require "A.rkt")
(procB) ; no syntax error :(
(procA) ; syntax error, as required by define2, but exported without contracts