kill(all)$

maxima:fvm:appendix:updintegrate function build for differential inside the differential ,version 1.0
peter.vlasschaert@gmail.com, 11/11/2022

load packages ,option 
----------------------------

load(lrats)$ ratprint : false$

1e) model : differential

p1:'diff(u*a*k*'diff(Φ,x,2),x);

→ constant : term under differential

s1:[k,a];

s1a:setify(s1);

→ find out : differential

p1a:part(p1,0);

→ find out : inside differential

p1b:args(p1);

p1c:args(p1b[1]);

p1ca:setify(p1c);

=> integration :
--------------------------------------------------------------------------------
variable :p1b[2]
order     : 1          →  different ≠ 1 , more than one integration
--------------------------------------------------------------------------------

function (1)
=========

complement(intersection) = setdifference
-------------------------------------------------------
-----------------------------------------------------------------------
1e)  set1 > set2  → setdifference(set1,set2)  :result =set
2e)  listify(setdifference(set1,set2))               :result =list
-----------------------------------------------------------------------
rem : setdifference works only for sets

both : set
-------------
set(p1ca) >  set(s1a)

s2a:listify(setdifference(p1ca,s1a));

both : list
-------------
list(p1c) >  list(s1)

s2b:listify(setdifference(setify(p1c),setify(s1)));

function : (2)
==========
where is : second differential in list(s2b)

s3:makelist(atom(s2b[i]),i,1,length(s2b));

if : false → differential,position

s3a:makelist( if s3[i] = false then n:i ,i,1,2);

n;

-----------------------------------------------------------------------------------------------

other : example
---------------------

s4:[y,yy,'diff(Φ,x,3),yyy];

s4a:makelist(atom(s4[i]),i,1,length(s4));

s4b:makelist( if s4a[i] = false then nn:i ,i,1,length(s4a));

nn;

---------------------------------------------------------------------------------------------------

function (3):
=========
delete : differential list "s4 or s2b"

→ example : s2b

s3b1:delete(s2b[n],s2b);

→ example : s4

sb2:delete(s4[nn],s4);

function(4):
========

sb5a:makelist(subst([tt=s3b1[i]],tt(x)),i,1,length(s3b1));

sb5b:makelist(subst([tt=sb2[i]],tt(x)),i,1,length(sb2));

sb5b1:product(sb5b[i],i,1,length(sb5b));

rem :→ at function 

---------------------------------------------------------------------------------

sy:at(diff(Φ(x),x,2),[x=x]);

---------------------------------------------------------------------------------

function (5).
=========
s2b,s4

see above : n "integer"

sb6a:s2b[n];

sb6a1:args(sb6a);

sb6a2:sb6a1[1](sb6a1[2]);

sb6a3:at(subst([sb6a1[1]=sb6a2],sb6a),[x=z]);

sb6a4:subst([z=e],sb6a3);

function (6).
=========

sb7:at(sb5b1,[x=e]);

function (7):
=========

sb8:sb7*(sb6a4);

-------------------------------------------------------------------------------------------------------