Thank you, Henry, your less is more!

An element of a set need not be a set.  It only needs to be a J array.  It 
could 
be a list of boxes that is not a set.  A case where the elements of a set are 
required to be sets is the power set described below.

Lists formed by (set list-of-boxes) and the provided operations should be sets 
as defined by isset.

The "power set" of set y is defined to be the set whose elements are all the 
subsets of y.  Thus if y is a set as defined by isset and verb pwrset is 
correct 
then (pwrset y) and its elements should be sets as defined by isset.

Kip


On 10/10/2010 2:13 PM, Henry Rich wrote:
> How about
>
> less =: a: ,~ -.
>
> isset should, I suppose, test whether a set is well-formed.  In that
> case wouldn't it need to look inside elements to see that they are
> well-formed?
>
> Can an element of a set be a non-set box?  Is the idea that contents
> that are not lists, or not boxed, or perhaps either, represent contents
> that are not sets?
>
> Henry Rich
>
> On 10/10/2010 12:01 AM, Kip Murray wrote:
>> 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
> ----------------------------------------------------------------------
> 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