Une expression mathématique est bien définie lorsqu’on peut lui donner un sens (voir Outil mdelta Manuel Utilisateur Version 1.0.). Dans le cas contraire on dira que l’expression est dépourvue de sens. On désigne par expression potentiellement dépourvue de sens toute expression nécessitant des conditions pour ne pas être dépourvue de sens.
Par exemple, soit l’expression :
![]() | (2.1) |
Cette expression peut être vraie ou fausse, à la condition qu’elle soit bien définie. Si cette expression n’est pas bien définie, il est alors impossible de lui associer une valeur vrai ou faux. Cette mauvaise définition signifie qu’au moins un opérateur de l’expression a au moins un opérande qui n’appartient pas à son domaine de définition.
L’expression (3.1) est manifestement de nature arithmétique. On considère que l’expression est bien typée (opération réalisée par le vérificateur de types) et que y, x et c sont des entiers relatifs.
Les opérateurs apparaissant dans l’expression (3.1) sont :
Une égalité a=b est bien définie à condition que a et b soient bien définis
Une addition a+b est bien définie à condition que a et b soient bien définis
Une division entière a/b est bien définie si a et b sont bien définis et b est non nul
Il va donc falloir vérifier que :
La bonne définition de l’expression (3.1) passe par la démonstration des prédicats suivants :
![]() | (2.2) |
![]() | (2.3) |
Le contexte de l’expression doit contenir ces prédicats sous forme d’hypothèses ou doit permettre de les déduire.
Si tel n’est pas le cas, l’expression (3.1) est potentiellement mal définie.
On se reportera au tableau (1) pour la liste des expressions pouvant être mal définies.
Les conditions de bonne définition sont recensées dans le tableau ci-dessous.
Expression | Condition de bonne définition |
ab | a ∈ ℕ ∧ b ∈ ℕ |
a mod b | b ∈ ℕ1 ∧ a ∈ ℕ |
a∕b | b ∈ ℤ1 |
Π(x).(P|E) | {x|P}∈ FIN({x|P}) |
Σ(x).(P|E) | {x|P}∈ FIN({x|P}) |
max(S) | S ∩ ℕ ∈ FIN(ℕ) ∧ S≠∅ |
min(S) | S ∩ (ℤ -ℕ) ∈ FIN(ℤ) ∧ S≠∅ |
card(S) | S ∈ FIN(S) |
inter(U) | U≠∅ |
⋂ (x).(P|E) | {x|P}≠∅ |
rn | n ∈ ℕ |
f(x) | x ∈ dom(f) ∧ f ∈ dom(f) ![]() |
perm(S) | S ∈ FIN(S) |
conc(s) | s ∈ seq(ran(s)) ∧∀x.(x ∈ dom(s) ⇒ s(x) ∈ seq(ran(s(x)))) |
s ⌢ t | s ∈ seq(ran(s)) ∧ t ∈ seq(ran(t)) |
size(s) | s ∈ seq(ran(s)) |
rev(s) | s ∈ seq(ran(s)) |
s ← e | s ∈ seq(ran(s)) |
e → s | s ∈ seq(ran(s)) |
tail(s) | size(s) ≥ 1 ∧ s ∈ seq(ran(s)) |
first(s) | size(s) ≥ 1 ∧ s ∈ seq(ran(s)) |
front(s) | size(s) ≥ 1 ∧ s ∈ seq(ran(s)) |
last(s) | size(s) ≥ 1 ∧ s ∈ seq(ran(s)) |
s ↑ n | n ∈ 0 .. size(s) ∧ s ∈ seq(ran(s)) |
s ↓ n | n ∈ 0 .. size(s) ∧ s ∈ seq(ran(s)) |
Tableau (1) : Expressions potentiellement dépourvues de sens