|
|
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-25px001
Reading /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-25px001
Some tasks:
never
.never
that works for any Domain DomX
.