I believe the following will do for ordered pair and cross product in my model.

pr =: ,&<                    NB. x pr y is ordered pair (x,y)

cp =: a: ,~ [: , pr&.>/&}:   NB. x cp y is Cartesian product of sets x and y

    0 pr 'a'
┌─┬─┐
│0│a│
└─┴─┘
    (set 0;1) cp set 'a';'b';'c'
┌─────┬─────┬─────┬─────┬─────┬─────┬┐
│┌─┬─┐│┌─┬─┐│┌─┬─┐│┌─┬─┐│┌─┬─┐│┌─┬─┐││
││0│a│││0│b│││0│c│││1│a│││1│b│││1│c│││
│└─┴─┘│└─┴─┘│└─┴─┘│└─┴─┘│└─┴─┘│└─┴─┘││
└─────┴─────┴─────┴─────┴─────┴─────┴┘

Kip


On 10/11/2010 2:26 PM, Markus Schmidt-Gröttrup wrote:
> I miss a cross product in the implementation.
> With an unboxed representation I liked to use
> cross =: [: ,/ ,"_ _1 "_1 _
>
>
> Am 10.10.2010 06:01, schrieb Kip Murray:
>> Here is my latest attempt to model set theory in J. All sets have distinct
>> elements and are ordered by /:~ so that match -: determines whether two sets 
>> are
>> the same. Sets must be created by the verb set or by provided operations. The
>> intention is theoretical not practical! --Kip Murray
>>
>> ]A =: set 0;'b';2 NB. elements 0 'b' 2 are put in boxes preceding the last
>> ┌─┬─┬─┬┐
>> │0│2│b││
>> └─┴─┴─┴┘
>> ]B =: set 2;'b';'b';0 NB. same elements so same set
>> ┌─┬─┬─┬┐
>> │0│2│b││
>> └─┴─┴─┴┘
>>
>> A -: B
>> 1
>>
>> ]C =: set 2;'b';'c';'d'
>> ┌─┬─┬─┬─┬┐
>> │2│b│c│d││
>> └─┴─┴─┴─┴┘
>>
>> B sand C NB. intersection, "set and"
>> ┌─┬─┬┐
>> │2│b││
>> └─┴─┴┘
>> B sor C NB. union
>> ┌─┬─┬─┬─┬─┬┐
>> │0│2│b│c│d││
>> └─┴─┴─┴─┴─┴┘
>>
>> (A sand B sor C) -: (A sand B) sor (A sand C) NB. distributive law
>> 1
>>
>> pwrset A NB. A has 3 elements, power set has 2^3, including the empty set
>> ┌──────┬────────┬────┬──────┬────┬──────┬──┬────┬┐
>> │┌─┬─┬┐│┌─┬─┬─┬┐│┌─┬┐│┌─┬─┬┐│┌─┬┐│┌─┬─┬┐│┌┐│┌─┬┐││
>> ││0│2││││0│2│b││││0││││0│b││││2││││2│b│││││││b││││
>> │└─┴─┴┘│└─┴─┴─┴┘│└─┴┘│└─┴─┴┘│└─┴┘│└─┴─┴┘│└┘│└─┴┘││
>> └──────┴────────┴────┴──────┴────┴──────┴──┴────┴┘
>> NB. Elements are contained in boxes preceding the last which is always
>> NB. the Boxed Empty a: (Ace). The use of a: permits a unique and visible
>> NB. empty set, viz
>>
>> (,a:) -: E =: A less A NB. see verb less below
>> 1
>> E
>> ┌┐
>> ││
>> └┘
>> a:
>> ┌┐
>> ││
>> └┘
>> E -: a:
>> 0
>>
>> NB. Definitions
>>
>> E =: ,a: NB. empty set
>> set =: a: ,~ [: /:~ ~. NB. create set from boxed list y
>> NB. each box of y encloses an element
>> get =: { }: NB. get boxed elements (from curtail because
>> NB. elements are inside boxes of curtail)
>> isin =: e. }: NB. Do boxes in list x contain elements of y?
>> less =: a: ,~ -.&}: NB. remove elements of y from x
>> sand =: [ less less NB. intersection, "set and"
>> sor =: a: ,~ [: /:~ [: ~. ,&}: NB. union, "set or"
>> diff =: less sor less~ NB. symmetric difference
>> card =: [: # }: NB. count elements: cardinality
>> issubs =: [ -: sand NB. Is x a subset of y?
>> pwrset =: a: ,~ [: /:~ ] (<@#~) 1 (,~"1) 2 (#"1~ {:)@#:@i...@^ #...@}:
>> NB. pwrset by Raul Miller, adapted
>> islist =: 1 = #...@$ NB. islist through isunique from validate.ijs
>> isboxed =: 0< L.
>> issorted =: -: /:~
>> isunique =: -: ~.
>> isset =: islist *. isboxed *. (a: -: {:) *. issorted@:}: *. isunique@:}:
>> NB. isset y asks, is array y a set?
>> iselement =:<@[ isin ] NB. Is array x an element of set y?
>>
>> NB. End
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>
> __________________________________________________
> Do You Yahoo!?
> Sie sind Spam leid? Yahoo! Mail verf�gt �ber einen herausragenden Schutz gegen
> Massenmails. http://mail.yahoo.com
>
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to