Attention une mise à jour du service Gitlab va être effectuée le mardi 30 novembre entre 17h30 et 18h00. Cette mise à jour va générer une interruption du service dont nous ne maîtrisons pas complètement la durée mais qui ne devrait pas excéder quelques minutes. Cette mise à jour intermédiaire en version 14.0.12 nous permettra de rapidement pouvoir mettre à votre disposition une version plus récente.

Commit d42e2070 authored by Hemery Mathieu's avatar Hemery Mathieu
Browse files

Detect non integer while checking polynomiality

parent 50a13085
......@@ -1548,14 +1548,14 @@ is_polynomial(Expr) :-
fail
),!.
is_polynomial_sr(A + B) :- is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(A - B) :- is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(-(A)) :- is_polynomial_sr(A).
is_polynomial_sr(A*B) :- is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(A^N) :- is_polynomial_sr(A), is_numeric(N).
is_polynomial_sr(A/N) :- is_numeric(N), is_polynomial_sr(A).
is_polynomial_sr(A) :- is_numeric(A).
is_polynomial_sr(A + B) :- !, is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(A - B) :- !, is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(-(A)) :- !, is_polynomial_sr(A).
is_polynomial_sr(A*B) :- !, is_polynomial_sr(A), is_polynomial_sr(B).
is_polynomial_sr(A^N) :- !, is_integer(N), is_polynomial_sr(A).
is_polynomial_sr(A/N) :- !, is_numeric(N), is_polynomial_sr(A).
is_polynomial_sr(A) :- is_molecule(A).
is_polynomial_sr(A) :- is_numeric(A).
is_molecule(A) :-
identifier_kind(_ModelId, A, object).
......@@ -1563,9 +1563,19 @@ is_molecule(A) :-
is_numeric(N) :-
item([kind:parameter, key:N]);
number(N).
is_numeric(A + B) :- is_numeric(A), is_numeric(B).
is_numeric(A - B) :- is_numeric(A), is_numeric(B).
is_numeric(-(A)) :- is_numeric(A).
is_numeric(A*B) :- is_numeric(A), is_numeric(B).
is_numeric(A^N) :- is_numeric(A), is_numeric(N).
is_numeric(A/N) :- is_numeric(N), is_numeric(A).
is_numeric(A + B) :- !, is_numeric(A), is_numeric(B).
is_numeric(A - B) :- !, is_numeric(A), is_numeric(B).
is_numeric(-(A)) :- !, is_numeric(A).
is_numeric(A*B) :- !, is_numeric(A), is_numeric(B).
is_numeric(A^N) :- !, is_numeric(N), is_numeric(A).
is_numeric(A/N) :- !, is_numeric(N), is_numeric(A).
is_integer(Number) :-
(
item([kind:parameter, key:Number, item:parameter(Number=N)]),!
;
number(Number),
N = Number
),
normalize_number(N, I),
integer(I).
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment