```common lisp
(cl:in-package #:sicl-arithmetic)

(defmacro incf (&environment env place &optional (delta-form 1))
  (multiple-value-bind (vars vals store-vars writer-form reader-form)
      (get-setf-expansion place env)
    (if (null vars)
	`(let (,(first store-vars) (+ ,reader-form ,delta-form))
	   ,writer-form)
	`(let* ((,(first vars) ,(first vals))
		(,(first store-vars) (+ ,reader-form ,delta-form)))
	   ,writer-form))))

(defmacro decf (&environment env place &optional (delta-form 1))
  (multiple-value-bind (vars vals store-vars writer-form reader-form)
      (get-setf-expansion place env)
    (if (null vars)
	`(let (,(first store-vars) (- ,reader-form ,delta-form))
	   ,writer-form)
	`(let* ((,(first vars) ,(first vals))
		(,(first store-vars) (- ,reader-form ,delta-form)))
	   ,writer-form))))
```

Create list of bindings for the case of a variable.
user
```common lisp
(cl:in-package #:sicl-arithmetic)

(defmacro incf (&environment env place &optional (delta-form 1))
  (multiple-value-bind (vars vals store-vars writer-form reader-form)
      (get-setf-expansion place env)
    (if (null vars)
	`(let ((,(first store-vars) (+ ,reader-form ,delta-form)))
	   ,writer-form)
	`(let* ((,(first vars) ,(first vals))
		(,(first store-vars) (+ ,reader-form ,delta-form)))
	   ,writer-form))))

(defmacro decf (&environment env place &optional (delta-form 1))
  (multiple-value-bind (vars vals store-vars writer-form reader-form)
      (get-setf-expansion place env)
    (if (null vars)
	`(let ((,(first store-vars) (- ,reader-form ,delta-form)))
	   ,writer-form)
	`(let* ((,(first vars) ,(first vals))
		(,(first store-vars) (- ,reader-form ,delta-form)))
	   ,writer-form))))
```
assistant