• Aucun résultat trouvé

Détection des fonctions de rang linéaires à terme

N/A
N/A
Protected

Academic year: 2021

Partager "Détection des fonctions de rang linéaires à terme"

Copied!
10
0
0

Texte intégral

(1)

HAL Id: hal-01187205

https://hal.univ-reunion.fr/hal-01187205

Submitted on 23 Nov 2018

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Détection des fonctions de rang linéaires à terme

Anthony Alezan, Roberto Bagnara, Frédéric Mesnard, Etienne Payet

To cite this version:

Anthony Alezan, Roberto Bagnara, Frédéric Mesnard, Etienne Payet. Détection des fonctions de rang linéaires à terme. Journées Francophones de Programmation par Contraintes (JFPC 2013), Jun 2013, Aix-en-Provence, France. �hal-01187205�

(2)

Actes JFPC 2013

D´ etection des fonctions de rang lin´ eaires ` a terme

Anthony Alezan1 Roberto Bagnara2 Fred Mesnard1 Etienne Payet´ 1

1 LIM/ERIMIA, universit´e de la R´eunion, France

2 BUGSENG & Dipartimento di Matematica e Informatica, Universit`a di Parma, Italie {anthony.alezan, fred, epayet}@univ-reunion.fr bagnara@cs.unipr.it

esum´e

La terminaison des programmes est un sujet actif de recherche en informatique. Ces derni`eres ann´ees ont vu l’apparition d’analyseurs de terminaison performants pour des langages comme C ou Java o`u l’emploi des techniques et outils de la programmation par contraintes est omnipr´esent. Dans cet article, nous rappelons un al- gorithme particulier bas´e sur l’emploi du lemme de Far- kas pour le calcul de fonctions de rang lin´eaires garan- tissant la terminaison d’une certaine classe de boucles.

Puis nous pr´esentons une extension de cette m´ethode pour la d´ecouverte de fonctions lin´eaires qui deviennent des fonctions de rang lin´eaire `a terme, c.-`a-d. apr`es un certain nombre de passages dans la boucle. Nous mon- trons la correction et la compl´etude d’un algorithme po- lynomial pour ce probl`eme.

Abstract

Program termination is a hot research topic in pro- gram analysis. The last a few years have witnessed the development of termination analyzers for programming languages such as C and Java with remarkable precision and performance. These systems are largely based on techniques and tools coming from the field of constraint programming. In this paper, we first recall an algorithm based on Farkas’ Lemma for discovering linear ranking functions proving termination of a certain class of loops.

Then we propose an extension of this method for sho- wing the existence ofeventual linear ranking functions, i.e., linear functions that become ranking functions after a finite unrolling of the loop. We show correctness and completeness of this polynomial algorithm.

1 Introduction et pr´eliminaires

La terminaison des programmes est un sujet actif de recherche en informatique. Ces derni`eres ann´ees ont vu l’apparition d’analyseurs de terminaison performants pour des langages comme C [10] et Java [1, 15] o`u

l’emploi des techniques et outils de la programmation par contraintes est omnipr´esent.

Au del`a les particularit´es des langages de program- mation vis´es et apr`es plusieurs abstractions (voir par exemple [15]), l’analyse de terminaison se ram`ene `a la preuve de terminaison de boucles, dont les boucles dites SLC sont peut-ˆetre la cat´egorie la plus simple.

Pr´ecisons ce type de boucles.

Une boucle SLC (poursingle-path linear constraint [3]) sur n variables x1, . . ., xn est une boucle de la forme :

tant que(B xb) faireA x

x0

c

o`u x = (x1, . . . , xn)T et x0 = (x01, . . . , x0n)T sont des vecteurs colonnes de variables,Best une matrice dans Qp×n,bQp,AQq×2n et cQq.

Lorsque les variables sont `a valeurs dansZ(resp.Q), on parle de boucle enti`ere (resp.rationnelle). Op´era- tionnellement, de telles boucles mod´elisent le calcul suivant : on part d’un point x quelconque ; si le test B x b est faux, on sort de la boucle ; si le test est vrai, on choisit un nouveau point x0 satisfaisant le corps de la boucle et on r´eit`ere en rempla¸cant les valeurs dexpar celles dex0.

Une boucle SLC peut ˆetre not´ee, et c’est ce que nous ferons par la suite, sous la forme d’une clause de pro- grammation logique avec contraintes :

p(x)Bxb, A x

x0

c, p(x0).

La terminaison des boucles en g´en´eral peut toujours ˆ

etre ´etablie en exhibant unefonction de rang ρ, c.-`a-d.

une fonction de Zn ou Qn suivant le cas vers un en- semble bien-fond´e telle que `a chaque passage dans la boucle la valeurρ(x) d´ecroˆıt strictement. Comme l’en- semble d’arriv´ee deρest bien-fond´e, le calcul termine.

(3)

A notre connaissance, la d´` ecidabilit´e de la terminai- son universelle des boucles SLC (c.-`a-d. quelque soit le point de d´epart du calcul et quelque soit le choix des points suivants) est une question ouverte dans le cas en´eral. Certains cas particuliers ont ´et´e montr´es d´e- cidables [16, 9, 6]. Diverses g´en´eralisations des boucles SLC sont ind´ecidables [5].

Une approche possible pour l’analyse de la terminai- son des boucles SLC consiste `a restreindre la classe des fonctions de rang et le domaine des variables. Dans la section qui suit, nous pr´esentons les r´esultats connus pour les fonctions de rang lin´eaires dans le casQ. Puis nous ´etudions les fonctions de rang lin´eaires `a terme : ce sont les fonctions lin´eaires qui, apr`es un certain nombre de passages dans la boucle, deviennent des fonctions de rang. Nous proposons un algorithme po- lynomial correct et complet pour cette classe de fonc- tions de rang, qui constitue la contribution de cet ar- ticle `a l’´etat de l’art. Enfin, nous concluons.

2 Les fonctions de rang lin´eaires

Pr´ecisons tout d’abord ce que nous entendons par fonction de rang lin´eaire.

efinition 2.1 SoitC la boucle SLC rationnelle, ex- prim´ee sous forme clausale, p(x) c(x,x0), p(x0), o`u pest une relation n-aire. Une fonction de rang li- eaireρpourCest une application lin´eaire deQn vers Qerifiant :

∀x,x0 :c(x,x0) =

(ρ(x)1 +ρ(x0), ρ(x)0.

Autrement dit,ρreste toujours positive et d´ecroˆıt d’au moins une unit´e1`a chaque passage dans la boucle. Re- marquons que sic(x,x0) est insatisfiable, la boucle ter- mine imm´ediatement et toute fonction lin´eaire est une fonction de rang. Dans ce qui suit, nous supposerons c(x,x0) satisfiable.

Nous pouvons g´en´eraliser en consid´erant les fonc- tions de rang affines, mais cette classe de fonctions de rang peut toujours se ramener au cas lin´eaire.

En effet, une fonction de rang affine pour la clause p(x)c(x,x0), p(x0) est une fonction de rang lin´eaire pourp(x, y)c(x,x0), y= 1, y0= 1, p(x0, y0) o`uy et y0 sont des nouvelles variables distinctes dexetx0. En cons´equence, si on dispose d’une m´ethode correcte et compl`ete pour les fonctions de rang lin´eaires, il en est de mˆeme pour les fonctions de rang affines. Nous nous focalisons donc sur les fonctions de rang lin´eaires pour les boucles SLC rationnelles et, apr`es avoir pr´ecis´e une

1. Tout rationnel strictement positif fix´e une fois pour toutes convient.

formulation du lemme de Farkas, nous consid´erons la question de la v´erification et de la d´etection.

2.1 Lemme de Farkas

Dans les rationnels, une in´equation lin´eaireIest une cons´equence logique d’une conjonction S finie satis- fiable d’in´equations lin´eaires quand I est une combi- naison lin´eaire positive des in´equations deS. Formel- lement, posons S :

a1,1x1 +· · · + a1,nxn + b1 0

· · · +· · · + · · · +· · · ≥0 am,1x1 +· · · +am,nxn +bm 0 Nous supposons que S admet au moins une solution.

Le lemme de Farkas ´etablit l’´equivalence entre :

∀x1, . . . , xn:S = (c1x1+· · ·+cnxn+d0) et

∃λ10, . . . , λm0.

c1=Xm

i=1λiai,1

... cn=Xm

i=1λiai,n

dXm

i=1λibi 2.2 erification

Si on se donne une boucle SLCC et une fonctionρ lin´eaire, on peut ais´ement v´erifier siρest une fonction de rang en s’assurant du caract`ere insatisfiable des for- mules c(x,x0), ρ(x)< 1 +ρ(x0) et c(x,x0), ρ(x)< 0.

Cette v´erification peut ˆetre d´el´egu´ee `a un solveur com- plet comme CLP(Q) [12]. En th´eorie, ce probl`eme est polynomial.

Exemple 2.2 Pour la boucle C :

p(x, y)x0, y0y−1, x0x+y, y≤ −1, p(x0, y0) la fonction ρ(x, y) = x est une fonction de rang li- eaire, comme le montre la session Prolog ci-dessous.

?- use_module(library(clpq)).

% library(clpq) compiled true.

?- {X >= 0, Y1 =< Y - 1, X1 =< X + Y, Y =< -1, X < 1 + X1}.

false.

?- {X >= 0, Y1 =< Y - 1, X1 =< X + Y, Y =< -1, X < 0}.

false.

(4)

2.3 etection

Cette fois, on se donne une boucle SLC C et on se demande s’il existe une fonction de rang lin´eaire ρ.

Ce probl`eme a ´et´e largement ´etudi´e [14, 13, 2] : il est ecidable et de complexit´e polynomiale.

Sur l’exemple pr´ec´edent, nous explicitons un des al- gorithmes connus [13]. La question est : existe-t-il une fonction de rang lin´eaire pour la boucleC? Exprimons formellement le probl`eme, en posantρ(x, y) =ax+by:

∃a, b .∀x, y, x0, y0 : x0

y0 y1 x0 x+y

y≤ −1

=

