Mock-up html manual page
- Subject: Mock-up html manual page
- From: Stavros Macrakis
- Date: Wed, 26 Jan 2005 07:55:13 -0500
freeof(x,'('integrate(1,x,0,y))) => true OK
freeof(x,'(integrate(1,x,0,y))) => false Oops
Same thing for other verbs. Easy to correct.
Also fixes 1079508 (correctly).
Can someone else test this please?
(defun freeof (var e)
(cond ((alike1 var e) nil)
((atom e) t)
((and (not argsfreeofp) (alike1 var (caar e))) nil)
((and (or (memq (caar e) '(%product %sum %laplace
$product $sum $laplace))
(and (memq (caar e) '(%integrate $integrate))
(cdddr e))
(and (memq (caar e) '(%limit $limit)) (cddr e)))
(alike1 var (caddr e)))
(freeofl var (cdddr e)))
((memq (caar e) '(%at $at))
(cond ((not (freeofl var (hand-side (caddr e) 'r))) nil)
((not (freeofl var (hand-side (caddr e) 'l))) t)
(t (freeof var (cadr e)))))
((and (eq (caar e) 'lambda) (memq var (cdadr e))) t)
((and (eq (caar e) 'mblock) ($listp (cadr e)))
(mapand (lambda (binding)
(if (atom binding)
(eq binding var)
(and (eq (caar binding) 'msetq)
(eq (cadr binding) var))))
(cadr e)))
(argsfreeofp (freeofl var (margs e)))
(t (freeofl var (cdr e)))))