From: JohnF on
kunzmilan <kunzmilan(a)atlas.cz> wrote:
> JohnF <j...(a)please.see.sig.for.email.com> wrote:
>> I'm looking to construct a Godel-like kind of numbering
>> to address the following problem.
>> I have objects, each of which is an unordered collection
>> of "containers", with each container in an object labelled by
>> an integer, e.g., object B = { (b1,B1), (b2,B2), (b3,B3),... }
>> with Bi a container labelled by integer bi in object B.
>> The bi's are arbitrary integer labels except that bi must
>> uniquely identify the object Bi it labels.
>> Trouble arises because I want to define multiplication
>> of these objects in the following way. ?Given B above and a similar
>> C, define BC = { (bi*cj,(BiCj)) | (bi,Bi)\in B & (cj,Cj)\in C }
>> where bi*cj is just integer multiplication, and (BiCj) just means
>> a single container with the combined contents of Bi and Cj in it.
>> The problem is that each bi*cj label for container (BiCj)
>> must identify both original component containers Bi and Cj.
>> That is, while ordering BiCj versus CjBi is unimportant,
>> the bi*cj label must nevertheless identify both i and j as well as
>> which (i or j) belongs to b and which (j or i) to c.
>> Any way to define labels that satisfy these requirements?
>> Thanks,
>> --
>> John Forkosh ( mailto: j(a)f.com where j=john and f=forkosh )
>
> Try to use a matrix: columns containers, rows objects. Elements ij can
> be used for a more specific identification of objects, and matrix
> multiplication for countings.
> kunzmilan

Thanks, kunzmilan, but I'm not following your suggestion.
Got an example?
It's true that I can specify a complete set of possible
containers, call it T = { t1, t2, t3, ... }, so that the
containers comprising object B are always some subset of T.
Therefore, I could write a characteristic column vector
consisting of 0's and 1's, say B = < 0 0 0 1 0 0 1 1 1 ... >
if B has containers t4,t7,t8,t9,... . (Note that the complete
set T would have, for any ti,tj, a separate tk representing
the combined contents of ti and tj. So T is (countably) infinite.
But we can assume, if it's any help, that objects consist only of
finite containers.)
If I have that B and some other C, then what is it you want
me to do to calculate BC, as defined above, so that the
product satisfies the requirements above? Or are you
suggesting something else entirely?
--
John Forkosh ( mailto: j(a)f.com where j=john and f=forkosh )
From: cbrown on
On Dec 22, 7:59 am, JohnF <j...(a)please.see.sig.for.email.com> wrote:
> Ilmari Karonen <usen...(a)vyznev.invalid> wrote:
> > JohnF <j...(a)please.see.sig.for.email.com> wrote:
> >>      I have objects, each of which is an unordered collection
> >> of "containers", with each container in an object labelled by
> >> an integer, e.g., object B = { (b1,B1), (b2,B2), (b3,B3),... }
> >> with Bi a container labelled by integer bi in object B.
> >> The bi's are arbitrary integer labels except that bi must
> >> uniquely identify the object Bi it labels.
> >>      Trouble arises because I want to define multiplication
> >> of these objects in the following way.  Given B above and a similar
> >> C, define BC = { (bi*cj,(BiCj)) | (bi,Bi)\in B & (cj,Cj)\in C }
> >> where bi*cj is just integer multiplication, and (BiCj) just means
> >> a single container with the combined  contents of Bi and Cj in it.
> >>      The problem is that each bi*cj label for container (BiCj)
> >> must identify both original component containers Bi and Cj.
> >> That is, while ordering BiCj versus CjBi is unimportant,
> >> the bi*cj label must nevertheless identify both i and j as well as
> >> which (i or j) belongs to b and which (j or i) to c.
> >>      Any way to define labels that satisfy these requirements?
>
> > If I didn't misunderstand your requirements, wouldn't simply letting
> > all the initial labels be distinct primes work?  Then every label
> > would have a unique prime factorization identifying the original
> > containers of whose labels it is a product of.
>
> Thanks, Ilmari, but if I didn't misunderstand your suggestion, that'll
> fail the part "which (i or j) belongs to b and which (j or i) to c".
> As I understand it, you're suggesting B = { (2,B1), (3,B2), (5,B3),... }.
> If I label C similarly, starting with (2,C1), then a product label
> of, say, 14=2*7=7*2, would identify either B1C4 or B4C1, but wouldn't
> resolve the two cases.
>      But maybe you're suggesting labelling C beginning with the
> first prime not used for B, e.g., (97,C1) if (91,B1) was the last B.
> That would indeed resolve the two cases.  Trouble is I don't, in general,
> know the "rank" of B.  Moreover, instead of BC, maybe I want to calculate
> DC or EC or FC, etc, for other objects D,E,F, etc.  Then I might need
> different C-representations for each case.

You could select distinct primes p_b, p_c, p_d, etc. associated with
each collection B, C, D, etc. (resp.). Then set b_i = (p_b)^i, c_j =
(p_c)^j to get distinct products b_i * c_j.

E.g., let B = { (2,B1), (4,B2), (8,B3), ...) and C = ( (3,C1), (9,C2),
(27,C3),...).

Cheers - Chas
From: Ilmari Karonen on
On 2009-12-22, JohnF <john(a)please.see.sig.for.email.com> wrote:
> Ilmari Karonen <usenet2(a)vyznev.invalid> wrote:
>>
>> If I didn't misunderstand your requirements, wouldn't simply letting
>> all the initial labels be distinct primes work? Then every label
>> would have a unique prime factorization identifying the original
>> containers of whose labels it is a product of.
>
> Thanks, Ilmari, but if I didn't misunderstand your suggestion, that'll
> fail the part "which (i or j) belongs to b and which (j or i) to c".
> As I understand it, you're suggesting B = { (2,B1), (3,B2), (5,B3),... }.
> If I label C similarly, starting with (2,C1), then a product label
> of, say, 14=2*7=7*2, would identify either B1C4 or B4C1, but wouldn't
> resolve the two cases.
> But maybe you're suggesting labelling C beginning with the
> first prime not used for B, e.g., (97,C1) if (91,B1) was the last B.

