Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
International Mathematical Forum, Vol. 8, 2013, no. 1, 39 - 46 A Conjecture on Integer Arithmetic which Implies that there is an Algorithm which to each Diophantine Equation Assigns an Integer which is Greater than the Heights of Integer (Non-negative Integer, Rational) Solutions, if these Solutions Form a Finite Set Apoloniusz Tyszka, Maciej Sporysz and Agnieszka Peszek University of Agriculture, Faculty of Production and Power Engineering Balicka 116B, 30-149 Kraków, Poland [email protected] [email protected] [email protected] Abstract We conjecture that if a system S ⊆ {xi + xj = xk , xi · xj = xk : i, j, k ∈ {1, . . . , n}} has only finitely many solutions in integers x1 , . . . , xn , then each such n−1 . The consolution (x1 , . . . , xn ) satisfies max |x1 |, . . . , |xn | ≤ 22 jecture implies that there is an algorithm which to each Diophantine equation assigns an integer which is greater than the heights of integer (non-negative integer, rational) solutions, if these solutions form a finite set. We describe an algorithm whose execution never terminates. If the conjecture is true, then the algorithm sequentially displays all integers n ≥ 2. If the conjecture is false, then the algorithm has a finite output which ends with an integer tuple (a1 , . . . , an ), where n ≥ 4, n−1 n < max |a |, . . . , |a | ≤ 22 , and the system 22 1 n {xi + xj = xk : (i, j, k ∈ {1, . . . , n}) ∧ (ai + aj = ak )} ∪ {xi · xj = xk : (i, j, k ∈ {1, . . . , n}) ∧ (ai · aj = ak )} is a counterexample to the conjecture. The algorithm is implemented in MuPAD and Pascal. Mathematics Subject Classification: 03B30, 11U05 Keywords: computable upper bound for the heights of integer (non-negative integer, rational) solutions of a Diophantine equation, Diophantine equation 40 A. Tyszka, M. Sporysz and A. Peszek with a finite number of integer (non-negative integer, rational) solutions Let Φn denote the following statement ∀x1 , . . . , xn ∈ Z ∃y1 , . . . , yn ∈ Z 22 n−1 < max |x1 |, . . . , |xn | =⇒ max |x1 |, . . . , |xn | < max |y1 |, . . . , |yn | ∧ ∀i, j, k ∈ {1, . . . , n} (xi + xj = xk =⇒ yi + yj = yk ) ∧ ∀i, j, k ∈ {1, . . . , n} (xi · xj = xk =⇒ yi · yj = yk ) Equivalently, Φn states that if a system S ⊆ En = {xi + xj = xk , xi · xj = xk : i, j, k ∈ {1, . . . , n}} has only finitely many solutions in integers x1 , . . . , xn , then each such solution n−1 (x1 , . . . , xn ) satisfies max |x1 |, . . . , |xn | ≤ 22 . Theorem 1. ([3]) The statement Φn holds true for any n ∈ {1, 2, 3}. Conjecture. ([3]) The statement Φn holds true for any positive integer n. Every Diophantine equation of degree at most n has the form a(i1 , . . . , ik ) · x1i1 · . . . · xkik = 0 (1) i1 , . . . , ik ∈ {0, . . . , n} i1 + . . . + ik ≤ n where a(i1 , . . . , ik ) denote integers. Theorem 2. ([3]) The Conjecture implies that if a Diophantine equation (1) has only finitely many solutions in integers (non-negative integers, rationals), then their heights are bounded from above by a computable function of max {k, n} ∪ |a(i1 , . . . , ik )| : i1 , . . . , ik ∈ {0, . . . , n} ∧ i1 + . . . + ik ≤ n The validity of the Conjecture can be decided by a brute-force algorithm whose execution never terminates. This is what we are going to explain now. A conjecture on integer arithmetic 41 Lemma 1. For all positive integers n, m with n ≤ m, if the statement Φn m−1 m fails for (x1 , . . . , xn ) ∈ Zn and 22 < |x1 | ≤ 22 , then the statement Φm fails for ( x1 , . . . , x1 , x2 , . . . , xn ) ∈ Zm . An analogous claim is true for any m−n+1 times m−1 m index k ∈ {1, . . . , n} with 22 < |xk | ≤ 22 . Corollary 1. The Conjecture is equivalent to the statement ∀nΨn , where Ψn denotes the statement ∀x1 , . . . , xn ∈ Z ∃y1 , . . . , yn ∈ Z n−1 n 2 2 2 < max |x1 |, . . . , |xn | ≤ 2 =⇒ max |x1 |, . . . , |xn | < max |y1 |, . . . , |yn | ∧ ∀i, j, k ∈ {1, . . . , n} (xi + xj = xk =⇒ yi + yj = yk ) ∧ ∀i, j, k ∈ {1, . . . , n} (xi · xj = xk =⇒ yi · yj = yk ) Lemma 2. ¬Ψn implies that the Conjecture fails for subsystems of En . Lemma 3. If k ∈ {1, . . . , n}, an integer tuple (x1 , . . . , xn ) satisfies n−1 n < max |x1 |, . . . , |xn | = |xk | ≤ 22 22 and the statement Ψn is false for (x1 , . . . , xn ), then the statement Ψn+1 is false for the integer (n + 1)-tuple (x1 , . . . , xn , x2k ) which satisfies n n+1 22 < max |x1 |, . . . , |xn |, |x2k | = |xk |2 ≤ 22 Corollary 2. ¬Ψ1 =⇒ ¬Ψ2 =⇒ ¬Ψ3 =⇒ Ψ4 =⇒ . . . Obviously, ∀n (Φn ⇒ Ψn ). Unlike the statements Φn , each true statement Ψn can be confirmed by a brute-force search in a finite amount of time. We describe an algorithm for this purpose. Let ≤n denote the order on Zn which ranks the tuples (x1 , . . . , xn ) first according to max(|x1 |, . . . , |xn |) and then colexicographically. The ordered set (Zn , ≤n ) is isomorphic to (N, ≤). To confirm any true statement Ψn , it suffices to check all integer tuples (x1 , . . . , xn ) n−1 n which satisfy 22 < max |x1 |, . . . , |xn | ≤ 22 . To find appropriate integers y1 , . . . , yn , we start the search from (y1 , . . . , yn ) = −max |x1 |, . . . , |xn | − 1, . . . , −max |x1 |, . . . , |xn | − 1 and continue the search in the order ≤n . If an appropriate tuple (y1 , . . . , yn ) does not exist, then the algorithm does not terminate. Execution of the following MuPAD code never terminates. 42 A. Tyszka, M. Sporysz and A. Peszek succ:=proc(X) begin n:=nops(X): b:=max(abs(X[i]) $i=1..n): w:=max(abs(X[i]) $i=2..n): q:=1: while (q<=n and X[q]=b) do q:=q+1 end_while: if (q=1 and w<b) then X[1]:=b end_if: if (q=1 and w=b) then X[1]:=X[1]+1 end_if: if (q>1 and q<=n) then for i from 1 to q-1 do X[i]:=-b: end_for: X[q]:=X[q]+1: end_if: if q=n+1 then X:=[-b-1 $i=1..n] end_if: return(X): end_proc: X:=[-5,-5]: while 0=0 do n:=nops(X): it:=0: B:=[-max(abs(X[i]) $i=1..n)-1 $i=1..n]: repeat p:=0: m:=0: for i from 1 to n do for j from i to n do for k from 1 to n do if X[i]+X[j]=X[k] and B[i]+B[j]<>B[k] then m:=1 end_if: if X[i]*X[j]=X[k] and B[i]*B[j]<>B[k] then m:=1 end_if: end_for: end_for: end_for: if m=0 then p:=1 end_if: Y:=B: B:=succ(B): it:=it+1: if it=2 then print(X) end_if: until p=1 end_repeat: if it>1 then print([X,Y]) end_if: X:=succ(X): 43 A conjecture on integer arithmetic if max(abs(X[i]) $i=1..n)>2^(2^n) then print(n): X:=[-1-2^(2^n) $i=1..n+1]: end_if: end_while: The above code can be downloaded from [4]. Its Pascal translation is available in [1]. A longer MuPAD code which implements a faster algorithm is stored in [2]. The commercial version of MuPAD is no longer available as a stand-alone product, but only as the Symbolic Math Toolbox of MATLAB. Fortunately, the presented code can be executed by MuPAD Light, which was and is free ([5]). Applying Theorem 1 and Corollary 2, we conclude that the code sequentially displays all integers n ≥ 2 for which the statement Ψn is true, in particular 2 and 3. Integer tuples (x1 , . . . , xn ) and the computed pairs ((x1 , . . . , xn ), (y1 , . . . , yn )) are displayed only if n ≥ 2 and ∃i, j, k ∈ {1, . . . , n} (xi + xj = xk ∨ xi · xj = xk ) If an integer n is greater than 3, the statements Ψ1 , . . . , Ψn−1 are true and the statement Ψn is false, then the code displays an integer tuple (a1 , . . . , an ) for which 22 n−1 < max(|a1 |, . . . , |an |) ≤ 22 n and there are no integers y1 , . . . , yn such that max |a1 |, . . . , |an | < max |y1|, . . . , |yn| ∧ ∀i, j, k ∈ {1, . . . , n} (ai + aj = ak =⇒ yi + yj = yk ) ∧ ∀i, j, k ∈ {1, . . . , n} (ai · aj = ak =⇒ yi · yj = yk ) In this case, the output is finite and the tuple (a1 , . . . , an ) appears at its end. Theorem 1 and the above discussion together with Lemma 2 and Corollaries 1 and 2 prove the following theorem. Theorem 3. Execution of the code never terminates. If the Conjecture is true, then the code sequentially displays all integers n ≥ 2. If the Conjecture is false, then the code has a finite output which ends with an integer tuple n−1 n < max |a1 |, . . . , |an | ≤ 22 , and the system (a1 , . . . , an ), where n ≥ 4, 22 {xi + xj = xk : (i, j, k ∈ {1, . . . , n}) ∧ (ai + aj = ak )} ∪ 44 A. Tyszka, M. Sporysz and A. Peszek {xi · xj = xk : (i, j, k ∈ {1, . . . , n}) ∧ (ai · aj = ak )} is a counterexample to the Conjecture. The next code is written in Mathematica. The code reads the integers x1 , . . . , xn and returns integers y1 , . . . , yn that satisfy max |x1 |, . . . , |xn | < max |y1 |, . . . , |yn | ∧ ∀i, j, k ∈ {1, . . . , n} (xi + xj = xk =⇒ yi + yj = yk ) ∧ ∀i, j, k ∈ {1, . . . , n} (xi · xj = xk =⇒ yi · yj = yk ) , if they exist. In the opposite case, execution of the code does not stop and its output is empty. The names x1, . . . , xn should be replaced by concrete integers. X={x1,...,xn}; a=Max[Abs[X]]; B=Table[-a-1,{i,1,Length[X]}]; Y={}; While[True,{ m=0; S={1,1,1}; While[True,{ If[(X[[S[[1]]]]+X[[S[[2]]]]==X[[S[[3]]]])&& (B[[S[[1]]]]+B[[S[[2]]]]!=B[[S[[3]]]]),m=1]; If[(X[[S[[1]]]]*X[[S[[2]]]]==X[[S[[3]]]])&& (B[[S[[1]]]]*B[[S[[2]]]]!=B[[S[[3]]]]),m=1]; i=1; While[(i<=3)&&(S[[i]]==Length[X]),i++]; If[i==1,S[[1]]=S[[1]]+1]; If[i==2,{S[[1]]=S[[2]]+1;S[[2]]=S[[2]]+1;}]; If[(i==3)||(i==4),{S[[1]]=1;S[[2]]=1;S[[3]]=S[[3]]+1;}]; If[(S[[3]]==Length[X]+1)||(m==1),Break[]]; }]; Y=B; b=Max[Abs[B]]; If[Length[X]>1,w=Max[Abs[Part[B,Range[2,Length[B]]]]]]; q=1; While[(q<=Length[X])&&(B[[q]]==b),q++]; A conjecture on integer arithmetic 45 If[(Length[X]==1)&&(q==1),B[[1]]=b]; If[(Length[X]>1)&&(q==1)&&(w<b),B[[1]]=b]; If[(Length[X]>1)&&(q==1)&&(w==b),B[[1]]=B[[1]]+1]; If[(q>1)&&(q<=Length[X]), {For[u=1,u<=q-1,u++,B[[u]]=-b];B[[q]]=B[[q]]+1;}]; If[q==Length[X]+1,{B=Table[-b-1,{i,1,Length[X]}]}]; If[m==0,Break[]];}]; Print[Y]; The following C++ code is a translation of the Mathematica code. The names x1,...,xn should be replaced by concrete integers. #include <string.h> #include <vector> #include <iostream> int dim; int max(int *XX, int start) {int i=start, max=start; while ((++i)<dim) if (abs(XX[i])>abs(XX[max])) max=i; return abs(XX[max]);} int main() {int X[]={x1,...,xn}; dim=sizeof(X)/sizeof(int); int dim2=dim*sizeof(int); int a=max(X,0); int *B=new int[dim]; int *Y=new int[dim]; for (int t=0; t<dim; t++) B[t]=-a-1; int m=0; do{ m=0; int S[]={0,0,0}; do{ if ((X[S[0]]+X[S[1]])==X[S[2]] && (B[S[0]]+B[S[1]])!=B[S[2]]) m=1; if ((X[S[0]]*X[S[1]])==X[S[2]] && (B[S[0]]*B[S[1]])!=B[S[2]]) m=1; int i=0; while (i<3 && S[i]==(dim-1)) i++; if (i==0) S[0]++; if (i==1) {S[0]=S[1]+1;S[1]++;} if (i==2 || i==3) {S[0]=0;S[1]=0;S[2]++;}} while (S[2]!=dim && m==0); memcpy(Y,B,dim2); 46 A. Tyszka, M. Sporysz and A. Peszek int b=max(B,0); int w=0; if (dim>1) w=max(B,1); int q=0; while (q<dim && B[q]==b) q++; if (dim==1 && q==0) B[0]=b; if (dim>1 && q==0 && w<b) B[0]=b; if (dim>1 && q==0 && w==b) B[0]++; if (q>0 && q<dim) {for (int u=0; u<q; u++) B[u]=-b;B[q]++;} if (q==dim) {for (int t=0; t<dim; t++) B[t]=-b-1;}} while(m); for (int i=0; i<dim; i++) std::cout<<Y[i]<<" "; system("pause"); return 0;} Added in proof. Theorem 3 is about the satisfiability of the Conjecture, but not about its provability in any axiomatic system. Acknowledgement. Apoloniusz Tyszka wrote the mathematical part of the article and the MuPAD code. Maciej Sporysz wrote the Mathematica code while Agnieszka Peszek wrote the C++ code. The authors thank Wojciech Kulik for his contribution to the article. References [1] W. Kulik, A Pascal code which lists all integers n ≥ 2 with true Ψn , http://www.cyf-kr.edu.pl/~rttyszka/algorithm1.pas, http://www.cyf-kr.edu.pl/~rttyszka/algorithm1.exe. [2] A. Tyszka, A faster MuPAD code which lists all integers n ≥ 2 with true Ψn , http://www.cyf-kr.edu.pl/~rttyszka/algorithm2.txt. [3] A. Tyszka, A hypothetical upper bound for the solutions of a Diophantine equation with a finite number of solutions, http://arxiv.org/abs/0901.2093. [4] A. Tyszka, A MuPAD code which lists all integers n ≥ 2 with true Ψn , http://www.cyf-kr.edu.pl/~rttyszka/algorithm1.txt. [5] A. Tyszka, Links to an installation file for MuPAD http://www.cyf-kr.edu.pl/~rttyszka/MuPAD-Install.html. Received: July, 2012 Light,