(ax+by1 +ax0+by0

ax+by0 (1)

Notons que cette d´efinition du probl`eme est a priori ex´ecutable par ´elimination des quantificateurs sur un syst`eme de calcul formel comme Reduce [11] :

1: load_package redlog;

2: rlset r;

3: F:=ex({a,b},all({x,y,x1,y1},

(x>=0 and y1<=y-1 and x1<=x+y and y<= -1) impl

(a*x+b*y>=1+a*x1+b*y1 and a*x+b*y>=0)));

4: rlqe F;

La commande 1 charge le module d’´elimination des quantificateurs. La commande 2 d´efinit Rcomme do- maine de discours. La commande 3 initialise la formule F. La commande 4 lance l’´elimination des quantifica- teurs de la formuleF et retourne une formule ´equiva- lente, ici true. La formule F est donc vraie : il existe au moins une fonction de rang lin´eaire. D´eterminons les coefficients de la fonction ρ:

5: G:=all({x,y,x1,y1},

(x>=0 and y1<=y-1 and x1<=x+y and y<= -1) impl

(a*x+b*y>=1+a*x1+b*y1 and a*x+b*y>=0));

6: rlqe G;

On obtient :

a2ab0ab6= 0a >0b= 0

(a2bab20a2ab= 0

a22aba+b2+b0)

(a2ab= 0a22aba+b2b0).

Donc tous les rationnels aetb erifiant la formule ci- dessus conviennent. On v´erifie quea= 1, b= 0 est bien une solution. N´eanmoins,a fortiori, la complexit´e des

algorithmes mis en jeu ne permettra pas syst´emati- quement l’obtention d’une r´eponse avec des ressources raisonnables.

En revanche, en consid´erantaetbcomme despara- m`etres du probl`eme, nous pouvons appliquer le lemme de Farkas. Pour la condition de d´ecroissance de la fonc- tion de rang :

∀x, y, x0, y0 : x0 y0y1 x0x+y

y≤ −1

= ax+by1 +ax0+by0

en faisant apparaˆıtre les coefficients λi sur la colonne de gauche de fa¸con `a faciliter son emploi, le lemme de Farkas s’´ecrit :

λ1: 1x + 0y + 0x0 + 0y0 + 0 0 λ2: 1x + 1y 1x0 + 0y0 + 0 0 λ3: 0x + 1y + 0x0 1y0 1 0 λ4: 0x 1y + 0x0 + 0y0 1 0

=

ax +by ax0 by0 1 0.

La condition de d´ecroissance est donc ´equivalente `a l’existence de quatre rationnels positifs ou nuls λ1, . . .,λ4 tels que :

a=λ1+λ2

b=λ2+λ3λ4

−a=−λ2

−b=−λ3

−1≥ −λ3λ4.

(2)

Pour la condition de positivit´e de la fonction de rang :

∀x, y, x0, y0:

x0 y0y1 x0x+y

y≤ −1

= ax+by0

le lemme de Farkas s’´ecrit :

λ01: 1x + 0y + 0x0 + 0y0 + 0 0 λ02: 1x + 1y 1x0 + 0y0 + 0 0 λ03: 0x + 1y + 0x0 1y0 1 0 λ04: 0x 1y + 0x0 + 0y0 1 0

=

ax +by + 0x0 + 0y0 + 0 0.

La condition de positivit´e est cette fois ´equivalente `a l’existence de quatre autres rationnels positifs ou nuls

(5)

λ01, . . .,λ04 tels que :

a=λ01+λ02 b=λ02+λ03λ04 0 =−λ02

0 =−λ03 0≥ −λ03λ04.

(3)

En r´esum´e, via le lemme de Farkas, la formule (1) est

´equivalente `a la conjonction des formules (2) et (3) :

∃a, b .∃λ10, . . . , λ40, λ010, . . . , λ040.

a=λ1+λ2

b=λ2+λ3λ4

−a=−λ2

−b=−λ3

−1≥ −λ3λ4 a=λ01+λ02

b=λ02+λ03λ04 0 =−λ02

0 =−λ03 0≥ −λ03λ04. En th´eorie, le probl`eme de l’existence d’une fonc- tion de rang lin´eaire est polynomial, ainsi que le calcul d’une fonction t´emoin, un certificat de terminaison, puisque le calcul d’une solution quelconque donne des valeurs `aaetbqui r´epondent au probl`eme. Si on s’in- eresse `a l’ensemble des fonctions de rangs lin´eaires, c.-`a-d. aux conditions suraet b, il suffit d’´eliminer les λietλ0idu syst`eme pr´ec´edent par exemple en utilisant l’algorithme de Fourier-Motzkin. En voici une illustra- tion. En compilant ce programme :

fm(A,B) :-

{L1 >= 0, L2 >= 0, L3 >= 0, L4 >= 0, LP1 >= 0, LP2 >= 0, LP3 >= 0, LP4 >= 0, A = L1 + L2,

B = L2 + L3 - L4, A = L2,

B = L3,

-1 >= -L3 - L4, A = LP1 + LP2, B = LP2 + LP3 - LP4, 0 = LP2,

0 = LP3,

0 >= -LP3 - LP4}.

puis en interrogeant Prolog, on obtient la condition :

| ?- fm(A,B).

B = 0, {A >= 1}.

| ?-

qu’on peut montrer ´equivalente `a la condition g´en´er´ee par Reduce, une fois simplifi´ee.

3 Les fonctions de rang lin´eaires `a terme

Dans la section pr´ec´edente, nous avons expos´e une ethode qui permet de d´ecider de l’existence d’une fonction de rang lin´eaire pour une boucle SLC ration- nelle. Il est bien sˆur possible que la m´ethode ´echoue.

Exemple 3.1 La boucle :

p(x, y)x0, y0y1, x0x+y, p(x0, y0) n’admet pas de fonction de rang lin´eaire.

Peut-on en conclure que cette boucle ne termine pas ? Non, car il existe peut-ˆetre une fonction de rang non-lin´eaire. Dans cette section, nous allons ´etendre la ethode pr´ec´edente pour la d´etection de fonctions de rang lin´eaires `a terme, c.-`a-d. des fonctions lin´eaires qui deviennent des fonctions de rang apr`es un certain nombre de passages dans le corps de la boucle. Pour mod´eliser ce point, nous allons supposer que la boucle SLC consid´er´ee est donn´ee avec une fonction lin´eaire f(x, y) dont la valeur croˆıt strictement `a chaque pas- sage dans le corps de la boucle.

Exemple 3.2 La fonctionf(x, y) =−y croˆıt stricte- ment pour la boucle de l’exemple 3.1 puisquey0, la nou- velle valeur de y, est n´ecessairement inf´erieure d’au moins une unit´e `a celle de y.

efinition 3.3 Soient C la boucle SLC rationnelle, sous forme clausale : p(x)c(x,x0), p(x0), o`up est une relation n-aire, et f(x)une fonction lin´eaire v´e- rifiant ∀x,x0 : c(x,x0) = f(x0) 1 +f(x). Une fonction de rang lin´eaire `a termeρpour(C, f)est une application lin´eaire de Qn versQerifiant :

∃k .∀x,x0:

(c(x,x0) f(x)k

)

=

(ρ(x)1 +ρ(x0) ρ(x)0.

Relativement `a la d´efinition 2.1, le seuilkest quantifi´e existentiellement et on imposef(x)kdans la partie gauche de l’implication.

Notons que si nous d´eterminons un tel rationnelk, alors tout k0 k erifie ´egalement la d´efinition 3.3.

D’autre part, comme par hypoth`ese la valeur def croˆıt d’une unit´e `a chaque passage dans la boucle, si f est born´ee sup´erieurement pour la contraintec, la boucle termine. Sinon, apr`es un nombre fini de passages dans la boucle, la valeur de f epasse le seuil k, ρdevient alors une fonction de rang lin´eaire au sens de la sec- tion 2 et la boucle termine. Nous nous int´eressons `a pr´esent au probl`eme de la d´etection puis de la v´erifi- cation des fonctions de rang lin´eaires `a terme.

(6)

3.1 etection

Consid´erons la boucle de l’exemple 3.1 associ´ee `a la fonction croissante de l’exemple 3.2. En posant ρ(x, y) =ax+by, ρest une fonction de rang lin´eaire

`

a terme quand :

∃a, b, k .∀x, y, x0, y0: x0

y0y1 x0x+y

−yk

=

(ax+by1 +ax0+by0 ax+by0.

Cette d´efinition du probl`eme, que nous noterons

∃a, b, k . φ(a, b, k), est aussi ex´ecutable par ´elimination des quantificateurs, donc le probl`eme est d´ecidable. En consid´erant a, b et k comme des param`etres, appli- quons le lemme de Farkas :

λ1: 1x + 0y + 0x0 + 0y0 + 0 0 λ2: 1x + 1y 1x0 + 0y0 + 0 0 λ3: 0x + 1y + 0x0 1y0 1 0 λ4: 0x 1y + 0x0 + 0y0 k 0

=

ax +by ax0 by0 1 0

ax +by 0.

On en d´eduit queφ(a, b, k) est ´equivalente `a la conjonc- tionDEC(a, b, k) :

∃λ10, . . . , λ40.

a=λ1+λ2 b=λ2+λ3λ4

−a=−λ2

−b=−λ3

−1≥ −λ34

assurant la d´ecroissance de la fonction de rang et P OS(a, b, k) :

∃λ010, . . . , λ040.

a=λ01+λ02 b=λ02+λ03λ04 0 =−λ02

0 =−λ03 0≥ −λ0304 assurant la positivit´e de la fonction de rang.

ExaminonsDEC(a, b, k). Nous nous apercevons que que le produit4introduit une non-lin´earit´e que nous pouvons ´eliminer en remarquant que, comme λ40, soitλ4= 0 (donc4= 0) soitλ4>0. Pour ce dernier cas nous introduisons la variable P =4. On a alors la propri´et´e :

Lemme 3.4 La formule ∃k DEC(a, b, k) est ´equiva- lente `a la disjonctionDEC1(a, b)DEC2(a, b).

O`u, dans notre cas,DEC1(a, b) ´equivaut `a :

∃λ10, λ20, λ30

a = λ1+λ2 b = λ2+λ3

−a = −λ2

−b = −λ3

−1 −λ3

etDEC2(a, b) `a :

∃λ10, λ20, λ30, λ4>0, P

a = λ1+λ2 b = λ2+λ3λ4

−a = −λ2

−b = −λ3

−1 −λ3P

Preuve ⇒) Soientkun rationnel et quatre rationnels positifs ou nulsλipour 1i4 v´erifiant la d´efinition deDEC(a, b, k). Siλ4= 0, alorsDEC(a, b, k) se sim- plifie enDEC1(a, b) qui est vraie. Siλ4>0, en posant P =4, on constate queDEC2(a, b) est vraie.

⇐) Supposons DEC1(a, b) vraie. Alors en prenant λ4 = 0 et k rationnel quelconque, 0 par exemple,

