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

Edit detail for SandBoxMorphism revision 12 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:24:42 GMT-7
Note: new Rep for Morphism

changed:
-  --elt:(%,source)->target
  elt:(%,source)->target

changed:
-  Rep == (source->target)
  -- Rep == (source->target)
  Rep == SExpression

changed:
-  coerce(r:(source->target)):% == per(r)
-  coerce(p:%):(source->target) == p pretend (source->target)
  coerce(r:(source->target)):% == per(r pretend SExpression)
  coerce(p:%):(source->target) == (rep(p) pretend (source->target))

changed:
-  --elt(f,x) == (f::(source->target))(x)
  elt(f,x) == (rep(f) pretend (source->target))(x)

changed:
-      -- Why doesn't this simpler representation work?
-      --Rep := (R -> S)
-      --morphism(f)                     == f(#1)
-      --elt(f, r) == (g := f pretend (R -> S); g(r))
-
-      Rep := ((R, Integer) -> S)
-      morphism(f)                     == (#2; f(#1))
-      elt(f, r) == (g := f pretend ((R, Integer) -> S); g(r, 1))
      -- 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))

changed:
-      coerce(f:%):OutputForm          == message("R -> S")
      coerce(f:%):OutputForm          == message("theMap ...")

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
   Adding SExpression modemaps
   compiling local rep : % -> SExpression
      MORPH;rep is replaced by G1393 
Time: 0 SEC.
   compiling local per : SExpression -> %
      MORPH;per is replaced by G1393 
Time: 0 SEC.
   compiling exported domain : % -> SetCategory
Time: 0 SEC.
   compiling exported codomain : % -> SetCategory
Time: 0 SEC.
   compiling exported coerce : source -> target -> %
Time: 0 SEC.
   compiling exported coerce : % -> source -> target
Time: 0.06 SEC.
   Adding OutputForm modemaps
   compiling exported coerce : % -> OutputForm
      MORPH;coerce;$Of;7 is replaced by p 
Time: 0 SEC.
   compiling exported elt : (%,source) -> target
Time: 0.01 SEC.
(time taken in buildFunctor:  0)
;;;     ***       |Morphism| REDEFINED
;;;     ***       |Morphism| REDEFINED
Time: 0 SEC.
   Cumulative Statistics for Constructor Morphism
      Time: 0.07 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
------------------------------------------------------------------------
   Morphism is now explicitly exposed in frame initial 
   Morphism will be automatically loaded when needed from 
      /var/zope2/var/LatexWiki/MORPH.NRLIB/code.o

If we define elt (commented out above), then f(1.1) gives the following:

  Error: Caught fatal error [memory may be damaged]
  Fast links are on: do (si::use-fast-links nil) for debugging
  Error signalled by RETURN.
  Broken at APPLY.  Type :H for Help.
  BOOT>>
  Error: The variable QUIT is unbound.
  Fast links are on: do (si::use-fast-links nil) for debugging
  Error signalled by EVALHOOK.
  Backtrace: system:universal-error-handler > evalhook > lambda > lambda-closure > block > apply > APPLY

But the same coercion works in the interpreter.

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) ; (DEFUN |*1;anonymousFunction;0;initial;internal| ...) is being compiled. ;; The variable |*1;anonymousFunction;0;initial;internal;MV| is undefined. ;; The compiler will assume this variable is a global.
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?

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
   Adding SExpression modemaps
   compiling local rep : % -> SExpression
      HOM;rep is replaced by G1441 
Time: 0.01 SEC.
   compiling local per : SExpression -> %
      HOM;per is replaced by G1441 
Time: 0 SEC.
   compiling exported morphism : R -> S -> %
Time: 0 SEC.
   compiling exported elt : (%,R) -> S
Time: 0.01 SEC.
   Adding Boolean modemaps
   compiling exported = : (%,%) -> Boolean
      HOM;=;2$B;5 is replaced by EQ 
Time: 0 SEC.
   Adding OutputForm modemaps
   compiling exported coerce : % -> OutputForm
   Adding String modemaps
Time: 0.01 SEC.
(time taken in buildFunctor:  0)
;;;     ***       |Hom| REDEFINED
;;;     ***       |Hom| REDEFINED
Time: 0.01 SEC.
   Cumulative Statistics for Constructor Hom
      Time: 0.04 seconds
   finalizing NRLIB HOM 
   Processing Hom for Browser database:
     -- morphism : (R -> S) -> %
     -- constructor
------------------------------------------------------------------------
   Hom is now explicitly exposed in frame initial 
   Hom will be automatically loaded when needed from 
      /var/zope2/var/LatexWiki/HOM.NRLIB/code.o

axiom
p:=morphism((x:Integer):Float +-> x+1.0)$Hom(Integer,Float) ; (DEFUN |*1;anonymousFunction;1;initial;internal| ...) is being compiled. ;; The variable |*1;anonymousFunction;1;initial;internal;MV| is undefined. ;; The compiler will assume this variable is a global.
LatexWiki Image(7)
Type: Hom(Integer,Float)
axiom
p(2)
LatexWiki Image(8)
Type: Float
axiom
p(-1)
LatexWiki Image(9)
Type: Float