If I understand this correctly, Kip's model only deals with finite sets which are all subsets of a finite set U, which can be represented by the numbers i.#U. Any subset of U can be represented by a bit vector, and bit vectors are manipulated by standard operations such as *. and +. and -. So I fail to see the purpose of Kip's representation of sets.
--- Den søn 10/10/10 skrev Marshall Lochbaum <[email protected]>: Fra: Marshall Lochbaum <[email protected]> Emne: Re: [Jprogramming] Sets Til: "'Programming forum'" <[email protected]> Dato: søndag 10. oktober 2010 18.51 I don't see the usefulness of the a: at the end of the sets. An empty set should just be represented by 0$a:, and is clearly identifiable because it gives no output. Marshall -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Kip Murray Sent: Sunday, October 10, 2010 12:02 AM To: Programming forum Subject: [Jprogramming] Sets 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