∃kDEC(a, b, k) est vraie. Supposons DEC2(a, b) vraie. Posons k = P/λ4 (toujours possible puisque λ4>0), nous constatons que∃kDEC(a, b, k) est vraie.

Concernant la condition de positivit´e, nous avons

´

egalement :

Lemme 3.5 La formule ∃kPOS(a, b, k) est ´equiva- lente `a la disjonction POS1(a, b)POS2(a, b).

O`u, dans notre cas,P OS1(a, b) ´equivaut `a :

∃λ010, λ020, λ030

a = λ01+λ02 b = λ02+λ03 0 = −λ02 0 = −λ03 0 −λ03 etP OS2(a, b) `a :

∃λ010, λ020, λ030, λ04>0, P0

a = λ01+λ02 b = λ02+λ03λ04 0 = −λ02

0 = −λ03 0 −λ03P0

Nous pouvons `a pr´esent combiner les deux r´esultats pr´ec´edents :

Proposition 3.6 La formule ∃k φ(a, b, k)´equivaut `a [DEC1(a, b)∨DEC2(a, b)]∧[P OS1(a, b)∨P OS2(a, b)].

(7)

Preuve D’apr`es les deux lemmes pr´ec´edents, il reste `a justifier l’´equivalence entre ∃k φ(a, b, k) et

