axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Re: [Aldor-l] operations working in general, but not i


From: Christian Aistleitner
Subject: [Axiom-developer] Re: [Aldor-l] operations working in general, but not in special cases -- help needed
Date: Tue, 04 Apr 2006 11:39:29 +0200
User-agent: Opera M2/8.52 (Linux, build 1631)

Dear Martin,

We have a category A with an operation op: % -> %. However, there are natural
subdomains of domains of A, which are no longer closed under op.

if I understood you correctly, you did not mean "closed under op" but "op is a partial function" -- which is a completely different thing.

Example 1, Matroids

A "matroid" is a mathematical structure with one very, very important
operation, namely "dualizing" ...

If a matroid is required to have a "dualizing function", then a graphical matroid cannot be a matroid. Simply because it does not provide the total function "dualize"

However, a graphical matroid can "contain" a matroid.

So the abstract setting is "graphical matroid" and the specialized one is "matroid". Not the other way round.

Example 2, Differential Equations

Again the same problem as above.

Of course you can introduce a category

OpSubstructureType: Category == with {
  opable?: % -> Boolean;
  +++if   opable? a, then op( a ) dualizes.
  +++if ~ opable? a, then the behaviour of op is undefined
  op: % -> %; -- op( a ) with ~ opable?( a ) crashes the program
  opIfCan: % -> Partial %
}

and use it in all places, but think about what is the more abstract setting and what the specialized one.
For me, a property of a generalization has to hold in its spezialization.
And a property of a specialization does not have to a generalization.

So I'd suggest

+++\begin{addescription}{provides a category for graphical matroids}
+++Some element of a \adthistype may be dualizable.
+++\end{addescription}
GraphicalMatroidType: Category == with {

  dualizeable?: % -> Boolean;

  +++\begin{addescription}{computes the dual element}
  +++if   dualizeable? a, then op( a ) dualizes.
  +++if ~ dualizeable? a, then the behaviour of op is undefined
  +++\end{addescription}
  dualize: % -> %;

  dualizeIfCan: % -> Partial %
}

and

+++\begin{addescription}{provides a category for matroids}
+++Every element of a \adthistype has to be dualizable.
+++\end{addescription}
MatroidType: Category == with {
  GraphicalMatroidType;
  default {
    dualizeable?( a: % ): Boolean == {
      true
    };
    dualizeIfCan( a: % ): Partial % == {
      [ (address@hidden) ]
    };
  }
}


Kind regards,
Christian




reply via email to

[Prev in Thread] Current Thread [Next in Thread]