[Aldor-l] Aldor-Meet
Ralf Hemmecke
ralf at hemmecke.de
Tue Nov 20 12:03:53 EST 2007
Hi Oleg,
On 11/20/2007 05:15 PM, Oleg Golubitsky wrote:
> The two definitions of `Meet(C1,C2)':
> 1) a category which has the *intersection* of exports of `C1' and `C2'
> 2) a category `C' such that
> D has C <=> D has C1 or D has C2
> (in other words: C has *all exports of C1* or *all exports of C2*)
> are actually not equivalent: "2)" implies "1)" but not vice versa.
Well observed.
Now with definition 1) and
define C: Category == Meet(C1,C2);
D1: C1 == add {...}
should
a) "D1 has C" give true or false,
b) "D1 has Meet(C1,C2)" give true or false?
> The above test has shown that the compiler does not require "2)".
> However, it might make sense to do so, for two reasons:
> i. if we use definition "1)" then it might be hard to find
> good examples for `Meet', because one can always
> define category `C' first, and then define `C1' and `C2'
> both as `C with { something }' instead of defining first
> `C1' and `C2' and using `C == Meet(C1,C2)'.
That is simply wrong. I'll write a library abc, and give you the file
libabc.al. In abc I define the categories
Group, SemiGroup, and RingWithOne and domains D1:Cat1,..., Dn: Catn
where each of Cati exports
SemiGroup with {1:%}
See
http://aldor.org/pipermail/aldor-l_aldor.org/2007-November/000817.html
Now you would like to define "Monoid". How can you do it *before*?
Clearly, you could use "extend" for D1 up to Dn. But you would not like
to do this if n is relatively big or changes with the next release of my
library.
> ii. for definition "2)" there is an example.
> A bivariate polynomial can be viewed as an element of
> a) R[x,y] (free module with the monomial basis)
> b) R[x][y] (polynomial ring over the univariate polynomial ring)
> So one could define the category of bivariate polynomials
> as the `Meet' of "a)" and "b)".
That doesn't sound too convincing. I rather have an inefficient
deg: % -> N^n
function than non at all.
Ralf
More information about the Aldor-l
mailing list