Henry, thanks for your help. 4 is the expected level of a set whose elements are sets. Here's how it works:
1;2 NB. boxes contain proposed elements 1 and 2 +-+-+ |1|2| +-+-+ set 1;2 NB. boxes containing elements are "fenced in" +-----+ |+-+-+| ||1|2|| |+-+-+| +-----+ (set 1;2);<set 3;4 NB. boxes contain proposed elements +-------+-------+ |+-----+|+-----+| ||+-+-+|||+-+-+|| |||1|2|||||3|4||| ||+-+-+|||+-+-+|| |+-----+|+-----+| +-------+-------+ set (set 1;2);<set 3;4 NB. boxes containing elements are "fenced in" +-----------------+ |+-------+-------+| ||+-----+|+-----+|| |||+-+-+|||+-+-+||| ||||1|2|||||3|4|||| |||+-+-+|||+-+-+||| ||+-----+|+-----+|| |+-------+-------+| +-----------------+ NB. Similarly L. ps set 1;2 4 I will look at the rank issues now. Thanks for your help. --Kip Murray Sent from my iPad > On Nov 17, 2013, at 8:40 PM, Henry Rich <[email protected]> wrote: > > It looks to me that ps adds an extra level of boxing. Check the result of > ps set ;:'a b' > to see if I'm wrong. >> On 11/17/2013 9:19 PM, km wrote: >> Will you try to "break" the following proposal before I post it on the J >> Wike? >> >> Thanks, >> >> -- Kip Murray >> >> >> NB. J SETS PROPOSAL >> >> NB. This ia a script you can copy and save, then load or loadd. >> >> >> NB. INTRODUCTION >> >> NB. Part of each set is its enclosing box. Like a Venn diagram set. >> >> NB. A set is a box enclosing a sorted list of boxes. >> NB. An element is the contents of a box in the sorted list. >> >> NB. A -: B tests whether set A is set B. >> >> >> NB. DEFINITIONS >> >> set =: [: < [: /:~ ~. NB. create set from a box or list of boxes >> >> NB. A set is a: or (scalar and its open is vector, boxed, without >> duplicates, and sorted). >> >> isset =: (a: -: ]) +. [: *./ (0 = #@$) , [: ( (1 = #@$),(0 < L.),(-: ~.),(-: >> /:~) ) > >> >> >> NB. ILLUSTRATIONS >> >> set 'a';i.2 2 NB. elements are 'a' and i. 2 2 >> >> set <'a' NB. sole element is 'a' >> >> ]Empty =: set '' NB. the empty set, same as Ace a: >> >> isset Empty >> >> >> NB. DEFINITIONS >> >> sf =: [: > ({ >) NB. From { for sets: retrieve xth element of y, a set >> >> sn =: ([: # >) : ([: < (# >)) NB. Number # for sets >> >> eo =: <@[ e. >@] NB. test whether x is an element of y >> >> un =: [: set ,&> NB. union >> >> mn =: -.&.> NB. "minus" -- create set with the elements of x that are not in >> y >> >> sd =: mn un mn~ NB. symmetric difference >> >> nt =: un mn sd NB. intersection >> >> so =: un -: ] NB. test whether x is a subset of y >> >> cp =: [: set [: , ({@(,&<))&> NB. Cartesian product, adapted from CP in >> "Catalog {" >> >> ps =: [: set [: <"0 ([: #: [: i. 2 ^ #@>) <@#"1 > NB. ps y is the power set >> of y >> >> NB. ps y is the set whose elements are all the subsets of y . There are >> 2^#>y of them. >> >> dv =: [: < [: ,. > NB. dv y displays the set y vertically, useful for power >> sets! >> >> >> NB. EXAMPLES >> >> (set 1;2;3;3) -: set 3;1;2 NB. On each side the elements are 1 and 2 and 3 . >> >> ]A =: set 2;'b';1;'a' >> >> ]B =: set 'b';'a';4;3;'a' >> >> A un B >> >> A sd B >> >> A nt B >> >> (set 1;2) cp set 'a';'b';'c' >> >> ps set 0;1;2 >> >> >> Sent from my iPad >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
