def many_with_map?(clause, mesg=nil, &block) # :yields: argument
      map_mesg = ( mesg.nil? ? "" : " after map #{mesg}" )
      many_with_map = clause("many of #{clause.inspect}#{map_mesg}") do |o|
        o.map(&block).all? { |p| clause === p }
      end
      all? Enumerable, many_with_map
    end
def many_with_map?(clause, mesg=nil, &block) # :yields: argument
      map_mesg = ( mesg.nil? ? "" : " after map #{mesg}" )
      many_with_map = clause("many of #{clause.inspect}#{map_mesg}") do |o|
        o.map(&block).all? { |p| clause === p }
      end
      all? Enumerable, many_with_map
    end
Passes if argument is Enumerable and the subclause passes on all of
 its objects, mapped over the given block.
   contract many_with_map?(nonzero?, "person age") { |person| person.age } => anything