   (is (thrown? Error ((partial doubler-contract-arity1 #(* 3 %)) 5)))
   (is (thrown? Error ((partial doubler-contract-arity1 #(* 2 %)) -5))))
 
+(def doubler-contract-arity1-and-isolated-fn
+     (contract doubler 
+       [x]
+       :requires
+       pos?
+       :ensures
+       (= (* 2 x) %)))
+
+(deftest doubler-contract-arity1-and-isolated-fn-test
+  (is (= 10 ((partial doubler-contract-arity1-and-isolated-fn #(* 2 %)) 5)))
+  (is (= 10 ((partial doubler-contract-arity1-and-isolated-fn #(* 2 %)) 5)))
+  (is (thrown? Error ((partial doubler-contract-arity1-and-isolated-fn #(* 3 %)) 5)))
+  (is (thrown? Error ((partial doubler-contract-arity1-and-isolated-fn #(* 2 %)) -5))))
+
 
 (def doubler-contract-no-requires
      (contract doubler 

  (is (thrown? Error ((partial doubler-contract-no-ensures #(* 2 %)) -5))))


(deftest contract-test
  (doubler-contract-test)
  (doubler-contract-arity1-test)
  (doubler-contract-no-requires-test)
  (doubler-contract-no-ensures-test))


  (is (= 10 ((partial doubler-contract-no-requires #(* 2 %)) 5)))
  (is (= -10 ((partial doubler-contract-no-requires #(* 2 %)) -5)))
  (is (thrown? Error ((partial doubler-contract-no-requires #(* 3 %)) 5))))


(def doubler-contract-no-requires-and-isolated-fn
     (contract doubler 
       [x]
       :ensures
       pos?
       (= (* 2 x) %)))

(deftest doubler-contract-no-requires-and-isolated-fn-test
  (is (= 10 ((partial doubler-contract-no-requires-and-isolated-fn #(* 2 %)) 5)))
  (is (thrown? Error ((partial doubler-contract-no-requires-and-isolated-fn #(* 2 %)) -5)))
  (is (thrown? Error ((partial doubler-contract-no-requires-and-isolated-fn #(* 3 %)) 5))))


(def doubler-contract-no-ensures
