[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