Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.13 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge