|
|
|
last edited 16 years ago by hemmecke |
| 1 | ||
|
Editor: hemmecke
Time: 2008/11/14 05:50:36 GMT-8 |
||
| Note: | ||
changed: - This page deals with specification of isomorphic domains. See thread http://groups.google.com/group/fricas-devel/browse_thread/thread/ed7004a07ae07461 \begin{aldor} #include "aldor" #include "aldorio" define IsIsomorphicTo(C: Category, T: C): Category == with { coerce: % -> T } -- abelian monoid with a distinguished element. AbelianMonoid1: Category == with { 0: %; 1: %; -- a distinguished element (generator) +: (%, %) -> %; } -- Integers Dom1: AbelianMonoid1 == add { Rep == Integer; import from Rep; 0: % == per 0; 1: % == per 1; (x: %) + (y: %): % == per(rep x + rep y); } -- Even integers Dom2: AbelianMonoid1 == add { Rep == Integer; import from Rep; 0: % == per 0; 1: % == per 2; (x: %) + (y: %): % == per(rep x + rep y); } -- Integers represented as sticks. DomS: AbelianMonoid1 == add { Rep == String; import from Rep; 0: % == per ""; 1: % == per "|"; (x: %) + (y: %): % == per(rep x + rep y); } extend Dom1: IsIsomorphicTo(AbelianMonoid1, Dom2) == add { coerce(x: %): Dom2 == never; } extend Dom2: IsIsomorphicTo(AbelianMonoid1, DomS) == add { coerce(x: %): DomS == never; } extend DomS: IsIsomorphicTo(AbelianMonoid1, Dom1) == add { coerce(x: %): Dom1 == never; } \end{aldor} Some tasks: 1. Give implementations instead of 'never'. 1. Give a **uniform** implementation instead of 'never' that works for any Domain 'DomX'.
This page deals with specification of isomorphic domains.
See thread http://groups.google.com/group/fricas-devel/browse_thread/thread/ed7004a07ae07461
(1) -> <aldor> #include "aldor" #include "aldorio"
define IsIsomorphicTo(C: Category,T: C): Category == with { coerce: % -> T }
-- abelian monoid with a distinguished element. AbelianMonoid1: Category == with { 0: %; 1: %; -- a distinguished element (generator) +: (%,%) -> %; }
-- Integers Dom1: AbelianMonoid1 == add { Rep == Integer; import from Rep; 0: % == per 0; 1: % == per 1; (x: %) + (y: %): % == per(rep x + rep y); }
-- Even integers Dom2: AbelianMonoid1 == add { Rep == Integer; import from Rep; 0: % == per 0; 1: % == per 2; (x: %) + (y: %): % == per(rep x + rep y); }
-- Integers represented as sticks. DomS: AbelianMonoid1 == add { Rep == String; import from Rep; 0: % == per ""; 1: % == per "|"; (x: %) + (y: %): % == per(rep x + rep y); }
extend Dom1: IsIsomorphicTo(AbelianMonoid1,Dom2) == add { coerce(x: %): Dom2 == never; } extend Dom2: IsIsomorphicTo(AbelianMonoid1, DomS) == add { coerce(x: %): DomS == never; } extend DomS: IsIsomorphicTo(AbelianMonoid1, Dom1) == add { coerce(x: %): Dom1 == never; }</aldor>
Compiling FriCAS source code from file
/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/5159550970087145340-25px001.as
using Aldor compiler and options
-O -Fasy -Fao -Flsp -lfricas -Mno-ALDOR_W_WillObsolete -DFriCAS -Y $FRICAS/algebra -I $FRICAS/algebra
Use the system command )set compiler args to change these
options.Compiling Lisp source code from file
./5159550970087145340-25px001.lsp
Issuing )library command for 5159550970087145340-25px001Reading /var/aw/var/LatexWiki/5159550970087145340-25px001.asy
DomS is now explicitly exposed in frame initial
DomS will be automatically loaded when needed from
/var/aw/var/LatexWiki/5159550970087145340-25px001
Dom2 is now explicitly exposed in frame initial
Dom2 will be automatically loaded when needed from
/var/aw/var/LatexWiki/5159550970087145340-25px001
Dom1 is now explicitly exposed in frame initial
Dom1 will be automatically loaded when needed from
/var/aw/var/LatexWiki/5159550970087145340-25px001
IsIsomorphicTo is now explicitly exposed in frame initial
IsIsomorphicTo will be automatically loaded when needed from
/var/aw/var/LatexWiki/5159550970087145340-25px001
AbelianMonoid1 is now explicitly exposed in frame initial
AbelianMonoid1 will be automatically loaded when needed from
/var/aw/var/LatexWiki/5159550970087145340-25px001Some tasks:
never.never that works for any Domain DomX.