[Aldor-l] operations working in general, but not in special cases -- help needed

Christian Aistleitner tmgisi at gmx.at
Tue Apr 4 05:39:29 EDT 2006


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 % == {
       [ (dualize@%) ]
     };
   }
}


Kind regards,
Christian



More information about the Aldor-l mailing list