C’est la classe (2) de la d´efinition au dessus, ces programmes ont toujours un mod`ele support´e unique (voir Seda & Hitzler [20]).
Th´eor`eme 6.3.1 [Seda et Hitzler, 1997] Soit P un programme logique normal qui est strictement d´ecroissant par rapport `a une fonction niveau l : BP −→ γ, alors TP est stricte-
ment contractante par rapport `a la distance ultram´etrique induite par l. Par cons´equent, TP
admet un point fixe et ainsi donc P a un mod`ele support´e unique Pour la preuve, voir [20].
Exemple 5 Soit P le programme
p(o) ←− p(s(x)) ←− p(x)
Consid´erons la fonction niveau l :Bp −→ ω; l(p(sn(0)) = n + 1.
P est strictement d´ecroissant par rapport `a l et l’ensemble {p(sn(0)),n < ω} est un point fixe de Tp.
Exemple 6 Consid´erons le programme suivant:
q(0) ←− ¬p(x),¬p(s(x)) p(0) ←−
p(s(x)) ←− ¬p(x) 75
Et d´efinissons l :BP −→ ω + 1 par l(p(sn(0))) = n et l(q(sn(0))) = ω pour tout n∈ IN. Donc,
P est strictement d´ecroissant et l’unique mod`ele support´e est l’ensemble {p(s2n(0)); n∈ IN}.
Exemple 7 P est d´efini comme suit: p(0,0) ←−
p(s(y),0) ←− ¬p(y,x),¬p(y,s(x)) p(y,s(x)) ←− ¬p(y,x)
et d´efinissons l : BP −→ ωω par l(p(sk(0),sj(0))) = ωk + j, o`u ωk d´esigne le k i`eme ordinal
limite. Alors P est strictement d´ecroissant par rapport `a l et son unique mod`ele support´e est l’ensemble {p(0,s2n(0)); n∈ IN} ∪ {p(sn+1(0)),s2k+1(0)); k,n∈ IN}
Exemple 8 Prenons le programme P des nombres pairs p(0) ←−
p(s(x)) ←− ¬p(x)
Avec la ω-fonction niveau d´efinie par l(p(sn(0)) = n. Alors le programme, avec un facteur
de contraction ´egal `a 1/2, produit l’ensemble {p(0),p(s2(0)),p(s4(0)),...} des nombres pairs comme unique point fixe de TP.
§6.4 Programmes semi-strictement d´ecroissants par
rapport `a une fonction niveau
La classe (3) est exactement la classe introduite par Przymusinski [16].
En effet, Soit P un programme localement stratifi´e et {S1,...Sα,...} une stratification locale
de P , alors on associe `a P une fonction niveau l de Bp dans γ definie comme suit: si A ∈ Sα
alors l(A) = α− 1 si α est un ordinal successeur et l(A) = α si α est un ordinal limite. R´eciproquement, soit P un programme semi strictement d´ecroissant par rapport `a l, alors nous construisons la stratification locale {S1,...Sα,...} comme suit: si le niveau du ground
atome A est α alors nous prenons A∈ Sα+1.
Seda et Hitzler ont donn´e une preuve constructive de l’existence des mod`eles support´es mini- maux dans cette classe par des techniques topologiques, voir [20].
Nous allons donner une preuve plus courte en utilisant le th´eor`eme 6.2.1 sur les espaces ultram´etriques.
Th´eor`eme 6.4.1 Soit P un programme logique normal qui est semi strictement d´ecroissant par rapport `a une fonction niveau l : Bp −→ γ, o`u γ est un ordinal d´enombrable, alors P
admet un mod`ele support´e.
Preuve. 1) Nous consid´erons l’espace (Ip,d,∆), qui a ´et´e introduit pour ∆0 = {α; α < γ}.
Nous montrons d’abord que l’op´erateur cons´equent au programme Tp :Ip −→ Ip est contrac-
tant.
Soient I1,I2 ∈ Ip et suppposons que dl(I1,I2) = 2−α.
Le cas α = 0 est ´evident car d(TP(I1),TP(I2))≤ 20.
Supposons que α > 0. Alors I1 et I2 diff`erent en un ´el´ement BP avec un niveau α, mais
coincident sur tous les ground atomes de niveau inf´erieur. Soit A ∈ TP(I1) avec l(A) < α.
Alors il existe une clause A←− A1,...,Ak,¬B1,...,¬Bm dans ground(P), o`u k,m ≥ 0, telle que
pour tout i,j, nous avons Ai ∈ I1 et Bj ∈ I/ 1. Comme P est semi-strictement d´ecroissant et
I1∩Lα = I2∩Lα, il s’ensuit que pour tout i,j, nous avons Aj ∈ I2 and Bj ∈ I/ 2. Par cons´equent
A ∈ TP(I2). De la mˆeme fa¸con, si A ∈ TP(I2) avec l(A) < α, alors A ∈ TP(I1). Ainsi nous
avons TP(I1)∩ Lα = TP(I2)∩ Lα et par suite
d(TP(I1),TP(I2))≤ 2−α = d(I1,I2)
Supposons que Tp n’admet pas de point fixe. Alors d’apr`es le th´eor`eme 6.2.1, il existe un
sous ensemble S tel que δ(S) = d(I0,Tp(I0)) = 2−α pour tout I0 ∈ S. Donc δ(S) 6= 0. Soit
I ∈ S. On montre de la mˆeme mani`ere que dans la preuve du th´eor`eme 2.2.1 du chapitre 2 que B2−α = B(I,d(I,TP(I)) = S.
2) Posons J = T
I0∈S
I0. Soit Lα = {A ∈ Bp; l(A) < α}. Ainsi pour tout I0 ∈ S nous avons
Lα∩ I0 =Lα∩ I, nous obtenons J ∈ S.
3) On prouve que J ∩ Hα = ∅ o`u Hα = {A ∈ Bp; l(A) = α}. En effet si on assume le
contraire, posons J0 = J ∩ Lα. Il est facile de v´erifier que d(J,J0) ≤ 2−α et par cons´quent
J0 ∈ S. Donc J0 = J .
4) Montrons que ∅ = J ∩ Hα ⊂ Tp(J ) ∩ Hα ⊆ Tp2(J )∩ Hα ⊆ ...(la relation binaire ⊂
d´esigne l’inclusion stricte)
En premier lieu Tp(J )∩ Hα 6= ∅ puisque d(J,Tp(J )) = 2−α. Maintenant soit A∈ Tp(J )∩ Hα.
Il existe dans ground(P ) une clause A ←− A1,...,Ak,¬B1,...¬Bm o`u
A ∈ Hα,A1,...,Ak ∈ J et B1,...Bm ∈ J. Alors A/ 1,...,Ak ∈ Tp(J ) puisque J ⊂ Tp(J ) et
B1,...Bm ∈ T/ p(J ) car Tp(J )∈ B et l(Bj) < α pour tout j; par cons´equent A∈ Tp2(J )∩ Hα.
5) Posons Tω p(J ) =
S
n<ω
Tn
p(J ) (ω d´esigne le premier ordinal d´enombrable), nous avons
Tω
p(J ) ∈ B, alors TP(TPω(J )) d’apr`es le th´eor`eme 6.2.1 et donc d(TPω(J ),TP(TPω(J )) ≤ 2−α,
nous prouvons que Tpω(J )∩ Hα = Tp(Tpω(J ))∩ Hα.
En premier lieu, Tω
p(J )∩ Hα ⊆ Tp(Tpω(J ))∩ Hα.
Montrons maintenant que Tp(Tpω(J ))∩ Hα ⊆ Tpω(J )∩ Hα. Soit A∈ Tp(Tpω(J ))∩ Hα, alors il
existe dans ground(P ) une clause A ←− A1,...,Ak,¬B1,...¬Bm o`u
l(A) = α,A1,...,Ak ∈ Tpω(J ) et B1,...,Bm ∈ J. Nous avons l(A/ i)≤ α pour i = 1,...,k comme P
est semi-strictement d´ecroissant. Soit{k1,...kr} un sous ensemble de {1,...,k} tel que l(Aki) = α pour tout i ∈ {1,...,r}, alors il existe mk1,...mkr tels que Aki ∈ T
mki
p (J ) pour tout i = 1,...,r.
Posons mk = max
1≤i≤rmki. Alors Ak1,...,Akr ∈ T mk
p (J ) et pour j /∈ {k1,...kr},
l(Aj) < α, nous avons Aj ∈ Tpmk(J ) et B1,...,Bm ∈ T/ Pmk(J ). Par cons´equent
A∈ Tmk+1
p (J )∩ Hα ⊆ Tpω(J )∩ Hα.
Ainsi d(Tω
p (J ),Tp(Tpω(J )))≤ 2−(α+1). Ce qui est une contradiction.
6) Montrons que le programme a un mod`ele support´e minimal.
Pour chaque n v´erifiant o < n < γ, soit P[n]l’ensemble des clauses de ground(P ) o`u seulement
les atomes A avec l(A) < n apparaissent et TP[n] l’op´erateur cons´equent. Nous ´etablissons par induction transfinie la proposition suivante P(n) : ”P[n] a un mod`ele support´e minimal.”
P[1] est un programme positif, donc il a un mod`ele support´e minimal.
Supposons que la proposition est vraie pour tout n < α pour un ordinal α ∈ γ o`u α > 1, montrons P(α).
Cas 1: α = k + 1 est un ordinal successeur, o`u k > 0.
Soit Ikle mod`ele donn´e dans l’hypoth`ese de r´ecurrence. Consid´erons la boule Bk+1 = B2−k(Ik).
Bk+1 est hyperconvexe (comme une boule dans un espace hyperconvexe) et invariante par Tp
comme I[k] est un point fixe de Tp[k]. Donc P[k+1] a un mod`ele support´e Bk+1 puisqu’il est semi strictement d´ecroissant et d’apr`es la premi`ere partie de la preuve. Soit Ik+1 l’ensemble
de ces mod`eles support´es. Prenons Ik+1 =
T
J∈Ik+1
J . Donc Tp(Ik+1)∩ Hk = Ik+1 ∩ Hk car
d(Ik+1,J )≤ 2−k pour chaque J ∈ Ik+1. Ainsi Ik+1 est un mod`ele support´e de P[k+1].
Soit J un mod`ele de P[k+1] tel que J ⊆ Ik+1. Donc J ∩ Lk ⊆ Ik+1∩ Lk= Ik, d’o`u J∩ Lk = Ik
d’apr`es l’hypoth`ese. Nous consid´erons PJ
[k+1] le sous programme de P[k+1] consistant en seule-
ment les clauses dont les tˆetes A ∈ J. PJ
[k+1] est un programme semi-strictement d´ecroissant,
donc il a un mod`ele support´e Bk+1 qu’on d´enote J1. Soit A ←− A1,...,Ak1,¬B1,...,¬Bl1 une clause de P[k+1] o`u A /∈ J. Donc A /∈ Tp[k+1](J ), ainsi il existe i tel que Ai ∈ J ou il existe l/ tel que Bl ∈ Ik puisque l(Bl) < k, donc Ai ∈ J/ 1 car J1 ⊆ J ou Bl ∈ J1 car J1 ∈ Bk+1. Par
suite A /∈ Tp[k+1](J1). Il vient que Tp[k+1](J1) = J1, On conclut que Ik+1 ⊆ J1 ⊆ J. Case 2: α est un ordinal limite.
Dans ce cas, nous prenons la boule Bα =
T
n<α
B2−n(In) et pour chaque n < α, nous rempla¸cons dans (cas 1) k par n et (k + 1) par α. Nous obtenons de la mˆeme fa¸con Iα v´erifiant P(α).
Exemples
Exemple 9 Soit P le programme:
p(s(x),0)←− p(s(x),0) et consid´erons la fonction niveau
l : Bp −→ ω , l(sn(0),sm(0)) = n + m + 1. Tp est contractante, nous montrons que Tp est
strictement contractante sur orbites.
Premi`erement, nous montrons que pour tout I ∈ Ip, n,m6= 0, p(sn(0),sm(0)) /∈ Tp(I) et aussi
p(0,0) /∈ Tp(I) et si n 6= 0, p(sn(0),0) ∈ Tp(I) si et seulement si p(sn(0),0) ∈ I. Donc soit
d(I,Tp(I)) = i + 1. Ainsi il existe A ∈ Bp, l(A) = i + 1, o`u I et Tp(I) diff`erent. Il s’ensuit
que A = p(0,0) ou A = p(sn(0),sm(0)), m6= 0, n + m = i, alors A /∈ Tp(I) et A /∈ Tp(Tp(I)).
Donc Tp est strictement contractante sur orbites donc par le th´eor`eme 2.2.2 du chapitre 2, il
a un point fixe.
Exemple 10 Consid´erons le programme:
p(s(0)) ←− ¬q(0) p(x) ←− r(x) r(x) ←− p(x) q(0) ←−
Consid´erons l : Bp −→ ω, l(p(sn(0)) = n, l(q(0)) = 0, l(r(sn(0)) = n.
P est semi-strictement d´ecroissant par rapport `a l mais n’est jamais strictement d´ecroissant pour n’importe quelle fonction niveau `a cause du cycle cr´e´e par la deuxi`eme et la troisi`eme clause.
L’ensemble {q(0),p(sn(0)),r(sn(0))} est un point fixe de T p.