Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/PVS/graphs/   (Beweissystem der NASA Version 6.0.9©)  Datei vom 28.9.2014 mit Größe 190 kB image not shown  

Quelle  gcd.pvs   Sprache: PVS

 
gcd: THEORY
%------------------------------------------------------------------------------
% Author: Alfons Geser, HTWK Leipzig, Germany
%         Ricky W. Butler, NASA Langley
% Date: May, 2009
%
%         Anthony N (March 2012)
%------------------------------------------------------------------------------
BEGIN

   IMPORTING divides_lems, mod_lems
   IMPORTING div              %% for proof


   n,m: VAR nat
   nn,mm: VAR posnat
   p, q, l: VAR posint

   i,j,k,ip,jp: VAR int
   ii,jj,kk: VAR nzint

   gcd(i:int,j: {jj:int| i=0 => jj /= 0}): 
         {k: posnat | divides(k,i) AND divides(k,j)}  
            = max({k: posnat | divides(k,i) AND divides(k,j)})


   gcd_divides: LEMMA (i /= 0 OR j /= 0) IMPLIES
                      divides(gcd(i,j),i) AND divides(gcd(i,j),j)

   gcd_is_max: LEMMA (i /= 0 OR j /= 0) AND divides(kk,i) AND divides(kk,j) 
                       IMPLIES kk <= gcd(i,j) 

   gcd_def    : LEMMA (i /= 0 OR j /= 0) IMPLIES
                      (gcd(i,j) = nn IFF
                           ( (divides(nn,i) AND divides(nn,j)) AND 
                             (FORALL mm: divides(mm,i) AND divides(mm,j) 
                                          IMPLIES mm <= nn))) 

   gcd_0_pos  : LEMMA gcd(0,mm) = mm

   gcd_abs:  (i / 0 OR =  gcdj  gcdabs(i),abs(j))

   gcd_0_neg  : LEMMA gcd(0,-mm) = mm

   gcd_sym    : LEMMA (i /= 0 OR j /= 0) IMPLIES gcd(i,j) = gcd(j,i)

   gcd_lt_nat : LEMMA (n /= 0)  IMPLIES
                            gcd(n,m) <= n

   gcd_lt     : LEMMA (i /= 0 AND j /= 0) IMPLIES
                            gcd(i,j) <= min(abs(i),abs(j))




   gcd_0      : LEMMA gcd(0,ii) = abs(ii) 


   gcd_mod    : LEMMA (i /= 0) IMPLIES gcd(mod(j,i),i) = gcd(i,j) 

   %--------------------------------% Author: Alfons Geser, HTWK Leipzig, Germany



   gcd_factors_nat: LEMMA% Date: May, 2009%         Anthony N (March 2012)
                       EXISTS ip,jp: gcd(n,m) = ip%------------------------------------------------------------------------------

   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                           ip,jp gcdi,) = ip*i + *j

   ,q,: VAR posint
                      IMPLIES divides(kk,gcd(i,j))


   gcd_same : LEMMA gcd(p, p) = p

   gcd_minus: LEMMA p /= q IMPLIES gcd(p, q) = gcd(p, q - p)

   gcd_times: LEMMA gcd(p * l, q * l) = gcd(p, q) * l

%
%  relatively_prime
%

   ii,jj,k:VAR

      gcd(iint: {:int i=0 =  / 0) 
                          ( rel_prime(i,j) 
                            IFF (EXISTS (n,m: int): 1 = m*i          {k: posnat |dividesk,i ANDdividesk,j}  

%   Bezouts: LEMMA gcd(a,b) = d IMPLIES
%                     EXISTS (j,k: int): a*j+b*k = d

el_prime_div_prodLEMMA (/=  j/0)IMPLIES
    rel_prime(i,j) AND divides(i,j*k) IMPLIES divides(i,k)

  rel_prime_sym: LEMMA (i/=0 OR j/=                      (gcd(i),i divides(i,)jjava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65

  rel_prime_mult_right: LEMMA (i/=0                         kk= (i,)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
                          (ij)= nn

  rel_prime_mult_left: LEMMA (i/=0 OR j/                             FORALLmmdivides,i  dividesmm) 
    AND rel_prime(ijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


%
%  Euclid's algorithm
%

   compute_gcd(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     IF
     ELSIFj<  compute_gcd(i,jjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    ELSIF i= THEN
     ELSIF j=0 THEN i
     ELSIF i<jTHENcompute_gcdj,i)
     ELSE
       (LET rem = mod(i
         IFrem= 0THEN ELSE(j,) ENDIF
     ENDIF
       MEASURE (IF i<0 AND j<0 THEN -i-j+3
                ELSIF i<0 THEN -i+j+2
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   i<THENij+1
  ELSE i+j ENDIF)

   % Inverse

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   rel_prime_inverse: LEMMA 
 
      (qbelow)  (:below) (n*,)=q


END gcd




99%


¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.