Sei $\mathcal{M}\subseteq\mathbb{R}^n$ offen. Die von den Vektorfeldern $f_1,\ldots,f_r:\mathcal{M}\to\mathbb{R}^n$ aufgespannte Distribution

\[\Delta=\operatorname{span} \lbrace f_1,\ldots,f_r \rbrace\]

wird auf Involutivität überprüft.

Berechnung mit Maxima

Die die Distribution aufspannenden Vektorfelder sind als Liste zu übergeben,

Involutivep(L,x):=block([F,G,i,j,r],
    r:length(L),
    F:apply('matrix,L),
    F:transpose(F),
    G:copy(F),  
    for i:1 thru r do 
        for j:i+1 thru r do block([f1,f2],
            f1:list_matrix_entries(col(F,i)),
            f2:list_matrix_entries(col(F,j)),
            G:addcol(G,LieBracket(f1,f2,x))
    ),
    is(rank(F)=rank(G))
)$

Aufruf:

Involutivep([f1,...,fr],x)

Klaus Röbenack: Nichtlineare Regelungssysteme - Theorie und Anwendung der exakten Linearisierung.
Springer Vieweg, 2017, S. 84, Algorithmus 3.4.