caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Diego Olivier Fernandez Pons <Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr>
To: Christophe Raffalli <Christophe.Raffalli@univ-savoie.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] égalité physique (==) avec Pervasives.(+)
Date: Wed, 8 Jan 2003 18:34:17 +0100 (NFT)	[thread overview]
Message-ID: <Pine.A41.4.44.0301081813050.5349512-100000@ibm1.cicrp.jussieu.fr> (raw)
In-Reply-To: <3E1AE703.8020001@univ-savoie.fr>

    Bonjour,

On Tue, 7 Jan 2003, Christophe Raffalli wrote

> Même l'orsqu'il s'agit d'une optimisation, il est important d'être
> sur qu'elle remplit son usage ! (même si le programme marche quel
> que soit le résultat de ==)

C'est une remarque fort juste au demeurant !

Un des problèmes des solveurs de contraintes est la nécessité de
manipulation de fonctions sous deux formes :

- une forme explicite pour la propagation de contraintes

let f = fun x y -> x + y < 10 && 0 < x + y

si vous avez des bornes sur y, vous pouvez en déduire des bornes sur
x, mais pour ce faire il faut pouvoir 'traverser' f

- une forme 'compilée' pour l'énumération exhaustive

si vous avez épuisé toutes l'information dont vous disposiez, il ne
reste pas d'autre solution que d'essayer tous les couples (x, y) avec
un mécanisme de retour en arrière.

La librairie FaCiLe a choisi une forme explicite pour la propagation
(sous forme de syntaxe abstraite que l'on construit lors de la
déclarations de contraintes) et une fonction d'évaluation (donc assez
lente) pour la recherche.

Si je suppose résolue la question de la compilation à la volée
de fonctions (par exemple Dynamic Caml), on peut essayer un compromis
par une double représentation des fonctions

f = (f_abstraite, f_compilée)

Seulement, pour permuter de représentation selon les besoins, je ne
vois pas d'autre solution que :
- hacher la représentation courante (par exemple f_compilée)
- aller chercher la valeur dans une table (clé, g_abstraite,
g_compilée)
- vérifier l'égalité physique g_compilée == f_compilée
- en déduire que g_abstraite est bien une représentation abstraite de
la fonction voulue.

(ou bien une solution plus ou moins équivalente)

Je suis tout à fait d'accord sur le fait que l'égalité physique n'est
pas la panacée, mais je n'ai pas vraiment d'autre solution à proposer.

Et il y a bien sûr toujours le problème des applications partielles,
et je n'ai aucun moyen de prouver la correction du code, et je n'ai
aucune garantie sur la stabilité du code dans les futures versions, et
je ne sais même pas si cette optimisation remplit son usage...

Cela dit, mon courrier précédent n'était qu'une tentative de
résolution partielle du problème.

        Diego Olivier

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


      parent reply	other threads:[~2003-01-08 17:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-06 17:58 Diego Olivier Fernandez Pons
2003-01-07 14:41 ` Christophe Raffalli
2003-01-08 16:51   ` Florian Hars
2003-01-08 17:34   ` Diego Olivier Fernandez Pons [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.A41.4.44.0301081813050.5349512-100000@ibm1.cicrp.jussieu.fr \
    --to=diego-olivier.fernandez-pons@cicrp.jussieu.fr \
    --cc=Christophe.Raffalli@univ-savoie.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).