That's indeed what I had in mind. (Or, rather, I assumed you'd have
some way of assigning natural numbers to the containers so as to avoid
duplicates. Then simply substituting each number i with the i-th
prime number would do the trick.)

> That would indeed resolve the two cases. Trouble is I don't, in general,
> know the "rank" of B. Moreover, instead of BC, maybe I want to calculate
> DC or EC or FC, etc, for other objects D,E,F, etc. Then I might need
> different C-representations for each case.

Assuming you have some way of numbering the objects themselves without
duplicates, you could always use some kind of zig-zag numbering for
the containers. For example, let the label for the k-th container in
the n-th object be p( (n+k)(n+k-1)/2 - n ), where p(i) denotes the
i-th prime.

--
Ilmari Karonen
To reply by e-mail, please replace ".invalid" with ".net" in address.
From: JohnF on
cbrown(a)cbrownsystems.com <cbrown(a)cbrownsystems.com> wrote:
> JohnF <j...(a)please.see.sig.for.email.com> wrote:
>> Ilmari Karonen <usen...(a)vyznev.invalid> wrote:
>> > JohnF <j...(a)please.see.sig.for.email.com> wrote:
>> >> I have objects, each of which is an unordered collection
>> >> of "containers", with each container in an object labelled by
>> >> an integer, e.g., object B = { (b1,B1), (b2,B2), (b3,B3),... }
>> >> with Bi a container labelled by integer bi in object B.
>> >> The bi's are arbitrary integer labels except that bi must
>> >> uniquely identify the object Bi it labels.
>> >> Trouble arises because I want to define multiplication
>> >> of these objects in the following way. Given B above and a similar
>> >> C, define BC = { (bi*cj,(BiCj)) | (bi,Bi)\in B & (cj,Cj)\in C }
>> >> where bi*cj is just integer multiplication, and (BiCj) just means
>> >> a single container with the combined contents of Bi and Cj in it.
>> >> The problem is that each bi*cj label for container (BiCj)
>> >> must identify both original component containers Bi and Cj.
>> >> That is, while ordering BiCj versus CjBi is unimportant,
>> >> the bi*cj label must nevertheless identify both i and j as well as
>> >> which (i or j) belongs to b and which (j or i) to c.
>> >> Any way to define labels that satisfy these requirements?
>>
>> > If I didn't misunderstand your requirements, wouldn't simply letting
>> > all the initial labels be distinct primes work? ?Then every label
>> > would have a unique prime factorization identifying the original
>> > containers of whose labels it is a product of.
>>
>> Thanks, Ilmari, but if I didn't misunderstand your suggestion, that'll
>> fail the part "which (i or j) belongs to b and which (j or i) to c".
>> As I understand it, you're suggesting B = { (2,B1), (3,B2), (5,B3),... }.
>> If I label C similarly, starting with (2,C1), then a product label
>> of, say, 14=2*7=7*2, would identify either B1C4 or B4C1, but wouldn't
>> resolve the two cases.
>> But maybe you're suggesting labelling C beginning with the
>> first prime not used for B, e.g., (97,C1) if (91,B1) was the last B.
>> That would indeed resolve the two cases. Trouble is I don't, in general,
>> know the "rank" of B. Moreover, instead of BC, maybe I want to calculate
>> DC or EC or FC, etc, for other objects D,E,F, etc. Then I might need
>> different C-representations for each case.
>
> You could select distinct primes p_b, p_c, p_d, etc. associated with
> each collection B, C, D, etc. (resp.). Then set b_i = (p_b)^i, c_j =
> (p_c)^j to get distinct products b_i * c_j.
> E.g., let B = { (2,B1), (4,B2), (8,B3), ...) and C = ( (3,C1), (9,C2),
> (27,C3),...).
> Cheers - Chas

Thanks, Chas. I now see that you and Ilmari are right -- there's no way
to accomplish what I really want, i.e., to label containers in each
object independently of any other objects. That would require allowing
duplicate labels. But since integer (or any scalar) multiplication
is commutative, the bicj versus bjci problem can't be solved unless
the b-labels and c-labels are somehow unique.
Your very Godel-like solution obviously works, and also seems the
most elegant way to do it given that it won't be getting done my way.
Thanks a lot (both you and Ilmari, and also kunzmilan),
--
John Forkosh ( mailto: j(a)f.com where j=john and f=forkosh )
From: JohnF on
Ilmari Karonen <usenet2(a)vyznev.invalid> wrote:
>
> Assuming you have some way of numbering the objects themselves without
> duplicates, you could always use some kind of zig-zag numbering for
> the containers. For example, let the label for the k-th container in
> the n-th object be p( (n+k)(n+k-1)/2 - n ), where p(i) denotes the
> i-th prime.

Thanks again, Ilmari. As per preceding reply to cbrown,
I'll apparently need "some way of numbering the objects
without duplicates", though I can't do it now.
By the way, the standard "zig-zag" enumeration
of ordered pairs I'm familiar with looks like
\n| 0 1 2 3
k\|
--+---------
0 | 0 2 5 9
| / / /
1 | 1 4 8
| / /
2 | 3 7
| /
3 | 6
so that the ordered pair (k,n) --> (k+n)(k+n+1)/2 + n.
Yours starts with (1,1)-->0 rather than (0,0)-->0?
--
John Forkosh ( mailto: j(a)f.com where j=john and f=forkosh )