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

Edit detail for SandBoxMorphism revision 14 of 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Editor: Bill Page
Time: 2008/06/18 19:31:51 GMT-7
Note: new Rep for Morphism


        

spad
)abbrev domain MORPH Morphism
T ==> SetCategory
Morphism(source:T, target:T): with
  domain:%->T
  codomain:%->T
  coerce:(source->target)  -> %
  coerce:%->(source->target)
  coerce:%->OutputForm
  elt:(%,source)->target
 == (source->target) add
  -- Rep == (source->target)
  Rep == SExpression
  domain(p:%):T == source
  codomain(p:%):T == target
  coerce(r:(source->target)):% == per(r pretend SExpression)
  coerce(p:%):(source->target) == (rep(p) pretend (source->target))
  coerce(p:%):OutputForm == p pretend OutputForm
  elt(f,x) == (rep(f) pretend (source->target))(x)
spad
   Compiling OpenAxiom source code from file 
      /var/zope2/var/LatexWiki/6008188987750019428-25px001.spad using 
      Spad compiler.
   MORPH abbreviates domain Morphism 
   processing macro definition T$ ==> SetCategory 
------------------------------------------------------------------------ initializing NRLIB MORPH for Morphism compiling into NRLIB MORPH Adding $ modemaps Adding source modemaps Adding target modemaps Adding Rep modemaps compiling exported domain : % -> SetCategory Time: 0.05 SEC.
compiling exported codomain : % -> SetCategory Time: 0 SEC.
compiling exported coerce : source -> target -> % Adding SExpression modemaps MORPH;coerce;M$;3 is replaced by r Time: 0 SEC.
compiling exported coerce : % -> source -> target Adding SExpression modemaps MORPH;coerce;$M;4 is replaced by p Time: 0.01 SEC.
Adding OutputForm modemaps compiling exported coerce : % -> OutputForm MORPH;coerce;$Of;5 is replaced by p Time: 0.01 SEC.
compiling exported elt : (%,source) -> target Adding SExpression modemaps MORPH;elt;$sourcetarget;6 is replaced by SPADCALLxf Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |Morphism| REDEFINED
;;; *** |Morphism| REDEFINED Time: 0 SEC.
Cumulative Statistics for Constructor Morphism Time: 0.08 seconds
--------------non extending category---------------------- Morphism(#1,#2) of category CATEGORY(domain,domain: % -> SetCategory,codomain: % -> SetCategory,coerce: (#1 -> #2) -> %, coerce: % -> (#1 -> #2),coerce: % -> OutputForm,elt: (%,#1) -> #2) has no NIL finalizing NRLIB MORPH Processing Morphism for Browser database: --->-->Morphism((domain (T$ %))): Not documented!!!! --->-->Morphism((codomain (T$ %))): Not documented!!!! --->-->Morphism((coerce (% (Mapping target source)))): Not documented!!!! --->-->Morphism((coerce ((Mapping target source) %))): Not documented!!!! --->-->Morphism((coerce ((OutputForm) %))): Not documented!!!! --->-->Morphism((elt (target % source))): Not documented!!!! --->-->Morphism(constructor): Not documented!!!! --->-->Morphism: Missing Description
; compiling file "/var/zope2/var/LatexWiki/MORPH.NRLIB/code.lsp" (written 14 OCT 2009 03:13:02 PM): ; compiling (/VERSIONCHECK 2) ; compiling (DEFUN |MORPH;domain;$Sc;1| ...) ; compiling (DEFUN |MORPH;codomain;$Sc;2| ...) ; compiling (PUT (QUOTE |MORPH;coerce;M$;3|) ...) ; compiling (DEFUN |MORPH;coerce;M$;3| ...) ; compiling (PUT (QUOTE |MORPH;coerce;$M;4|) ...) ; compiling (DEFUN |MORPH;coerce;$M;4| ...) ; compiling (PUT (QUOTE |MORPH;coerce;$Of;5|) ...) ; compiling (DEFUN |MORPH;coerce;$Of;5| ...) ; compiling (PUT (QUOTE |MORPH;elt;$sourcetarget;6|) ...) ; compiling (DEFUN |MORPH;elt;$sourcetarget;6| ...) ; compiling (DEFUN |Morphism| ...) ; compiling (DEFUN |Morphism;| ...) ; compiling (MAKEPROP (QUOTE |Morphism|) ...)
; /var/zope2/var/LatexWiki/MORPH.NRLIB/code.fasl written ; compilation finished in 0:00:00.174 ------------------------------------------------------------------------ Morphism is now explicitly exposed in frame initial Morphism will be automatically loaded when needed from /var/zope2/var/LatexWiki/MORPH.NRLIB/code.fasl

The naive represetation of Rep == (source->target) gives the following error.

Error: Caught fatal error [memory may be damaged]? ... Error signalled by EVALHOOK. Backtrace: system:universal-error-handler > evalhook > lambda > lambda-closure > block > apply > APPLY

But using SExpression seems to work.

axiom
)show Morphism(Float,Integer)
Morphism(Float,Integer) is a domain constructor. Abbreviation for Morphism is MORPH This constructor is exposed in this frame. Issue )edit /var/zope2/var/LatexWiki/6008188987750019428-25px001.spad to see algebra source code for MORPH
------------------------------- Operations --------------------------------
codomain : % -> SetCategory coerce : % -> (Float -> Integer) coerce : % -> OutputForm coerce : (Float -> Integer) -> % domain : % -> SetCategory ?.? : (%,Float) -> Integer
f:Morphism(Float,Integer)
Type: Void
axiom
f:=(x:Float):Integer +->wholePart(x)
LatexWiki Image(1)
Type: Morphism(Float,Integer)
axiom
f(1.1)
LatexWiki Image(2)
Type: PositiveInteger?
axiom
(f::(Float->Integer))(1.1)
LatexWiki Image(3)
Type: PositiveInteger?
axiom
domain f
LatexWiki Image(4)
Type: SetCategory?
axiom
codomain f
LatexWiki Image(5)
Type: SetCategory?
axiom
(f::(domain(f)->codomain(f)))(1.1)
LatexWiki Image(6)
Type: PositiveInteger?
axiom
g:Morphism(Integer,String):=(i:Integer):String +-> i::String
LatexWiki Image(7)
Type: Morphism(Integer,String)
axiom
g(1985)
LatexWiki Image(8)
Type: String

