how to detect op integrate with intersect or lfreeof or??
Subject: how to detect op integrate with intersect or lfreeof or??
From: Edwin Woollett
Date: Wed, 2 Nov 2011 11:34:07 -0700
How can I detect the op integrate using either
intersect or lfreeof or ...?
I am using Stavros Macrakis' code for listofops
below:
------------------
(%i1) display2d:false$
(%i2) listofops(expr) := block([inflag:true], if mapatom(expr) then {} else
adjoin(op(expr),xreduce(union,maplist(listofops,expr))))$
(%i3) rr : integrate(cos(log(x)/x)/x,x);
(%o3) 'integrate(cos(log(x)/x)/x,x)
(%i4) lop_rr : listofops(rr);
(%o4) {"*","^",cos,integrate,log}
(%i5) intersect(lop_rr, {cos});
(%o5) {cos}
(%i6) intersect(lop_rr, {integrate});
(%o6) {}
(%i7) ll : listify (lop_rr);
(%o7) ["*","^",cos,integrate,log]
(%i8) lfreeof(ll,cos);
(%o8) false
(%i9) lfreeof(ll,integrate);
(%o9) true
-------------------
I have not been successful in using code like:
--------------------------
vx : apply ('integrate,[ue,uvar]),
vxop : op(vx),
if vxop # integrate then (
if ua = minf then
vxa : limit (vx,uvar,minf,plus)
else vxa : subst(ua,uvar,vx),
etc., etc.
----------------
which can be illustrated interactively here:
-----------------
(%i10) rrop : op(rr);
(%o10) integrate
(%i11) if rrop # integrate then print("rrop # integrate");
rrop # integrate
(%o11) "rrop # integrate"
-------------------------
so I am looking for some reliable method of doing something
in the code when the noun form in ***not*** returned from
integrate (expr,var).
Ted Woollett