<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox where print preview displays the noscript content */
noscript {display:none;}
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

Also see [[AdvancedOptions]]
!! Differential Galois Theory

We think that there is a misunderstanding of the word "irreducibility" which was initiated at the beginning of the previous century by E. Cartan, J. Drach, P. Painlevé, E. Picard, E. Vessiot and others. This misunderstanding is based on a confusion between prime and maximal differential ideals and a few private documents  concerning the thesis of Drach and this "story" have been presented at the end of our book "Lie Pseudogroups and Mechanics". What should be the Galois theory of ordinary/partial differential equations or simply "differential Galois theory" is described here.

!!! Algebraic Pseudogroups

At the beginning of the previous century, it became clear to a certain number of authors that a natural way towards a Galois theory for ordinary/partial differential equations or simply "differential Galois theory", was to try to add the word "differential" in front of any purely algebraic statement concerning the classical/non-differential Galois theory. This approach was followed with more or less chance by the various authors involved in these tentatives. However, if the concept of a "differential field" was already contained in the thesis of  J. Drach (1898), the concept of a "prime differential ideal" only appeared in the work of J.F. Ritt (1930). 
Most of my books have been written in order to fill up the gap between the Janet/Spencer/Goldschmidt formal theory of systems of PD equations and differential algebra.

All the authors were already using algebraic groups and pseudogroups at the beginning of the previous century along ideas dating back to S. Lie. The example of the "formal translation" for algebaic groupoids in the thesis of Drach is really astonishing in this framework both with the work on the reduction of the ~Hamilton-Jacobi equations. However, the central concept, namely that of a "Principal Homogeneous Space" or simply PHS for a group, only appeared in the beautiful 1904 prize paper by Vessiot in the "Annales de l'Ecole Normale Supérieure" (3), 21, p 9-85. Indeed, according to the three chapters of this paper, ordinary Galois theory for algebraic equations should be concerned with PHS for finite groups (permutations groups for example), Galois theory for ordinary differential equations (now called ~Picard-Vessiot theory) should be concerned with PHS for linear algebraic groups and finally differential Galois theory should be concerned with PHS for algebraic Lie pseudogroups. Nice examples were already given by Drach with the Lie pseudogroup of contact transformations and various subpseudogroups for the study of ~Hamilton-Jacobi equation and its various reductions in the framework of analytical mechanics and by Vessiot himself. While the checking of the PHS property is quite easy in the first two cases by counting the number of points or the finite dimensions of manifolds, nothing similar was known for the last case and this "anavoidable preliminary step" is one of the main results presented in our book as tests for automorphic systems in the language of Vessiot, that is systems of partial differential equations with solution space PHS for a Lie pseudogroup. However, this is not sufficient and a simple counterexample provided by E. Cartan will explain the difficulty. Indeed, though $y^4 + 4=(y^2 - 2y + 2)(y^2 + 2y + 2)=0$ defines a PHS for the group of fourth roots of unity, neither of the two irreducible components are again PHS for isomoprphic subgroups, contrary to the situation found "by chance" in the classical Galois theory. Hence additional algebra must be introduced and this is he hard part of our book.

!!! Tensor Products

The systematic use of "tensor products" was pioneered in 1961 by A. ~Bialynicki-Birula in the very beautiful but difficult paper " On Galois theory of fields with operators", Amer. J. Math., 84, 1962, 89-109.

This modern algebraic geometric approach was quoted, but not used,  by E. Kolchin in his book " Differential algebra and algebraic groups",  Academic Press, 1973. 

In my own book "Differential Galois theory", 1983, 750 pp., the use of tensor products is systematic and extended to partial differential algebra along the lines pioneered by ~Bialynicki-Birula.  I give in that book a result showing that Galois theory is nothing else  than a theory of principal homogeneous spaces (PHS) as described above and the language of tensor products is perfectly adapted for describing PHS for Lie groupoids and pseudogroups. 

!! Mathematical Physics

My book "Lie Pseudogroups and Mechanics" , which appeared in 1988 and is dedicated to the brothers E. and F. Cosserat, is explaining for the first time their 1909 book "Théorie des Corps Déformables" within the framework of the formal theory of Lie pseudogroups pioneered by D.C. Spencer around 1970. The main formulas for the first non-linear Spencer sequence already appeared on p 573 at the end of the book " Differential Galois Theory" in 1983. The comparison with the formulas exhibited on p 123 of their book in the particular case of the group of rigid motions needs no comment. Surprisingly, the formulas for the second non-linear Spencer sequence on p 583 of our book are "exactly" the ones to be found on p 190 of their book. This remark is at the origin of our work on Cosserat theory.

The basic idea, in the air at this period, was to use jet theory, in particular high order jets, in order to describe mechanical concepts in the theory of continua, in particular to understand the so-called " Cosserat media" introduced at the beginning of the previous century. However, only the systematic use of groupoids instead of principal bundles may allow to recover the above results (see comment on p 575 of the 1983 book or Remark 2.3 on p 229 of the 1988 book).

We finally notice that the compatibility conditions expressed by the second operator in the non-linear Spencer sequence are again "exactly" the ones to be found on p 392 of the "Note sur la cinématique d'un milieu continu" by E. and F. Cosserat at the end of the book "Leçons de cinématique" written by G. Koenigs in 1897 within the well known moving frame technique of G. Darboux. It is important to stress out that these conditions are first order contrary to the second order ones for the deformation tensor appearing in the non-linear Janet sequence of classical elasticity ( for more details, see Example 19 "Killing equations" on p 163-171 of our 1988 book).

!! Partial Differential Control Theory

!!! Parametrization:
It is well known in classical (OD) control theory that a linear control system is controllable if and only if t is "parametrizable" that is its solution space can be described by expressing the control system unknowns as linear combinations of a certain (!) number of potential-like "arbitrary functions " and their derivatives up to a certain (!) order. 
Though a similar situation is known in electromagnetism with the potential/field or the pseudo-potential/induction description and in classical elasticity with the Airy function for stress, counterexamples were known or suggested (see "Einstein equations" in the publications).
Many results with numerous illustrations appeared in the following papers 
* J.-F. Pommaret, A. Quadrat: Generalized Bezout identities, AAECC, 9, 2, 1998, 91-116 where Bezout identity and parametrization are explained in terms of properties of operators and modules. 
* J.-F. Pommaret, A. Quadrat: Localization and parametrization of linear multidimensional control systems, Systems and Control letters, 37, 1999, 247-260.  The title is clear enough and Theorem 7 describes the injective parametrization in the 1-D case.
* Kluwer 1994 where the parametrization algorithm is given and illustrated in chapter VII.
* Kluwer 2001 where the underlying homological algebraic origin of the previous test is exhibited ... and illustrated.
* Thesis of A. Quadrat (1999).

Contructing such a parametrization in general was one of the purposes of the ERCIM and CTS european courses. 

!!! Algebraic Analysis:

The definition of "strong controllability" and control  theoretic motivation is developed in my book "Partial Differential Control Theory",  Kluwer, 2001 and illustrated, even in the variable coefficient case, on p 659-670.  

Roughly, a system is strongly controllable if the system /operator is controllable (=MLA) and its formal adjoint is also controllable (=MRA), where, by controllable, I understand that it admits a parametrization (the corresponding differential module is torsion-free). (Remark: in the constant coefficient case left and right modules need  not be distinguished).

For example, with 3 independent variables, the curl operator is parametrized by the grad operator while its formal adjoint is again the curl up to sign.

!!! Duality 

Duality theory is well known by engineers under the equivalent names of "Stokes formula", "integration by part", "adjoint operator", ... in any theory depending on the ~Euler-Lagrange equations of a variational calculus. As a byproduct, thanks to "finite elements" technique, it is in the heart of any application needing the knowledge of deformation (buildings, bridges, planes,...), gradient of temperature (heating systems,nuclear plants,...) and electromagnetic field (antennas, particle accelerators,...).

What is less known is its fundamental importance in homological algebra through diagram chasing techniques and extension modules. More precisely, if for engineers the integration of the single second order OD equation $\ddot{y}=0$ amounts to the integration of the dynamical system ${\dot{y}}^1-y^2=0, {\dot{y}}^2=0$, the problem of people in homological algebra was to look for properties of (differential) modules not depending on their "presentation" through (differential) resolutions/sequences. Accordingly, it is "highly not" evident "a priori" that the "necessary solution" of this problem, apart from delicate chases in complicated diagrams, should involve duality theory ... in the previous sense, pointing out therefore the importance of the (formal) adjoint to any OD/PD differential operator. As a basic example, the famous 1969 Kalman test for the controllability of a control system in Kalman form (first order OD system, no zero order equation, no derivative of the input) is equivalent to the injectivity of the formal adjoint of this system.

Our aim has been to establish a link between the quite abstract framework of homological algebra (modules), the formal theory of OD/PD equations (systems) and the standard approach (operators), each way providing a different view on most results. However it is important to notice that, though both the formal theory of PD equations and homological algebra are difficult domains "by themselves", their combination, now called "Algebraic Analysis", is of course even more difficult for anybody looking for applications. As a byproduct, the above quoted "necessary results" of homological algebra allow to establish a link between theories whenever they are founded on different differential sequences providing resolutions of the same module. This is particularly not evident when comparing classical elasticity (Janet sequence), Cosserat elasticity (Spencer sequence) and gauge theory/fluid mechanics (gauge sequence), even though the last two sequences may be isomorphic (see chapter 5, section 3 of the 2001 book or the paper "Arnold hydrodynamics revisited").

According to these results, Cosserat theory is just dealing with the first two (first order) operators of the Spencer sequence (parametrization of the fields and their compatibility conditions) and their (first order) formal adjoints (parametrization of the stress/couple-stress by means of $n^2(n^2-1)/4$ arbitrary functions and their compatibility conditions) in the linear framework of the Killing equations for the euclidean metric in n-dimensional space. The extension to 4-dimensional space-time and to the conformal Killing equations therefore brings "bigger" Spencer bundles, thus "more" fields,  and allows to unify elasticity (E. and F. Cosserat), heat (G. Lippmann, E. Mach) and electromagnetism (H. Weyl). Such a result explains in a structural way the well known analogy existing between the corresponding finite elements computations which is always presented by engineers as a pure coincidence. In this framework, it is "highly not evident" that using the Janet sequence brings second order compatibility conditions for the deformation while the corresponding formal adjoint is nothing else than ... the second order Airy parametrization for the stress by means of $n^2(n^2-1)/12$ arbitrary functions !.

Contributions on duality for Partial Differential Equations can be found in the books:
* Partial Differential Equations and Group Theory, J.-F. Pommaret, Kluwer, 1994, in particular Chapter VII  Control theory. 
* Partial Differential Control Theory, Kluwer 2001.
|''Description:''|Support for cryptographic functions|
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//-- Crypto functions and associated conversion routines

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
	return be;

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
	return Crypto.be32sToHex(Crypto.sha1Str(str));

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
		return (n>>>31)|(n<<1);

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	return Array(h0,h1,h2,h3,h4);

