[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Specification int-pair
enrich
   nat-pair
with
   

   
   
   functions  . × . : int × int → int;
             comment: encode arbitrary pairs of integers (bijective).;
              encode : int → nat;
             comment: encode positive and negative integers (bijective).;
              decode : nat → int;
              encode : nat → int;
             comment: encode nats as all integers (bijective).;
              decode : int → nat;
              . .1 : int → int;
             comment: (i × j).1 = i;
              . .2 : int → int;
             comment: (i × j).2 = j;
   
   
   
   
   

   

   axioms enc-int-pos :  ⊦ 0 ≤ i → encode(i) = 2 * i→n(i);
          used for: ls;
          enc-int-neg :  ⊦ i < 0 → encode(i) = 2 * i→n(i) - 1;
          used for: ls;
          enc-nat-pos :  ⊦ n % 2 = 0 → encode(n) = n→i(n / 2);
          used for: ls;
          enc-nat-neg :  ⊦ n % 2 ≠ 0 → encode(n) = ~ n→i((n + 1) / 2);
          used for: ls;
          encode-pair :  ⊦ i × j = encode(encode(encode(i), encode(j)));
          used for: ls;
          dec-int-pos :  ⊦ n % 2 = 0 → decode(n) = n→i(n / 2);
          used for: ls;
          dec-int-neg :  ⊦ n % 2 ≠ 0 → decode(n) = ~ n→i((n + 1) / 2);
          used for: ls;
          dec-nat-pos :  ⊦ 0 ≤ i → decode(i) = 2 * i→n(i);
          used for: ls;
          dec-nat-neg :  ⊦ i < 0 → decode(i) = 2 * i→n(i) - 1;
          used for: ls;
          dec-fst :  ⊦ i.1 = decode(decode(i).1);
          used for: ls;
          dec-snd :  ⊦ i.2 = decode(decode(i).2);
          used for: ls;

   

   
end enrich