feat (report): Progress on report.

This commit is contained in:
Henri Saudubray 2025-08-16 18:16:20 +02:00
parent 36806f9af5
commit 5d40900390
Signed by: hms
GPG key ID: 7065F57ED8856128
7 changed files with 3019 additions and 189 deletions

View file

@ -1,3 +1,25 @@
License Exception for "alphanumeric.csl"
The "alphanumeric.csl" file located in the "doc/" directory of this project
is sourced from an external repository and is subject to different
licensing terms. Specifically, this file is released under the CREATIVE
COMMONS ATTRIBUTION-SHAREALIKE 3.0 UNPORTED license.
Conditions for Use:
* Attribution: Any software using the "alphanumeric.csl" file must
include a clear mention of the CSL project and a link to
[https://citationstyles.org/].
* Redistribution: When redistributing the "alphanumeric.csl" file,
the listings of authors and contributors in the style metadata must
be preserved as is.
This exception applies solely to the "alphanumeric.csl" file and does
not affect the licensing of the rest of the project, which remains under
the CeCILL FREE SOFTWARE LICENSE AGREEMENT, Version 2.1 dated 2013-06-21,
included below.
CeCILL FREE SOFTWARE LICENSE AGREEMENT CeCILL FREE SOFTWARE LICENSE AGREEMENT

361
doc/alphanumeric.csl Normal file
View file

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="de-DE">
<info>
<title>DIN 1505-2 (alphanumeric, Deutsch) - standard superseded by ISO-690</title>
<id>http://www.zotero.org/styles/din-1505-2-alphanumeric</id>
<link href="http://www.zotero.org/styles/din-1505-2-alphanumeric" rel="self"/>
<link href="http://www.angst-vor-dem-leeren-blatt.de/docs/download/zitierrichtlinie_din_1505.pdf" rel="documentation"/>
<link href="http://www.bui.haw-hamburg.de/fileadmin/redaktion/diplom/Lorenzen__litverz.pdf" rel="documentation"/>
<link href="http://de.wikipedia.org/wiki/DIN_1505-2" rel="documentation"/>
<link href="http://forums.zotero.org/discussion/5239/1/first-letter-of-author-as-citation/" rel="documentation"/>
<author>
<name>Sven Rothe</name>
<email>mmoole@googlemail.com</email>
</author>
<contributor>
<name>Julian Onions</name>
<email>julian.onions@gmail.com</email>
</contributor>
<contributor>
<name>Sebastian Karcher</name>
</contributor>
<category citation-format="label"/>
<category field="generic-base"/>
<summary>Style following DIN 1505-2, using the alphanumeric citation keys, for other media types on additional standards
Hinweise zur Benutzung:
* Zitieren von Gesetzen:
- hier müssen manuell §, Abs und S. zur Seitenangabe beim Zitieren eingetragen werden
- im Kurzbeleg wird der Kurztitel verwendet, dafür keine Autoren eintragen!
- als Jahresangabe wird 'Datum des Inkrafttretens' herangezogen, Verwenden nur bei Verweis auf nicht z.Z. gültige Gesetze, z.B. (idF. v. 12.12.1972)
* Zitieren von Normen und Standards - nicht vollständig nach DIN 1505
- Nutzen Sie den Typ 'Bericht' - als Abhilfe, da es keinen Typ 'Standard' gibt.
- als Autor die Kurzbezeichnung inkl. Nummer und Jahr eingeben (z.B. VDI 2222-1997), Vorname leer, Jahr leer
- als Titel den ausführlichen Titel bei Bedarf (z.B. VDI Richtlinie 2222 Blatt 1 - Konstruktionsmethodik - Methodisches Entwickeln von Lösungsprinzipien)</summary>
<!-- This is just a beginning to try to have a DIN 1505 citation style,
Feel free to send me any comments, suggestions etc...
todo:
* basic media types (book, journal article, etc..)
* more media types (according DINxxx) audio video etc...
* fine tuning
* correcting errors
known bugs, help appreciated
* Abbreviations (Mitarb.) & (Hrsg. der Reihe) are missing (contributor, seriesEditor labels)
* "contributor" is not valid as a name variable , nevertheless it works but doesnt validate!
* author etc. first names should not be abbreviated
* reviewed author seems to be not available as variable (newspaper article)
* thesis type does notoffer a PLACE or FACULTY as variable!
how to show the place if it is not included in the University title!?!?
* thesis type: publisher (university), genre (type) dont seem to get through!?
-->
<!-- useful things:
non breaking space: &#160;
narrow no break space: uni202F / &#8239; - but this is not supported widely!
em dash: &#8212;
space: &#032;
tab: &#009;
-->
<updated>2012-09-27T22:06:38+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="de">
<terms>
<term name="anonymous" form="short">o.&#160;A.</term>
<term name="no date" form="short">o.&#160;J.</term>
<term name="collection-editor" form="short">Hrsg.</term>
<term name="retrieved">abgerufen am</term>
<term name="composer" form="short">Komp.</term>
<term name="composer" form="long">Komponist</term>
</terms>
</locale>
<macro name="author">
<names variable="author" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
</names>
</macro>
<macro name="author-container">
<names variable="container-author" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
</names>
</macro>
<macro name="editor">
<names variable="editor" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
<!-- needed: Label should appear as suffix to EVERY name...!-->
</names>
</macro>
<macro name="editor-collection">
<names variable="collection-editor" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
<!-- needed: Label should appear as suffix to EVERY name...!-->
</names>
</macro>
<macro name="composer">
<names variable="composer" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="long" prefix=" (" suffix=")"/>
<!-- needed: Label should appear as suffix to EVERY name...!-->
</names>
</macro>
<!-- <macro name="contributor">
<names variable=" " delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; "
delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
</names>
</macro>-->
<macro name="translator">
<names variable="translator" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<label form="short" prefix=" (" suffix=")"/>
<!-- needed: Label should appear as suffix to EVERY name...!-->
</names>
</macro>
<macro name="recipient">
<names variable="recipient" delimiter=" ; ">
<name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter=" ; " delimiter-precedes-last="always" font-variant="small-caps"/>
<!--<label form="long" prefix=" (" suffix=")"/>-->
<!-- needed: Label should appear as suffix to EVERY name...!-->
</names>
</macro>
<macro name="access">
<group>
<text term="retrieved" suffix=" "/>
<date variable="accessed">
<date-part name="year" form="long" suffix="-"/>
<date-part name="month" form="numeric-leading-zeros" suffix="-"/>
<date-part name="day" form="numeric-leading-zeros"/>
</date>
<!--<date variable="accessed" form="numeric" date-parts="year-month-day"/> // dd.mm.yyy -->
</group>
</macro>
<macro name="title">
<choose>
<if type="bill legislation" match="any">
<group delimiter=" &#8212; ">
<text variable="title-short" font-style="normal"/>
<text variable="title"/>
</group>
</if>
<else-if type="book graphic legal_case motion_picture report song" match="any">
<text variable="title" font-style="italic"/>
</else-if>
<else>
<text variable="title"/>
</else>
</choose>
</macro>
<macro name="genre">
<choose>
<if type="report thesis manuscript map" match="any">
<group>
<text variable="genre"/>
<!--<text term="number" form="short" suffix=" "/>-->
<text variable="number" prefix=" Nr. "/>
</group>
</if>
</choose>
</macro>
<macro name="volumes">
<group delimiter=" ">
<text term="volume" form="short" plural="false"/>
<number variable="volume" form="numeric"/>
<number variable="number-of-volumes" form="numeric" prefix="v. "/>
</group>
</macro>
<macro name="edition">
<choose>
<if is-numeric="edition">
<group delimiter=" ">
<number variable="edition" form="numeric" suffix=". "/>
<text term="edition" form="short" plural="false"/>
</group>
</if>
<else>
<text variable="edition" suffix="."/>
</else>
</choose>
</macro>
<macro name="pages">
<choose>
<if type="chapter paper-conference article-journal" match="any">
<label variable="page" form="short" suffix="&#160;"/>
<text variable="page"/>
</if>
</choose>
</macro>
<macro name="dimensions">
<group>
<text variable="dimensions"/>
</group>
</macro>
<macro name="medium">
<group>
<text variable="medium"/>
</group>
</macro>
<macro name="scale">
<group>
<text term="scale"/>
<text prefix=" " variable="scale"/>
</group>
</macro>
<macro name="recipient-show">
<choose>
<if type="personal_communication">
<choose>
<if variable="genre">
<text variable="genre" text-case="capitalize-first"/>
</if>
<else>
<text term="letter" text-case="capitalize-first"/>
</else>
</choose>
</if>
</choose>
<text macro="recipient" prefix=", "/>
</macro>
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="false" disambiguate-add-givenname="false" collapse="year">
<sort>
<key variable="citation-label"/>
</sort>
<layout prefix="[" suffix="]" delimiter="; ">
<group delimiter=", ">
<text variable="citation-label"/>
<group>
<label variable="locator" form="short"/>
<text variable="locator"/>
</group>
</group>
</layout>
</citation>
<bibliography et-al-min="9" et-al-use-first="8" second-field-align="flush">
<sort>
<key variable="citation-label"/>
</sort>
<layout>
<text variable="citation-label" prefix="[" suffix="] "/>
<group delimiter=" ; " suffix=":">
<text macro="author"/>
<choose>
<if type="bill book graphic legal_case legislation manuscript map motion_picture report song thesis webpage" match="any">
<!-- except type="chapter article " etc.... -->
<text macro="editor"/>
<text macro="editor-collection"/>
<text macro="composer"/>
</if>
</choose>
<!-- <text macro="contributor"/> -->
<text macro="translator"/>
</group>
<choose>
<!-- Tabelle 1 aus litverz.ps -->
<if type="bill book broadcast graphic legal_case legislation manuscript map motion_picture report song" match="any">
<text prefix=" " macro="title"/>
<text prefix=", " variable="collection-title" font-style="italic"/>
<!--Reihe-->
<text prefix=" (" macro="genre" suffix=")"/>
<text prefix=". " macro="volumes"/>
<text prefix=". " macro="edition"/>
<text prefix=". " macro="medium"/>
<text prefix=". " macro="dimensions"/>
<text prefix=". " variable="publisher-place"/>
<text prefix="&#160;: " variable="publisher"/>
<date prefix=", " variable="issued" form="numeric" date-parts="year"/>
<!-- " (1. Gesamttitel mit Zählung)"
" (2. Gesamttitel mit Zählung)" -->
<text prefix=" &#8211;&#160;" macro="scale"/>
<text prefix=". &#8212;&#160;" variable="note"/>
<text prefix=" &#8212;&#160;ISBN&#160;" variable="ISBN"/>
</if>
<!-- Tabelle 3 aus litverz.ps -->
<else-if type="chapter paper-conference" match="any">
<text prefix=" " macro="title" suffix="."/>
<text prefix=". " term="in" text-case="capitalize-all" suffix=": "/>
<!-- verfahre nach Tabelle 1... -->
<group delimiter=" ; " suffix=": ">
<text macro="author-container"/>
<text macro="editor"/>
<text macro="editor-collection"/>
</group>
<text variable="container-title" font-style="italic"/>
<text prefix=", " variable="collection-title" font-style="italic"/>
<!-- Reihe -->
<text prefix=". " macro="volumes"/>
<!-- <text prefix=" : " variable="title of volumes"/> what is this? -->
<text prefix=". " macro="edition"/>
<text prefix=". " variable="publisher-place"/>
<text prefix="&#160;: " variable="publisher"/>
<date prefix=", " variable="issued" form="numeric" date-parts="year"/>
<!-- " (1. Gesamttitel mit Zählung)"
" (2. Gesamttitel mit Zählung)" -->
<text prefix=". &#8212;&#160;" variable="note"/>
<text prefix=" &#8212;&#160;ISBN&#160;" variable="ISBN"/>
<text prefix=", " macro="pages"/>
</else-if>
<!-- Tabelle 5 aus litverz.ps - Hochschulschriften
(Diplomarbeiten, Dissertationen, Master-A., unverö. Studienarbeiten -->
<else-if type="thesis" match="any">
<text prefix=" " macro="title" font-style="italic"/>
<text prefix=". " macro="edition"/>
<text prefix=". " variable="publisher-place"/>
<text prefix=", " variable="publisher" form="long"/>
<!-- <text prefix=", " variable="faculty"/> -->
<text prefix=", " macro="genre"/>
<date prefix=", " variable="issued" form="numeric" date-parts="year"/>
<text prefix=". &#8212;&#160;" variable="note"/>
</else-if>
<else-if type="webpage post post-weblog" match="any">
<text prefix=" " macro="title" suffix=". " font-style="italic"/>
<text prefix="URL " variable="URL"/>
<text prefix=". - " macro="access"/>
<text prefix=". &#8212;&#160;" variable="container-title"/>
<text prefix=". &#8212;&#160;" variable="note"/>
</else-if>
<!-- Tabelle 2 aus litverz.ps UND -->
<!-- Tabelle 4 aus litverz.ps - Schriften von Tagungen, Konferenzen, Symposien, ...-->
<else-if type="article article-journal article-magazine article-newspaper" match="any">
<text prefix=" " variable="title"/>
<!-- " : Zusatz zum Sachtitel"
". Angabe des Teils"
" (Gesamttitelangabe)" -->
<group>
<text prefix=". " term="in" text-case="capitalize-first" suffix=": "/>
<text macro="editor" suffix=" "/>
<text variable="container-title" font-style="italic"/>
<text prefix=", " variable="collection-title" font-style="italic" suffix="."/>
<!--", unterreihe der zeitschrift/zeitung" -->
</group>
<text prefix=" " macro="volumes"/>
<text prefix=". " variable="publisher-place"/>
<text prefix=", " variable="publisher" form="long"/>
<date prefix=" (" suffix=")" variable="issued" form="numeric" date-parts="year"/>
<text prefix=", Nr.&#160;" variable="issue"/>
<text prefix=", " macro="pages"/>
<text prefix=". &#8212;&#160;" variable="note"/>
<text prefix=" &#8212;&#160;ISBN&#160;" variable="ISBN"/>
</else-if>
<!-- keiner der oben genannten fälle -->
<else>
<group suffix=".">
<text prefix=" " macro="title"/>
<text prefix=", " macro="editor"/>
<text prefix=". " macro="recipient-show"/>
</group>
<group prefix=" " suffix=".">
<text variable="container-title" font-style="italic"/>
<group prefix=", ">
<text variable="volume" font-style="italic"/>
<text variable="issue" prefix="(" suffix=")"/>
</group>
<text prefix=", " macro="pages"/>
</group>
</else>
</choose>
</layout>
</bibliography>
</style>

1001
doc/data/sincos_discrete.csv Normal file

File diff suppressed because it is too large Load diff

228
doc/remarques.typ Normal file
View file

@ -0,0 +1,228 @@
La phrase "it is less computationally intensive... the compiler". est mal dite;
tu peux dire que c'est la methode classique, par exemple, implementee pour
simulink et aussi Zelus.
Rmq:
- Les methodes numeriques (centralisees) les premieres ont ete faites
pour resoudre un probleme initial. dx/dt = f (x(t)) t et x(0) = x0 ou x est un
vecteur.
- La "simulation distribuee" (cad faisant intervenir plusieurs solveurs)
existe aussi mais pose d'autres problemes: efficacite, convergence. Elle est
plus difficile a implementer.
- Sundials CVODE a une methode centralisee mais avec une implementation de
manipulation des vecteurs qui peut etre parallele, cad que tous les calculs de
vecteur/matrice peuvent se faire en parallele. On ne l'utilise pas dans Zelus.
p2.
"we cannot necessarily use "pre"...": a mon avis, le lecteur ne peut pas
comprendre ce que tu ecris ici. A mon avis, tu peux dire ce qui marche (si je ne
me trompe pas, pouvoir internaliser le solveur au modele et donc le composer
avec un observateur qui contient son propre solveur) et ce qui est a faire (si
je comprends, pouvoir ecrire directement assert dans le code et la compilation
pour pouvoir co-simuler le modele et ses differents observateurs/assertions.
Pour le "pre", c'est un point que tu peux mentionner plus loin dans le rapport
lorsque le lecteur a plus de contexte et de matiere sur ce que tu as fait.
Il n'y a pas de numero en bas des pages dans ton texte. Il en faut. Impossible
de savoir ou on est sinon.
section 2. Tu parles de streams (Nat -> V) alors que tu donnes une semantique
avec des etats. C'est bizarre. Tu ecris pre(s) alors que l'on ne sait pas ce que
c'est. le
```ocaml
let rec (o, s) = M.f_step(i, M.s0 -> pre(s))
```
n'est pas du caml valide.
Que veux-tu dire ? Quel est le type de Simulate(M) ? Je pensais (cf. page
d'apres) que tu voudrais ecrire:
```ocaml
simulate(M): list(I) -> list(O)
```
Le listing 1 ne correspond pas a la page precedente (ou l'inverse). Pourquoi ?
Page d'apres (5 ?).
Je ne suis pas fan de l'exemple sincos_discrete() tel que tu l'as ecrit car il
diverge. Il laisse soupconner que l'on ne peut pas ecrire de schemas numeriques
avec des streams. C'est faux, en general.
En somme, le code listing 2 est un mauvais programme. Il y a une raison
mathematique liee a l'analyse des poles; je te montrerai a mon retour. Si tu
veux garder cet exemple de sin/cos, il faut mettre deux integrateurs differents,
un forward et un backward.
Ou alors, il faut faire un discours (plus long) pour expliquer pourquoi c'est
mieux d'ecrire la forme a temps continu, que justement, elle permet de ne pas se
casser la tete pour savoir ou et quand mettre un pre. Mais c'est un peu
orthogonal a ce que tu veux raconter.
Discrete models -> Discrete-time models.
Continuous models -> Continuous-time models.
Tu pourras ensuite dire que tu confonds les deux.
2.2 la raison de la divergence n'est pas la. Si tu prends un schema backward +
forward, ca ne diverge pas. Par contre, si tu prends Van der Pol en discret, pas
fixe, avec un pas trop petit ou trop petit, tu tombes sur nan. Regarde. J'avais
fait l'exemple (regarde sur le depot; ou refais le).
Rmq: sin/cos n'est pas un super exemple pour justifier l'interet de Zelus (ou du
temps continu en general) car ce systeme est lineaire. Un schema numerique pas
fixe (donc programmable directement en synchrone) marche bien. C'est plutot
quand la dynamique est compliquee, non lineaire, qu'il te faut un schema
numerique plus elabore et que l'expression directe d'un modele a temps continu
se justifie. La modelisation d'evenement en etat (zero-crossing) le justifie
aussi. Le cas classique, c'est le modele bang-bang. Tu veux detecter les
instants ou la temperature passe un seuil. Avec un modele de temps pas fixe, tu
ne peux pas.
avant de donner CNode(...), dit ce qu'est le probleme.
Qu'est ce qu'un modele M ?
```ocaml
model (i) = o where
der s = f_der i s
der o = f_out i s
```
2.3. Tu n'as pas dit/defini ce qu'etait un "initial value problem". Le faire
(sinon, on ne comprends pas).
"the integr node from Listing 2 is another example of a numerical solver
(albeit not a very good one)"
A mon avis, inutile. Que veux-tu dire que tu n'as pas deja dit (on peut calculer
une approximation de `(der(x)/dt)(t)` a des instants `n * h` (`n in Nat`) par
`(x - pre(x))/h`?
"Of particular interest is the fact that numerical ODE solvers compute
approximations sequentially. "
Ca depend. Les solveurs a memoire (dits "multi-pas"). Les solveurs sans memoire
tels que RK, non. A mon avis, tu peux commencer par exempliquer ce que calcule
un solveur: etant donne le IVP, l'objectif est de calculer une solution
[0, tmax] -> V. En pratique, il ne calcule pas toute la solution. Il calcule une
suite de solution pour [0, h0][h0, h1][h1, h2], etc. Relis l'article de
Chapoutot et al., de memoire, c'est tres bien explique. Sinon, il y a les livres
jaunes dans l'etagere de mon bureau.
"This sequential process gives way to a synchronous interpretation of an ODE
solver as a discrete node."
Qu'est-ce qu'un "discrete node" ?
IVP(Y, Y'). Aurait du arriver bien plus tot.
dy /dt (t) = f t (y(t))
y(0) = y0
donner l'horizon de temps (par defaut, +infty ?).
Je prendrais une autre lettre que "s". (on note s pour "state" en general). "o",
pour "output" ?
La notation pointee est un peu troublante (en math, on la confond avec la
multiplication. Utiliser une police ad-hoc pour h et u de sorte que s_0.u ne
soit pas ambigu.
mets des numeros de ligne dans ton texte stp. Il y a un style latex pour ca. Ou
au moins des no. de page.
"The ODE solver does not itself introduce discontinuities; the only
discontinuities in the system are those introduced by the input signal."
Avant de dire cela, tu ne parles par d'entrees. Pour le moment, ton systeme
n'est pas "hybride". C'est une ODE. Tu ne donnes pas d'hypotheses sur f. En
faut-il ? Lesquelles ?
"The simulation of a continuous-time system with an ODE solver is now itself a
synchronous node:"
c'est un point de vue. Puisque la simulation d'un modele a temps continu calcule
une suite de solutions approchees, ne pourrait-on pas la voir elle meme comme
une machine synchrone qui...
page suivante.
Plutot que Signal(V), j'utiliserais un autre nom. Tu as deja un langage qui
manipule des signaux, non ?
Superdense(V) ? En reference aux travaux de Pnueli et al. Puis Edward Lee et al.
Puis Caspi et al.
Superdence(V) = R+ -> Nat -> V avec, a cote, une fonction qui pour chaque t in
R+, donne le nombre de sauts (relire les articles; j'ai oublie le nom de cette
fonction). step(t) in Nat.
est-ce tres different de
Nat -> R+ -> V avec a cote, une fonction qui indique le temps qui s'ecoule pour
chaque n in Nat ?
Dans un des articles de Edward Lee, il explique le type des signaux pour le
temps continu. Regarde son livre (vert) sur mon etagere.
Le texte de cette page (8 ?) est un peu confus.
est-ce que les bouts de fonctions sont collees les uns aux autres ?
none a le sens de "not yet" ? Comment recolles-tu les morceaux ?
(h0, u0) (h1, u1) ... (hn, un)
est-ce equivalent a :
(h0, u0) none (h1, u1) none none (hn, un) ?
A ce stade, tu n'as pas dit ce qu'etait $italic("CNode")(I, O, S_M, S'_M)$. A
quoi ca ressemble ?
Les elements du listing 4 doivent etre donnes dans le texte en maths. Le code
caml doit etre mis aussi dans le listing 4. Je comprends bien mieux le code que
les explications ! Sois plus precis dans le texte, ca aidera a comprendre.
utiliser hmax plutot que h pour ivp. Eviter les surcharges de noms autant que
possible.
Plutot que "discrete node", utiliser "synchronous machine" ? Le terme "machine"
est un terme technique des annees 60/70. Cf. articles historiques sur les
automates et les "sequential machines". Tu peux dire, qui se caraterise par un
etat initial, une fonction step lisant une entree et produisant une sortie,
(plus une fonction reset) si tu veux.
"Since time is logical in discrete nodes". Un peu trop pedant (et obscur) a mon
avis. On manipule des suites de valeurs; il n'y a donc pas de temps reel ou
physique. Le temps est juste la succession des valeurs.
Le paragraphe "The question of discrete events..." est un peu confus. Donne un
exemple. E.g., un timer: un controleur ouvre un robinet pendant 4s; une lumiere
doit clignoter en alternant allume/eteint 1s/2s. ce sont des cas ou il y a des
evenements en temps, cad en reference a la variable t (der t = 1 init 0).
D'autres evenements ne sont pas des evenements en temps. E.g., une roue qui
tourne (e.g. volant moteur). Compter le nombre de tours de roue par seconde avec
un capteur. Le schema general est dit de "Zero-crossing". Etc. La balle qui
rebondit, etc. Tu en trouveras d'autres !
La suite est pas mal. Il faut expliquer (et possiblement donner le code, au
moins en annexe) pour 2.5, 2.6, 2.7.
Ca prend forme. Tu peux donner l'intuition de la compilation. Dans le source, on
melange les der, present, up, etc. et le compilo., apres une analyse statique
(qui va verifier des proprietes et donc rejeter certains programmes), va
produire les differentes fonctions necessaires a la simulation qui alterne des
phases d'integration (le temps ronronne) et des pas discrets (reactions
instantanees).
Super. Continue ! --Marc

File diff suppressed because it is too large Load diff

View file

@ -41,7 +41,6 @@
modelers).}, modelers).},
} }
@inbook{cit:op_sem_hyb_sys, @inbook{cit:op_sem_hyb_sys,
address = {Berlin, Heidelberg},
series = {Lecture Notes in Computer Science}, series = {Lecture Notes in Computer Science},
title = {Operational Semantics of Hybrid Systems}, title = {Operational Semantics of Hybrid Systems},
volume = {3414}, volume = {3414},
@ -128,10 +127,88 @@
author = {Alur, Rajeev and Courcoubetis, Costas and Halbwachs, Nicolas and author = {Alur, Rajeev and Courcoubetis, Costas and Halbwachs, Nicolas and
Henzinger, Thomas A and Ho, P-H and Nicollin, Xavier and Olivero, Henzinger, Thomas A and Ho, P-H and Nicollin, Xavier and Olivero,
Alfredo and Sifakis, Joseph and Yovine, Sergio}, Alfredo and Sifakis, Joseph and Yovine, Sergio},
journal = {Theoretical computer science}, journal = {Theoretical Computer Science},
volume = {138}, volume = {138},
number = {1}, number = {1},
pages = {3--34}, pages = {3--34},
year = {1995}, year = {1995},
publisher = {Elsevier}, publisher = {Elsevier},
} }
@inproceedings{cit:lustre,
title = {LUSTRE: A declarative language for programming synchronous systems},
author = {Pilaud, Daniel and Halbwachs, N and Plaice, J.A.},
booktitle = {Proceedings of the 14th Annual ACM Symposium on Principles of
Programming Languages (14th POPL 1987). ACM, New York, NY},
volume = {178},
pages = {188},
year = {1987},
organization = {Citeseer},
}
@article{cit:sundials,
title = {SUNDIALS: Suite of nonlinear and differential/algebraic equation
solvers},
author = {Hindmarsh, Alan C and Brown, Peter N and Grant, Keith E and Lee,
Steven L and Serban, Radu and Shumaker, Dan E and Woodward, Carol S
},
journal = {ACM Transactions on Mathematical Software (TOMS)},
volume = {31},
number = {3},
pages = {363--396},
year = {2005},
publisher = {ACM New York, NY, USA},
}
@inproceedings{cit:sundialsml,
title = {Sundials/ML: interfacing with numerical solvers},
author = {Bourke, Timothy and Inoue, Jun and Pouzet, Marc},
booktitle = {ACM Workshop on ML},
year = {2016},
}
@book{cit:theory_timed_io_automata,
address = {Cham},
series = {Synthesis Lectures on Distributed Computing Theory},
title = {The Theory of Timed I/O Automata},
rights = {https://www.springernature.com/gp/researchers/text-and-data-mining
},
ISBN = {978-3-031-00875-7},
url = {https://link.springer.com/10.1007/978-3-031-02003-2},
DOI = {10.1007/978-3-031-02003-2},
abstractNote = {This monograph presents the Timed Input/Output Automaton
(TIOA) modeling framework, a basic mathematical framework to
support description and analysis of timed (computing)
systems. Timed systems are systems in which desirable
correctness or performance properties of the system depend on
the timing of events, not just on the order of their
occurrence. Timed systems are employed in a wide range of
domains including communications, embedded systems, real-time
operating systems, and automated control. Many applications
involving timed systems have strong safety, reliability and
predictability requirements, which makes it important to have
methods for systematic design of systems and rigorous
analysis of timing-dependent behavior. An important feature
of the TIOA framework is its support for decomposing timed
system descriptions. In particular, the framework includes a
notion of external behavior for a timed I/O automaton, which
captures its discrete interactions with its environment. The
framework also defines what it means for one TIOA to implement
another, based on an inclusion relationship between their
external behavior sets, and defines notions of simulations,
which provide sufficient conditions for demonstrating
implementation relationships. The framework includes a
composition operation for TIOAs, which respects external
behavior, and a notion of receptiveness, which implies that a
TIOA does not block the passage of time.},
publisher = {Springer International Publishing},
author = {Kaynar, Dilsun K. and Lynch, Nancy and Segala, Roberto and
Vaandrager, Frits},
year = {2011},
collection = {Synthesis Lectures on Distributed Computing Theory},
language = {en},
}
@article{cit:illinois,
title = {Inverse interpolation, a real root of f (x)= 0},
author = {Snyder, J.N.},
journal = {University of Illinois Digital Computer Laboratory, ILLIAC I
Library Routine H1-71},
volume = {4},
year = {1953},
}

View file

@ -6,20 +6,30 @@ scope: source
contexts: contexts:
main: main:
- match: \b(let|in|where|rec|and|local)\b - match: \b(val|let|in|where|rec|and|local)\b
scope: keyword.control scope: keyword.control
- match: \b(if|then|else)\b - match: \b(if|then|else|match|with)\b
scope: keyword.control.conditional scope: keyword.control.conditional
- match: \b(hybrid|node)\b - match: \b(hybrid|node)\b
scope: keyword.control scope: keyword.control
- match: \b(up|assert|der|init|reset|last)\b - match: \b(period|up|assert|der|init|reset|present|last|fby|pre)\b
scope: entity.name.constant scope: keyword.control
- match: \b(float|int)\b
scope: entity.name.type
- match: \b[0-9]*(\.[0-9]+)?\b
scope: constant
- match: \b(true|false)\b
scope: constant
- match: '"' - match: '"'
push: string push: string
- match: \(\* - match: \(\*
push: comment push: comment