home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / misc / mas / masdef / poly.spc < prev    next >
Encoding:
Text File  |  1990-12-10  |  4.0 KB  |  123 lines

  1.  
  2.  
  3. (* ---------- integer recursive polynomial unit --- *)
  4.  
  5. SPECIFICATION IPOL;
  6. (*Integer recursive polynomial specification. *)
  7. (*1*) SORT ipol, pol, dip, atom;
  8. (*2*) SIGNATURE IPzero ()                : ipol;
  9.       SIGNATURE IPSUM  (atom,ipol,ipol)  : ipol;            
  10.       SIGNATURE IPNEG  (atom,ipol)       : ipol;
  11.       SIGNATURE IPDIF  (atom,ipol,ipol)  : ipol;
  12. (*3*) SIGNATURE IPPROD (atom,ipol,ipol)  : ipol;
  13.       SIGNATURE IPEXP  (atom,ipol,ipol)  : ipol;
  14. (*4*) SIGNATURE PFDIP  (dip,atom,pol)    ;
  15. (*9*) END IPOL.
  16.  
  17.  
  18. IMPLEMENTATION IPOL;
  19. (*2*) PROCEDURE IPzero();
  20.       BEGIN RETURN(0) END IPzero;
  21. (*2*) PROCEDURE IPDIF(r,a,b);
  22.       BEGIN RETURN(IPSUM(r,a,IPNEG(r,b))) END IPDIF;
  23. (*9*) END IPOL.
  24.  
  25.  
  26. MODEL RING;
  27. (*Integer recursive polynomial are a model for rings. *)
  28. (*1*) IMPORT IPOL;
  29. (*2*) MAP ZERO(ipol)      -> IPzero();
  30.       MAP SUM(ipol,ipol)  -> IPSUM(DESC,VAL,VAL)  WHEN EQ(DESC,DESC);
  31.       MAP NEG(ipol)       -> IPNEG(DESC,VAL);
  32.       MAP DIF(ipol,ipol)  -> IPDIF(DESC,VAL,VAL)  WHEN EQ(DESC,DESC);
  33. (*3*) MAP PROD(ipol,ipol) -> IPPROD(DESC,VAL,VAL) WHEN EQ(DESC,DESC);
  34.       MAP EXP(ipol,atom)  -> IPEXP(DESC,VAL,VAL);
  35. (*9*) END RING.
  36.  
  37.  
  38. (* ---------- distributive rational polynomial unit --- *)
  39.  
  40. SPECIFICATION DIRP;
  41. (*Distributive rational polynomial specification. *)
  42. (*1*) SORT dip, dirp, diip, pol, atom;
  43. (*2*) SIGNATURE DIRPSM (dirp,dirp)         : dirp;            
  44.       SIGNATURE DIRPNG (dirp)              : dirp;
  45.       SIGNATURE DIRPDF (dirp,dirp)         : dirp;
  46. (*3*) SIGNATURE DIRPPR (dirp,dirp)         : dirp;
  47. (*4*) SIGNATURE DIPFP  (atom,pol)          : dip;
  48. (*6*) SIGNATURE DIIFRP (dirp)              : diip;
  49.       SIGNATURE DIRFIP (diip)              : dirp;
  50. (*9*) END DIRP.
  51.  
  52.  
  53. IMPLEMENTATION DIRP;
  54. (*2*) PROCEDURE DIRPDF(a,b);
  55.       BEGIN RETURN(DIRPSM(a,DIRPNG(b))) END DIRPDF;
  56. (*9*) END DIRP.
  57.  
  58.  
  59. MODEL RING;
  60. (*Distributive rational polynomial are a model for rings. *)
  61. (*1*) IMPORT DIRP;
  62. (*2*) MAP SUM(dirp,dirp)  -> DIRPSM(VAL,VAL);
  63.       MAP NEG(dirp)       -> DIRPNG(VAL);
  64.       MAP DIF(dirp,dirp)  -> DIRPDF(VAL,VAL);
  65. (*4*) MAP PROD(dirp,dirp) -> DIRPPR(VAL,VAL);
  66.       MAP EXP(dirp,dirp)  -> DIRPEX(VAL,VAL);
  67. (*9*) END RING.
  68.  
  69.  
  70. (* ---------- distributive rational polynomial list unit --- *)
  71.  
  72. SPECIFICATION DIRL;
  73. (*Distributive rational polynomial list specification. *)
  74. (*1*) SORT dip, dirp, diip, pol, atom, dc;
  75. (*2*) SIGNATURE PDREAD  ()          : dc;            
  76.       SIGNATURE PDWRITE (dc)        ;            
  77. (*3*) SIGNATURE DIRLRD  ()          : dirl;            
  78.       SIGNATURE DIRLWR  (dirl)      ;            
  79.       SIGNATURE PREADD  (dc)        : dirl;            
  80.       SIGNATURE PWRITED (dirl)      ;            
  81. (*4*) SIGNATURE DIILFR  (dirl)      : diil;            
  82. (*5*) SIGNATURE DIRPNF  (dirl,dirp) : dirp;            
  83.       SIGNATURE DIRPGB  (dirl,atom) : dirl;            
  84.       SIGNATURE DIRPGB1 (dirl)      : dirl;            
  85.       SIGNATURE DIRLIS  (dirl)      : dirl;            
  86. (*6*) SIGNATURE SetTflag(atom)      ;            
  87. (*9*) END DIRL.
  88.  
  89.  
  90. IMPLEMENTATION DIRL;
  91. (*Distributive rational polynomial list implementation. *)
  92.       VAR s: atom;
  93. (*2*) PROCEDURE DIRPGB1(a) : dirl;
  94.       BEGIN RETURN(DIRPGB(a,s)) END DIRPGB1;            
  95. (*3*) PROCEDURE SetTflag(a);
  96.       BEGIN s:=a END SetTflag;            
  97. (*4*) BEGIN 
  98.             s:=1;      
  99. (*9*) END DIRL.
  100.  
  101.  
  102. MODEL OBJECT;
  103. (*Distributive rational polynomial lists are a model for objects. *)
  104. (*1*) IMPORT DIRL;
  105. (*2*) MAP DECREAD(dirl)   -> PDREAD();
  106.       MAP DECWRITE(dirl)  -> PDWRITE(VAL);
  107. (*3*) MAP READ(dirl)      -> PREADD(DESC);
  108.       MAP WRITE(dirl)     -> PWRITED(DESC,VAL);
  109. (*9*) END OBJECT.
  110.  
  111.  
  112. (* ---------- gb structure unit --- *)
  113.  
  114. MODEL GBRING;
  115. (*Distributive rational polynomial lists are a model for 
  116. Groebner base rings. *)
  117.       IMPORT DIRL;
  118. (*2*) MAP NF(dirl,dirp) -> DIRPNF(VAL,VAL);
  119.       MAP GB(dirl)      -> DIRPGB1(VAL);
  120.       MAP IRR(dirl)     -> DIRLIS(VAL);
  121. (*9*) END GBRING.
  122.  
  123.