--# -path=.:prelude

concrete LexiconFin of Lexicon = CatFin ** open MorphoFin, ParadigmsFin in {

flags 
  optimize=values ;


lin
  airplane_N = regN "lentokone" ;
  answer_V2S = mkV2S (regV "vastata") (casePrep allative) ;
  apartment_N = regN "asunto" ;
  apple_N = nLukko "omena" ; --- omenia, not omenoita
  art_N = regN "taide" ;
  ask_V2Q = mkV2Q (regV "kysyä") (casePrep ablative) ;
  baby_N = nLukko "vauva" ;
  bad_A = mkADeg (nLukko "paha") "pahempi" "pahin" ;
  bank_N = regN "pankki" ;
  beautiful_A = mkADeg (regN "kaunis") "kauniimpi" "kaunein" ;
  become_VA = mkVA (regV "tulla") (casePrep translative) ;
  beer_N = regN "olut" ;
  beg_V2V = mkV2V (reg2V "pyytää" "pyysi") (casePrep partitive) ;
  big_A = mkADeg (sgpartN (nArpi "suuri") "suurta") "suurempi" "suurin" ;
  bike_N = nLukko "polkupyörä" ; --- for correct vowel harmony
  bird_N = nLukko "lintu" ;
  black_A = mkADeg (nLukko "musta") "mustempi" "mustin" ;
  blue_A = mkADeg (regN "sininen") "sinisempi" "sinisin" ;
  boat_N = regN "vene" ;
  book_N = nLukko "kirja" ;
  boot_N = regN "saapas" ;
  boss_N = nLukko "pomo" ;
  boy_N = nKukko "poika" "pojan" "poikia" ;
  bread_N = nLukko "leipä" ;
  break_V2 = dirV2 (regV "rikkoa") ;
  broad_A = mkADeg (regN "leveä") "leveämpi" "levein" ;
  brother_N2 = genN2 (
    mkN "veli" "veljen" "veljenä" "veljeä" "veljeen" 
        "veljinä" "veljissä" "veljien" "veljiä" "veljiin") ;
  brown_A = mkADeg (regN "ruskea") "ruskeampi" "ruskein" ;
  butter_N = reg3N "voi" "voin" "voita" ;  ---- errors in Part
  buy_V2 = dirV2 (regV "ostaa") ;
  camera_N = nLukko "kamera" ;
  cap_N = regN "lakki" ;
  car_N = reg3N "auto" "auton" "autoja" ; -- regN: audon
  carpet_N = nLukko "matto" ;
  cat_N = nLukko "kissa" ;
  ceiling_N = nLukko "katto" ;
  chair_N = regN "tuoli" ;
  cheese_N = nLukko "juusto" ;
  child_N = mkN "lapsi" "lapsen" "lapsena" "lasta" "lapseen" 
            "lapsina" "lapsissa" "lasten" "lapsia" "lapsiin" ;
  church_N = nLukko "kirkko" ;
  city_N = regN "kaupunki" ;
  clean_A = regA "puhdas" ;
  clever_A = regA "viisas" ;
  close_V2 = dirV2 (regV "sulkea") ;
  coat_N = regN "takki" ;
  cold_A = mkADeg (nLukko "kylmä") "kylmempi" "kylmin" ;
  come_V = regV "tulla" ;
  computer_N = regN "tietokone" ;
  country_N = regN "maa" ;
  cousin_N = nLukko "serkku" ;
  cow_N = nLukko "lehmä" ;
  die_V = regV "kuolla" ;
  dirty_A = mkADeg (regN "likainen") "likaisempi" "likaisin" ;
  distance_N3 = mkN3 (regN "etäisyys") (casePrep elative) (casePrep illative) ;
  doctor_N = reg2N "tohtori" "tohtoreita" ;
  dog_N = nLukko "koira" ;
  door_N = nArpi "ovi" ;
  drink_V2 = dirV2 (regV "juoda") ;
  easy_A2V = mkA2V (mkADeg (nLukko "helppo") "helpompi" "helpoin") 
    (casePrep allative) ;
  eat_V2 = dirV2 (regV "syödä") ;
  empty_A = mkADeg (nLukko "tyhjä") "tyhjempi" "tyhjin" ;
  enemy_N = regN "vihollinen" ;
  factory_N = regN "tehdas" ;
  father_N2 = genN2 (nLukko "isä") ;
  fear_VS = mkVS (reg2V "pelätä" "pelkäsi") ;
  find_V2 = dirV2 (reg2V "löytää" "löysi") ;
  fish_N = nLukko "kala" ;
  floor_N = reg2N "lattia" "lattioita" ;
  forget_V2 = dirV2 (regV "unohtaa") ;
  fridge_N = regN "jääkaappi" ;
  friend_N = nLukko "ystävä" ;
  fruit_N = nLukko "hedelmä" ;
  fun_AV = mkAV (mkADeg (nLukko "hauska") "hauskempi" "hauskin") ;
  garden_N = nKukko "puutarha" "puutarhan" "puutarhoja" ;
  girl_N = nLukko "tyttö" ;
  glove_N = regN "käsine" ;
  gold_N = nLukko "kulta" ;
  good_A = mkADeg (nLukko "hyvä") "parempi" "parhain" ; --- paras
  go_V = regV "mennä" ;
  green_A = mkADeg (regN "vihreä") "vihreämpi" "vihrein" ;
  harbour_N = nKukko "satama" "sataman" "satamia" ;
  hate_V2 = mkV2 (regV "vihata") cpartitive ;
  hat_N = nLukko "hattu" ;
  have_V2 = dirV2 (caseV adessive vOlla) ;
  hear_V2 = dirV2 (regV "kuulla") ;
  hill_N = nLukko "kukkula" ;
  hope_VS = mkVS (regV "toivoa") ;
  horse_N = regN "hevonen" ;
  hot_A = mkADeg (nLukko "kuuma") "kuumempi" "kuumin" ;
  house_N = nLukko "talo" ;
  important_A = mkADeg (regN "tärkeä") "tärkeämpi" "tärkein" ;
  industry_N = regN "teollisuus" ;
  iron_N = nLukko "rauta" ;
  king_N = regN "kuningas" ;
  know_V2 = dirV2 (reg2V "tietää" "tiesi") ; --- tuntea; gives tietänyt
  lake_N = nSylki "järvi" ;
  lamp_N = nLukko "lamppu" ;
  learn_V2 = 
    dirV2 (mk12V "oppia" "oppii" "opin" "oppivat" "oppikaa" "opitaan"
      "oppi" "opin" "oppisi" "oppinut" "opittu" "opitun") ;
  leather_N = nLukko "nahka" ; --- nahan
  leave_V2 = dirV2 (regV "jättää") ;
  like_V2 = caseV2 (regV "pitää") elative ;
  listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuunteli") partitive ;
  live_V = regV "elää" ;
  long_A = mkADeg (nLukko "pitkä") "pitempi" "pisin" ;
  lose_V2 = dirV2 (regV "hävitä") ; --- hukata
  love_N = reg3N "rakkaus" "rakkauden" "rakkauksia" ;
  love_V2 = caseV2 (regV "rakastaa") partitive ;
  man_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen" 
            "miehinä" "miehissä" "miesten" "miehiä" "miehiin" ;
  married_A2 = 
    mkA2 (mkA (nRae "avioitunut" "avioituneena")) (postPrep genitive "kanssa") ;
  meat_N = nLukko "liha" ;
  milk_N = nLukko "maito" ;
  moon_N = regN "kuu" ;
  mother_N2 = genN2 (regN "äiti") ;
  mountain_N = nArpi "vuori" ;
  music_N = regN "musiikki" ;
  narrow_A = mkADeg (regN "kapea") "kapeampi" "kapein" ;
  new_A = mkADeg (reg3N "uusi" "uuden" "uusia") "uudempi" "uusin" ;
  newspaper_N = nSylki "sanomalehti" ; --- for correct vowel harmony
  oil_N = nLukko "öljy" ;
  old_A = mkADeg (nLukko "vanha") "vanhempi" "vanhin" ;
  open_V2 = dirV2 (regV "avata") ;
  paint_V2A = mkV2A (regV "maalata") accPrep (casePrep translative) ;
  paper_N = reg2N "paperi" "papereita" ;
  paris_PN = mkPN (regN "Pariisi") ;
  peace_N = nLukko "rauha" ;
  pen_N = nLukko "kynä" ;
  planet_N = nLukko "planeetta" ;
  plastic_N = regN "muovi" ;
  play_V2 = mkV2 (regV "pelata") cpartitive ; --- leikkiä, soittaa
  policeman_N = regN "poliisi" ;
  priest_N = regN "pappi" ;
  probable_AS = mkAS --- for vowel harmony
    (mkADeg (nNainen "todennäköistä") "tonennäköisempi" "todennälöisin") ; 
  queen_N = regN "kuningatar" ;
  radio_N = reg2N "radio" "radioita" ;
  rain_V0 = mkV0 (reg2V "sataa" "satoi") ;
  read_V2 = dirV2 (regV "lukea") ;
  red_A = regA "punainen" ;
  religion_N = nLukko "uskonto" ;
  restaurant_N = nLukko "ravintola" ;
  river_N = nArpi "joki" ;
  rock_N = reg2N "kallio" "kallioita" ;
  roof_N = nLukko "katto" ;
  rubber_N = regN "kumi" ;
  run_V = reg2V "juosta" "juoksi" ;
  say_VS = mkVS (regV "sanoa") ;
  school_N = nLukko "koulu" ;
  science_N = regN "tiede" ;
  sea_N = nMeri "meri" ;
  seek_V2 = mkV2 (regV "etsiä") cpartitive ;
  see_V2 = dirV2 (
    mk12V "nähdä" "näkee" "näen" "näkevät" "nähkää" "nähdään"
      "näki" "näin" "näkisi" "nähnyt" "nähty" "nähdyn") ; 
  sell_V3 = dirV3 (regV "myydä") allative ;
  send_V3 = dirV3 (regV "lähettää") allative ;
  sheep_N = regN "lammas" ;
  ship_N = nLukko "laiva" ;
  shirt_N = nLukko "paita" ;
  shoe_N = nLukko "kenkä" ;
  shop_N = nLukko "kauppa" ;
  short_A = regA "lyhyt" ;
  silver_N = regN "hopea" ;
  sister_N = nLukko "sisko" ;
  sleep_V = regV "nukkua" ;
  small_A = mkADeg (reg2N "pieni" "pieniä") "pienempi" "pienin" ;
  snake_N = regN "käärme" ;
  sock_N = nLukko "sukka" ;
  speak_V2 = mkV2 (regV "puhua") cpartitive ;
  star_N = nSylki "tähti" ;
  steel_N = regN "teräs" ;
  stone_N = nSylki "kivi" ;
  stove_N = reg3N "liesi" "lieden" "liesiä" ;
  student_N = reg2N "opiskelija" "opiskelijoita" ;
  stupid_A = regA "tyhmä" ;
  sun_N = nLukko "aurinko" ;
  switch8off_V2 = dirV2 (regV "sammuttaa") ; ---
  switch8on_V2 = dirV2 (regV "sytyttää") ; ---
  table_N = nLukko "pöytä" ;
  talk_V3 = mkV3 (regV "puhua") (casePrep allative) (casePrep elative) ;
  teacher_N = nLukko "opettaja" ;
  teach_V2 = dirV2 (regV "opettaa") ;
  television_N = reg2N "televisio" "televisioita" ;
  thick_A = regA "paksu" ;
  thin_A = regA "ohut" ;
  train_N = nLukko "juna" ;
  travel_V = regV "matkustaa" ;
  tree_N = regN "puu" ;
 ---- trousers_N = regN "trousers" ;
  ugly_A = mkADeg (nLukko "ruma") "rumempi" "rumin" ;
  understand_V2 = dirV2 (reg3V "ymmärtää" "ymmärrän" "ymmärsi") ;
  university_N = nLukko "yliopisto" ;
  village_N = nLukko "kylä" ;
  wait_V2 = caseV2 (regV "odottaa") partitive ;
  walk_V = regV "kävellä" ;
  warm_A = mkADeg 
    (mkN "lämmin" "lämpimän" "lämpimänä" "lämmintä" "lämpimään" 
         "lämpiminä" "lämpimissä" "lämpimien" "lämpimiä" "lämpimiin"
	 ) 
    "lämpimämpi" "lämpimin" ;
  war_N = nLukko "sota" ;
  watch_V2 = mkV2 (regV "katsella") cpartitive ;
  water_N = reg3N "vesi" "veden" "vesiä" ;
  white_A = regA "valkoinen" ;
  window_N = reg2N "ikkuna" "ikkunoita" ;
  wine_N = regN "viini" ;
  win_V2 = dirV2 (regV "voittaa") ;
  woman_N = regN "nainen" ;
  wonder_VQ = mkVQ (regV "ihmetellä") ;
  wood_N = regN "puu" ;
  write_V2 = dirV2 (regV "kirjoittaa") ;
  yellow_A = regA "keltainen" ;
  young_A = mkADeg (nArpi "nuori") "nuorempi" "nuorin" ;

  do_V2 = dirV2 (
    mk12V "tehdä" "tekee" "teen" "tekevät" "tehkää" "tehdään"
      "teki" "tein" "tekisi" "tehnyt" "tehty" "tehdyn") ; 

  now_Adv = mkAdv "nyt" ;
  already_Adv = mkAdv "jo" ;
  song_N = nLukko "laulu" ;
  add_V3 = dirV3 (regV "lisätä") illative ;
  number_N = reg2N "numero" "numeroita" ;
  put_V2 = dirV2 (regV "panna") ;
  stop_V = regV "pysähtyä" ;
  jump_V = regV "hypätä" ;
  left_Ord = mkOrd (regN "vasen") ;
  right_Ord = mkOrd (regN "oikea") ;
  far_Adv = mkAdv "kaukana" ;
  correct_A = regA "oikea" ;
  dry_A = mkADeg (regN "kuiva") "kuivempi" "kuivin" ;
  dull_A = mkADeg (regN "tylsä") "tylsempi" "tylsin" ;
  full_A = mkADeg (reg3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ;
  heavy_A = regA "raskas" ;
  near_A = regA "läheinen" ;
  rotten_A = regA "mätä" ;
  round_A = regA "pyöreä" ;
  sharp_A = regA "terävä" ;
  smooth_A = regA "sileä" ;
  straight_A = mkADeg (regN "suora") "suorempi" "suorin" ;
  wet_A = mkADeg (regN "märkä") "märempi" "märin" ;
  wide_A = regA "leveä" ;
  animal_N = reg3N "eläin" "eläimen" "eläimiä" ;
  ashes_N = regN "tuhka" ;
  back_N = regN "selkä" ;
  bark_N = regN "kaarna" ;
  belly_N = regN "vatsa" ;
  blood_N = nMeri "veri" ;
  bone_N = regN "luu" ;
  breast_N = regN "rinta" ;
  cloud_N = reg2N "pilvi" "pilviä" ;
  day_N = regN "päivä" ;
  dust_N = regN "pöly" ;
  ear_N = regN "korva" ;
  earth_N = regN "maa" ;
  egg_N = regN "muna" ;
  eye_N = regN "silmä" ;
  fat_N = regN "rasva" ;
  feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ;
  fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ;
  fire_N = reg2N "tuli" "tulia" ;
  flower_N = regN "kukka" ;
  fog_N = regN "sumu" ;
  foot_N = regN "jalka" ;
  forest_N = regN "metsä" ;
  grass_N = regN "ruoho" ;
  guts_N = regN "sisälmys" ; --- suoli
  hair_N = regN "hius" ;
  hand_N = reg3N "käsi" "käden" "käsiä" ;
  head_N = regN "pää" ;
  heart_N = reg3N "sydän" "sydämen" "sydämiä" ;
  horn_N = reg2N "sarvi" "sarvia" ;
  husband_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen" 
            "miehinä" "miehissä" "miesten" "miehiä" "miehiin" ; 
  ice_N = regN "jää" ;
  knee_N = reg2N "polvi" "polvia" ;
  leaf_N = reg2N "lehti" "lehtiä" ;
  leg_N = regN "jalka" ; --- sääri
  liver_N = regN "maksa" ;
  louse_N = regN "lude" ;
  mouth_N = regN "suu" ;
  name_N = reg2N "nimi" "nimiä" ;
  neck_N = regN "niska" ;
  night_N = regN "yö" ;
  nose_N = regN "nenä" ;
  person_N = regN "henkilö" ;
  rain_N = regN "sade" ;
  road_N = regN "tie" ;
  root_N = reg2N "juuri" "juuria" ;
  rope_N = reg3N "köysi" "köyden" "köysiä" ;
  salt_N = regN "suola" ;
  sand_N = regN "hiekka" ;
  seed_N = regN "siemen" ;
  skin_N = regN "nahka" ;
  sky_N = reg3N "taivas" "taivaan" "taivaita" ;
  smoke_N = regN "savu" ;
  snow_N = sgpartN (nMeri "lumi") "lunta" ;
  stick_N = regN "keppi" ;
  tail_N = regN "häntä" ;
  tongue_N = reg2N "kieli" "kieliä" ;
  tooth_N = regN "hammas" ;
  wife_N = regN "vaimo" ;
  wind_N = reg2N "tuuli" "tuulia" ;
  wing_N = reg2N "siipi" "siipiä" ;
  worm_N = regN "mato" ;
  year_N = reg3N "vuosi" "vuoden" "vuosia" ;
  bite_V2 = dirV2 (regV "purra") ;
  blow_V = regV "puhaltaa" ;
  burn_V = regV "palaa" ;
  count_V2 = dirV2 (regV "laskea") ;
  cut_V2 = dirV2 (reg2V "leikata" "leikkasi") ;
  dig_V = regV "kaivaa" ;
  fall_V = reg3V "pudota" "putoan" "putosi" ;
  fear_V2 = mkV2 (reg3V "pelätä" "pelkään" "pelkäsi") cpartitive ;
  fight_V2 = mkV2 (regV "taistella") (postPrep partitive "vastaan") ;
  float_V = regV "kellua" ;
  flow_V = reg3V "virrata" "virtaan" "virtasi" ;
  fly_V = regV "lentää" ;
  freeze_V = regV "jäätyä" ;
  give_V3 = dirdirV3 (reg3V "antaa" "annan" "antoi") ;
  hit_V2 = mkV2 (regV "lyödä") cpartitive ;
  hold_V2 = mkV2 (regV "pitää") cpartitive ;
  hunt_V2 = mkV2 (regV "metsästää") cpartitive ;
  kill_V2 = dirV2 (regV "tappaa") ;
  laugh_V = reg3V "nauraa" "nauran" "nauroi" ;
  lie_V = reg3V "maata" "makaan" "makasi" ;
  play_V = regV "pelata" ;
  pull_V2 = dirV2 (regV "vetää") ;
  push_V2 = dirV2 (regV "työntää") ;
  rub_V2 = mkV2 (regV "hieroa") cpartitive ;
  scratch_V2 = mkV2 (regV "raapia") cpartitive ;
  sew_V = regV "kylvää" ;
  sing_V = regV "laulaa" ;
  sit_V = regV "istua" ;
  smell_V = reg2V "haistaa" "haistoi" ;
  spit_V = regV "sylkeä" ;
  split_V2 = dirV2 (reg2V "halkaista" "halkaisi") ;
  squeeze_V2 = mkV2 (regV "puristaa") cpartitive ;
  stab_V2 = mkV2 (regV "pistää") cpartitive ;
  stand_V = mk12V "seistä" "seisoo" "seison" "seisovat" "seiskää" "seistään"
      "seisoi" "seisoin" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät
  suck_V2 = mkV2 (regV "imeä") cpartitive ;
  swell_V = mk12V "turvota" "turpoaa" "turpoan" "turpoavat" "turvotkaa" "turvotaan"
      "turposi" "turposin" "turpoaisi" "turvonnut" "turvottu" "turvotun" ;
  swim_V = reg3V "uida" "uin" "ui" ;
  think_V = reg3V "ajatella" "ajattelen" "ajatteli" ;
  throw_V2 = dirV2 (regV "heittää") ;
  tie_V2 = dirV2 (regV "sitoa") ;
  turn_V = regV "kääntyä" ;
  vomit_V = regV "oksentaa" ;
  wash_V2 = dirV2 (regV "pestä") ;
  wipe_V2 = dirV2 (regV "pyyhkiä") ;

  breathe_V = regV "hengittää" ;

  grammar_N = regN "kielioppi" ;
  language_N = reg2N "kieli" "kieliä" ;
  rule_N = regN "sääntö" ;

    john_PN = regPN "Jussi" ;
    question_N = regN "kysymys" ;
    ready_A = regA "valmis" ;
    reason_N = regN "syy" ;
    today_Adv = mkAdv "tänään" ;
    uncertain_A = regA "epävarma" ;

 oper
    mkOrd : N -> Ord ;
    mkOrd x = {s = \\n,c => x.s ! NCase n c; lock_Ord = <> } ;
    cpartitive = casePrep partitive ;

} ;