Next let's study how this sort of thing is accomplished in a similar domain.

spad
)abbrev domain HOM Hom
++ Based on Automorphism by: Manuel Bronstein
++ Description:
++       Hom(R,S) is the domain of homomorphisms - Mapping(S,R).
Hom(R:SetCategory,S:SetCategory): Join(SetCategory, Eltable(R, S)) with
      morphism: (R -> S) -> %
        ++ morphism(f) returns the non-invertible morphism given by f.
   == add
      -- Why doesn't the obvious representation just (R->S) work?
      Rep == SExpression
      morphism(f) == per(f pretend SExpression)
      elt(f, r)   == (rep(f) pretend (R->S))(r)
--Rep == List(R -> S) --morphism(f) == per([f #1]) --elt(f, r) == (rep(f)(1))(r)
--Rep := ((R, Integer) -> S) --morphism(f) == (#2; f(#1)) --elt(f, r) == (g := f pretend ((R, Integer) -> S); g(r, 1))
f = g == EQ(f, g)$Lisp coerce(f:%):OutputForm == message("theMap ...")
spad
   Compiling OpenAxiom source code from file 
      /var/zope2/var/LatexWiki/8077618115899383420-25px003.spad using 
      Spad compiler.
   HOM abbreviates domain Hom 
------------------------------------------------------------------------
   initializing NRLIB HOM for Hom 
   compiling into NRLIB HOM 
   Adding $ modemaps
   Adding R modemaps
   Adding S modemaps
   Adding Rep modemaps
   compiling exported morphism : R -> S -> %
   Adding SExpression modemaps
      HOM;morphism;M$;1 is replaced by f 
Time: 0.03 SEC.
compiling exported elt : (%,R) -> S Adding SExpression modemaps HOM;elt;$RS;2 is replaced by SPADCALLrf Time: 0.01 SEC.
Adding Boolean modemaps compiling exported = : (%,%) -> Boolean HOM;=;2$B;3 is replaced by EQ Time: 0.01 SEC.
Adding OutputForm modemaps compiling exported coerce : % -> OutputForm Adding String modemaps Time: 0.02 SEC.
(time taken in buildFunctor: 10)
;;; *** |Hom| REDEFINED
;;; *** |Hom| REDEFINED Time: 0.01 SEC.
Cumulative Statistics for Constructor Hom Time: 0.08 seconds
finalizing NRLIB HOM Processing Hom for Browser database: -- morphism : (R -> S) -> % -- constructor ; compiling file "/var/zope2/var/LatexWiki/HOM.NRLIB/code.lsp" (written 14 OCT 2009 03:13:21 PM): ; compiling (/VERSIONCHECK 2) ; compiling (PUT (QUOTE |HOM;morphism;M$;1|) ...) ; compiling (DEFUN |HOM;morphism;M$;1| ...) ; compiling (PUT (QUOTE |HOM;elt;$RS;2|) ...) ; compiling (DEFUN |HOM;elt;$RS;2| ...) ; compiling (PUT (QUOTE |HOM;=;2$B;3|) ...) ; compiling (DEFUN |HOM;=;2$B;3| ...) ; compiling (DEFUN |HOM;coerce;$Of;4| ...) ; compiling (DEFUN |Hom| ...) ; compiling (DEFUN |Hom;| ...) ; compiling (MAKEPROP (QUOTE |Hom|) ...)
; /var/zope2/var/LatexWiki/HOM.NRLIB/code.fasl written ; compilation finished in 0:00:00.095 ------------------------------------------------------------------------ Hom is now explicitly exposed in frame initial Hom will be automatically loaded when needed from /var/zope2/var/LatexWiki/HOM.NRLIB/code.fasl

axiom
p:=morphism((x:Integer):Float +-> x+1.0)$Hom(Integer,Float)
LatexWiki Image(9)
Type: Hom(Integer,Float)
axiom
p(2)
LatexWiki Image(10)
Type: Float
axiom
p(-1)
LatexWiki Image(11)
Type: Float