1/*  Copyright 1986-2020 David H. D. Warren and Fernando C. N. Pereira
    2
    3    Permission is hereby granted, free of charge, to any person obtaining a
    4    copy of this software and associated documentation files (the
    5    "Software"), to deal in the Software without restriction, including
    6    without limitation the rights to use, copy, modify, merge, publish,
    7    distribute, sublicense, and/or sell copies of the Software, and to
    8    permit persons to whom the Software is furnished to do so, subject to
    9    the following conditions:
   10
   11    The above copyright notice and this permission notice shall be included
   12    in all copies or substantial portions of the Software.
   13
   14    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   15    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   16    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   17    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   18    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   19    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   20    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   21*/
   22
   23% Inversion of the 'in' relation.
   24% ------------------------------
   25
   26:-mode contains0(+,?).   27
   28contains(X,Y) :- contains0(X,Y).
   29contains(X,Y) :- contains0(X,W), contains(W,Y).
   30
   31contains0(africa,central_africa).
   32contains0(africa,east_africa).
   33contains0(africa,north_africa).
   34contains0(africa,southern_africa).
   35contains0(africa,west_africa).
   36
   37contains0(america,caribbean).
   38contains0(america,central_america).
   39contains0(america,north_america).
   40contains0(america,south_america).
   41
   42contains0(asia,far_east).
   43contains0(asia,indian_subcontinent).
   44contains0(asia,middle_east).
   45contains0(asia,northern_asia).
   46contains0(asia,southeast_east).
   47
   48contains0(australasia,australia).
   49contains0(australasia,fiji).
   50contains0(australasia,new_zealand).
   51contains0(australasia,papua_new_guinea).
   52contains0(australasia,tonga).
   53contains0(australasia,western_samoa).
   54
   55contains0(europe,eastern_europe).
   56contains0(europe,scandinavia).
   57contains0(europe,southern_europe).
   58contains0(europe,western_europe).
   59
   60contains0(scandinavia,denmark).
   61contains0(scandinavia,finland).
   62contains0(scandinavia,norway).
   63contains0(scandinavia,sweden).
   64
   65contains0(western_europe,austria).
   66contains0(western_europe,belgium).
   67contains0(western_europe,eire).
   68contains0(western_europe,france).
   69contains0(western_europe,iceland).
   70contains0(western_europe,liechtenstein).
   71contains0(western_europe,luxembourg).
   72contains0(western_europe,netherlands).
   73contains0(western_europe,switzerland).
   74contains0(western_europe,united_kingdom).
   75contains0(western_europe,west_germany).
   76
   77contains0(eastern_europe,bulgaria).
   78contains0(eastern_europe,czechoslovakia).
   79contains0(eastern_europe,east_germany).
   80contains0(eastern_europe,hungary).
   81contains0(eastern_europe,poland).
   82contains0(eastern_europe,romania).
   83
   84contains0(southern_europe,albania).
   85contains0(southern_europe,andorra).
   86contains0(southern_europe,cyprus).
   87contains0(southern_europe,greece).
   88contains0(southern_europe,italy).
   89contains0(southern_europe,malta).
   90contains0(southern_europe,monaco).
   91contains0(southern_europe,portugal).
   92contains0(southern_europe,san_marino).
   93contains0(southern_europe,spain).
   94contains0(southern_europe,yugoslavia).
   95
   96contains0(north_america,canada).
   97contains0(north_america,united_states).
   98
   99contains0(central_america,belize).
  100contains0(central_america,costa_rica).
  101contains0(central_america,el_salvador).
  102contains0(central_america,guatemala).
  103contains0(central_america,honduras).
  104contains0(central_america,mexico).
  105contains0(central_america,nicaragua).
  106contains0(central_america,panama).
  107
  108contains0(caribbean,bahamas).
  109contains0(caribbean,barbados).
  110contains0(caribbean,cuba).
  111contains0(caribbean,dominican_republic).
  112contains0(caribbean,grenada).
  113contains0(caribbean,haiti).
  114contains0(caribbean,jamaica).
  115contains0(caribbean,trinidad_and_tobago).
  116
  117contains0(south_america,argentina).
  118contains0(south_america,bolivia).
  119contains0(south_america,brazil).
  120contains0(south_america,chile).
  121contains0(south_america,colombia).
  122contains0(south_america,ecuador).
  123contains0(south_america,french_guiana).
  124contains0(south_america,guyana).
  125contains0(south_america,paraguay).
  126contains0(south_america,peru).
  127contains0(south_america,surinam).
  128contains0(south_america,uruguay).
  129contains0(south_america,venezuela).
  130
  131contains0(north_africa,algeria).
  132contains0(north_africa,egypt).
  133contains0(north_africa,libya).
  134contains0(north_africa,morocco).
  135contains0(north_africa,tunisia).
  136
  137contains0(west_africa,cameroon).
  138contains0(west_africa,dahomey).
  139contains0(west_africa,equatorial_guinea).
  140contains0(west_africa,gambia).
  141contains0(west_africa,ghana).
  142contains0(west_africa,guinea).
  143contains0(west_africa,guinea_bissau).
  144contains0(west_africa,ivory_coast).
  145contains0(west_africa,liberia).
  146contains0(west_africa,mali).
  147contains0(west_africa,mauritania).
  148contains0(west_africa,niger).
  149contains0(west_africa,nigeria).
  150contains0(west_africa,senegal).
  151contains0(west_africa,sierra_leone).
  152contains0(west_africa,togo).
  153contains0(west_africa,upper_volta).
  154
  155contains0(central_africa,burundi).
  156contains0(central_africa,central_african_republic).
  157contains0(central_africa,chad).
  158contains0(central_africa,congo).
  159contains0(central_africa,gabon).
  160contains0(central_africa,rwanda).
  161contains0(central_africa,sudan).
  162contains0(central_africa,zaire).
  163
  164contains0(east_africa,djibouti).
  165contains0(east_africa,ethiopia).
  166contains0(east_africa,kenya).
  167contains0(east_africa,seychelles).
  168contains0(east_africa,somalia).
  169contains0(east_africa,tanzania).
  170contains0(east_africa,uganda).
  171
  172contains0(southern_africa,angola).
  173contains0(southern_africa,botswana).
  174contains0(southern_africa,lesotho).
  175contains0(southern_africa,malagasy).
  176contains0(southern_africa,malawi).
  177contains0(southern_africa,mauritius).
  178contains0(southern_africa,mozambique).
  179contains0(southern_africa,south_africa).
  180contains0(southern_africa,swaziland).
  181contains0(southern_africa,zambia).
  182contains0(southern_africa,zimbabwe).
  183
  184contains0(middle_east,bahrain).
  185contains0(middle_east,iran).
  186contains0(middle_east,iraq).
  187contains0(middle_east,israel).
  188contains0(middle_east,jordan).
  189contains0(middle_east,kuwait).
  190contains0(middle_east,lebanon).
  191contains0(middle_east,oman).
  192contains0(middle_east,qatar).
  193contains0(middle_east,saudi_arabia).
  194contains0(middle_east,south_yemen).
  195contains0(middle_east,syria).
  196contains0(middle_east,turkey).
  197contains0(middle_east,united_arab_emirates).
  198contains0(middle_east,yemen).
  199
  200contains0(indian_subcontinent,afghanistan).
  201contains0(indian_subcontinent,bangladesh).
  202contains0(indian_subcontinent,bhutan).
  203contains0(indian_subcontinent,india).
  204contains0(indian_subcontinent,maldives).
  205contains0(indian_subcontinent,nepal).
  206contains0(indian_subcontinent,pakistan).
  207contains0(indian_subcontinent,sri_lanka).
  208
  209contains0(southeast_east,burma).
  210contains0(southeast_east,cambodia).
  211contains0(southeast_east,indonesia).
  212contains0(southeast_east,laos).
  213contains0(southeast_east,malaysia).
  214contains0(southeast_east,philippines).
  215contains0(southeast_east,singapore).
  216contains0(southeast_east,thailand).
  217contains0(southeast_east,vietnam).
  218
  219contains0(far_east,china).
  220contains0(far_east,japan).
  221contains0(far_east,north_korea).
  222contains0(far_east,south_korea).
  223contains0(far_east,taiwan).
  224
  225contains0(northern_asia,mongolia).
  226contains0(northern_asia,soviet_union).
  227
  228contains0(afghanistan,amu_darya).
  229
  230contains0(angola,cubango).
  231contains0(angola,zambesi).
  232
  233contains0(argentina,buenos_aires).
  234contains0(argentina,parana).
  235
  236contains0(australia,melbourne).
  237contains0(australia,murray).
  238contains0(australia,sydney).
  239
  240contains0(austria,danube).
  241contains0(austria,vienna).
  242
  243contains0(bangladesh,brahmaputra).
  244
  245contains0(belgium,brussels).
  246
  247contains0(brazil,amazon).
  248contains0(brazil,parana).
  249contains0(brazil,rio_de_janeiro).
  250contains0(brazil,sao_paulo).
  251
  252contains0(burma,irrawaddy).
  253contains0(burma,salween).
  254
  255contains0(cambodia,mekong).
  256
  257contains0(canada,mackenzie).
  258contains0(canada,montreal).
  259contains0(canada,toronto).
  260contains0(canada,yukon).
  261
  262contains0(chile,santiago).
  263
  264contains0(china,amur).
  265contains0(china,brahmaputra).
  266contains0(china,canton).
  267contains0(china,chungking).
  268contains0(china,dairen).
  269contains0(china,ganges).
  270contains0(china,harbin).
  271contains0(china,hwang_ho).
  272contains0(china,indus).
  273contains0(china,kowloon).
  274contains0(china,mekong).
  275contains0(china,mukden).
  276contains0(china,peking).
  277contains0(china,salween).
  278contains0(china,shanghai).
  279contains0(china,sian).
  280contains0(china,tientsin).
  281contains0(china,yangtze).
  282
  283contains0(colombia,orinoco).
  284
  285contains0(czechoslovakia,danube).
  286contains0(czechoslovakia,elbe).
  287contains0(czechoslovakia,oder).
  288
  289contains0(east_germany,berlin).
  290contains0(east_germany,elbe).
  291
  292contains0(egypt,cairo).
  293contains0(egypt,nile).
  294
  295contains0(france,paris).
  296contains0(france,rhone).
  297
  298contains0(ghana,volta).
  299
  300contains0(greece,athens).
  301
  302contains0(guinea,niger_river).
  303contains0(guinea,senegal_river).
  304
  305contains0(hungary,budapest).
  306contains0(hungary,danube).
  307
  308contains0(india,bombay).
  309contains0(india,calcutta).
  310contains0(india,delhi).
  311contains0(india,ganges).
  312contains0(india,hyderabad).
  313contains0(india,indus).
  314contains0(india,madras).
  315
  316contains0(indonesia,jakarta).
  317
  318contains0(iran,tehran).
  319
  320contains0(iraq,euphrates).
  321
  322contains0(italy,milan).
  323contains0(italy,naples).
  324contains0(italy,rome).
  325
  326contains0(japan,kobe).
  327contains0(japan,kyoto).
  328contains0(japan,nagoya).
  329contains0(japan,nanking).
  330contains0(japan,osaka).
  331contains0(japan,tokyo).
  332contains0(japan,yokohama).
  333
  334contains0(laos,mekong).
  335
  336contains0(lesotho,orange).
  337
  338contains0(mali,niger_river).
  339contains0(mali,senegal_river).
  340
  341contains0(mexico,colorado).
  342contains0(mexico,mexico_city).
  343contains0(mexico,rio_grande).
  344
  345contains0(mongolia,amur).
  346contains0(mongolia,yenisei).
  347
  348contains0(mozambique,limpopo).
  349contains0(mozambique,zambesi).
  350
  351contains0(netherlands,rhine).
  352
  353contains0(niger,niger_river).
  354
  355contains0(nigeria,niger_river).
  356
  357contains0(pakistan,indus).
  358contains0(pakistan,karachi).
  359
  360contains0(paraguay,parana).
  361
  362contains0(peru,amazon).
  363contains0(peru,lima).
  364
  365contains0(philippines,manila).
  366
  367contains0(poland,oder).
  368contains0(poland,vistula).
  369contains0(poland,warsaw).
  370
  371contains0(portugal,tagus).
  372
  373contains0(romania,bucharest).
  374contains0(romania,danube).
  375
  376contains0(senegal,senegal_river).
  377
  378contains0(singapore,singapore_city).
  379
  380contains0(south_africa,cubango).
  381contains0(south_africa,johannesburg).
  382contains0(south_africa,limpopo).
  383contains0(south_africa,orange).
  384
  385contains0(south_korea,pusan).
  386contains0(south_korea,seoul).
  387
  388contains0(soviet_union,amu_darya).
  389contains0(soviet_union,amur).
  390contains0(soviet_union,don).
  391contains0(soviet_union,kiev).
  392contains0(soviet_union,lena).
  393contains0(soviet_union,leningrad).
  394contains0(soviet_union,moscow).
  395contains0(soviet_union,ob).
  396contains0(soviet_union,volga).
  397contains0(soviet_union,yenisei).
  398
  399contains0(spain,barcelona).
  400contains0(spain,madrid).
  401contains0(spain,tagus).
  402
  403contains0(sudan,nile).
  404
  405contains0(switzerland,rhine).
  406contains0(switzerland,rhone).
  407
  408contains0(syria,euphrates).
  409
  410contains0(thailand,bangkok).
  411
  412contains0(turkey,euphrates).
  413contains0(turkey,istanbul).
  414
  415contains0(uganda,nile).
  416
  417contains0(united_kingdom,birmingham).
  418contains0(united_kingdom,glasgow).
  419contains0(united_kingdom,london).
  420
  421contains0(united_states,chicago).
  422contains0(united_states,colorado).
  423contains0(united_states,detroit).
  424contains0(united_states,los_angeles).
  425contains0(united_states,mississippi).
  426contains0(united_states,new_york).
  427contains0(united_states,philadelphia).
  428contains0(united_states,rio_grande).
  429contains0(united_states,yukon).
  430
  431contains0(upper_volta,volta).
  432
  433contains0(venezuela,caracas).
  434contains0(venezuela,orinoco).
  435
  436contains0(vietnam,mekong).
  437contains0(vietnam,saigon).
  438
  439contains0(west_germany,danube).
  440contains0(west_germany,elbe).
  441contains0(west_germany,hamburg).
  442contains0(west_germany,rhine).
  443
  444contains0(yugoslavia,danube).
  445
  446contains0(zaire,congo_river).
  447
  448contains0(zambia,congo_river).
  449contains0(zambia,zambesi)