Oops, I see that verb isin is what I would call issubset.
Kip Murray wrote: > Fraser, I will chew on this. I can see my elaborate theory going to the > place > where elaborate theories go. > > Everyone please note the lists of Dan and Fraser's verbs near the end, taking > special note of "Set", "isin", and "isequalset". > > I hope the discussion will continue a little longer. I am uncertain about > verb > isequalset, believing it should be something like issubset *. issubset~ . Kip > > > Dan: > >>> ...I'm not sure you need to provide a format for sets to your users. You >>> could rewrite your functions to apply to any array... > > > Kip: > >>> Dan, your general verbs are appealing, but there is a difficulty with verb >>> "is" > ... > > > Fraser: > >> I agree strongly with Dan here. Every J noun is a set of items. Primitives >> provide a means of dealing with a huge range of set problems where the >> elements are discrete entities. You do not need any boxing. The simple >> functions U and N introduced by Dan provide all that is needed for >> discussing and solving a large number of problems. Creating a subset may >> involve comparisons of individual elements, and not require any boxing. >> >> As noted boxed objects are needed when the elements of a set are themselves >> sets of different numbers of elements or are not homogenous. So sets of >> sets need boxed objects. You can achieve any level extension required by >> repeatedly creating a set of all subsets of subsets of a set by an >> additional level of boxing. With this form there is no need for addition of >> an empty element to the list to denote a set of elements. An >> empty element will only occur in the list of all subsets of the set. J >> handles >> the empty subset automatically with standard procedures except for the >> standard proposition that the empty set is a member of every set. >> >> You devised a standard form using the sorted nub to list the elements of >> sets, and that can be helpful but is not essential. Some applications may >> consist of 13 cards from four suites, the set consisting of multiples of >> some identical items. The nub of a set is an important concept and in much >> set theory the distinct items are all that is considered. What we >> want are functions which will perform the essential operations and tests >> when the set of interest is any J noun even with repetitions of its items. >> In additon to the functions in Dan's post you might want something like the >> following, probably with some tweaking. > > > Fraser's verbs: > >> Set =: (/:~)@~. NB. sorted nub >> isin =: *./ @ e. >> isequalset =: isin~ *. isin >> ispropersubset =: < & (#...@~.) >> isemptyset =: 3 : 'if. isboxed y do. y=a: else. isempty y end.' >> isdisjoint =: (-...@in) *. (-.@ (in~)) >> >> allsubsets =: 3 : 0 NB. An explicit alternative to Raul's neat form. >> if. isemptyset y do. a: >> else. >> (#&y) &.> ( <"1 (#: i.2^#y)) >> end. >> ) > > > Fraser's conclusion: > >> The big advantage of doing this is that constructing subsets subject to some >> condition merely requires a function applied to each item in the list of >> elements of the set. Everything is just standard J. >> >> Fraser > > > Dan's verbs: > > U =: ~.@:, > N =: [ -. -. > is =: -:&:(/:~)&:~. > less =: -. > isEmpty =: -: 0&# > > "This might be more convenient for your users, and might enjoy some > performance > benefits when the elements of a set are homogeneous & wouldn't need to be > boxed." > > > Footnote: > > The empty is a subset (not an element) of every set. > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