∃k DEC(a, b, k)∧ ∃k P OS(a, b, k).

⇒) Soit k0 un rationnel v´erifiant φ(a, b, k0). Comme φ(a, b, k) DEC(a, b, k) P OS(a, b, k), on a DEC(a, b, k0) etP OS(a, b, k0).

⇐) Supposons l’existence dekd tel queDEC(a, b, kd) et kp tel que P OS(a, b, kp). Alors k0 = max(kd, kp) valide DEC(a, b, k0) P OS(a, b, k0) et montre

∃k φ(a, b, k).

Pour revenir `a notre probl`eme initial, l’existence d’une fonction de rang lin´eaire `a terme se r´esume donc

`

a la satisfiabilit´e d’au moins un des quatre syst`emes li- eaires :

DEC1(a, b)P OS1(a, b) DEC1(a, b)P OS2(a, b) DEC2(a, b)P OS1(a, b) DEC2(a, b)P OS2(a, b)

ce que nous pouvons d´ecider en temps polynomial.

Pour notre exemple courant, il s’agit deDEC2(a, b) P OS1(a, b), ce que confirme la requˆete Prolog sui- vante :

?- dec2pos1.

true.

?-

apr`es compilation du programme : dec2pos1 :-

{L1 >= 0, L2 >= 0, L3 >= 0, L4 > 0, A = L1 + L2,

B = L2 + L3 - L4, A = L2,

B = L3, 1 =< L3 + P,

LP1 >= 0, LP2 >= 0, LP3 >= 0, A = LP1 + LP2,

B = LP2 + LP3, 0 = LP2, 0 = LP3, 0 =< LP3}.

Nous sommes maintenant en mesure de d´efinir un algorithme de d´etection d’existence d’une fonction de rang lin´eaire `a terme (cf. l’algorithme 1).

Th´eor`eme 3.7 Pour toute boucle SLC C et toute fonction croissante associ´ee `aC, l’algorithme 1 d´ecide l’existence d’une fonction de rang lin´eaire `a terme en temps polynomial.

