import prelude

data Cat : Type where {
  CN : Cat ;
  NP : Cat ;
  S : Cat
} ;
data Tree : (_ : Cat)-> Type where {
  A : (h_ : Tree CN)-> Tree NP ;
  All : (h_ : Tree CN)-> Tree NP ;
  Animal : Tree CN ;
  Ashes : Tree CN ;
  Back : Tree CN ;
  Bad : (h_ : Tree CN)-> Tree CN ;
  Bark : Tree CN ;
  Belly : Tree CN ;
  Big : (h_ : Tree CN)-> Tree CN ;
  Bird : Tree CN ;
  Bite : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Black : (h_ : Tree CN)-> Tree CN ;
  Blood : Tree CN ;
  Blow : (h_ : Tree NP)-> Tree S ;
  Bone : Tree CN ;
  Breast : Tree CN ;
  Breathe : (h_ : Tree NP)-> Tree S ;
  Burn : (h_ : Tree NP)-> Tree S ;
  Child : Tree CN ;
  Cloud : Tree CN ;
  Cold : (h_ : Tree CN)-> Tree CN ;
  Come : (h_ : Tree NP)-> Tree S ;
  Correct : (h_ : Tree CN)-> Tree CN ;
  Count : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Cut : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Day : Tree CN ;
  Die : (h_ : Tree NP)-> Tree S ;
  Dig : (h_ : Tree NP)-> Tree S ;
  Dirty : (h_ : Tree CN)-> Tree CN ;
  Dog : Tree CN ;
  Drink : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Dry : (h_ : Tree CN)-> Tree CN ;
  Dull : (h_ : Tree CN)-> Tree CN ;
  Dust : Tree CN ;
  Ear : Tree CN ;
  Earth : Tree CN ;
  Eat : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Egg : Tree CN ;
  Eye : Tree CN ;
  Fall : (h_ : Tree NP)-> Tree S ;
  Fat : Tree CN ;
  Father : Tree CN ;
  FatherOf : (h_ : Tree NP)-> Tree CN ;
  Fear : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Feather : Tree CN ;
  Few : (h_ : Tree CN)-> Tree NP ;
  Fight : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Fingernail : Tree CN ;
  Fire : Tree CN ;
  Fish : Tree CN ;
  Five : (h_ : Tree CN)-> Tree NP ;
  Float : (h_ : Tree NP)-> Tree S ;
  Flow : (h_ : Tree NP)-> Tree S ;
  Flower : Tree CN ;
  Fly : (h_ : Tree NP)-> Tree S ;
  Fog : Tree CN ;
  Foot : Tree CN ;
  Forest : Tree CN ;
  Four : (h_ : Tree CN)-> Tree NP ;
  Freeze : (h_ : Tree NP)-> Tree S ;
  Fruit : Tree CN ;
  Full : (h_ : Tree CN)-> Tree CN ;
  Give : (h_ : Tree NP)-> (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Good : (h_ : Tree CN)-> Tree CN ;
  Grass : Tree CN ;
  Green : (h_ : Tree CN)-> Tree CN ;
  Guts : Tree CN ;
  Hair : Tree CN ;
  Hand : Tree CN ;
  He : Tree NP ;
  Head : Tree CN ;
  Hear : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Heart : Tree CN ;
  Heavy : (h_ : Tree CN)-> Tree CN ;
  Hit : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Hold : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Horn : Tree CN ;
  Hunt : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Husband : Tree CN ;
  I : Tree NP ;
  Ice : Tree CN ;
  Kill : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Knee : Tree CN ;
  Know : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Lake : Tree CN ;
  Laugh : (h_ : Tree NP)-> Tree S ;
  Leaf : Tree CN ;
  Left : (h_ : Tree CN)-> Tree CN ;
  Leg : Tree CN ;
  Lie : (h_ : Tree NP)-> Tree S ;
  Live : (h_ : Tree NP)-> Tree S ;
  Liver : Tree CN ;
  Long : (h_ : Tree CN)-> Tree CN ;
  Louse : Tree CN ;
  Man : Tree CN ;
  Many : (h_ : Tree CN)-> Tree NP ;
  Meat : Tree CN ;
  Moon : Tree CN ;
  Mother : Tree CN ;
  MotherOf : (h_ : Tree NP)-> Tree CN ;
  Mountain : Tree CN ;
  Mouth : Tree CN ;
  Name : Tree CN ;
  Narrow : (h_ : Tree CN)-> Tree CN ;
  Near : (h_ : Tree CN)-> Tree CN ;
  Neck : Tree CN ;
  New : (h_ : Tree CN)-> Tree CN ;
  Night : Tree CN ;
  Nose : Tree CN ;
  Old : (h_ : Tree CN)-> Tree CN ;
  One : (h_ : Tree CN)-> Tree NP ;
  Other : (h_ : Tree CN)-> Tree NP ;
  Person : Tree CN ;
  Play : (h_ : Tree NP)-> Tree S ;
  Pull : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Push : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Rain : Tree CN ;
  Red : (h_ : Tree CN)-> Tree CN ;
  Right : (h_ : Tree CN)-> Tree CN ;
  River : Tree CN ;
  Road : Tree CN ;
  Root : Tree CN ;
  Rope : Tree CN ;
  Rotten : (h_ : Tree CN)-> Tree CN ;
  Round : (h_ : Tree CN)-> Tree CN ;
  Rub : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Salt : Tree CN ;
  Sand : Tree CN ;
  Scratch : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Sea : Tree CN ;
  See : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Seed : Tree CN ;
  Sew : (h_ : Tree NP)-> Tree S ;
  Sharp : (h_ : Tree CN)-> Tree CN ;
  Short : (h_ : Tree CN)-> Tree CN ;
  Sing : (h_ : Tree NP)-> Tree S ;
  Sit : (h_ : Tree NP)-> Tree S ;
  Skin : Tree CN ;
  Sky : Tree CN ;
  Sleep : (h_ : Tree NP)-> Tree S ;
  Small : (h_ : Tree CN)-> Tree CN ;
  Smell : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Smoke : Tree CN ;
  Smooth : (h_ : Tree CN)-> Tree CN ;
  Snake : Tree CN ;
  Snow : Tree CN ;
  Some_Many : (h_ : Tree CN)-> Tree NP ;
  Some_One : (h_ : Tree CN)-> Tree NP ;
  Spit : (h_ : Tree NP)-> Tree S ;
  Split : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Squeeze : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Stab : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Stand : (h_ : Tree NP)-> Tree S ;
  Star : Tree CN ;
  Stick : Tree CN ;
  Stone : Tree CN ;
  Straight : (h_ : Tree CN)-> Tree CN ;
  Suck : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Sun : Tree CN ;
  Swell : (h_ : Tree NP)-> Tree S ;
  Swim : (h_ : Tree NP)-> Tree S ;
  Tail : Tree CN ;
  That : (h_ : Tree CN)-> Tree NP ;
  The_Many : (h_ : Tree CN)-> Tree NP ;
  The_One : (h_ : Tree CN)-> Tree NP ;
  They : Tree NP ;
  Thick : (h_ : Tree CN)-> Tree CN ;
  Thin : (h_ : Tree CN)-> Tree CN ;
  Think : (h_ : Tree NP)-> Tree S ;
  This : (h_ : Tree CN)-> Tree NP ;
  Three : (h_ : Tree CN)-> Tree NP ;
  Throw : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Tie : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Tongue : Tree CN ;
  Tooth : Tree CN ;
  Tree : Tree CN ;
  Turn : (h_ : Tree NP)-> Tree S ;
  Two : (h_ : Tree CN)-> Tree NP ;
  Vomit : (h_ : Tree NP)-> Tree S ;
  Walk : (h_ : Tree NP)-> Tree S ;
  Warm : (h_ : Tree CN)-> Tree CN ;
  Wash : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Water : Tree CN ;
  We : Tree NP ;
  Wet : (h_ : Tree CN)-> Tree CN ;
  White : (h_ : Tree CN)-> Tree CN ;
  Wide : (h_ : Tree CN)-> Tree CN ;
  Wife : Tree CN ;
  Wind : Tree CN ;
  Wing : Tree CN ;
  Wipe : (h_ : Tree NP)-> (h_ : Tree NP)-> Tree S ;
  Woman : Tree CN ;
  Worm : Tree CN ;
  Year : Tree CN ;
  Yellow : (h_ : Tree CN)-> Tree CN ;
  You_Many : Tree NP ;
  You_One : Tree NP
}

derive Compos Tree

derive Eq Tree