* Birth:  27/05/1945, Paris 3°
* Actual administrative position: retired as Emeritus Researcher of ENPC in june 2006.
* Last administrative position: Ingénieur Général des Ponts et Chaussées (General Civil Engineer), échelon 3, chevron D 3. 
* Last status: Research and teaching position at ENPC.
* Secondary studies: Lycée Claude Bernard (Paris 16°), Lycée louis le Grand (Paris 5°).
* 1961-1962: Baccalauréat math (mention bien).
* Concours Général: first accessit of mathematics (1961); first accessit of mathematics again + eighth accessit of physics (1962) (such a triplet is very rare !).
* 1964-1966: Student at Ecole Polytechnique.
* 1966-1967:Military period + License of physics (Paris university).
* 1967-1969: Student at Ecole Nationale des Ponts et Chaussée (ENPC) + Diplôme d'Etudes Approfondies (DEA, mention trés bien) + Detached position at the Center of Theoretical Physics of Ecole Polytechnique.
* 1969-1970: Visiting student in USA with Prof. D.C. Spencer (Princeton university) + solo round the world trip (New york to Punta Arenas by bus, Easter island, Papeete, Honolulu, Tokyo, Hong Kong, Djakarta, Singapour, Calcutta, Katmandou, New Delhi, Kaboul, Ispahan,Teheran, Paris).
* 1972: Third cycle Doctorate in mathematics (mention trés honorable) published under the title " Etude interne des systèmes d'équations aux dérivées partielles"  in Ann. Inst. Henri Poincaré, XVII, 2, 1972, 131-158 + Detached position at Collège de France (chaire A. Lichnerowicz).
* 1973-1978: Preparing a State Doctorate thesis under the supervising of A. Lichnerowicz + Assistant of physics at ENPC + Assistant of mechanics at Ecole Nationale des Travaux Publics de l'Etat (ENTPE, Lyon).
* 1978: Publication of the book "  Systems of  Partial Differential Equations and Lie Pseudogroups"  (Gordon and Breach, 410 pp) partially used in the State Doctorate thesis (mention trés honorable) under the title " Théorie Locale des Pseudogroupes de Lie" .
* 1980: Research and teaching position at ENPC + maitre de conférences in physics at ENPC and mechanics at ENTPE.
* 1983: Translation of the preceding book by A.M. Vinogradov (Moscow university) and successfull publication by MIR (Moscow) + Publication of an exhaustive book as a natural continuation of the preceding one under the title " Differential Galois Theory"  (Gordon and Breach, 760 pp).
* 1983-1987: Running fundamental research activities in pure mathematics (partial differential equations, Lie pseudogroups, differential algebra), theoretical physics (gauge theory, general relativity) and theoretical mechanics (foundation of continuum mechanics and thermodynamics).
* 1988: Publication of a synthesis of the results previously obtained in the applications of the formal heory of systems of partial differential equations and Lie pseudogroups to theoretical physics and mechanics in a third book " Lie Pseudogroups and Mechanics"  (Gordon and Breach, 600 pp).
* 1989-1994: Applications of these new mathematical methods in Control Theory in order to revisit the basic concepts and extend them to multidimensional systems with variable coefficients while emphasizing the use of computer algebra techniques + Presentation of these results in a series of sixth consecutive intensive ERCIM (European Research Consortium for Informatics and Mathematics) european courses given through the main european applied research institutes (INRIA, Rocquencourt = 3 times, GMD, Bonn = 2 times, CWI, Amsterdam = 1 time) + Publication of this course in book form under the title " Partial Differential Equations and Group Theory: New perspectives for applications"  (Kluwer, 1994, 473 pp).
* 1995-2000: Original use of homological algebra and differential modules in the " Algebraic Analysis"  of control systems defined by systems of partial differential equations, along lines pioneered around 1970 by the pure mathematicians V.P. Palamodov, M. Kashiwara and B. Malgrange in the study of differential modules + Numerous publications in international journals with a ~PhD student (Alban Quadrat, thesis presented on 29/9/1999) + Preparation of a book on these topics.
* 2001-2006: Publication of the book " Partial Differential Control Theory"  (Kluwer, 2001, 1000 pp) + Presentation of these results in a series of one week intensive european courses (Control Training site at  http://www.supelec.fr/lss/CTS) (2002, 2003, 2004, 2005). This course now appears as chapter V of the book " Advanced Topics in Control System Theory" , Springer Lecture Notes in Control and Information Sciences 311, ppp 155-224 (spring 2005, Springer) under the title " Algebraic Analysis of Control Systems Defined by Partial Differential equations ".


|''Description:''|Support for deprecated functions removed from core|
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//-- Deprecated code

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
			text = text.replace(/\n/g,"\r");
		w.nextMatch = lookaheadRegExp.lastIndex;

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
	var i = this.indexOf(item);
	return i == -1 ? null : i;

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
	return store.getLoader().internalizeTiddler(store,this,title,divRef);

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
	return store.getSaver().externalizeTiddler(store,this);

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
	return store.allTiddlersAsHtml();

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

;~Jean-François  Pommaret
* TEL  33 (0)1 64 15 35 72
* FAX  33 (0)1 64 15 35 86
* ~E-MAIL:  pommaret@cermics.enpc.fr , jfpommaret@yahoo.fr , jean-francois.pommaret@wanadoo.fr
; Cermics
:    [[CERMICS/ENPC|http://cermics.enpc.fr]]  
:    6/8 Av  Blaise  Pascal, 
:    Cité Descartes - Champs sur Marne, 
:    77 455 Marne la Vallée Cedex 2, FRANCE

|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Date:''|Jul 21, 2006|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|

// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify

} //# end of "install only once"
[[Curiculum Vitae]]
[[Research Axes]]
[[Selected Reviews]]
[[Tiddlywiki|http://tiddlywiki.com]] <<version>>
* 150 publications in international journals
* 5 books published by international editors:
** Systems of Partial Differential Equations and Lie Pseudogroups (Gordon and Breach, 1978) (Russian translation by MIR, Moscow, 1983)
** Differential Galois Theory (Gordon and Breach, 1983)
** Lie Pseudogroups and Mechanics (Gordon and Breach, 1988)
** Partial Differential Equations and Group Theory: new perspectives for applications (Kluwer, 1994)
** Partial Differential Control Theory (Kluwer, 2001, 2 tomes)

This last book, which appeared in july 2001, extends control theory from ordinary differential equations to partial differential equations, by using the methods of "algebraic analysis".

Algebraic analysis, that is the algebraic study of systems of partial differential equations by means of module theory and homological algebra, has been pioneered around 1970 by M. Kashiwara, B. Malgrange and V.P. Palamodov. The theory of differential modules, namely modules over a noncommutative ring of differential operators, is a fashionable subject of research today. However, despite its fundamental importance in mathematics, it can only be found in hard to read books or papers and has only been applied to control theory after the work done in 1990 by U. Oberst.

This book provides for the first time a self-contained and exhaustive account of algebraic analysis and its application to control systems defined by systems of partial differential equations. The first volume presents the mathematical tools needed from both commutative algebra, homological algebra, differential geometry and differential algebra. The second volume applies these new methods in order to study the structural and input/output properties of both linear and nonlinear control systems. Hundreds of explicit examples allow the reader to mature these topics.

The book is written at a graduate level and is intended for researchers in mathematics, mathematical physics, computer algebra, control theory and theoretical mechanics.

The [[introduction|http://cermics.enpc.fr/%7Epommaret/intro.ps]] of this book ([[Reviewed here|http://cermics.enpc.fr/%7Epommaret/zmath.pdf]]) is presenting and illustrating in a self-contained way the main results of the book. In particular, it is shown that, contrary to a well established engineering tradition, the controllability of a control system does not depend on the choice of inputs and outputs among the control variables and just amounts to the vanishing of a certain extension module in the framework of homological algebra.

For a more technical insight,  please refer to the following selected publications: 

* [[François Cosserat et le secret de la théorie mathématique de l'élasticité|SECRET8-joined.pdf]], Annales des Ponts et Chaussées, 82, 1997, 59-66 (in french).
* IMA Journal of Mathematical Control & Information, 16, (1999), 275-297. 
* Acta Mechanica, 149,  (2001),  23-39. 
* http://www.emis.de/proceedings/6ICDGA Proceedings European Control Conference ECC 01, Porto, Portugal. 
* IMA Journal of Mathematical Control and Information, 9, (1992), 305-330. 
* Gauge Theory and General Relativity: Reports on Mathematical Physics, 3, 27, (1989), 313-344.
* [[Algebraic analysis|WSEAS2004.pdf]]
* [[Group coupling|ACTA.pdf]]
* [[Einstein equations|Einstein.pdf]]
* [[Bose conjecture|../latex/ECC4399.pdf]]
* [[Grobner bases|GROBNER.pdf]]
* [[Arnold's hydrodynamics revisited|http://hal.archives-ouvertes.fr/hal-00363271/fr/]]
** [[The Arabian Journal for Science and Engineering, Volume 34, Number 1, May 2009, art 13|http://ajse-mathematics.kfupm.edu.sa/Old/May2009.asp]]
* [[Parametrization of Cosserat Equations|http://hal.archives-ouvertes.fr/hal-00363807/fr/]]
** [[Acta Mechanica, online Avril 2010|http://dx.doi.org/10.1007/s00707-010-0292-y]]
* [[Macaulay inverse systems revisited|http://hal.archives-ouvertes.fr/hal-00361230/fr/]]. Journal of Symbolic Computations, 46 (2011) 1049-1069
* [[CTS|CTS.pdf]]
* [[Spencer Operator and Applications: From Continuum Mechanics to Mathematical Physics|http://www.intechopen.com/books/continuum-mechanics-progress-in-fundamentals-and-engineering-applications/spencer-operator-and-applications-from-continuum-mechanics-to-mathematical-physics]] Continuum Mechanics - Progress in Fundamentals and Engineering Applications, Dr. Yong Gan (Ed.), ISBN: 978-953-51-0447-6, InTech. 

One may also look at chapter V of the recently published book: Advanced Topics in Control Systems Theory, Lecture Notes from FAP 2004, F. ~Lamnabhi-Lagarrigue, A. Loria, E. Panteley Editors, Lecture Notes in Control and Information Sciences LNCIS 311, Springer,  2005, 280 pp. This chapter presents the material taught within a one week intensive european course under the title " Algebraic Analysis of Control Systems Defined by Partial Differential Equations ".
[img[pommaret3.png]] [img[pommaret1.png]][img[pommaret2.png]]
* Control theory and its generalizations
* Foundations of continuum mechanics and thermodynamics
* Foundations of theoretical physics (gauge theory, general relativity,...)
* Formal calculus for partial differential equations
* Variational calculus with constraints
* Field/matter couplings (elasticity, electromagnétism, gravitation,...)
* [[Math Reviews 81f:58046|REVIEWS.pdf/Math-Reviews-81f-58046.pdf]]  
* [[Math Reviews 90e:58166|REVIEWS.pdf/Math-Reviews-90e-58166.pdf]]
* [[Symmetry|REVIEWS.pdf/Symmetry.pdf]] 
* zbl 401.5806
* zbl 489.22021
* [[zbl 1079.93001|REVIEWS.pdf/zbl-1079.93001.pdf]]
Page personnelle de ~Jean-François Pommaret
|''Description:''|Sparklines macro|
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//-- Sparklines

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
	if(data.length < 1)
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";