Kinds of representations/searches

spec [Researcher:?]->(Smoker)->[Boolean:yes];
spec [Researcher:?]->(isSmoker);
spec Hacker_smoker: ?;
spec Not_hacker_not_smoker: ?;


spec [Researcher:?]<-(Agent)<-[Smoke] | set smokers;
spec [Researcher:?]<-(Agent)<-[Hack]  | set hackers;
spec [Researcher:?]- { (Agent)<-[Hack];
                       (Agent)<-[Smoke]; } | set hackers_smokers;
subtract "$smokers" "$hackers_smokers" | set smokers_non_hackers;
subtract "$hackers" "$hackers_smokers" | set hackers_non_smokers;