Le calcul d’un certificat de terminaison, c.-`a-d. d’une fonction de rang lin´eaire `a termeρet du seuilkasso- ci´e peut s’effectuer lors de l’ex´ecution de l’algorithme comme suit :

Algorithme 1 Existence d’une fonction de rang li- eaire `a terme

Entr´ee : p(x) c(x,x0), p(x0) une boucle SLC et f(x) une fonction lin´eaire v´erifiant

∀x,x0 c(x,x0)f(x0)1 +f(x)

Sortie : ecide l’existence d’une fonction de rang `a termeρ(x) =ax=Paixi `a partir du seuil k

1: DEC(a, k) := Farkas pour la d´ecroissance de ρ

2: DEC1(a), DEC2(a) :=lin´earisation deDEC(a, k)

3: P OS(a, k) := Farkas pour la positivit´e deρ

4: P OS1(a), P OS2(a) :=lin´earisation deP OS(a, k)

5: si W

1≤i,j≤2DECi(a) P OSj(a) est satisfiable alors

6: retourner vrai

7: sinon

8: retourner faux

9: fin si

– siDEC1(a)P OS1(a) est satisfiable, on calcule une solutionade la conjonction et tout rationnel kconvient ;

– siDEC1(a)P OS2(a) est satisfiable, on calcule une solutiona, λ0, P0 de la conjonction, on prend k=P00n;

– siDEC2(a)P OS1(a) est satisfiable, on calcule une solution a, λ, P de la conjonction, on prend k=P/λn;

– siDEC2(a)P OS2(a) est satisfiable, on calcule une solution a, λ, P, λ0, P0 de la conjonction, on prendk=max(P/λn, P00n).

Exemple 3.8 Poursuivons l’exemple 3.1. Voici la so- lution la plus g´en´erale deDEC2(a, b)P OS1(a, b)

?- {L1 >= 0, L2>= 0, L3 >= 0, L4 > 0, A = L1 + L2,

B = L2 + L3 - L4, A = L2,

B = L3, 1 =< L3 + P,

LP1 >= 0, LP2 >= 0, LP3 >= 0, A = LP1 + LP2,

B = LP2 + LP3, 0 = LP2, 0 = LP3, 0 =< LP3}.

B = 0, L1 = 0, L3 = 0, LP2 = 0, LP3 = 0, {LP1 = L4, L2 = L4, A = L4, L4 > 0, P >= 1}.

?-

Une solution particuli`ere est b= 0 =λ1=λ3 =λ02= λ03, a= 1 =λ01 =λ2 =λ4, P = 1. Nous en d´eduisons que ρ(x, y) = x est une fonction de rang lin´eaire `a terme `a partir du seuilk=P/λ4= 1.

Références

Documents relatifs

On dit qu’une matrice ´ echelonn´ ee (en colonnes) est r´ eduite si tous ses pivots valent 1 et si tous les coefficients ` a gauche d’un pivot sont nuls.. Lorsque’lle est r´

http://lamaternelledemoustache.net/ JT

DÉBUT DE RANGDÉBUT DE RANG DÉBUT DE RANGDÉBUT

On ne change pas le rang d’une matrice en effectuant des op´ erations ´ el´ ementaires sur ses lignes et ses colonnes.. On transforme donc la matrice par op´ erations ´ el´

Le croisement des deux axes est l’origine origine origine origine et correspond au point (0 ; 0). Si la droite « monte » quand on la regarde de gauche à droite, on dit que la

237] pour l’affirmation (et les r´ef´erences) que la conjecture de Tate I est connue pour les vari´et´es ab´eliennes (Faltings), les surfaces K3 (Deligne), les surfaces modulaires

II s'agit de prouver que la tangente à JC en [L] suivant la direction Dp coïncide avec la droite tp^ de P(V) associée au fibre F^. D'après le LEMME 3.6.c), cette tangente est égale à

PROPOSITION 3: L’ensemble des zéros d’une fonction analytique non identiquement nulle sur un ouvert est un ensemble discret au plus