login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxNonZeroInteger revision 1 of 4

1 2 3 4
Editor: Bill Page
Time: 2008/12/02 21:32:33 GMT-8
Note: new

changed:
-
\begin{spad}
)abbrev domain NZINT NonZeroInteger
NonZeroInteger: Join(OrderedAbelianSemiGroup, Monoid, CommutativeStar,CoercibleTo(Integer)) with
            gcd: (%,%) -> %
              ++ gcd(a,b) computes the greatest common divisor of two
              ++ positive integers \spad{a} and b.
            _-: % -> %
            retract:Integer->%
            retractIfCan:Integer->Union(%,"failed")
            retract:NonNegativeInteger->%
            retractIfCan:NonNegativeInteger->Union(%,"failed")
            convert:NonNegativeInteger->%
 == SubDomain(Integer,#1 ~= 0) add
     Rep == Integer
     x:%
     y:%
     z:Integer
     nz:NonNegativeInteger
     -x == (-(x pretend Integer)) pretend %
     x+y ==
      (z:=(x pretend Integer)+(y pretend Integer)) = 0 => error "zero"
      z pretend %

     coerce(x):Integer == x pretend Integer
     retract(z)== z pretend %
     convert(nz):% == retract(nz)
     retractIfCan(z) ==
       zero?(z) => "failed"
       retract(z)
     retract(nz)== nz pretend %
     retractIfCan(nz) ==
       zero?(nz) => "failed"
       retract(nz)
\end{spad}

\begin{axiom}
)show NZINT
\end{axiom}

\begin{axiom}
i:NZINT:=1
j:NZINT:=-1
j:NZINT:=-i
i+1
j+1
i+j
\end{axiom}

\begin{axiom}
i-j
retractIfCan(0)$NZINT
\end{axiom}


fricas
(1) -> <spad>
fricas
)abbrev domain NZINT NonZeroInteger
NonZeroInteger: Join(OrderedAbelianSemiGroup, Monoid, CommutativeStar,CoercibleTo(Integer)) with
            gcd: (%,%) -> %
              ++ gcd(a,b) computes the greatest common divisor of two
              ++ positive integers \spad{a} and b.
            _-: % -> %
            retract:Integer->%
            retractIfCan:Integer->Union(%,"failed")
            retract:NonNegativeInteger->%
            retractIfCan:NonNegativeInteger->Union(%,"failed")
            convert:NonNegativeInteger->%
 == SubDomain(Integer,#1 ~= 0) add
     Rep == Integer
     x:%
     y:%
     z:Integer
     nz:NonNegativeInteger
     -x == (-(x pretend Integer)) pretend %
     x+y ==
      (z:=(x pretend Integer)+(y pretend Integer)) = 0 => error "zero"
      z pretend %
coerce(x):Integer == x pretend Integer retract(z)== z pretend % convert(nz):% == retract(nz) retractIfCan(z) == zero?(z) => "failed" retract(z) retract(nz)== nz pretend % retractIfCan(nz) == zero?(nz) => "failed" retract(nz)</spad>
fricas
Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/1280517217541771186-25px001.spad
      using system compiler.
   NZINT abbreviates domain NonZeroInteger 
------------------------------------------------------------------------
   initializing NRLIB NZINT for NonZeroInteger 
   compiling into NRLIB NZINT 
************* USER ERROR **********
available signatures for Rep: 
    NONE
NEED Rep: () -> ?
****** comp fails at level 1 with expression: ******
((DEF (|Rep|) (NIL) (|Integer|)))
****** level 1  ******
x:= (DEF (Rep) (NIL) (Integer))
m:= $EmptyMode
f:=
((((|#1| #) (* #) (+ #) (- #) ...)))
>> Apparent user error: unspecified error

fricas
)show NZINT
You cannot now use NonZeroInteger in the context you have it.

fricas
i:NZINT:=1
You cannot now use NonZeroInteger in the context you have it.

fricas
i-j

\label{eq1}- j + i(1)
Type: Polynomial(Integer)
fricas
retractIfCan(0)$NZINT
You cannot now use NonZeroInteger in the context you have it.