diff --git a/next-lib/src/Makefile b/next-lib/src/Makefile index 89a9d4a3e..673cb732b 100644 --- a/next-lib/src/Makefile +++ b/next-lib/src/Makefile @@ -50,7 +50,7 @@ synopsis: cd doc ; $(RUNGHC) MkSynopsis ; cd .. link: - chmod a+x mkPresent + chmod a+x mkPresent mkMinimal compiled: (cd .. && tar -zcf resource-compiled.tar.gz prelude alltenses present) diff --git a/next-lib/src/api/Combinators.gf b/next-lib/src/api/Combinators.gf index 07431c9af..e85b25613 100644 --- a/next-lib/src/api/Combinators.gf +++ b/next-lib/src/api/Combinators.gf @@ -89,24 +89,24 @@ incomplete resource Combinators = open Cat, Structural, Constructors in { = \v,np,ob -> mkCl np v ob ; pred : V3 -> NP -> NP -> NP -> Cl = \v,np,ob,ob2 -> mkCl np v ob ob2 ; - pred : V -> NP -> NP -> Cl - = \v,x,y -> mkCl (mkNP and_Conj x y) v ; + pred : V -> NP -> NP -> Cl --# notminimal + = \v,x,y -> mkCl (mkNP and_Conj x y) v ; --# notminimal pred : A -> NP -> Cl = \a,np -> mkCl np a ; - pred : A2 -> NP -> NP -> Cl - = \a,x,y -> mkCl x a y ; - pred : A -> NP -> NP -> Cl - = \a,x,y -> mkCl (mkNP and_Conj x y) a ; + pred : A2 -> NP -> NP -> Cl --# notminimal + = \a,x,y -> mkCl x a y ; --# notminimal + pred : A -> NP -> NP -> Cl --# notminimal + = \a,x,y -> mkCl (mkNP and_Conj x y) a ; --# notminimal pred : N -> NP -> Cl = \n,x -> mkCl x (mkNP a_Art n) ; pred : CN -> NP -> Cl = \n,x -> mkCl x (mkNP a_Art n) ; pred : NP -> NP -> Cl = \n,x -> mkCl x n ; - pred : N2 -> NP -> NP -> Cl - = \n,x,y -> mkCl x (mkNP a_Art (mkCN n y)) ; - pred : N -> NP -> NP -> Cl - = \n,x,y -> mkCl (mkNP and_Conj x y) (mkNP a_Art plNum n) ; + pred : N2 -> NP -> NP -> Cl --# notminimal + = \n,x,y -> mkCl x (mkNP a_Art (mkCN n y)) ; --# notminimal + pred : N -> NP -> NP -> Cl --# notminimal + = \n,x,y -> mkCl (mkNP and_Conj x y) (mkNP a_Art plNum n) ; --# notminimal pred : Adv -> NP -> Cl = \a,x -> mkCl x a ; pred : Prep -> NP -> NP -> Cl @@ -116,40 +116,40 @@ incomplete resource Combinators = open Cat, Structural, Constructors in { app = overload { app : N -> NP = \n -> mkNP the_Art n ; - app : N2 -> NP -> NP - = \n,x -> mkNP the_Art (mkCN n x) ; - app : N3 -> NP -> NP -> NP - = \n,x,y -> mkNP the_Art (mkCN n x y) ; - app : N2 -> NP -> NP -> NP - = \n,x,y -> mkNP the_Art (mkCN n (mkNP and_Conj x y)) ; - app : N2 -> N -> CN - = \f,n -> mkCN f (mkNP a_Art plNum n) ; - app : N2 -> NP -> CN - = mkCN ; - app : N3 -> NP -> NP -> CN - = mkCN ; - app : N2 -> NP -> NP -> CN - = \n,x,y -> mkCN n (mkNP and_Conj x y) ; + app : N2 -> NP -> NP --# notminimal + = \n,x -> mkNP the_Art (mkCN n x) ; --# notminimal + app : N3 -> NP -> NP -> NP --# notminimal + = \n,x,y -> mkNP the_Art (mkCN n x y) ; --# notminimal + app : N2 -> NP -> NP -> NP --# notminimal + = \n,x,y -> mkNP the_Art (mkCN n (mkNP and_Conj x y)) ; --# notminimal + app : N2 -> N -> CN --# notminimal + = \f,n -> mkCN f (mkNP a_Art plNum n) ; --# notminimal + app : N2 -> NP -> CN --# notminimal + = mkCN ; --# notminimal + app : N3 -> NP -> NP -> CN --# notminimal + = mkCN ; --# notminimal + app : N2 -> NP -> NP -> CN --# notminimal + = \n,x,y -> mkCN n (mkNP and_Conj x y) ; --# notminimal } ; - coord = overload { - coord : Conj -> Adv -> Adv -> Adv - = mkAdv ; - coord : Conj -> AP -> AP -> AP - = mkAP ; - coord : Conj -> NP -> NP -> NP - = mkNP ; - coord : Conj -> S -> S -> S - = mkS ; - coord : Conj -> ListAdv -> Adv - = mkAdv ; - coord : Conj -> ListAP -> AP - = mkAP ; - coord : Conj -> ListNP -> NP - = mkNP ; - coord : Conj -> ListS -> S - = mkS ; - } ; + coord = overload { --# notminimal + coord : Conj -> Adv -> Adv -> Adv --# notminimal + = mkAdv ; --# notminimal + coord : Conj -> AP -> AP -> AP --# notminimal + = mkAP ; --# notminimal + coord : Conj -> NP -> NP -> NP --# notminimal + = mkNP ; --# notminimal + coord : Conj -> S -> S -> S --# notminimal + = mkS ; --# notminimal + coord : Conj -> ListAdv -> Adv --# notminimal + = mkAdv ; --# notminimal + coord : Conj -> ListAP -> AP --# notminimal + = mkAP ; --# notminimal + coord : Conj -> ListNP -> NP --# notminimal + = mkNP ; --# notminimal + coord : Conj -> ListS -> S --# notminimal + = mkS ; --# notminimal + } ; --# notminimal mod = overload { mod : A -> N -> CN @@ -179,8 +179,8 @@ incomplete resource Combinators = open Cat, Structural, Constructors in { = mkS negativePol ; neg : QCl -> QS = mkQS negativePol ; - neg : RCl -> RS - = mkRS negativePol ; + neg : RCl -> RS --# notminimal + = mkRS negativePol ; --# notminimal }; diff --git a/next-lib/src/api/Constructors.gf b/next-lib/src/api/Constructors.gf index 0c74ffe12..fd49895c5 100644 --- a/next-lib/src/api/Constructors.gf +++ b/next-lib/src/api/Constructors.gf @@ -1,8 +1,8 @@ ---1 Constructors: the Resource Syntax API +--1 Constructors: the Resource Syntax API --# notminimal -incomplete resource Constructors = open Grammar in { +incomplete resource Constructors = open Grammar in { - flags optimize=noexpand ; + flags optimize=noexpand ; -- This module gives access to the syntactic constructions of the -- GF Resource Grammar library. Its main principle is simple: @@ -25,7 +25,7 @@ incomplete resource Constructors = open Grammar in { -- Together with $Paradigms$, $Syntax$ gives everything that is needed -- to implement the concrete syntax for a langauge. ---2 Principles of organization +--2 Principles of organization --# notminimal -- To make the library easier to grasp and navigate, we have followed -- a set of principles when organizing it: @@ -56,609 +56,609 @@ incomplete resource Constructors = open Grammar in { -- -- ---2 Texts, phrases, and utterances +--2 Texts, phrases, and utterances --# notminimal ---3 Text: texts +--3 Text: texts --# notminimal -- A text is a list of phrases separated by punctuation marks. -- The default punctuation mark is the full stop, and the default -- continuation of a text is empty. - oper - mkText : overload { - mkText : Phr -> Text ; -- 1. But John walks. - mkText : Phr -> (Punct) -> (Text) -> Text ; -- 2. John walks? Yes. + oper + mkText : overload { --# notminimal + mkText : Phr -> Text ; -- 1. But John walks. --# notminimal + mkText : Phr -> (Punct) -> (Text) -> Text ; -- 2. John walks? Yes. --# notminimal -- A text can also be directly built from utterances, which in turn can -- be directly built from sentences, present-tense clauses, questions, or -- positive imperatives. - mkText : Utt -> Text ; -- 3. John. - mkText : S -> Text ; -- 4. John walked. - mkText : Cl -> Text ; -- 5. John walks. - mkText : QS -> Text ; -- 6. Did John walk? - mkText : Imp -> Text ; -- 7. Walk! + mkText : Utt -> Text ; -- 3. John. --# notminimal + mkText : S -> Text ; -- 4. John walked. --# notminimal + mkText : Cl -> Text ; -- 5. John walks. --# notminimal + mkText : QS -> Text ; -- 6. Did John walk? --# notminimal + mkText : Imp -> Text ; -- 7. Walk! --# notminimal -- Finally, two texts can be combined into a text. - mkText : Text -> Text -> Text ; -- 8. Where? When? Here. Now! + mkText : Text -> Text -> Text ; -- 8. Where? When? Here. Now! --# notminimal - } ; + } ; --# notminimal -- A text can also be empty. - emptyText : Text ; -- 8. (empty text) + emptyText : Text ; -- 8. (empty text) --# notminimal ---3 Punct: punctuation marks +--3 Punct: punctuation marks --# notminimal -- There are three punctuation marks that can separate phrases in a text. - fullStopPunct : Punct ; -- . - questMarkPunct : Punct ; -- ? - exclMarkPunct : Punct ; -- ! + fullStopPunct : Punct ; -- . --# notminimal + questMarkPunct : Punct ; -- ? --# notminimal + exclMarkPunct : Punct ; -- ! --# notminimal ---3 Phr: phrases in a text +--3 Phr: phrases in a text --# notminimal -- Phrases are built from utterances by adding a phrasal conjunction -- and a vocative, both of which are by default empty. - mkPhr : overload { - mkPhr : Utt -> Phr ; -- 1. why - mkPhr : (PConj) -> Utt -> (Voc) -> Phr ; -- 2. but why John + mkPhr : overload { --# notminimal + mkPhr : Utt -> Phr ; -- 1. why --# notminimal + mkPhr : (PConj) -> Utt -> (Voc) -> Phr ; -- 2. but why John --# notminimal -- A phrase can also be directly built by a sentence, a present-tense -- clause, a question, or a positive singular imperative. - mkPhr : S -> Phr ; -- 3. John walked - mkPhr : Cl -> Phr ; -- 4. John walks - mkPhr : QS -> Phr ; -- 5. did John walk - mkPhr : Imp -> Phr -- 6. walk - } ; + mkPhr : S -> Phr ; -- 3. John walked --# notminimal + mkPhr : Cl -> Phr ; -- 4. John walks --# notminimal + mkPhr : QS -> Phr ; -- 5. did John walk --# notminimal + mkPhr : Imp -> Phr -- 6. walk --# notminimal + } ; --# notminimal ---3 PConj, phrasal conjunctions +--3 PConj, phrasal conjunctions --# notminimal -- Any conjunction can be used as a phrasal conjunction. -- More phrasal conjunctions are defined in $Structural$. - mkPConj : Conj -> PConj ; -- 1. and + mkPConj : Conj -> PConj ; -- 1. and --# notminimal ---3 Voc, vocatives +--3 Voc, vocatives --# notminimal -- Any noun phrase can be turned into a vocative. -- More vocatives are defined in $Structural$. - mkVoc : NP -> Voc ; -- 1. John + mkVoc : NP -> Voc ; -- 1. John --# notminimal ---3 Utt, utterances +--3 Utt, utterances --# notminimal -- Utterances are formed from sentences, clauses, questions, and positive singular imperatives. - mkUtt : overload { - mkUtt : S -> Utt ; -- 1. John walked - mkUtt : Cl -> Utt ; -- 2. John walks - mkUtt : QS -> Utt ; -- 3. did John walk - mkUtt : QCl -> Utt ; -- 4. does John walk - mkUtt : Imp -> Utt ; -- 5. love yourself + mkUtt : overload { --# notminimal + mkUtt : S -> Utt ; -- 1. John walked --# notminimal + mkUtt : Cl -> Utt ; -- 2. John walks --# notminimal + mkUtt : QS -> Utt ; -- 3. did John walk --# notminimal + mkUtt : QCl -> Utt ; -- 4. does John walk --# notminimal + mkUtt : Imp -> Utt ; -- 5. love yourself --# notminimal -- Imperatives can also vary in $ImpForm$ (number/politeness) and -- polarity. - mkUtt : (ImpForm) -> (Pol) -> Imp -> Utt ; -- 5. don't love yourselves + mkUtt : (ImpForm) -> (Pol) -> Imp -> Utt ; -- 5. don't love yourselves --# notminimal -- Utterances can also be formed from interrogative phrases and -- interrogative adverbials, noun phrases, adverbs, and verb phrases. - mkUtt : IP -> Utt ; -- 6. who - mkUtt : IAdv -> Utt ; -- 7. why - mkUtt : NP -> Utt ; -- 8. John - mkUtt : Adv -> Utt ; -- 9. here - mkUtt : VP -> Utt -- 10. to walk - } ; + mkUtt : IP -> Utt ; -- 6. who --# notminimal + mkUtt : IAdv -> Utt ; -- 7. why --# notminimal + mkUtt : NP -> Utt ; -- 8. John --# notminimal + mkUtt : Adv -> Utt ; -- 9. here --# notminimal + mkUtt : VP -> Utt -- 10. to walk --# notminimal + } ; --# notminimal -- The plural first-person imperative is a special construction. - lets_Utt : VP -> Utt ; -- 11. let's walk + lets_Utt : VP -> Utt ; -- 11. let's walk --# notminimal ---2 Auxiliary parameters for phrases and sentences +--2 Auxiliary parameters for phrases and sentences --# notminimal ---3 Pol, polarity +--3 Pol, polarity --# notminimal -- Polarity is a parameter that sets a clause to positive or negative -- form. Since positive is the default, it need never be given explicitly. - positivePol : Pol ; -- (John walks) [default] - negativePol : Pol ; -- (John doesn't walk) + positivePol : Pol ; -- (John walks) [default] --# notminimal + negativePol : Pol ; -- (John doesn't walk) --# notminimal ---3 Ant, anteriority +--3 Ant, anteriority --# notminimal -- Anteriority is a parameter that presents an event as simultaneous or -- anterior to some other reference time. -- Since simultaneous is the default, it need never be given explicitly. - simultaneousAnt : Ant ; -- (John walks) [default] - anteriorAnt : Ant ; -- (John has walked) --# notpresent + simultaneousAnt : Ant ; -- (John walks) [default] --# notminimal + anteriorAnt : Ant ; -- (John has walked) --# notpresent --# notminimal ---3 Tense, tense +--3 Tense, tense --# notminimal -- Tense is a parameter that relates the time of an event -- to the time of speaking about it. -- Since present is the default, it need never be given explicitly. - presentTense : Tense ; -- (John walks) [default] - pastTense : Tense ; -- (John walked) --# notpresent - futureTense : Tense ; -- (John will walk) --# notpresent - conditionalTense : Tense ; -- (John would walk) --# notpresent + presentTense : Tense ; -- (John walks) [default] --# notminimal + pastTense : Tense ; -- (John walked) --# notpresent --# notminimal + futureTense : Tense ; -- (John will walk) --# notpresent --# notminimal + conditionalTense : Tense ; -- (John would walk) --# notpresent --# notminimal ---3 ImpForm, imperative form +--3 ImpForm, imperative form --# notminimal -- Imperative form is a parameter that sets the form of imperative -- by reference to the person or persons addressed. -- Since singular is the default, it need never be given explicitly. - singularImpForm : ImpForm ; -- (help yourself) [default] - pluralImpForm : ImpForm ; -- (help yourselves) - politeImpForm : ImpForm ; -- (help yourself) (polite singular) + singularImpForm : ImpForm ; -- (help yourself) [default] --# notminimal + pluralImpForm : ImpForm ; -- (help yourselves) --# notminimal + politeImpForm : ImpForm ; -- (help yourself) (polite singular) --# notminimal ---2 Sentences and clauses +--2 Sentences and clauses --# notminimal ---3 S, sentences +--3 S, sentences --# notminimal -- A sentence has a fixed tense, anteriority and polarity. - mkS : overload { - mkS : Cl -> S ; -- 1. John walks - mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S ; -- 2. John wouldn't have walked + mkS : overload { --# notminimal + mkS : Cl -> S ; -- 1. John walks --# notminimal + mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S ; -- 2. John wouldn't have walked --# notminimal -- Sentences can be combined with conjunctions. This can apply to a pair -- of sentences, but also to a list of more than two. - mkS : Conj -> S -> S -> S ; -- 3. John walks and I run - mkS : Conj -> ListS -> S ; -- 4. John walks, I run and you sleep + mkS : Conj -> S -> S -> S ; -- 3. John walks and I run --# notminimal + mkS : Conj -> ListS -> S ; -- 4. John walks, I run and you sleep --# notminimal -- A sentence can be prefixed by an adverb. - mkS : Adv -> S -> S -- 5. today, John walks - } ; + mkS : Adv -> S -> S -- 5. today, John walks --# notminimal + } ; --# notminimal ---3 Cl, clauses +--3 Cl, clauses --# notminimal -- A clause has a variable tense, anteriority and polarity. -- A clause can be built from a subject noun phrase -- with a verb and appropriate arguments. - mkCl : overload { - mkCl : NP -> V -> Cl ; -- 1. John walks - mkCl : NP -> V2 -> NP -> Cl ; -- 2. John loves her - mkCl : NP -> V3 -> NP -> NP -> Cl ; -- 3. John sends it to her - mkCl : NP -> VV -> VP -> Cl ; -- 4. John wants to walk - mkCl : NP -> VS -> S -> Cl ; -- 5. John says that it is good - mkCl : NP -> VQ -> QS -> Cl ; -- 6. John wonders if it is good - mkCl : NP -> VA -> AP -> Cl ; -- 7. John becomes old - mkCl : NP -> V2A -> NP -> AP -> Cl ; -- 8. John paints it red - mkCl : NP -> V2S -> NP -> S -> Cl ; -- 9. John tells her that we are here - mkCl : NP -> V2Q -> NP -> QS -> Cl ; -- 10. John asks her who is here - mkCl : NP -> V2V -> NP -> VP -> Cl ; -- 11. John forces us to sleep - mkCl : NP -> A -> Cl ; -- 12. John is old - mkCl : NP -> A -> NP -> Cl ; -- 13. John is older than her - mkCl : NP -> A2 -> NP -> Cl ; -- 14. John is married to her - mkCl : NP -> AP -> Cl ; -- 15. John is very old - mkCl : NP -> N -> Cl ; -- 16. John is a man - mkCl : NP -> CN -> Cl ; -- 17. John is an old man - mkCl : NP -> NP -> Cl ; -- 18. John is the man - mkCl : NP -> Adv -> Cl ; -- 19. John is here + mkCl : overload { --# notminimal + mkCl : NP -> V -> Cl ; -- 1. John walks --# notminimal + mkCl : NP -> V2 -> NP -> Cl ; -- 2. John loves her --# notminimal + mkCl : NP -> V3 -> NP -> NP -> Cl ; -- 3. John sends it to her --# notminimal + mkCl : NP -> VV -> VP -> Cl ; -- 4. John wants to walk --# notminimal + mkCl : NP -> VS -> S -> Cl ; -- 5. John says that it is good --# notminimal + mkCl : NP -> VQ -> QS -> Cl ; -- 6. John wonders if it is good --# notminimal + mkCl : NP -> VA -> AP -> Cl ; -- 7. John becomes old --# notminimal + mkCl : NP -> V2A -> NP -> AP -> Cl ; -- 8. John paints it red --# notminimal + mkCl : NP -> V2S -> NP -> S -> Cl ; -- 9. John tells her that we are here --# notminimal + mkCl : NP -> V2Q -> NP -> QS -> Cl ; -- 10. John asks her who is here --# notminimal + mkCl : NP -> V2V -> NP -> VP -> Cl ; -- 11. John forces us to sleep --# notminimal + mkCl : NP -> A -> Cl ; -- 12. John is old --# notminimal + mkCl : NP -> A -> NP -> Cl ; -- 13. John is older than her --# notminimal + mkCl : NP -> A2 -> NP -> Cl ; -- 14. John is married to her --# notminimal + mkCl : NP -> AP -> Cl ; -- 15. John is very old --# notminimal + mkCl : NP -> N -> Cl ; -- 16. John is a man --# notminimal + mkCl : NP -> CN -> Cl ; -- 17. John is an old man --# notminimal + mkCl : NP -> NP -> Cl ; -- 18. John is the man --# notminimal + mkCl : NP -> Adv -> Cl ; -- 19. John is here --# notminimal -- As the general rule, a clause can be built from a subject noun phrase and -- a verb phrase. - mkCl : NP -> VP -> Cl ; -- 20. John walks here + mkCl : NP -> VP -> Cl ; -- 20. John walks here --# notminimal -- Subjectless verb phrases are used for impersonal actions. - mkCl : V -> Cl ; -- 21. it rains - mkCl : VP -> Cl ; -- 22. it is raining + mkCl : V -> Cl ; -- 21. it rains --# notminimal + mkCl : VP -> Cl ; -- 22. it is raining --# notminimal -- Existentials are a special form of clauses. - mkCl : N -> Cl ; -- 23. there is a house - mkCl : CN -> Cl ; -- 24. there is an old houses - mkCl : NP -> Cl ; -- 25. there are five houses + mkCl : N -> Cl ; -- 23. there is a house --# notminimal + mkCl : CN -> Cl ; -- 24. there is an old houses --# notminimal + mkCl : NP -> Cl ; -- 25. there are five houses --# notminimal -- There are also special forms in which a noun phrase or an adverb is -- emphasized. - mkCl : NP -> RS -> Cl ; -- 26. it is John that walks - mkCl : Adv -> S -> Cl -- 27. it is here John walks - } ; + mkCl : NP -> RS -> Cl ; -- 26. it is John that walks --# notminimal + mkCl : Adv -> S -> Cl -- 27. it is here John walks --# notminimal + } ; --# notminimal -- Generic clauses are one with an impersonal subject. - genericCl : VP -> Cl ; -- 28. one walks + genericCl : VP -> Cl ; -- 28. one walks --# notminimal ---2 Verb phrases and imperatives +--2 Verb phrases and imperatives --# notminimal ---3 VP, verb phrases +--3 VP, verb phrases --# notminimal -- A verb phrase is formed from a verb with appropriate arguments. - mkVP : overload { - mkVP : V -> VP ; -- 1. walk - mkVP : V2 -> NP -> VP ; -- 2. love her - mkVP : V3 -> NP -> NP -> VP ; -- 3. send it to her - mkVP : VV -> VP -> VP ; -- 4. want to walk - mkVP : VS -> S -> VP ; -- 5. know that she walks - mkVP : VQ -> QS -> VP ; -- 6. ask if she walks - mkVP : VA -> AP -> VP ; -- 7. become old - mkVP : V2A -> NP -> AP -> VP ; -- 8. paint it red + mkVP : overload { --# notminimal + mkVP : V -> VP ; -- 1. walk --# notminimal + mkVP : V2 -> NP -> VP ; -- 2. love her --# notminimal + mkVP : V3 -> NP -> NP -> VP ; -- 3. send it to her --# notminimal + mkVP : VV -> VP -> VP ; -- 4. want to walk --# notminimal + mkVP : VS -> S -> VP ; -- 5. know that she walks --# notminimal + mkVP : VQ -> QS -> VP ; -- 6. ask if she walks --# notminimal + mkVP : VA -> AP -> VP ; -- 7. become old --# notminimal + mkVP : V2A -> NP -> AP -> VP ; -- 8. paint it red --# notminimal -- The verb can also be a copula ("be"), and the relevant argument is -- then the complement adjective or noun phrase. - mkVP : A -> VP ; -- 9. be warm - mkVP : AP -> VP ; -- 12. be very warm - mkVP : A -> NP -> VP ; -- 10. be older than her - mkVP : A2 -> NP -> VP ; -- 11. be married to her - mkVP : N -> VP ; -- 13. be a man - mkVP : CN -> VP ; -- 14. be an old man - mkVP : NP -> VP ; -- 15. be the man - mkVP : Adv -> VP ; -- 16. be here + mkVP : A -> VP ; -- 9. be warm --# notminimal + mkVP : AP -> VP ; -- 12. be very warm --# notminimal + mkVP : A -> NP -> VP ; -- 10. be older than her --# notminimal + mkVP : A2 -> NP -> VP ; -- 11. be married to her --# notminimal + mkVP : N -> VP ; -- 13. be a man --# notminimal + mkVP : CN -> VP ; -- 14. be an old man --# notminimal + mkVP : NP -> VP ; -- 15. be the man --# notminimal + mkVP : Adv -> VP ; -- 16. be here --# notminimal -- A verb phrase can be modified with a postverbal or a preverbal adverb. - mkVP : VP -> Adv -> VP ; -- 17. sleep here - mkVP : AdV -> VP -> VP ; -- 18. always sleep + mkVP : VP -> Adv -> VP ; -- 17. sleep here --# notminimal + mkVP : AdV -> VP -> VP ; -- 18. always sleep --# notminimal -- Objectless verb phrases can be taken to verb phrases in two ways. - mkVP : VPSlash -> NP -> VP ; -- 19. paint it black - mkVP : VPSlash -> VP ; -- 20. paint itself black + mkVP : VPSlash -> NP -> VP ; -- 19. paint it black --# notminimal + mkVP : VPSlash -> VP ; -- 20. paint itself black --# notminimal - } ; + } ; --# notminimal -- Two-place verbs can be used reflexively. - reflexiveVP : V2 -> VP ; -- 19. love itself + reflexiveVP : V2 -> VP ; -- 19. love itself --# notminimal -- Two-place verbs can also be used in the passive, with or without an agent. - passiveVP : overload { - passiveVP : V2 -> VP ; -- 20. be loved - passiveVP : V2 -> NP -> VP ; -- 21. be loved by her - } ; + passiveVP : overload { --# notminimal + passiveVP : V2 -> VP ; -- 20. be loved --# notminimal + passiveVP : V2 -> NP -> VP ; -- 21. be loved by her --# notminimal + } ; --# notminimal -- A verb phrase can be turned into the progressive form. - progressiveVP : VP -> VP ; -- 22. be sleeping + progressiveVP : VP -> VP ; -- 22. be sleeping --# notminimal ---3 Imp, imperatives +--3 Imp, imperatives --# notminimal -- Imperatives are formed from verbs and their arguments; as the general -- rule, from verb phrases. - mkImp : overload { - mkImp : V -> Imp ; -- go - mkImp : V2 -> NP -> Imp ; -- take it - mkImp : VP -> Imp -- go there now - } ; + mkImp : overload { --# notminimal + mkImp : V -> Imp ; -- go --# notminimal + mkImp : V2 -> NP -> Imp ; -- take it --# notminimal + mkImp : VP -> Imp -- go there now --# notminimal + } ; --# notminimal ---2 Noun phrases and determiners +--2 Noun phrases and determiners --# notminimal ---3 NP, noun phrases +--3 NP, noun phrases --# notminimal -- A noun phrases can be built from a determiner and a common noun ($CN$) . -- For determiners, the special cases of quantifiers, numerals, integers, -- and possessive pronouns are provided. For common nouns, the -- special case of a simple common noun ($N$) is always provided. - mkNP : overload { - mkNP : Quant -> N -> NP ; -- 3. this men - mkNP : Quant -> (Num) -> CN -> NP ; -- 4. these five old men - mkNP : Det -> N -> NP ; -- 5. the first man - mkNP : Det -> CN -> NP ; -- 6. the first old man - mkNP : Numeral -> N -> NP ; -- 7. twenty men - mkNP : Numeral -> CN -> NP ; -- 8. twenty old men - mkNP : Digits -> N -> NP ; -- 9. 45 men - mkNP : Digits -> CN -> NP ; -- 10. 45 old men - mkNP : Card -> N -> NP ; -- 11. almost twenty men - mkNP : Card -> CN -> NP ; -- 12. almost twenty old men - mkNP : Pron -> N -> NP ; -- 13. my man - mkNP : Pron -> CN -> NP ; -- 14. my old man + mkNP : overload { --# notminimal + mkNP : Quant -> N -> NP ; -- 3. this men --# notminimal + mkNP : Quant -> (Num) -> CN -> NP ; -- 4. these five old men --# notminimal + mkNP : Det -> N -> NP ; -- 5. the first man --# notminimal + mkNP : Det -> CN -> NP ; -- 6. the first old man --# notminimal + mkNP : Numeral -> N -> NP ; -- 7. twenty men --# notminimal + mkNP : Numeral -> CN -> NP ; -- 8. twenty old men --# notminimal + mkNP : Digits -> N -> NP ; -- 9. 45 men --# notminimal + mkNP : Digits -> CN -> NP ; -- 10. 45 old men --# notminimal + mkNP : Card -> N -> NP ; -- 11. almost twenty men --# notminimal + mkNP : Card -> CN -> NP ; -- 12. almost twenty old men --# notminimal + mkNP : Pron -> N -> NP ; -- 13. my man --# notminimal + mkNP : Pron -> CN -> NP ; -- 14. my old man --# notminimal -- Proper names and pronouns can be used as noun phrases. - mkNP : PN -> NP ; -- 15. John - mkNP : Pron -> NP ; -- 16. he + mkNP : PN -> NP ; -- 15. John --# notminimal + mkNP : Pron -> NP ; -- 16. he --# notminimal -- Determiners alone can form noun phrases. - mkNP : Quant -> NP ; -- 17. this - mkNP : Det -> NP ; -- 18. these five + mkNP : Quant -> NP ; -- 17. this --# notminimal + mkNP : Det -> NP ; -- 18. these five --# notminimal -- Determinesless mass noun phrases. - mkNP : N -> NP ; -- 19. beer - mkNP : CN -> NP ; -- 20. beer + mkNP : N -> NP ; -- 19. beer --# notminimal + mkNP : CN -> NP ; -- 20. beer --# notminimal -- A noun phrase once formed can be prefixed by a predeterminer and -- suffixed by a past participle or an adverb. - mkNP : Predet -> NP -> NP ; -- 21. only John - mkNP : NP -> V2 -> NP ; -- 22. John killed - mkNP : NP -> Adv -> NP ; -- 23. John in Paris - mkNP : NP -> RS -> NP ; -- 24. John, who lives in Paris + mkNP : Predet -> NP -> NP ; -- 21. only John --# notminimal + mkNP : NP -> V2 -> NP ; -- 22. John killed --# notminimal + mkNP : NP -> Adv -> NP ; -- 23. John in Paris --# notminimal + mkNP : NP -> RS -> NP ; -- 24. John, who lives in Paris --# notminimal -- A conjunction can be formed both from two noun phrases and a longer -- list of them. - mkNP : Conj -> NP -> NP -> NP ; -- 25. John and I - mkNP : Conj -> ListNP -> NP ; -- 26. John, I, and that + mkNP : Conj -> NP -> NP -> NP ; -- 25. John and I --# notminimal + mkNP : Conj -> ListNP -> NP ; -- 26. John, I, and that --# notminimal - } ; + } ; --# notminimal ---3 Det, determiners +--3 Det, determiners --# notminimal -- A determiner is either a singular or a plural one. -- Both have a quantifier and an optional ordinal; the plural -- determiner also has an optional numeral. - mkDet : overload { - mkDet : Quant -> Det ; -- 1. this - mkDet : Quant -> (Ord) -> Det ; -- 2. this first - mkDet : Quant -> Num -> Det ; -- 3. these - mkDet : Quant -> Num -> (Ord) -> Det ; -- 4. these five best + mkDet : overload { --# notminimal + mkDet : Quant -> Det ; -- 1. this --# notminimal + mkDet : Quant -> (Ord) -> Det ; -- 2. this first --# notminimal + mkDet : Quant -> Num -> Det ; -- 3. these --# notminimal + mkDet : Quant -> Num -> (Ord) -> Det ; -- 4. these five best --# notminimal -- Quantifiers that have both singular and plural forms are by default used as -- singular determiners. If a numeral is added, the plural form is chosen. - mkDet : Quant -> Det ; -- 5. this - mkDet : Quant -> Num -> Det ; -- 6. these five + mkDet : Quant -> Det ; -- 5. this --# notminimal + mkDet : Quant -> Num -> Det ; -- 6. these five --# notminimal -- Numerals, their special cases integers and digits, and possessive pronouns can be -- used as determiners. - mkDet : Card -> Det ; -- 7. almost twenty - mkDet : Numeral -> Det ; -- 8. five - mkDet : Digits -> Det ; -- 9. 51 - mkDet : Pron -> Det ; -- 10. my (house) - mkDet : Pron -> Num -> Det -- 11. my (houses) - } ; + mkDet : Card -> Det ; -- 7. almost twenty --# notminimal + mkDet : Numeral -> Det ; -- 8. five --# notminimal + mkDet : Digits -> Det ; -- 9. 51 --# notminimal + mkDet : Pron -> Det ; -- 10. my (house) --# notminimal + mkDet : Pron -> Num -> Det -- 11. my (houses) --# notminimal + } ; --# notminimal ---3 Quant, quantifiers +--3 Quant, quantifiers --# notminimal -- There are definite and indefinite articles. - the_Quant : Quant ; -- the - a_Quant : Quant ; -- a + the_Quant : Quant ; -- the --# notminimal + a_Quant : Quant ; -- a --# notminimal ---3 Num, cardinal numerals +--3 Num, cardinal numerals --# notminimal -- Numerals can be formed from number words ($Numeral$), their special case digits, -- and from symbolic integers. - mkNum : overload { - mkNum : Numeral -> Num ; -- 1. twenty - mkNum : Digits -> Num ; -- 2. 51 - mkNum : Card -> Num ; -- 3. almost ten + mkNum : overload { --# notminimal + mkNum : Numeral -> Num ; -- 1. twenty --# notminimal + mkNum : Digits -> Num ; -- 2. 51 --# notminimal + mkNum : Card -> Num ; -- 3. almost ten --# notminimal -- A numeral can be modified by an adnumeral. - mkNum : AdN -> Card -> Num -- 4. almost ten - } ; + mkNum : AdN -> Card -> Num -- 4. almost ten --# notminimal + } ; --# notminimal -- Dummy numbers are sometimes to select the grammatical number of a determiner. - sgNum : Num ; -- singular - plNum : Num ; -- plural + sgNum : Num ; -- singular --# notminimal + plNum : Num ; -- plural --# notminimal ---3 Ord, ordinal numerals +--3 Ord, ordinal numerals --# notminimal -- Just like cardinals, ordinals can be formed from number words ($Numeral$) -- and from symbolic integers. - mkOrd : overload { - mkOrd : Numeral -> Ord ; -- 1. twentieth - mkOrd : Digits -> Ord ; -- 2. 51st + mkOrd : overload { --# notminimal + mkOrd : Numeral -> Ord ; -- 1. twentieth --# notminimal + mkOrd : Digits -> Ord ; -- 2. 51st --# notminimal -- Also adjectives in the superlative form can appear on ordinal positions. - mkOrd : A -> Ord -- 3. best - } ; + mkOrd : A -> Ord -- 3. best --# notminimal + } ; --# notminimal ---3 AdN, adnumerals +--3 AdN, adnumerals --# notminimal -- Comparison adverbs can be used as adnumerals. - mkAdN : CAdv -> AdN ; -- 1. more than + mkAdN : CAdv -> AdN ; -- 1. more than --# notminimal ---3 Numeral, number words +--3 Numeral, number words --# notminimal -- Digits and some "round" numbers are here given as shorthands. - n1_Numeral : Numeral ; -- 1. one - n2_Numeral : Numeral ; -- 2. two - n3_Numeral : Numeral ; -- 3. three - n4_Numeral : Numeral ; -- 4. four - n5_Numeral : Numeral ; -- 5. five - n6_Numeral : Numeral ; -- 6. six - n7_Numeral : Numeral ; -- 7. seven - n8_Numeral : Numeral ; -- 8. eight - n9_Numeral : Numeral ; -- 9. nine - n10_Numeral : Numeral ; -- 10. ten - n20_Numeral : Numeral ; -- 11. twenty - n100_Numeral : Numeral ; -- 12. hundred - n1000_Numeral : Numeral ; -- 13. thousand + n1_Numeral : Numeral ; -- 1. one --# notminimal + n2_Numeral : Numeral ; -- 2. two --# notminimal + n3_Numeral : Numeral ; -- 3. three --# notminimal + n4_Numeral : Numeral ; -- 4. four --# notminimal + n5_Numeral : Numeral ; -- 5. five --# notminimal + n6_Numeral : Numeral ; -- 6. six --# notminimal + n7_Numeral : Numeral ; -- 7. seven --# notminimal + n8_Numeral : Numeral ; -- 8. eight --# notminimal + n9_Numeral : Numeral ; -- 9. nine --# notminimal + n10_Numeral : Numeral ; -- 10. ten --# notminimal + n20_Numeral : Numeral ; -- 11. twenty --# notminimal + n100_Numeral : Numeral ; -- 12. hundred --# notminimal + n1000_Numeral : Numeral ; -- 13. thousand --# notminimal -- See $Numeral$ for the full set of constructors, and use the category -- $Digits$ for other numbers from one million. - mkDigits : overload { - mkDigits : Dig -> Digits ; -- 1. 8 - mkDigits : Dig -> Digits -> Digits ; -- 2. 876 - } ; + mkDigits : overload { --# notminimal + mkDigits : Dig -> Digits ; -- 1. 8 --# notminimal + mkDigits : Dig -> Digits -> Digits ; -- 2. 876 --# notminimal + } ; --# notminimal - n1_Digits : Digits ; -- 1. 1 - n2_Digits : Digits ; -- 2. 2 - n3_Digits : Digits ; -- 3. 3 - n4_Digits : Digits ; -- 4. 4 - n5_Digits : Digits ; -- 5. 5 - n6_Digits : Digits ; -- 6. 6 - n7_Digits : Digits ; -- 7. 7 - n8_Digits : Digits ; -- 8. 8 - n9_Digits : Digits ; -- 9. 9 - n10_Digits : Digits ; -- 10. 10 - n20_Digits : Digits ; -- 11. 20 - n100_Digits : Digits ; -- 12. 100 - n1000_Digits : Digits ; -- 13. 1,000 + n1_Digits : Digits ; -- 1. 1 --# notminimal + n2_Digits : Digits ; -- 2. 2 --# notminimal + n3_Digits : Digits ; -- 3. 3 --# notminimal + n4_Digits : Digits ; -- 4. 4 --# notminimal + n5_Digits : Digits ; -- 5. 5 --# notminimal + n6_Digits : Digits ; -- 6. 6 --# notminimal + n7_Digits : Digits ; -- 7. 7 --# notminimal + n8_Digits : Digits ; -- 8. 8 --# notminimal + n9_Digits : Digits ; -- 9. 9 --# notminimal + n10_Digits : Digits ; -- 10. 10 --# notminimal + n20_Digits : Digits ; -- 11. 20 --# notminimal + n100_Digits : Digits ; -- 12. 100 --# notminimal + n1000_Digits : Digits ; -- 13. 1,000 --# notminimal ---3 Dig, single digits +--3 Dig, single digits --# notminimal - n0_Dig : Dig ; -- 0. 0 - n1_Dig : Dig ; -- 1. 1 - n2_Dig : Dig ; -- 2. 2 - n3_Dig : Dig ; -- 3. 3 - n4_Dig : Dig ; -- 4. 4 - n5_Dig : Dig ; -- 5. 5 - n6_Dig : Dig ; -- 6. 6 - n7_Dig : Dig ; -- 7. 7 - n8_Dig : Dig ; -- 8. 8 - n9_Dig : Dig ; -- 9. 9 + n0_Dig : Dig ; -- 0. 0 --# notminimal + n1_Dig : Dig ; -- 1. 1 --# notminimal + n2_Dig : Dig ; -- 2. 2 --# notminimal + n3_Dig : Dig ; -- 3. 3 --# notminimal + n4_Dig : Dig ; -- 4. 4 --# notminimal + n5_Dig : Dig ; -- 5. 5 --# notminimal + n6_Dig : Dig ; -- 6. 6 --# notminimal + n7_Dig : Dig ; -- 7. 7 --# notminimal + n8_Dig : Dig ; -- 8. 8 --# notminimal + n9_Dig : Dig ; -- 9. 9 --# notminimal ---2 Nouns +--2 Nouns --# notminimal ---3 CN, common noun phrases +--3 CN, common noun phrases --# notminimal - mkCN : overload { + mkCN : overload { --# notminimal -- The most frequent way of forming common noun phrases is from atomic nouns $N$. - mkCN : N -> CN ; -- 1. house + mkCN : N -> CN ; -- 1. house --# notminimal -- Common noun phrases can be formed from relational nouns by providing arguments. - mkCN : N2 -> NP -> CN ; -- 2. mother of John - mkCN : N3 -> NP -> NP -> CN ; -- 3. distance from this city to Paris + mkCN : N2 -> NP -> CN ; -- 2. mother of John --# notminimal + mkCN : N3 -> NP -> NP -> CN ; -- 3. distance from this city to Paris --# notminimal -- Relational nouns can also be used without their arguments. - mkCN : N2 -> CN ; -- 4. son - mkCN : N3 -> CN ; -- 5. flight + mkCN : N2 -> CN ; -- 4. son --# notminimal + mkCN : N3 -> CN ; -- 5. flight --# notminimal -- A common noun phrase can be modified by adjectival phrase. We give special -- cases of this, where one or both of the arguments are atomic. - mkCN : A -> N -> CN ; -- 6. big house - mkCN : A -> CN -> CN ; -- 7. big blue house - mkCN : AP -> N -> CN ; -- 8. very big house - mkCN : AP -> CN -> CN ; -- 9. very big blue house + mkCN : A -> N -> CN ; -- 6. big house --# notminimal + mkCN : A -> CN -> CN ; -- 7. big blue house --# notminimal + mkCN : AP -> N -> CN ; -- 8. very big house --# notminimal + mkCN : AP -> CN -> CN ; -- 9. very big blue house --# notminimal -- A common noun phrase can be modified by a relative clause or an adverb. - mkCN : N -> RS -> CN ; -- 10. house that John loves - mkCN : CN -> RS -> CN ; -- 11. big house that John loves - mkCN : N -> Adv -> CN ; -- 12. house in the city - mkCN : CN -> Adv -> CN ; -- 13. big house in the city + mkCN : N -> RS -> CN ; -- 10. house that John loves --# notminimal + mkCN : CN -> RS -> CN ; -- 11. big house that John loves --# notminimal + mkCN : N -> Adv -> CN ; -- 12. house in the city --# notminimal + mkCN : CN -> Adv -> CN ; -- 13. big house in the city --# notminimal -- For some nouns it makes sense to modify them by sentences, -- questions, or infinitives. But syntactically this is possible for -- all nouns. - mkCN : CN -> S -> CN ; -- 14. rule that John walks - mkCN : CN -> QS -> CN ; -- 15. question if John walks - mkCN : CN -> VP -> CN ; -- 16. reason to walk + mkCN : CN -> S -> CN ; -- 14. rule that John walks --# notminimal + mkCN : CN -> QS -> CN ; -- 15. question if John walks --# notminimal + mkCN : CN -> VP -> CN ; -- 16. reason to walk --# notminimal -- A noun can be used in apposition to a noun phrase, especially a proper name. - mkCN : N -> NP -> CN ; -- 17. king John - mkCN : CN -> NP -> CN -- 18. old king John - } ; + mkCN : N -> NP -> CN ; -- 17. king John --# notminimal + mkCN : CN -> NP -> CN -- 18. old king John --# notminimal + } ; --# notminimal ---2 Adjectives and adverbs +--2 Adjectives and adverbs --# notminimal ---3 AP, adjectival phrases +--3 AP, adjectival phrases --# notminimal - mkAP : overload { + mkAP : overload { --# notminimal -- Adjectival phrases can be formed from atomic adjectives by using the positive form or -- the comparative with a complement - mkAP : A -> AP ; -- 1. old - mkAP : A -> NP -> AP ; -- 2. older than John + mkAP : A -> AP ; -- 1. old --# notminimal + mkAP : A -> NP -> AP ; -- 2. older than John --# notminimal -- Relational adjectives can be used with a complement or a reflexive - mkAP : A2 -> NP -> AP ; -- 3. married to her - mkAP : A2 -> AP ; -- 4. married + mkAP : A2 -> NP -> AP ; -- 3. married to her --# notminimal + mkAP : A2 -> AP ; -- 4. married --# notminimal -- Some adjectival phrases can take as complements sentences, -- questions, or infinitives. Syntactically this is possible for -- all adjectives. - mkAP : AP -> S -> AP ; -- 5. probable that John walks - mkAP : AP -> QS -> AP ; -- 6. uncertain if John walks - mkAP : AP -> VP -> AP ; -- 7. ready to go + mkAP : AP -> S -> AP ; -- 5. probable that John walks --# notminimal + mkAP : AP -> QS -> AP ; -- 6. uncertain if John walks --# notminimal + mkAP : AP -> VP -> AP ; -- 7. ready to go --# notminimal -- An adjectival phrase can be modified by an adadjective. - mkAP : AdA -> A -> AP ; -- 8. very old - mkAP : AdA -> AP -> AP ; -- 9. very very old + mkAP : AdA -> A -> AP ; -- 8. very old --# notminimal + mkAP : AdA -> AP -> AP ; -- 9. very very old --# notminimal -- Conjunction can be formed from two or more adjectival phrases. - mkAP : Conj -> AP -> AP -> AP ; -- 10. old and big - mkAP : Conj -> ListAP -> AP ; -- 11. old, big, and warm + mkAP : Conj -> AP -> AP -> AP ; -- 10. old and big --# notminimal + mkAP : Conj -> ListAP -> AP ; -- 11. old, big, and warm --# notminimal - mkAP : Ord -> AP ; -- 12. oldest - mkAP : CAdv -> AP -> NP -> AP ; -- 13. as old as John - } ; + mkAP : Ord -> AP ; -- 12. oldest --# notminimal + mkAP : CAdv -> AP -> NP -> AP ; -- 13. as old as John --# notminimal + } ; --# notminimal - reflAP : A2 -> AP ; -- married to himself - comparAP : A -> AP ; -- warmer + reflAP : A2 -> AP ; -- married to himself --# notminimal + comparAP : A -> AP ; -- warmer --# notminimal ---3 Adv, adverbial phrases +--3 Adv, adverbial phrases --# notminimal - mkAdv : overload { + mkAdv : overload { --# notminimal -- Adverbs can be formed from adjectives. - mkAdv : A -> Adv ; -- 1. warmly + mkAdv : A -> Adv ; -- 1. warmly --# notminimal -- Prepositional phrases are treated as adverbs. - mkAdv : Prep -> NP -> Adv ; -- 2. with John + mkAdv : Prep -> NP -> Adv ; -- 2. with John --# notminimal -- Subordinate sentences are treated as adverbs. - mkAdv : Subj -> S -> Adv ; -- 3. when John walks + mkAdv : Subj -> S -> Adv ; -- 3. when John walks --# notminimal -- An adjectival adverb can be compared to a noun phrase or a sentence. - mkAdv : CAdv -> A -> NP -> Adv ; -- 4. more warmly than John - mkAdv : CAdv -> A -> S -> Adv ; -- 5. more warmly than John walks + mkAdv : CAdv -> A -> NP -> Adv ; -- 4. more warmly than John --# notminimal + mkAdv : CAdv -> A -> S -> Adv ; -- 5. more warmly than John walks --# notminimal -- Adverbs can be modified by adadjectives. - mkAdv : AdA -> Adv -> Adv ; -- 6. very warmly + mkAdv : AdA -> Adv -> Adv ; -- 6. very warmly --# notminimal -- Conjunction can be formed from two or more adverbial phrases. - mkAdv : Conj -> Adv -> Adv -> Adv ; -- 7. here and now - mkAdv : Conj -> ListAdv -> Adv ; -- 8. with John, here and now - } ; + mkAdv : Conj -> Adv -> Adv -> Adv ; -- 7. here and now --# notminimal + mkAdv : Conj -> ListAdv -> Adv ; -- 8. with John, here and now --# notminimal + } ; --# notminimal ---2 Questions and relatives +--2 Questions and relatives --# notminimal ---3 QS, question sentences +--3 QS, question sentences --# notminimal - mkQS : overload { + mkQS : overload { --# notminimal -- Just like a sentence $S$ is built from a clause $Cl$, -- a question sentence $QS$ is built from @@ -666,25 +666,25 @@ incomplete resource Constructors = open Grammar in { -- Any of these arguments can be omitted, which results in the -- default (present, simultaneous, and positive, respectively). - mkQS : QCl -> QS ; -- 1. who walks - mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS ; -- 2. who wouldn't have walked + mkQS : QCl -> QS ; -- 1. who walks --# notminimal + mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS ; -- 2. who wouldn't have walked --# notminimal -- Since 'yes-no' question clauses can be built from clauses (see below), -- we give a shortcut -- for building a question sentence directly from a clause, using the defaults -- present, simultaneous, and positive. - mkQS : Cl -> QS -- 3. does John walk - } ; + mkQS : Cl -> QS -- 3. does John walk --# notminimal + } ; --# notminimal ---3 QCl, question clauses +--3 QCl, question clauses --# notminimal - mkQCl : overload { + mkQCl : overload { --# notminimal -- 'Yes-no' question clauses are built from 'declarative' clauses. - mkQCl : Cl -> QCl ; -- 1. does John walk + mkQCl : Cl -> QCl ; -- 1. does John walk --# notminimal -- 'Wh' questions are built from interrogative pronouns in subject -- or object position. The former uses a verb phrase; we don't give @@ -692,56 +692,56 @@ incomplete resource Constructors = open Grammar in { -- The latter uses the 'slash' category of objectless clauses -- (see below); we give the common special case with a two-place verb. - mkQCl : IP -> VP -> QCl ; -- 2. who walks - mkQCl : IP -> NP -> V2 -> QCl ; -- 3. whom does John love - mkQCl : IP -> ClSlash -> QCl ; -- 4. whom does John love today + mkQCl : IP -> VP -> QCl ; -- 2. who walks --# notminimal + mkQCl : IP -> NP -> V2 -> QCl ; -- 3. whom does John love --# notminimal + mkQCl : IP -> ClSlash -> QCl ; -- 4. whom does John love today --# notminimal -- Adverbial 'wh' questions are built with interrogative adverbials, with the -- special case of prepositional phrases with interrogative pronouns. - mkQCl : IAdv -> Cl -> QCl ; -- 5. why does John walk - mkQCl : Prep -> IP -> Cl -> QCl ; -- 6. with who does John walk + mkQCl : IAdv -> Cl -> QCl ; -- 5. why does John walk --# notminimal + mkQCl : Prep -> IP -> Cl -> QCl ; -- 6. with who does John walk --# notminimal -- An interrogative adverbial can serve as the complement of a copula. - mkQCl : IAdv -> NP -> QCl ; -- 7. where is John + mkQCl : IAdv -> NP -> QCl ; -- 7. where is John --# notminimal -- Existentials are a special construction. - mkQCl : IP -> QCl -- 8. what is there - } ; + mkQCl : IP -> QCl -- 8. what is there --# notminimal + } ; --# notminimal ---3 IP, interrogative pronouns +--3 IP, interrogative pronouns --# notminimal - mkIP : overload { + mkIP : overload { --# notminimal -- Interrogative pronouns -- can be formed much like noun phrases, by using interrogative quantifiers. - mkIP : IQuant -> N -> IP ; -- 1. which city - mkIP : IQuant -> (Num) -> CN -> IP ; -- 2. which five big cities + mkIP : IQuant -> N -> IP ; -- 1. which city --# notminimal + mkIP : IQuant -> (Num) -> CN -> IP ; -- 2. which five big cities --# notminimal -- An interrogative pronoun can be modified by an adverb. - mkIP : IP -> Adv -> IP -- 3. who in Paris - } ; + mkIP : IP -> Adv -> IP -- 3. who in Paris --# notminimal + } ; --# notminimal -- More interrogative pronouns and determiners can be found in $Structural$. ---3 IAdv, interrogative adverbs. +--3 IAdv, interrogative adverbs. --# notminimal -- In addition to the interrogative adverbs defined in the $Structural$ lexicon, they -- can be formed as prepositional phrases from interrogative pronouns. - mkIAdv : Prep -> IP -> IAdv ; -- 1. in which city + mkIAdv : Prep -> IP -> IAdv ; -- 1. in which city --# notminimal -- More interrogative adverbs are given in $Structural$. ---3 RS, relative sentences +--3 RS, relative sentences --# notminimal -- Just like a sentence $S$ is built from a clause $Cl$, -- a relative sentence $RS$ is built from @@ -750,16 +750,16 @@ incomplete resource Constructors = open Grammar in { -- can be omitted, which results in the default (present, simultaneous, -- and positive, respectively). - mkRS : overload { - mkRS : RCl -> RS ; -- 1. that walk - mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS ; -- 2. that wouldn't have walked - mkRS : Conj -> RS -> RS -> RS ; -- 3. who walks and whom I know - mkRS : Conj -> ListRS -> RS ; -- 4. who walks, whose son runs, and whom I know - } ; + mkRS : overload { --# notminimal + mkRS : RCl -> RS ; -- 1. that walk --# notminimal + mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS ; -- 2. that wouldn't have walked --# notminimal + mkRS : Conj -> RS -> RS -> RS ; -- 3. who walks and whom I know --# notminimal + mkRS : Conj -> ListRS -> RS ; -- 4. who walks, whose son runs, and whom I know --# notminimal + } ; --# notminimal ---3 RCl, relative clauses +--3 RCl, relative clauses --# notminimal - mkRCl : overload { + mkRCl : overload { --# notminimal -- Relative clauses are built from relative pronouns in subject or object position. -- The former uses a verb phrase; we don't give @@ -767,986 +767,974 @@ incomplete resource Constructors = open Grammar in { -- The latter uses the 'slash' category of objectless clauses (see below); -- we give the common special case with a two-place verb. - mkRCl : RP -> VP -> RCl ; -- 1. that walk - mkRCl : RP -> NP -> V2 -> RCl ; -- 2. which John loves - mkRCl : RP -> ClSlash -> RCl ; -- 3. which John loves today + mkRCl : RP -> VP -> RCl ; -- 1. that walk --# notminimal + mkRCl : RP -> NP -> V2 -> RCl ; -- 2. which John loves --# notminimal + mkRCl : RP -> ClSlash -> RCl ; -- 3. which John loves today --# notminimal -- There is a simple 'such that' construction for forming relative -- clauses from clauses. - mkRCl : Cl -> RCl -- 4. such that John loves her - } ; + mkRCl : Cl -> RCl -- 4. such that John loves her --# notminimal + } ; --# notminimal ---3 RP, relative pronouns +--3 RP, relative pronouns --# notminimal -- There is an atomic relative pronoun - which_RP : RP ; -- 1. which + which_RP : RP ; -- 1. which --# notminimal -- A relative pronoun can be made into a kind of a prepositional phrase. - mkRP : Prep -> NP -> RP -> RP ; -- 2. all the houses in which + mkRP : Prep -> NP -> RP -> RP ; -- 2. all the houses in which --# notminimal ---3 ClSlash, objectless sentences +--3 ClSlash, objectless sentences --# notminimal - mkClSlash : overload { + mkClSlash : overload { --# notminimal -- Objectless sentences are used in questions and relative clauses. -- The most common way of constructing them is by using a two-place verb -- with a subject but without an object. - mkClSlash : NP -> V2 -> ClSlash ; -- 1. (whom) John loves + mkClSlash : NP -> V2 -> ClSlash ; -- 1. (whom) John loves --# notminimal -- The two-place verb can be separated from the subject by a verb-complement verb. - mkClSlash : NP -> VV -> V2 -> ClSlash ; -- 2. (whom) John wants to see + mkClSlash : NP -> VV -> V2 -> ClSlash ; -- 2. (whom) John wants to see --# notminimal -- The missing object can also be the noun phrase in a prepositional phrase. - mkClSlash : Cl -> Prep -> ClSlash ; -- 3. (with whom) John walks + mkClSlash : Cl -> Prep -> ClSlash ; -- 3. (with whom) John walks --# notminimal -- An objectless sentence can be modified by an adverb. - mkClSlash : ClSlash -> Adv -> ClSlash -- 4. (whom) John loves today - } ; + mkClSlash : ClSlash -> Adv -> ClSlash -- 4. (whom) John loves today --# notminimal + } ; --# notminimal ---3 VPSlash, verb phrases missing an object +--3 VPSlash, verb phrases missing an object --# notminimal - mkVPSlash : overload { + mkVPSlash : overload { --# notminimal -- This is the deep level of many-argument predication, permitting extraction. - mkVPSlash : V2 -> VPSlash ; -- 1. (whom) (John) loves - mkVPSlash : V3 -> NP -> VPSlash ; -- 2. (whom) (John) gives an apple - mkVPSlash : V2A -> AP -> VPSlash ; -- 3. (whom) (John) paints red - mkVPSlash : V2Q -> QS -> VPSlash ; -- 4. (whom) (John) asks who sleeps - mkVPSlash : V2S -> S -> VPSlash ; -- 5. (whom) (John) tells that we sleep - mkVPSlash : V2V -> VP -> VPSlash ; -- 6. (whom) (John) forces to sleep + mkVPSlash : V2 -> VPSlash ; -- 1. (whom) (John) loves --# notminimal + mkVPSlash : V3 -> NP -> VPSlash ; -- 2. (whom) (John) gives an apple --# notminimal + mkVPSlash : V2A -> AP -> VPSlash ; -- 3. (whom) (John) paints red --# notminimal + mkVPSlash : V2Q -> QS -> VPSlash ; -- 4. (whom) (John) asks who sleeps --# notminimal + mkVPSlash : V2S -> S -> VPSlash ; -- 5. (whom) (John) tells that we sleep --# notminimal + mkVPSlash : V2V -> VP -> VPSlash ; -- 6. (whom) (John) forces to sleep --# notminimal - } ; + } ; --# notminimal ---2 Lists for coordination +--2 Lists for coordination --# notminimal -- The rules in this section are very uniform: a list can be built from two or more -- expressions of the same category. ---3 ListS, sentence lists +--3 ListS, sentence lists --# notminimal - mkListS : overload { - mkListS : S -> S -> ListS ; -- 1. he walks, I run - mkListS : S -> ListS -> ListS -- 2. John walks, I run, you sleep - } ; + mkListS : overload { --# notminimal + mkListS : S -> S -> ListS ; -- 1. he walks, I run --# notminimal + mkListS : S -> ListS -> ListS -- 2. John walks, I run, you sleep --# notminimal + } ; --# notminimal ---3 ListAdv, adverb lists +--3 ListAdv, adverb lists --# notminimal - mkListAdv : overload { - mkListAdv : Adv -> Adv -> ListAdv ; -- 1. here, now - mkListAdv : Adv -> ListAdv -> ListAdv -- 2. to me, here, now - } ; + mkListAdv : overload { --# notminimal + mkListAdv : Adv -> Adv -> ListAdv ; -- 1. here, now --# notminimal + mkListAdv : Adv -> ListAdv -> ListAdv -- 2. to me, here, now --# notminimal + } ; --# notminimal ---3 ListAP, adjectival phrase lists +--3 ListAP, adjectival phrase lists --# notminimal - mkListAP : overload { - mkListAP : AP -> AP -> ListAP ; -- 1. old, big - mkListAP : AP -> ListAP -> ListAP -- 2. old, big, warm - } ; + mkListAP : overload { --# notminimal + mkListAP : AP -> AP -> ListAP ; -- 1. old, big --# notminimal + mkListAP : AP -> ListAP -> ListAP -- 2. old, big, warm --# notminimal + } ; --# notminimal ---3 ListNP, noun phrase lists +--3 ListNP, noun phrase lists --# notminimal - mkListNP : overload { - mkListNP : NP -> NP -> ListNP ; -- 1. John, I - mkListNP : NP -> ListNP -> ListNP -- 2. John, I, that - } ; + mkListNP : overload { --# notminimal + mkListNP : NP -> NP -> ListNP ; -- 1. John, I --# notminimal + mkListNP : NP -> ListNP -> ListNP -- 2. John, I, that --# notminimal + } ; --# notminimal ---3 ListRS, relative clause lists +--3 ListRS, relative clause lists --# notminimal - mkListRS : overload { - mkListRS : RS -> RS -> ListRS ; -- 1. who walks, who runs - mkListRS : RS -> ListRS -> ListRS -- 2. who walks, who runs, who sleeps - } ; + mkListRS : overload { --# notminimal + mkListRS : RS -> RS -> ListRS ; -- 1. who walks, who runs --# notminimal + mkListRS : RS -> ListRS -> ListRS -- 2. who walks, who runs, who sleeps --# notminimal + } ; --# notminimal ---. +--. --# notminimal -- Definitions - mkAP = overload { - mkAP : A -> AP -- warm - = PositA ; - mkAP : A -> NP -> AP -- warmer than Spain - = ComparA ; - mkAP : A2 -> NP -> AP -- divisible by 2 - = ComplA2 ; - mkAP : A2 -> AP -- divisible - = UseA2 ; - mkAP : AP -> S -> AP -- great that she won - = \ap,s -> SentAP ap (EmbedS s) ; - mkAP : AP -> QS -> AP -- great that she won - = \ap,s -> SentAP ap (EmbedQS s) ; - mkAP : AP -> VP -> AP -- great that she won - = \ap,s -> SentAP ap (EmbedVP s) ; - mkAP : AdA -> A -> AP -- very uncertain + mkAP = overload { + mkAP : A -> AP -- warm + = PositA ; + mkAP : A -> NP -> AP -- warmer than Spain + = ComparA ; + mkAP : A2 -> NP -> AP -- divisible by 2 --# notminimal + = ComplA2 ; --# notminimal + mkAP : A2 -> AP -- divisible --# notminimal + = UseA2 ; --# notminimal + mkAP : AP -> S -> AP -- great that she won --# notminimal + = \ap,s -> SentAP ap (EmbedS s) ; --# notminimal + mkAP : AP -> QS -> AP -- great that she won --# notminimal + = \ap,s -> SentAP ap (EmbedQS s) ; --# notminimal + mkAP : AP -> VP -> AP -- great that she won --# notminimal + = \ap,s -> SentAP ap (EmbedVP s) ; --# notminimal + mkAP : AdA -> A -> AP -- very uncertain = \x,y -> AdAP x (PositA y) ; - mkAP : AdA -> AP -> AP -- very uncertain + mkAP : AdA -> AP -> AP -- very uncertain = AdAP ; - mkAP : Conj -> AP -> AP -> AP - = \c,x,y -> ConjAP c (BaseAP x y) ; - mkAP : Conj -> ListAP -> AP - = \c,xy -> ConjAP c xy ; - mkAP : Ord -> AP - = AdjOrd ; - mkAP : CAdv -> AP -> NP -> AP - = CAdvAP ; - } ; + mkAP : Conj -> AP -> AP -> AP --# notminimal + = \c,x,y -> ConjAP c (BaseAP x y) ; --# notminimal + mkAP : Conj -> ListAP -> AP --# notminimal + = \c,xy -> ConjAP c xy ; --# notminimal + mkAP : Ord -> AP --# notminimal + = AdjOrd ; --# notminimal + mkAP : CAdv -> AP -> NP -> AP --# notminimal + = CAdvAP ; --# notminimal + } ; - reflAP = ReflA2 ; - comparAP = UseComparA ; + reflAP = ReflA2 ; --# notminimal + comparAP = UseComparA ; --# notminimal - mkAdv = overload { - mkAdv : A -> Adv -- quickly - = PositAdvAdj ; - mkAdv : Prep -> NP -> Adv -- in the house - = PrepNP ; - mkAdv : CAdv -> A -> NP -> Adv -- more quickly than John - = ComparAdvAdj ; - mkAdv : CAdv -> A -> S -> Adv -- more quickly than he runs - = ComparAdvAdjS ; - mkAdv : AdA -> Adv -> Adv -- very quickly - = AdAdv ; - mkAdv : Subj -> S -> Adv -- when he arrives - = SubjS ; - mkAdv : Conj -> Adv -> Adv -> Adv - = \c,x,y -> ConjAdv c (BaseAdv x y) ; - mkAdv : Conj -> ListAdv -> Adv - = \c,xy -> ConjAdv c xy ; - } ; + mkAdv = overload { + mkAdv : A -> Adv -- quickly + = PositAdvAdj ; + mkAdv : Prep -> NP -> Adv -- in the house + = PrepNP ; + mkAdv : CAdv -> A -> NP -> Adv -- more quickly than John --# notminimal + = ComparAdvAdj ; --# notminimal + mkAdv : CAdv -> A -> S -> Adv -- more quickly than he runs --# notminimal + = ComparAdvAdjS ; --# notminimal + mkAdv : AdA -> Adv -> Adv -- very quickly --# notminimal + = AdAdv ; --# notminimal + mkAdv : Subj -> S -> Adv -- when he arrives --# notminimal + = SubjS ; --# notminimal + mkAdv : Conj -> Adv -> Adv -> Adv --# notminimal + = \c,x,y -> ConjAdv c (BaseAdv x y) ; --# notminimal + mkAdv : Conj -> ListAdv -> Adv --# notminimal + = \c,xy -> ConjAdv c xy ; --# notminimal + } ; - mkCl = overload { - mkCl : NP -> VP -> Cl -- John wants to walk walks - = PredVP ; - mkCl : NP -> V -> Cl -- John walks - = \s,v -> PredVP s (UseV v); - mkCl : NP -> V2 -> NP -> Cl -- John uses it - = \s,v,o -> PredVP s (ComplV2 v o); - mkCl : NP -> V3 -> NP -> NP -> Cl - = \s,v,o,i -> PredVP s (ComplV3 v o i); + mkCl = overload { + mkCl : NP -> VP -> Cl -- John wants to walk + = PredVP ; + mkCl : NP -> V -> Cl -- John walks + = \s,v -> PredVP s (UseV v); + mkCl : NP -> V2 -> NP -> Cl -- John uses it + = \s,v,o -> PredVP s (ComplV2 v o); + mkCl : NP -> V3 -> NP -> NP -> Cl + = \s,v,o,i -> PredVP s (ComplV3 v o i); - mkCl : NP -> VV -> VP -> Cl - = \s,v,vp -> PredVP s (ComplVV v vp) ; - mkCl : NP -> VS -> S -> Cl - = \s,v,p -> PredVP s (ComplVS v p) ; - mkCl : NP -> VQ -> QS -> Cl - = \s,v,q -> PredVP s (ComplVQ v q) ; - mkCl : NP -> VA -> AP -> Cl - = \s,v,q -> PredVP s (ComplVA v q) ; - mkCl : NP -> V2A -> NP -> AP -> Cl - = \s,v,n,q -> PredVP s (ComplV2A v n q) ; - mkCl : NP -> V2S -> NP -> S -> Cl --n14 - = \s,v,n,q -> PredVP s (ComplSlash (SlashV2S v q) n) ; - mkCl : NP -> V2Q -> NP -> QS -> Cl --n14 - = \s,v,n,q -> PredVP s (ComplSlash (SlashV2Q v q) n) ; - mkCl : NP -> V2V -> NP -> VP -> Cl --n14 - = \s,v,n,q -> PredVP s (ComplSlash (SlashV2V v q) n) ; + mkCl : NP -> VV -> VP -> Cl --# notminimal + = \s,v,vp -> PredVP s (ComplVV v vp) ; --# notminimal + mkCl : NP -> VS -> S -> Cl --# notminimal + = \s,v,p -> PredVP s (ComplVS v p) ; --# notminimal + mkCl : NP -> VQ -> QS -> Cl --# notminimal + = \s,v,q -> PredVP s (ComplVQ v q) ; --# notminimal + mkCl : NP -> VA -> AP -> Cl --# notminimal + = \s,v,q -> PredVP s (ComplVA v q) ; --# notminimal + mkCl : NP -> V2A -> NP -> AP -> Cl --# notminimal + = \s,v,n,q -> PredVP s (ComplV2A v n q) ; --# notminimal + mkCl : NP -> V2S -> NP -> S -> Cl --n14 --# notminimal + = \s,v,n,q -> PredVP s (ComplSlash (SlashV2S v q) n) ; --# notminimal + mkCl : NP -> V2Q -> NP -> QS -> Cl --n14 --# notminimal + = \s,v,n,q -> PredVP s (ComplSlash (SlashV2Q v q) n) ; --# notminimal + mkCl : NP -> V2V -> NP -> VP -> Cl --n14 --# notminimal + = \s,v,n,q -> PredVP s (ComplSlash (SlashV2V v q) n) ; --# notminimal - mkCl : VP -> Cl -- it rains - = ImpersCl ; - mkCl : NP -> RS -> Cl -- it is you who did it - = CleftNP ; - mkCl : Adv -> S -> Cl -- it is yesterday she arrived - = CleftAdv ; - mkCl : N -> Cl -- there is a house - = \y -> ExistNP (DetArtSg IndefArt (UseN y)) ; - mkCl : CN -> Cl -- there is a house - = \y -> ExistNP (DetArtSg IndefArt y) ; - mkCl : NP -> Cl -- there is a house - = ExistNP ; - mkCl : NP -> AP -> Cl -- John is nice and warm - = \x,y -> PredVP x (UseComp (CompAP y)) ; - mkCl : NP -> A -> Cl -- John is warm - = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ; - mkCl : NP -> A -> NP -> Cl -- John is warmer than Mary - = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ; - mkCl : NP -> A2 -> NP -> Cl -- John is married to Mary - = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ; - mkCl : NP -> NP -> Cl -- John is the man - = \x,y -> PredVP x (UseComp (CompNP y)) ; - mkCl : NP -> CN -> Cl -- John is a man - = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt y))) ; - mkCl : NP -> N -> Cl -- John is a man - = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; - mkCl : NP -> Adv -> Cl -- John is here - = \x,y -> PredVP x (UseComp (CompAdv y)) ; - mkCl : V -> Cl -- it rains - = \v -> ImpersCl (UseV v) - } ; + mkCl : VP -> Cl -- it rains --# notminimal + = ImpersCl ; --# notminimal + mkCl : NP -> RS -> Cl -- it is you who did it --# notminimal + = CleftNP ; --# notminimal + mkCl : Adv -> S -> Cl -- it is yesterday she arrived --# notminimal + = CleftAdv ; --# notminimal + mkCl : N -> Cl -- there is a house --# notminimal + = \y -> ExistNP (DetArtSg IndefArt (UseN y)) ; --# notminimal + mkCl : CN -> Cl -- there is a house --# notminimal + = \y -> ExistNP (DetArtSg IndefArt y) ; --# notminimal + mkCl : NP -> Cl -- there is a house --# notminimal + = ExistNP ; --# notminimal + mkCl : NP -> AP -> Cl -- John is nice and warm --# notminimal + = \x,y -> PredVP x (UseComp (CompAP y)) ; --# notminimal + mkCl : NP -> A -> Cl -- John is warm + = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ; + mkCl : NP -> A -> NP -> Cl -- John is warmer than Mary + = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ; + mkCl : NP -> A2 -> NP -> Cl -- John is married to Mary --# notminimal + = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ; --# notminimal + mkCl : NP -> NP -> Cl -- John is the man + = \x,y -> PredVP x (UseComp (CompNP y)) ; + mkCl : NP -> CN -> Cl -- John is a man + = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt y))) ; + mkCl : NP -> N -> Cl -- John is a man + = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; + mkCl : NP -> Adv -> Cl -- John is here + = \x,y -> PredVP x (UseComp (CompAdv y)) ; + mkCl : V -> Cl -- it rains --# notminimal + = \v -> ImpersCl (UseV v) --# notminimal + } ; - genericCl : VP -> Cl = GenericCl ; + genericCl : VP -> Cl = GenericCl ; --# notminimal - mkNP = overload { - mkNP : Art -> Num -> Ord -> CN -> NP -- the five best men --n14 - = \d,nu,ord,cn -> DetCN (DetArtOrd d nu ord) (cn) ; - mkNP : Art -> Ord -> CN -> NP -- the best men --n14 - = \d,ord,cn -> DetCN (DetArtOrd d sgNum ord) (cn) ; - mkNP : Art -> Card -> CN -> NP -- the five men --n14 - = \d,nu,cn -> DetCN (DetArtCard d nu) (cn) ; + mkNP = overload { + mkNP : Art -> Num -> Ord -> CN -> NP -- the five best men --n14 --# notminimal + = \d,nu,ord,cn -> DetCN (DetArtOrd d nu ord) (cn) ; --# notminimal + mkNP : Art -> Ord -> CN -> NP -- the best men --n14 --# notminimal + = \d,ord,cn -> DetCN (DetArtOrd d sgNum ord) (cn) ; --# notminimal + mkNP : Art -> Card -> CN -> NP -- the five men --n14 --# notminimal + = \d,nu,cn -> DetCN (DetArtCard d nu) (cn) ; --# notminimal - mkNP : Art -> Num -> Ord -> N -> NP -- the five best men --n14 - = \d,nu,ord,cn -> DetCN (DetArtOrd d nu ord) (UseN cn) ; - mkNP : Art -> Ord -> N -> NP -- the best men --n14 - = \d,ord,cn -> DetCN (DetArtOrd d sgNum ord) (UseN cn) ; - mkNP : Art -> Card -> N -> NP -- the five men --n14 - = \d,nu,cn -> DetCN (DetArtCard d nu) (UseN cn) ; + mkNP : Art -> Num -> Ord -> N -> NP -- the five best men --n14 --# notminimal + = \d,nu,ord,cn -> DetCN (DetArtOrd d nu ord) (UseN cn) ; --# notminimal + mkNP : Art -> Ord -> N -> NP -- the best men --n14 --# notminimal + = \d,ord,cn -> DetCN (DetArtOrd d sgNum ord) (UseN cn) ; --# notminimal + mkNP : Art -> Card -> N -> NP -- the five men --n14 --# notminimal + = \d,nu,cn -> DetCN (DetArtCard d nu) (UseN cn) ; --# notminimal - mkNP : CN -> NP -- old beer --n14 - = MassNP ; - mkNP : N -> NP -- beer --n14 - = \n -> MassNP (UseN n) ; + mkNP : CN -> NP -- old beer --n14 + = MassNP ; + mkNP : N -> NP -- beer --n14 + = \n -> MassNP (UseN n) ; - mkNP : Det -> CN -> NP -- the old man - = DetCN ; - mkNP : Det -> N -> NP -- the man - = \d,n -> DetCN d (UseN n) ; - mkNP : Quant -> NP -- this - = \q -> DetNP (DetQuant q sgNum) ; - mkNP : Quant -> Num -> NP -- this - = \q,n -> DetNP (DetQuant q n) ; - mkNP : Det -> NP -- this - = DetNP ; - mkNP : Card -> CN -> NP -- forty-five old men - = \d,n -> DetCN (DetArtCard IndefArt d) n ; - mkNP : Card -> N -> NP -- forty-five men - = \d,n -> DetCN (DetArtCard IndefArt d) (UseN n) ; - mkNP : Quant -> CN -> NP - = \q,n -> DetCN (DetQuant q NumSg) n ; - mkNP : Quant -> N -> NP - = \q,n -> DetCN (DetQuant q NumSg) (UseN n) ; - mkNP : Quant -> Num -> CN -> NP - = \q,nu,n -> DetCN (DetQuant q nu) n ; - mkNP : Quant -> Num -> N -> NP - = \q,nu,n -> DetCN (DetQuant q nu) (UseN n) ; + mkNP : Det -> CN -> NP -- the old man + = DetCN ; + mkNP : Det -> N -> NP -- the man + = \d,n -> DetCN d (UseN n) ; + mkNP : Quant -> NP -- this --# notminimal + = \q -> DetNP (DetQuant q sgNum) ; --# notminimal + mkNP : Quant -> Num -> NP -- this --# notminimal + = \q,n -> DetNP (DetQuant q n) ; --# notminimal + mkNP : Det -> NP -- this --# notminimal + = DetNP ; --# notminimal + mkNP : Card -> CN -> NP -- forty-five old men + = \d,n -> DetCN (DetArtCard IndefArt d) n ; + mkNP : Card -> N -> NP -- forty-five men + = \d,n -> DetCN (DetArtCard IndefArt d) (UseN n) ; + mkNP : Quant -> CN -> NP + = \q,n -> DetCN (DetQuant q NumSg) n ; + mkNP : Quant -> N -> NP + = \q,n -> DetCN (DetQuant q NumSg) (UseN n) ; + mkNP : Quant -> Num -> CN -> NP + = \q,nu,n -> DetCN (DetQuant q nu) n ; + mkNP : Quant -> Num -> N -> NP + = \q,nu,n -> DetCN (DetQuant q nu) (UseN n) ; - mkNP : Pron -> CN -> NP - = \p,n -> DetCN (DetQuant (PossPron p) NumSg) n ; - mkNP : Pron -> N -> NP - = \p,n -> DetCN (DetQuant (PossPron p) NumSg) (UseN n) ; + mkNP : Pron -> CN -> NP --# notminimal + = \p,n -> DetCN (DetQuant (PossPron p) NumSg) n ; --# notminimal + mkNP : Pron -> N -> NP --# notminimal + = \p,n -> DetCN (DetQuant (PossPron p) NumSg) (UseN n) ; --# notminimal - mkNP : Numeral -> CN -> NP -- 51 old men - = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) n ; + mkNP : Numeral -> CN -> NP -- 51 old men + = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) n ; - mkNP : Numeral -> N -> NP -- 51 men - = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) (UseN n) ; - mkNP : Digits -> CN -> NP -- 51 old men - = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) n ; + mkNP : Numeral -> N -> NP -- 51 men + = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) (UseN n) ; + mkNP : Digits -> CN -> NP -- 51 old men --# notminimal + = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) n ; --# notminimal - mkNP : Digits -> N -> NP -- 51 men - = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ; + mkNP : Digits -> N -> NP -- 51 men --# notminimal + = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ; --# notminimal - mkNP : Digit -> CN -> NP ---- obsol - = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) n ; - mkNP : Digit -> N -> NP ---- obsol - = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) (UseN n) ; + mkNP : Digit -> CN -> NP ---- obsol --# notminimal + = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) n ; --# notminimal + mkNP : Digit -> N -> NP ---- obsol --# notminimal + = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) (UseN n) ; --# notminimal - mkNP : PN -> NP -- John - = UsePN ; - mkNP : Pron -> NP -- he - = UsePron ; - mkNP : Predet -> NP -> NP -- only the man - = PredetNP ; - mkNP : NP -> V2 -> NP -- the number squared - = PPartNP ; - mkNP : NP -> Adv -> NP -- Paris at midnight - = AdvNP ; - mkNP : NP -> RS -> NP - = RelNP ; - mkNP : Conj -> NP -> NP -> NP - = \c,x,y -> ConjNP c (BaseNP x y) ; - mkNP : Conj -> ListNP -> NP - = \c,xy -> ConjNP c xy ; + mkNP : PN -> NP -- John + = UsePN ; + mkNP : Pron -> NP -- he + = UsePron ; + mkNP : Predet -> NP -> NP -- only the man + = PredetNP ; + mkNP : NP -> V2 -> NP -- the number squared --# notminimal + = PPartNP ; --# notminimal + mkNP : NP -> Adv -> NP -- Paris at midnight --# notminimal + = AdvNP ; --# notminimal + mkNP : NP -> RS -> NP --# notminimal + = RelNP ; --# notminimal + mkNP : Conj -> NP -> NP -> NP --# notminimal + = \c,x,y -> ConjNP c (BaseNP x y) ; --# notminimal + mkNP : Conj -> ListNP -> NP --# notminimal + = \c,xy -> ConjNP c xy ; --# notminimal -- backward compat - mkNP : QuantSg -> CN -> NP - = \q,n -> DetCN (DetQuant q NumSg) n ; - mkNP : QuantPl -> CN -> NP - = \q,n -> DetCN (DetQuant q NumPl) n ; + mkNP : QuantSg -> CN -> NP --# notminimal + = \q,n -> DetCN (DetQuant q NumSg) n ; --# notminimal + mkNP : QuantPl -> CN -> NP --# notminimal + = \q,n -> DetCN (DetQuant q NumPl) n ; --# notminimal - } ; + } ; - mkDet = overload { + mkDet = overload { - mkDet : Art -> Card -> Det -- the five men --n14 - = \d,nu -> (DetArtCard d nu) ; + mkDet : Art -> Card -> Det -- the five men --n14 --# notminimal + = \d,nu -> (DetArtCard d nu) ; --# notminimal - mkDet : Quant -> Ord -> Det -- this best man - = \q,o -> DetQuantOrd q NumSg o ; - mkDet : Quant -> Det -- this man - = \q -> DetQuant q NumSg ; - mkDet : Quant -> Num -> Ord -> Det -- these five best men - = DetQuantOrd ; - mkDet : Quant -> Num -> Det -- these five man - = DetQuant ; - mkDet : Num -> Det -- forty-five men - = DetArtCard IndefArt ; - mkDet : Digits -> Det -- 51 (men) - = \d -> DetArtCard IndefArt (NumDigits d) ; - mkDet : Numeral -> Det -- - = \d -> DetArtCard IndefArt (NumNumeral d) ; - mkDet : Pron -> Det -- my (house) - = \p -> DetQuant (PossPron p) NumSg ; - mkDet : Pron -> Num -> Det -- my (houses) - = \p -> DetQuant (PossPron p) ; - } ; + mkDet : Quant -> Ord -> Det -- this best man --# notminimal + = \q,o -> DetQuantOrd q NumSg o ; --# notminimal + mkDet : Quant -> Det -- this man + = \q -> DetQuant q NumSg ; + mkDet : Quant -> Num -> Ord -> Det -- these five best men --# notminimal + = DetQuantOrd ; --# notminimal + mkDet : Quant -> Num -> Det -- these five man + = DetQuant ; + mkDet : Num -> Det -- forty-five men + = DetArtCard IndefArt ; + mkDet : Digits -> Det -- 51 (men) --# notminimal + = \d -> DetArtCard IndefArt (NumDigits d) ; --# notminimal + mkDet : Numeral -> Det -- + = \d -> DetArtCard IndefArt (NumNumeral d) ; + mkDet : Pron -> Det -- my (house) --# notminimal + = \p -> DetQuant (PossPron p) NumSg ; --# notminimal + mkDet : Pron -> Num -> Det -- my (houses) --# notminimal + = \p -> DetQuant (PossPron p) ; --# notminimal + } ; - the_Art : Art = DefArt ; -- the - a_Art : Art = IndefArt ; -- a + the_Art : Art = DefArt ; -- the + a_Art : Art = IndefArt ; -- a --- 1.4 --- defSgDet : Det = DetSg (SgQuant DefArt) NoOrd ; -- the (man) --- defPlDet : Det = DetPl (PlQuant DefArt) NoNum NoOrd ; -- the (man) --- indefSgDet : Det = DetSg (SgQuant IndefArt) NoOrd ; -- the (man) --- indefPlDet : Det = DetPl (PlQuant IndefArt) NoNum NoOrd ; -- the (man) + ---- obsol --# notminimal - ---- obsol + mkQuantSg : Quant -> QuantSg = SgQuant ; --# notminimal + mkQuantPl : Quant -> QuantPl = PlQuant ; --# notminimal - mkQuantSg : Quant -> QuantSg = SgQuant ; - mkQuantPl : Quant -> QuantPl = PlQuant ; - --- defQuant = DefArt ; --- indefQuant = IndefArt ; - --- massQuant : QuantSg = SgQuant MassDet ; --- the_QuantSg : QuantSg = SgQuant DefArt ; --- a_QuantSg : QuantSg = mkQuantSg indefQuant ; - this_QuantSg : QuantSg = mkQuantSg this_Quant ; - that_QuantSg : QuantSg = mkQuantSg that_Quant ; + this_QuantSg : QuantSg = mkQuantSg this_Quant ; --# notminimal + that_QuantSg : QuantSg = mkQuantSg that_Quant ; --# notminimal -- the_QuantPl : QuantPl = mkQuantPl defQuant ; -- a_QuantPl : QuantPl = mkQuantPl indefQuant ; - these_QuantPl : QuantPl = mkQuantPl this_Quant ; - those_QuantPl : QuantPl = mkQuantPl that_Quant ; + these_QuantPl : QuantPl = mkQuantPl this_Quant ; --# notminimal + those_QuantPl : QuantPl = mkQuantPl that_Quant ; --# notminimal - sgNum : Num = NumSg ; - plNum : Num = NumPl ; + sgNum : Num = NumSg ; + plNum : Num = NumPl ; - mkCard = overload { - mkCard : Numeral -> Card - = NumNumeral ; - mkCard : Digits -> Card -- 51 - = NumDigits ; - mkCard : AdN -> Card -> Card - = AdNum + mkCard = overload { + mkCard : Numeral -> Card + = NumNumeral ; + mkCard : Digits -> Card -- 51 + = NumDigits ; + mkCard : AdN -> Card -> Card --# notminimal + = AdNum --# notminimal } ; - mkNum = overload { - mkNum : Numeral -> Num - = \d -> NumCard (NumNumeral d) ; - mkNum : Digits -> Num -- 51 - = \d -> NumCard (NumDigits d) ; - mkNum : Digit -> Num - = \d -> NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d)))))) ; - - mkNum : Card -> Num = NumCard ; - mkNum : AdN -> Card -> Num = \a,c -> NumCard (AdNum a c) - } ; - - singularNum : Num -- [no num] - = NumSg ; - pluralNum : Num -- [no num] - = NumPl ; - - mkOrd = overload { - mkOrd : Numeral -> Ord = OrdNumeral ; - mkOrd : Digits -> Ord -- 51st - = OrdDigits ; - mkOrd : Digit -> Ord -- fifth - = \d -> - OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ; - mkOrd : A -> Ord -- largest - = OrdSuperl - } ; - - n1_Numeral = num (pot2as3 (pot1as2 (pot0as1 pot01))) ; - n2_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))) ; - n3_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))) ; - n4_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n4)))) ; - n5_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))) ; - n6_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n6)))) ; - n7_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n7)))) ; - n8_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))) ; - n9_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n9)))) ; - n10_Numeral = num (pot2as3 (pot1as2 pot110)) ; - n20_Numeral = num (pot2as3 (pot1as2 (pot1 n2))) ; - n100_Numeral = num (pot2as3 (pot2 pot01)) ; - n1000_Numeral = num (pot3 (pot1as2 (pot0as1 pot01))) ; - - n1_Digits = IDig D_1 ; - n2_Digits = IDig D_2 ; - n3_Digits = IDig D_3 ; - n4_Digits = IDig D_4 ; - n5_Digits = IDig D_5 ; - n6_Digits = IDig D_6 ; - n7_Digits = IDig D_7 ; - n8_Digits = IDig D_8 ; - n9_Digits = IDig D_9 ; - n10_Digits = IIDig D_1 (IDig D_0) ; - n20_Digits = IIDig D_2 (IDig D_0) ; - n100_Digits = IIDig D_1 (IIDig D_0 (IDig D_0)) ; - n1000_Digits = IIDig D_1 (IIDig D_0 (IIDig D_0 (IDig D_0))) ; - - - mkAdN : CAdv -> AdN = AdnCAdv ; -- more (than five) - - mkDigits = overload { - mkDigits : Dig -> Digits = IDig ; - mkDigits : Dig -> Digits -> Digits = IIDig ; - } ; - - n0_Dig = D_0 ; - n1_Dig = D_1 ; - n2_Dig = D_2 ; - n3_Dig = D_3 ; - n4_Dig = D_4 ; - n5_Dig = D_5 ; - n6_Dig = D_6 ; - n7_Dig = D_7 ; - n8_Dig = D_8 ; - n9_Dig = D_9 ; - - - - - mkCN = overload { - mkCN : N -> CN -- house - = UseN ; - mkCN : N2 -> NP -> CN -- son of the king - = ComplN2 ; - mkCN : N3 -> NP -> NP -> CN -- flight from Moscow (to Paris) - = \f,x -> ComplN2 (ComplN3 f x) ; - mkCN : N2 -> CN -- son - = UseN2 ; - mkCN : N3 -> CN -- flight - = \n -> UseN2 (Use2N3 n) ; - mkCN : AP -> CN -> CN -- nice and big blue house - = AdjCN ; - mkCN : AP -> N -> CN -- nice and big house - = \x,y -> AdjCN x (UseN y) ; - mkCN : CN -> AP -> CN -- nice and big blue house - = \x,y -> AdjCN y x ; - mkCN : N -> AP -> CN -- nice and big house - = \x,y -> AdjCN y (UseN x) ; - mkCN : A -> CN -> CN -- big blue house - = \x,y -> AdjCN (PositA x) y; - mkCN : A -> N -> CN -- big house - = \x,y -> AdjCN (PositA x) (UseN y); - mkCN : CN -> RS -> CN -- house that John owns - = RelCN ; - mkCN : N -> RS -> CN -- house that John owns - = \x,y -> RelCN (UseN x) y ; - mkCN : CN -> Adv -> CN -- house on the hill - = AdvCN ; - mkCN : N -> Adv -> CN -- house on the hill - = \x,y -> AdvCN (UseN x) y ; - mkCN : CN -> S -> CN -- fact that John smokes - = \cn,s -> SentCN cn (EmbedS s) ; - mkCN : CN -> QS -> CN -- question if John smokes - = \cn,s -> SentCN cn (EmbedQS s) ; - mkCN : CN -> VP -> CN -- reason to smoke - = \cn,s -> SentCN cn (EmbedVP s) ; - mkCN : CN -> NP -> CN -- number x, numbers x and y - = ApposCN ; - mkCN : N -> NP -> CN -- number x, numbers x and y - = \x,y -> ApposCN (UseN x) y - } ; - - - mkPhr = overload { - mkPhr : PConj -> Utt -> Voc -> Phr -- But go home my friend - = PhrUtt ; - mkPhr : Utt -> Voc -> Phr - = \u,v -> PhrUtt NoPConj u v ; - mkPhr : PConj -> Utt -> Phr - = \u,v -> PhrUtt u v NoVoc ; - mkPhr : Utt -> Phr -- Go home - = \u -> PhrUtt NoPConj u NoVoc ; - mkPhr : S -> Phr -- I go home - = \s -> PhrUtt NoPConj (UttS s) NoVoc ; - mkPhr : Cl -> Phr -- I go home - = \s -> PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos s)) NoVoc ; - mkPhr : QS -> Phr -- I go home - = \s -> PhrUtt NoPConj (UttQS s) NoVoc ; - mkPhr : Imp -> Phr -- I go home - = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc - - } ; - - mkPConj : Conj -> PConj = PConjConj ; - noPConj : PConj = NoPConj ; - - mkVoc : NP -> Voc = VocNP ; - noVoc : Voc = NoVoc ; - - positivePol : Pol = PPos ; - negativePol : Pol = PNeg ; - - simultaneousAnt : Ant = ASimul ; - anteriorAnt : Ant = AAnter ; --# notpresent - - presentTense : Tense = TPres ; - pastTense : Tense = TPast ; --# notpresent - futureTense : Tense = TFut ; --# notpresent - conditionalTense : Tense = TCond ; --# notpresent - - param ImpForm = IFSg | IFPl | IFPol ; - - oper - singularImpForm : ImpForm = IFSg ; - pluralImpForm : ImpForm = IFPl ; - politeImpForm : ImpForm = IFPol ; - - mkUttImp : ImpForm -> Pol -> Imp -> Utt = \f,p,i -> case f of { - IFSg => UttImpSg p i ; - IFPl => UttImpPl p i ; - IFPol => UttImpPol p i - } ; - - mkUtt = overload { - mkUtt : S -> Utt -- John walked - = UttS ; - mkUtt : Cl -> Utt -- John walks - = \c -> UttS (TUseCl TPres ASimul PPos c); - mkUtt : QS -> Utt -- is it good - = UttQS ; - mkUtt : QCl -> Utt -- does John walk - = \c -> UttQS (TUseQCl TPres ASimul PPos c); - mkUtt : ImpForm -> Pol -> Imp -> Utt -- don't help yourselves - = mkUttImp ; - mkUtt : ImpForm -> Imp -> Utt -- help yourselves - = \f -> mkUttImp f PPos ; - mkUtt : Pol -> Imp -> Utt -- (don't) help yourself - = UttImpSg ; - mkUtt : Imp -> Utt -- help yourself - = UttImpSg PPos ; - mkUtt : IP -> Utt -- who - = UttIP ; - mkUtt : IAdv -> Utt -- why - = UttIAdv ; - mkUtt : NP -> Utt -- this man - = UttNP ; - mkUtt : Adv -> Utt -- here - = UttAdv ; - mkUtt : VP -> Utt -- to sleep - = UttVP - } ; - - lets_Utt : VP -> Utt = ImpPl1 ; - - mkQCl = overload { - - mkQCl : Cl -> QCl -- does John walk - = QuestCl ; - mkQCl : IP -> VP -> QCl -- who walks - = QuestVP ; - mkQCl : IP -> ClSlash -> QCl -- who does John love - = QuestSlash ; - mkQCl : IP -> NP -> V2 -> QCl -- who does John love - = \ip,np,v -> QuestSlash ip (SlashVP np (SlashV2a v)) ; - mkQCl : IAdv -> Cl -> QCl -- why does John walk - = QuestIAdv ; - mkQCl : Prep -> IP -> Cl -> QCl -- with whom does John walk - = \p,ip -> QuestIAdv (PrepIP p ip) ; - mkQCl : IAdv -> NP -> QCl -- where is John - = \a -> QuestIComp (CompIAdv a) ; - mkQCl : IP -> QCl -- which houses are there - = ExistIP - - } ; - - mkIP = overload { - mkIP : IDet -> CN -> IP -- which songs - = IdetCN ; - mkIP : IDet -> N -> IP -- which song - = \i,n -> IdetCN i (UseN n) ; - mkIP : IQuant -> CN -> IP -- which songs - = \i,n -> IdetCN (IdetQuant i NumSg) n ; - mkIP : IQuant -> Num -> CN -> IP -- which songs - = \i,nu,n -> IdetCN (IdetQuant i nu) n ; - mkIP : IQuant -> N -> IP -- which song - = \i,n -> IdetCN (IdetQuant i NumSg) (UseN n) ; - mkIP : IP -> Adv -> IP -- who in Europe - = AdvIP - } ; - - mkIDet = overload { - mkIDet : IQuant -> Num -> IDet -- which (songs) - = \i,nu -> IdetQuant i nu ; - mkIDet : IQuant -> IDet -- which (song) - = \i -> IdetQuant i NumSg ; - } ; - - whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ; - whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ; - - what_IP : IP = whatSg_IP ; - who_IP : IP = whoSg_IP ; - which_IDet : IDet = whichSg_IDet ; - - mkIAdv : Prep -> IP -> IAdv = PrepIP ; - - mkRCl = overload { - mkRCl : Cl -> RCl -- such that John loves her - = RelCl ; - mkRCl : RP -> VP -> RCl -- who loves John - = RelVP ; - mkRCl : RP -> ClSlash -> RCl -- whom John loves - = RelSlash ; - mkRCl : RP -> NP -> V2 -> RCl -- whom John loves - = \rp,np,v2 -> RelSlash rp (SlashVP np (SlashV2a v2)) ; - } ; - - which_RP : RP -- which - = IdRP ; - mkRP : Prep -> NP -> RP -> RP -- all the roots of which - = FunRP - ; - - mkClSlash = overload { - mkClSlash : NP -> V2 -> ClSlash -- (whom) he sees - = \np,v2 -> SlashVP np (SlashV2a v2) ; - mkClSlash : NP -> VV -> V2 -> ClSlash -- (whom) he wants to see - = \np,vv,v2 -> SlashVP np (SlashVV vv (SlashV2a v2)) ; - mkClSlash : ClSlash -> Adv -> ClSlash -- (whom) he sees tomorrow - = AdvSlash ; - mkClSlash : Cl -> Prep -> ClSlash -- (with whom) he walks - = SlashPrep - } ; - - mkImp = overload { - mkImp : VP -> Imp -- go - = ImpVP ; - mkImp : V -> Imp - = \v -> ImpVP (UseV v) ; - mkImp : V2 -> NP -> Imp - = \v,np -> ImpVP (ComplV2 v np) - } ; - - mkS = overload { - mkS : Cl -> S - = TUseCl TPres ASimul PPos ; - mkS : Tense -> Cl -> S - = \t -> TUseCl t ASimul PPos ; - mkS : Ant -> Cl -> S - = \a -> TUseCl TPres a PPos ; - mkS : Pol -> Cl -> S - = \p -> TUseCl TPres ASimul p ; - mkS : Tense -> Ant -> Cl -> S - = \t,a -> TUseCl t a PPos ; - mkS : Tense -> Pol -> Cl -> S - = \t,p -> TUseCl t ASimul p ; - mkS : Ant -> Pol -> Cl -> S - = \a,p -> TUseCl TPres a p ; - mkS : Tense -> Ant -> Pol -> Cl -> S - = \t,a -> TUseCl t a ; - mkS : Conj -> S -> S -> S - = \c,x,y -> ConjS c (BaseS x y) ; - mkS : Conj -> ListS -> S - = \c,xy -> ConjS c xy ; - mkS : Adv -> S -> S - = AdvS - - } ; - - mkQS = overload { - - mkQS : QCl -> QS - = TUseQCl TPres ASimul PPos ; - mkQS : Tense -> QCl -> QS - = \t -> TUseQCl t ASimul PPos ; - mkQS : Ant -> QCl -> QS - = \a -> TUseQCl TPres a PPos ; - mkQS : Pol -> QCl -> QS - = \p -> TUseQCl TPres ASimul p ; - mkQS : Tense -> Ant -> QCl -> QS - = \t,a -> TUseQCl t a PPos ; - mkQS : Tense -> Pol -> QCl -> QS - = \t,p -> TUseQCl t ASimul p ; - mkQS : Ant -> Pol -> QCl -> QS - = \a,p -> TUseQCl TPres a p ; - mkQS : Tense -> Ant -> Pol -> QCl -> QS - = TUseQCl ; - mkQS : Cl -> QS - = \x -> TUseQCl TPres ASimul PPos (QuestCl x) - } ; - - - mkRS = overload { - - mkRS : RCl -> RS - = TUseRCl TPres ASimul PPos ; - mkRS : Tense -> RCl -> RS - = \t -> TUseRCl t ASimul PPos ; - mkRS : Ant -> RCl -> RS - = \a -> TUseRCl TPres a PPos ; - mkRS : Pol -> RCl -> RS - = \p -> TUseRCl TPres ASimul p ; - mkRS : Tense -> Ant -> RCl -> RS - = \t,a -> TUseRCl t a PPos ; - mkRS : Tense -> Pol -> RCl -> RS - = \t,p -> TUseRCl t ASimul p ; - mkRS : Ant -> Pol -> RCl -> RS - = \a,p -> TUseRCl TPres a p ; - mkRS : Tense -> Ant -> Pol -> RCl -> RS - = TUseRCl ; - mkRS : Conj -> RS -> RS -> RS - = \c,x,y -> ConjRS c (BaseRS x y) ; - mkRS : Conj -> ListRS -> RS - = \c,xy -> ConjRS c xy ; - - } ; - - param Punct = PFullStop | PExclMark | PQuestMark ; - - oper - emptyText : Text = TEmpty ; -- [empty text] - - fullStopPunct : Punct = PFullStop ; -- . - questMarkPunct : Punct = PQuestMark ; -- ? - exclMarkPunct : Punct = PExclMark ; -- ! - - - mkText = overload { - mkText : Phr -> Punct -> Text -> Text = - \phr,punct,text -> case punct of { - PFullStop => TFullStop phr text ; - PExclMark => TExclMark phr text ; - PQuestMark => TQuestMark phr text - } ; - mkText : Phr -> Punct -> Text = - \phr,punct -> case punct of { - PFullStop => TFullStop phr TEmpty ; - PExclMark => TExclMark phr TEmpty ; - PQuestMark => TQuestMark phr TEmpty - } ; - mkText : Phr -> Text -- John walks. - = \x -> TFullStop x TEmpty ; - mkText : Utt -> Text - = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ; - mkText : S -> Text - = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty; - mkText : Cl -> Text - = \c -> TFullStop (PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos c)) NoVoc) TEmpty; - mkText : QS -> Text - = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; - mkText : Imp -> Text - = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty; - mkText : Pol -> Imp -> Text - = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty; - mkText : Phr -> Text -> Text -- John walks. ... - = TFullStop ; - mkText : Text -> Text -> Text - = \t,u -> {s = t.s ++ u.s ; lock_Text = <>} ; - } ; - - mkVP = overload { - mkVP : V -> VP -- sleep - = UseV ; - mkVP : V2 -> NP -> VP -- use it - = ComplV2 ; - mkVP : V3 -> NP -> NP -> VP -- send a message to her - = ComplV3 ; - mkVP : VV -> VP -> VP -- want to run - = ComplVV ; - mkVP : VS -> S -> VP -- know that she runs - = ComplVS ; - mkVP : VQ -> QS -> VP -- ask if she runs - = ComplVQ ; - mkVP : VA -> AP -> VP -- look red - = ComplVA ; - mkVP : V2A -> NP -> AP -> VP -- paint the house red - = ComplV2A ; - - mkVP : V2S -> NP -> S -> VP --n14 - = \v,n,q -> (ComplSlash (SlashV2S v q) n) ; - mkVP : V2Q -> NP -> QS -> VP --n14 - = \v,n,q -> (ComplSlash (SlashV2Q v q) n) ; - mkVP : V2V -> NP -> VP -> VP --n14 - = \v,n,q -> (ComplSlash (SlashV2V v q) n) ; - - mkVP : A -> VP -- be warm - = \a -> UseComp (CompAP (PositA a)) ; - mkVP : A -> NP -> VP -- John is warmer than Mary - = \y,z -> (UseComp (CompAP (ComparA y z))) ; - mkVP : A2 -> NP -> VP -- John is married to Mary - = \y,z -> (UseComp (CompAP (ComplA2 y z))) ; - mkVP : AP -> VP -- be warm - = \a -> UseComp (CompAP a) ; - mkVP : NP -> VP -- be a man - = \a -> UseComp (CompNP a) ; - mkVP : CN -> VP -- be a man - = \y -> (UseComp (CompNP (DetArtSg IndefArt y))) ; - mkVP : N -> VP -- be a man - = \y -> (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; - mkVP : Adv -> VP -- be here - = \a -> UseComp (CompAdv a) ; - mkVP : VP -> Adv -> VP -- sleep here - = AdvVP ; - mkVP : AdV -> VP -> VP -- always sleep - = AdVVP ; - mkVP : VPSlash -> NP -> VP -- always sleep - = ComplSlash ; - mkVP : VPSlash -> VP - = ReflVP - } ; - - reflexiveVP : V2 -> VP = \v -> ReflVP (SlashV2a v) ; - - mkVPSlash = overload { - - mkVPSlash : V2 -> VPSlash -- 1. (whom) (John) loves - = SlashV2a ; - mkVPSlash : V3 -> NP -> VPSlash -- 2. (whom) (John) gives an apple - = Slash2V3 ; - mkVPSlash : V2A -> AP -> VPSlash -- 3. (whom) (John) paints red - = SlashV2A ; - mkVPSlash : V2Q -> QS -> VPSlash -- 4. (whom) (John) asks who sleeps - = SlashV2Q ; - mkVPSlash : V2S -> S -> VPSlash -- 5. (whom) (John) tells that we sleep - = SlashV2S ; - mkVPSlash : V2V -> VP -> VPSlash -- 6. (whom) (John) forces to sleep - = SlashV2V ; - } ; - - - - passiveVP = overload { - passiveVP : V2 -> VP = PassV2 ; - passiveVP : V2 -> NP -> VP = \v,np -> - (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) - } ; - progressiveVP : VP -> VP = ProgrVP ; - - - mkListS = overload { - mkListS : S -> S -> ListS = BaseS ; - mkListS : S -> ListS -> ListS = ConsS - } ; - - mkListAP = overload { - mkListAP : AP -> AP -> ListAP = BaseAP ; - mkListAP : AP -> ListAP -> ListAP = ConsAP - } ; - - mkListAdv = overload { - mkListAdv : Adv -> Adv -> ListAdv = BaseAdv ; - mkListAdv : Adv -> ListAdv -> ListAdv = ConsAdv - } ; - - mkListNP = overload { - mkListNP : NP -> NP -> ListNP = BaseNP ; - mkListNP : NP -> ListNP -> ListNP = ConsNP - } ; - - mkListRS = overload { - mkListRS : RS -> RS -> ListRS = BaseRS ; - mkListRS : RS -> ListRS -> ListRS = ConsRS - } ; - - ------------- for backward compatibility - - QuantSg : Type = Quant ** {isSg : {}} ; - QuantPl : Type = Quant ** {isPl : {}} ; - SgQuant : Quant -> QuantSg = \q -> q ** {isSg = <>} ; - PlQuant : Quant -> QuantPl = \q -> q ** {isPl = <>} ; + mkNum = overload { + mkNum : Numeral -> Num + = \d -> NumCard (NumNumeral d) ; + mkNum : Digits -> Num -- 51 --# notminimal + = \d -> NumCard (NumDigits d) ; --# notminimal + mkNum : Digit -> Num --# notminimal + = \d -> NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d)))))) ; --# notminimal + + mkNum : Card -> Num = NumCard ; + mkNum : AdN -> Card -> Num = \a,c -> NumCard (AdNum a c) --# notminimal + } ; + + singularNum : Num -- [no num] --# notminimal + = NumSg ; --# notminimal + pluralNum : Num -- [no num] --# notminimal + = NumPl ; --# notminimal + + mkOrd = overload { --# notminimal + mkOrd : Numeral -> Ord = OrdNumeral ; --# notminimal + mkOrd : Digits -> Ord -- 51st --# notminimal + = OrdDigits ; --# notminimal + mkOrd : Digit -> Ord -- fifth --# notminimal + = \d -> --# notminimal + OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ; --# notminimal + mkOrd : A -> Ord -- largest --# notminimal + = OrdSuperl --# notminimal + } ; --# notminimal + + n1_Numeral = num (pot2as3 (pot1as2 (pot0as1 pot01))) ; + n2_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))) ; + n3_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))) ; + n4_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n4)))) ; + n5_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))) ; + n6_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n6)))) ; + n7_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n7)))) ; + n8_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))) ; + n9_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n9)))) ; + n10_Numeral = num (pot2as3 (pot1as2 pot110)) ; + n20_Numeral = num (pot2as3 (pot1as2 (pot1 n2))) ; + n100_Numeral = num (pot2as3 (pot2 pot01)) ; + n1000_Numeral = num (pot3 (pot1as2 (pot0as1 pot01))) ; + + n1_Digits = IDig D_1 ; --# notminimal + n2_Digits = IDig D_2 ; --# notminimal + n3_Digits = IDig D_3 ; --# notminimal + n4_Digits = IDig D_4 ; --# notminimal + n5_Digits = IDig D_5 ; --# notminimal + n6_Digits = IDig D_6 ; --# notminimal + n7_Digits = IDig D_7 ; --# notminimal + n8_Digits = IDig D_8 ; --# notminimal + n9_Digits = IDig D_9 ; --# notminimal + n10_Digits = IIDig D_1 (IDig D_0) ; --# notminimal + n20_Digits = IIDig D_2 (IDig D_0) ; --# notminimal + n100_Digits = IIDig D_1 (IIDig D_0 (IDig D_0)) ; --# notminimal + n1000_Digits = IIDig D_1 (IIDig D_0 (IIDig D_0 (IDig D_0))) ; --# notminimal + + + mkAdN : CAdv -> AdN = AdnCAdv ; -- more (than five) --# notminimal + + mkDigits = overload { --# notminimal + mkDigits : Dig -> Digits = IDig ; --# notminimal + mkDigits : Dig -> Digits -> Digits = IIDig ; --# notminimal + } ; --# notminimal + + n0_Dig = D_0 ; --# notminimal + n1_Dig = D_1 ; --# notminimal + n2_Dig = D_2 ; --# notminimal + n3_Dig = D_3 ; --# notminimal + n4_Dig = D_4 ; --# notminimal + n5_Dig = D_5 ; --# notminimal + n6_Dig = D_6 ; --# notminimal + n7_Dig = D_7 ; --# notminimal + n8_Dig = D_8 ; --# notminimal + n9_Dig = D_9 ; --# notminimal + + + + + mkCN = overload { + mkCN : N -> CN -- house + = UseN ; + mkCN : N2 -> NP -> CN -- son of the king --# notminimal + = ComplN2 ; --# notminimal + mkCN : N3 -> NP -> NP -> CN -- flight from Moscow (to Paris) --# notminimal + = \f,x -> ComplN2 (ComplN3 f x) ; --# notminimal + mkCN : N2 -> CN -- son --# notminimal + = UseN2 ; --# notminimal + mkCN : N3 -> CN -- flight --# notminimal + = \n -> UseN2 (Use2N3 n) ; --# notminimal + mkCN : AP -> CN -> CN -- nice and big blue house + = AdjCN ; + mkCN : AP -> N -> CN -- nice and big house + = \x,y -> AdjCN x (UseN y) ; + mkCN : CN -> AP -> CN -- nice and big blue house --# notminimal + = \x,y -> AdjCN y x ; --# notminimal + mkCN : N -> AP -> CN -- nice and big house --# notminimal + = \x,y -> AdjCN y (UseN x) ; --# notminimal + mkCN : A -> CN -> CN -- big blue house + = \x,y -> AdjCN (PositA x) y; + mkCN : A -> N -> CN -- big house + = \x,y -> AdjCN (PositA x) (UseN y); + mkCN : CN -> RS -> CN -- house that John owns --# notminimal + = RelCN ; --# notminimal + mkCN : N -> RS -> CN -- house that John owns --# notminimal + = \x,y -> RelCN (UseN x) y ; --# notminimal + mkCN : CN -> Adv -> CN -- house on the hill --# notminimal + = AdvCN ; --# notminimal + mkCN : N -> Adv -> CN -- house on the hill --# notminimal + = \x,y -> AdvCN (UseN x) y ; --# notminimal + mkCN : CN -> S -> CN -- fact that John smokes --# notminimal + = \cn,s -> SentCN cn (EmbedS s) ; --# notminimal + mkCN : CN -> QS -> CN -- question if John smokes --# notminimal + = \cn,s -> SentCN cn (EmbedQS s) ; --# notminimal + mkCN : CN -> VP -> CN -- reason to smoke --# notminimal + = \cn,s -> SentCN cn (EmbedVP s) ; --# notminimal + mkCN : CN -> NP -> CN -- number x, numbers x and y --# notminimal + = ApposCN ; --# notminimal + mkCN : N -> NP -> CN -- number x, numbers x and y --# notminimal + = \x,y -> ApposCN (UseN x) y --# notminimal + } ; + + + mkPhr = overload { + mkPhr : PConj -> Utt -> Voc -> Phr -- But go home my friend --# notminimal + = PhrUtt ; --# notminimal + mkPhr : Utt -> Voc -> Phr --# notminimal + = \u,v -> PhrUtt NoPConj u v ; --# notminimal + mkPhr : PConj -> Utt -> Phr --# notminimal + = \u,v -> PhrUtt u v NoVoc ; --# notminimal + mkPhr : Utt -> Phr -- Go home + = \u -> PhrUtt NoPConj u NoVoc ; + mkPhr : S -> Phr -- I go home + = \s -> PhrUtt NoPConj (UttS s) NoVoc ; + mkPhr : Cl -> Phr -- I go home + = \s -> PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos s)) NoVoc ; + mkPhr : QS -> Phr -- I go home + = \s -> PhrUtt NoPConj (UttQS s) NoVoc ; + mkPhr : Imp -> Phr -- I go home + = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc + + } ; + + mkPConj : Conj -> PConj = PConjConj ; --# notminimal + noPConj : PConj = NoPConj ; --# notminimal + + mkVoc : NP -> Voc = VocNP ; --# notminimal + noVoc : Voc = NoVoc ; --# notminimal + + positivePol : Pol = PPos ; + negativePol : Pol = PNeg ; + + simultaneousAnt : Ant = ASimul ; --# notminimal + anteriorAnt : Ant = AAnter ; --# notpresent --# notminimal + + presentTense : Tense = TPres ; --# notminimal + pastTense : Tense = TPast ; --# notpresent --# notminimal + futureTense : Tense = TFut ; --# notpresent --# notminimal + conditionalTense : Tense = TCond ; --# notpresent --# notminimal + + param ImpForm = IFSg | IFPl | IFPol ; --# notminimal + + oper --# notminimal + singularImpForm : ImpForm = IFSg ; --# notminimal + pluralImpForm : ImpForm = IFPl ; --# notminimal + politeImpForm : ImpForm = IFPol ; --# notminimal + + mkUttImp : ImpForm -> Pol -> Imp -> Utt = \f,p,i -> case f of { --# notminimal + IFSg => UttImpSg p i ; --# notminimal + IFPl => UttImpPl p i ; --# notminimal + IFPol => UttImpPol p i --# notminimal + } ; --# notminimal + + mkUtt = overload { + mkUtt : S -> Utt -- John walked + = UttS ; + mkUtt : Cl -> Utt -- John walks + = \c -> UttS (TUseCl TPres ASimul PPos c); + mkUtt : QS -> Utt -- is it good + = UttQS ; + mkUtt : QCl -> Utt -- does John walk + = \c -> UttQS (TUseQCl TPres ASimul PPos c); + mkUtt : ImpForm -> Pol -> Imp -> Utt -- don't help yourselves --# notminimal + = mkUttImp ; --# notminimal + mkUtt : ImpForm -> Imp -> Utt -- help yourselves --# notminimal + = \f -> mkUttImp f PPos ; --# notminimal + mkUtt : Pol -> Imp -> Utt -- (don't) help yourself + = UttImpSg ; + mkUtt : Imp -> Utt -- help yourself + = UttImpSg PPos ; + mkUtt : IP -> Utt -- who + = UttIP ; + mkUtt : IAdv -> Utt -- why + = UttIAdv ; + mkUtt : NP -> Utt -- this man + = UttNP ; + mkUtt : Adv -> Utt -- here + = UttAdv ; + mkUtt : VP -> Utt -- to sleep --# notminimal + = UttVP --# notminimal + } ; + + lets_Utt : VP -> Utt = ImpPl1 ; --# notminimal + + mkQCl = overload { + + mkQCl : Cl -> QCl -- does John walk + = QuestCl ; + mkQCl : IP -> VP -> QCl -- who walks + = QuestVP ; + mkQCl : IP -> ClSlash -> QCl -- who does John love --# notminimal + = QuestSlash ; --# notminimal + mkQCl : IP -> NP -> V2 -> QCl -- who does John love --# notminimal + = \ip,np,v -> QuestSlash ip (SlashVP np (SlashV2a v)) ; --# notminimal + mkQCl : IAdv -> Cl -> QCl -- why does John walk + = QuestIAdv ; + mkQCl : Prep -> IP -> Cl -> QCl -- with whom does John walk --# notminimal + = \p,ip -> QuestIAdv (PrepIP p ip) ; --# notminimal + mkQCl : IAdv -> NP -> QCl -- where is John --# notminimal + = \a -> QuestIComp (CompIAdv a) ; --# notminimal + mkQCl : IP -> QCl -- which houses are there --# notminimal + = ExistIP --# notminimal + + } ; + + mkIP = overload { + mkIP : IDet -> CN -> IP -- which songs --# notminimal + = IdetCN ; --# notminimal + mkIP : IDet -> N -> IP -- which song --# notminimal + = \i,n -> IdetCN i (UseN n) ; --# notminimal + mkIP : IQuant -> CN -> IP -- which songs + = \i,n -> IdetCN (IdetQuant i NumSg) n ; + mkIP : IQuant -> Num -> CN -> IP -- which songs --# notminimal + = \i,nu,n -> IdetCN (IdetQuant i nu) n ; --# notminimal + mkIP : IQuant -> N -> IP -- which song + = \i,n -> IdetCN (IdetQuant i NumSg) (UseN n) ; + mkIP : IP -> Adv -> IP -- who in Europe --# notminimal + = AdvIP --# notminimal + } ; + + mkIDet = overload { --# notminimal + mkIDet : IQuant -> Num -> IDet -- which (songs) --# notminimal + = \i,nu -> IdetQuant i nu ; --# notminimal + mkIDet : IQuant -> IDet -- which (song) --# notminimal + = \i -> IdetQuant i NumSg ; --# notminimal + } ; --# notminimal + + whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ; --# notminimal + whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ; --# notminimal + + what_IP : IP = whatSg_IP ; + who_IP : IP = whoSg_IP ; + which_IDet : IDet = whichSg_IDet ; --# notminimal + + mkIAdv : Prep -> IP -> IAdv = PrepIP ; --# notminimal + + mkRCl = overload { --# notminimal + mkRCl : Cl -> RCl -- such that John loves her --# notminimal + = RelCl ; --# notminimal + mkRCl : RP -> VP -> RCl -- who loves John --# notminimal + = RelVP ; --# notminimal + mkRCl : RP -> ClSlash -> RCl -- whom John loves --# notminimal + = RelSlash ; --# notminimal + mkRCl : RP -> NP -> V2 -> RCl -- whom John loves --# notminimal + = \rp,np,v2 -> RelSlash rp (SlashVP np (SlashV2a v2)) ; --# notminimal + } ; --# notminimal + + which_RP : RP -- which --# notminimal + = IdRP ; --# notminimal + mkRP : Prep -> NP -> RP -> RP -- all the roots of which --# notminimal + = FunRP --# notminimal + ; --# notminimal + + mkClSlash = overload { --# notminimal + mkClSlash : NP -> V2 -> ClSlash -- (whom) he sees --# notminimal + = \np,v2 -> SlashVP np (SlashV2a v2) ; --# notminimal + mkClSlash : NP -> VV -> V2 -> ClSlash -- (whom) he wants to see --# notminimal + = \np,vv,v2 -> SlashVP np (SlashVV vv (SlashV2a v2)) ; --# notminimal + mkClSlash : ClSlash -> Adv -> ClSlash -- (whom) he sees tomorrow --# notminimal + = AdvSlash ; --# notminimal + mkClSlash : Cl -> Prep -> ClSlash -- (with whom) he walks --# notminimal + = SlashPrep --# notminimal + } ; --# notminimal + + mkImp = overload { + mkImp : VP -> Imp -- go --# notminimal + = ImpVP ; --# notminimal + mkImp : V -> Imp + = \v -> ImpVP (UseV v) ; + mkImp : V2 -> NP -> Imp + = \v,np -> ImpVP (ComplV2 v np) + } ; + + mkS = overload { + mkS : Cl -> S + = TUseCl TPres ASimul PPos ; + mkS : Tense -> Cl -> S --# notminimal + = \t -> TUseCl t ASimul PPos ; --# notminimal + mkS : Ant -> Cl -> S --# notminimal + = \a -> TUseCl TPres a PPos ; --# notminimal + mkS : Pol -> Cl -> S + = \p -> TUseCl TPres ASimul p ; + mkS : Tense -> Ant -> Cl -> S --# notminimal + = \t,a -> TUseCl t a PPos ; --# notminimal + mkS : Tense -> Pol -> Cl -> S --# notminimal + = \t,p -> TUseCl t ASimul p ; --# notminimal + mkS : Ant -> Pol -> Cl -> S --# notminimal + = \a,p -> TUseCl TPres a p ; --# notminimal + mkS : Tense -> Ant -> Pol -> Cl -> S --# notminimal + = \t,a -> TUseCl t a ; --# notminimal + mkS : Conj -> S -> S -> S --# notminimal + = \c,x,y -> ConjS c (BaseS x y) ; --# notminimal + mkS : Conj -> ListS -> S --# notminimal + = \c,xy -> ConjS c xy ; --# notminimal + mkS : Adv -> S -> S --# notminimal + = AdvS --# notminimal + + } ; + + mkQS = overload { + + mkQS : QCl -> QS + = TUseQCl TPres ASimul PPos ; + mkQS : Tense -> QCl -> QS --# notminimal + = \t -> TUseQCl t ASimul PPos ; --# notminimal + mkQS : Ant -> QCl -> QS --# notminimal + = \a -> TUseQCl TPres a PPos ; --# notminimal + mkQS : Pol -> QCl -> QS + = \p -> TUseQCl TPres ASimul p ; + mkQS : Tense -> Ant -> QCl -> QS --# notminimal + = \t,a -> TUseQCl t a PPos ; --# notminimal + mkQS : Tense -> Pol -> QCl -> QS --# notminimal + = \t,p -> TUseQCl t ASimul p ; --# notminimal + mkQS : Ant -> Pol -> QCl -> QS --# notminimal + = \a,p -> TUseQCl TPres a p ; --# notminimal + mkQS : Tense -> Ant -> Pol -> QCl -> QS --# notminimal + = TUseQCl ; --# notminimal + mkQS : Cl -> QS + = \x -> TUseQCl TPres ASimul PPos (QuestCl x) + } ; + + + mkRS = overload { --# notminimal + + mkRS : RCl -> RS --# notminimal + = TUseRCl TPres ASimul PPos ; --# notminimal + mkRS : Tense -> RCl -> RS --# notminimal + = \t -> TUseRCl t ASimul PPos ; --# notminimal + mkRS : Ant -> RCl -> RS --# notminimal + = \a -> TUseRCl TPres a PPos ; --# notminimal + mkRS : Pol -> RCl -> RS --# notminimal + = \p -> TUseRCl TPres ASimul p ; --# notminimal + mkRS : Tense -> Ant -> RCl -> RS --# notminimal + = \t,a -> TUseRCl t a PPos ; --# notminimal + mkRS : Tense -> Pol -> RCl -> RS --# notminimal + = \t,p -> TUseRCl t ASimul p ; --# notminimal + mkRS : Ant -> Pol -> RCl -> RS --# notminimal + = \a,p -> TUseRCl TPres a p ; --# notminimal + mkRS : Tense -> Ant -> Pol -> RCl -> RS --# notminimal + = TUseRCl ; --# notminimal + mkRS : Conj -> RS -> RS -> RS --# notminimal + = \c,x,y -> ConjRS c (BaseRS x y) ; --# notminimal + mkRS : Conj -> ListRS -> RS --# notminimal + = \c,xy -> ConjRS c xy ; --# notminimal + + } ; --# notminimal + + param Punct = PFullStop | PExclMark | PQuestMark ; + + oper + emptyText : Text = TEmpty ; -- [empty text] --# notminimal + + fullStopPunct : Punct = PFullStop ; -- . + questMarkPunct : Punct = PQuestMark ; -- ? + exclMarkPunct : Punct = PExclMark ; -- ! + + + mkText = overload { + mkText : Phr -> Punct -> Text -> Text = --# notminimal + \phr,punct,text -> case punct of { --# notminimal + PFullStop => TFullStop phr text ; --# notminimal + PExclMark => TExclMark phr text ; --# notminimal + PQuestMark => TQuestMark phr text --# notminimal + } ; --# notminimal + mkText : Phr -> Punct -> Text = + \phr,punct -> case punct of { + PFullStop => TFullStop phr TEmpty ; + PExclMark => TExclMark phr TEmpty ; + PQuestMark => TQuestMark phr TEmpty + } ; + mkText : Phr -> Text -- John walks. --# notminimal + = \x -> TFullStop x TEmpty ; --# notminimal + mkText : Utt -> Text + = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ; + mkText : S -> Text + = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty; + mkText : Cl -> Text + = \c -> TFullStop (PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos c)) NoVoc) TEmpty; + mkText : QS -> Text + = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; + mkText : Imp -> Text + = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty; + mkText : Pol -> Imp -> Text --# notminimal + = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty; --# notminimal + mkText : Phr -> Text -> Text -- John walks. ... --# notminimal + = TFullStop ; --# notminimal + mkText : Text -> Text -> Text --# notminimal + = \t,u -> {s = t.s ++ u.s ; lock_Text = <>} ; --# notminimal + } ; + + mkVP = overload { --# notminimal + mkVP : V -> VP -- sleep --# notminimal + = UseV ; --# notminimal + mkVP : V2 -> NP -> VP -- use it --# notminimal + = ComplV2 ; --# notminimal + mkVP : V3 -> NP -> NP -> VP -- send a message to her --# notminimal + = ComplV3 ; --# notminimal + mkVP : VV -> VP -> VP -- want to run --# notminimal + = ComplVV ; --# notminimal + mkVP : VS -> S -> VP -- know that she runs --# notminimal + = ComplVS ; --# notminimal + mkVP : VQ -> QS -> VP -- ask if she runs --# notminimal + = ComplVQ ; --# notminimal + mkVP : VA -> AP -> VP -- look red --# notminimal + = ComplVA ; --# notminimal + mkVP : V2A -> NP -> AP -> VP -- paint the house red --# notminimal + = ComplV2A ; --# notminimal + + mkVP : V2S -> NP -> S -> VP --n14 --# notminimal + = \v,n,q -> (ComplSlash (SlashV2S v q) n) ; --# notminimal + mkVP : V2Q -> NP -> QS -> VP --n14 --# notminimal + = \v,n,q -> (ComplSlash (SlashV2Q v q) n) ; --# notminimal + mkVP : V2V -> NP -> VP -> VP --n14 --# notminimal + = \v,n,q -> (ComplSlash (SlashV2V v q) n) ; --# notminimal + + mkVP : A -> VP -- be warm --# notminimal + = \a -> UseComp (CompAP (PositA a)) ; --# notminimal + mkVP : A -> NP -> VP -- John is warmer than Mary --# notminimal + = \y,z -> (UseComp (CompAP (ComparA y z))) ; --# notminimal + mkVP : A2 -> NP -> VP -- John is married to Mary --# notminimal + = \y,z -> (UseComp (CompAP (ComplA2 y z))) ; --# notminimal + mkVP : AP -> VP -- be warm --# notminimal + = \a -> UseComp (CompAP a) ; --# notminimal + mkVP : NP -> VP -- be a man --# notminimal + = \a -> UseComp (CompNP a) ; --# notminimal + mkVP : CN -> VP -- be a man --# notminimal + = \y -> (UseComp (CompNP (DetArtSg IndefArt y))) ; --# notminimal + mkVP : N -> VP -- be a man --# notminimal + = \y -> (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; --# notminimal + mkVP : Adv -> VP -- be here --# notminimal + = \a -> UseComp (CompAdv a) ; --# notminimal + mkVP : VP -> Adv -> VP -- sleep here --# notminimal + = AdvVP ; --# notminimal + mkVP : AdV -> VP -> VP -- always sleep --# notminimal + = AdVVP ; --# notminimal + mkVP : VPSlash -> NP -> VP -- always sleep --# notminimal + = ComplSlash ; --# notminimal + mkVP : VPSlash -> VP --# notminimal + = ReflVP --# notminimal + } ; --# notminimal + + reflexiveVP : V2 -> VP = \v -> ReflVP (SlashV2a v) ; --# notminimal + + mkVPSlash = overload { --# notminimal + + mkVPSlash : V2 -> VPSlash -- 1. (whom) (John) loves --# notminimal + = SlashV2a ; --# notminimal + mkVPSlash : V3 -> NP -> VPSlash -- 2. (whom) (John) gives an apple --# notminimal + = Slash2V3 ; --# notminimal + mkVPSlash : V2A -> AP -> VPSlash -- 3. (whom) (John) paints red --# notminimal + = SlashV2A ; --# notminimal + mkVPSlash : V2Q -> QS -> VPSlash -- 4. (whom) (John) asks who sleeps --# notminimal + = SlashV2Q ; --# notminimal + mkVPSlash : V2S -> S -> VPSlash -- 5. (whom) (John) tells that we sleep --# notminimal + = SlashV2S ; --# notminimal + mkVPSlash : V2V -> VP -> VPSlash -- 6. (whom) (John) forces to sleep --# notminimal + = SlashV2V ; --# notminimal + } ; --# notminimal + + + + passiveVP = overload { --# notminimal + passiveVP : V2 -> VP = PassV2 ; --# notminimal + passiveVP : V2 -> NP -> VP = \v,np -> --# notminimal + (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) --# notminimal + } ; --# notminimal + progressiveVP : VP -> VP = ProgrVP ; --# notminimal + + + mkListS = overload { --# notminimal + mkListS : S -> S -> ListS = BaseS ; --# notminimal + mkListS : S -> ListS -> ListS = ConsS --# notminimal + } ; --# notminimal + + mkListAP = overload { --# notminimal + mkListAP : AP -> AP -> ListAP = BaseAP ; --# notminimal + mkListAP : AP -> ListAP -> ListAP = ConsAP --# notminimal + } ; --# notminimal + + mkListAdv = overload { --# notminimal + mkListAdv : Adv -> Adv -> ListAdv = BaseAdv ; --# notminimal + mkListAdv : Adv -> ListAdv -> ListAdv = ConsAdv --# notminimal + } ; --# notminimal + + mkListNP = overload { --# notminimal + mkListNP : NP -> NP -> ListNP = BaseNP ; --# notminimal + mkListNP : NP -> ListNP -> ListNP = ConsNP --# notminimal + } ; --# notminimal + + mkListRS = overload { --# notminimal + mkListRS : RS -> RS -> ListRS = BaseRS ; --# notminimal + mkListRS : RS -> ListRS -> ListRS = ConsRS --# notminimal + } ; --# notminimal + + +------------ for backward compatibility --# notminimal + + QuantSg : Type = Quant ** {isSg : {}} ; --# notminimal + QuantPl : Type = Quant ** {isPl : {}} ; --# notminimal + SgQuant : Quant -> QuantSg = \q -> q ** {isSg = <>} ; --# notminimal + PlQuant : Quant -> QuantPl = \q -> q ** {isPl = <>} ; --# notminimal -- Pre-1.4 constants defined - DetSg : Quant -> Ord -> Det = \q -> DetQuantOrd q NumSg ; - DetPl : Quant -> Num -> Ord -> Det = DetQuantOrd ; + DetSg : Quant -> Ord -> Det = \q -> DetQuantOrd q NumSg ; --# notminimal + DetPl : Quant -> Num -> Ord -> Det = DetQuantOrd ; --# notminimal ComplV2 : V2 -> NP -> VP = \v,np -> ComplSlash (SlashV2a v) np ; - ComplV2A : V2A -> NP -> AP -> VP = \v,np,ap -> ComplSlash (SlashV2A v ap) np ; - ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash3V3 v o) d ; + ComplV2A : V2A -> NP -> AP -> VP = \v,np,ap -> ComplSlash (SlashV2A v ap) np ; + ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash3V3 v o) d ; - that_NP : NP = DetNP (DetQuant that_Quant sgNum) ; - this_NP : NP = DetNP (DetQuant this_Quant sgNum) ; - those_NP : NP = DetNP (DetQuant that_Quant plNum) ; - these_NP : NP = DetNP (DetQuant this_Quant plNum) ; + that_NP : NP = DetNP (DetQuant that_Quant sgNum) ; --# notminimal + this_NP : NP = DetNP (DetQuant this_Quant sgNum) ; --# notminimal + those_NP : NP = DetNP (DetQuant that_Quant plNum) ; --# notminimal + these_NP : NP = DetNP (DetQuant this_Quant plNum) ; --# notminimal -{- +{- --# notminimal -- The definite and indefinite articles are commonly used determiners. - defSgDet : Det ; -- 11. the (house) - defPlDet : Det ; -- 12. the (houses) - indefSgDet : Det ; -- 13. a (house) - indefPlDet : Det ; -- 14. (houses) + defSgDet : Det ; -- 11. the (house) --# notminimal + defPlDet : Det ; -- 12. the (houses) --# notminimal + indefSgDet : Det ; -- 13. a (house) --# notminimal + indefPlDet : Det ; -- 14. (houses) --# notminimal ---3 QuantSg, singular quantifiers +--3 QuantSg, singular quantifiers --# notminimal -- From quantifiers that can have both forms, this constructor -- builds the singular form. - mkQuantSg : Quant -> QuantSg ; -- 1. this + mkQuantSg : Quant -> QuantSg ; -- 1. this --# notminimal -- The mass noun phrase constructor is treated as a singular quantifier. - massQuant : QuantSg ; -- 2. (mass terms) + massQuant : QuantSg ; -- 2. (mass terms) --# notminimal -- More singular quantifiers are available in the $Structural$ module. -- The following singular cases of quantifiers are often used. - the_QuantSg : QuantSg ; -- 3. the - a_QuantSg : QuantSg ; -- 4. a - this_QuantSg : QuantSg ; -- 5. this - that_QuantSg : QuantSg ; -- 6. that + the_QuantSg : QuantSg ; -- 3. the --# notminimal + a_QuantSg : QuantSg ; -- 4. a --# notminimal + this_QuantSg : QuantSg ; -- 5. this --# notminimal + that_QuantSg : QuantSg ; -- 6. that --# notminimal ---3 QuantPl, plural quantifiers +--3 QuantPl, plural quantifiers --# notminimal -- From quantifiers that can have both forms, this constructor -- builds the plural form. - mkQuantPl : Quant -> QuantPl ; -- 1. these + mkQuantPl : Quant -> QuantPl ; -- 1. these --# notminimal -- More plural quantifiers are available in the $Structural$ module. -- The following plural cases of quantifiers are often used. - the_QuantPl : QuantPl ; -- 2. the - a_QuantPl : QuantPl ; -- 3. (indefinite plural) - these_QuantPl : QuantPl ; -- 4. these - those_QuantPl : QuantPl ; -- 5. those --} + the_QuantPl : QuantPl ; -- 2. the --# notminimal + a_QuantPl : QuantPl ; -- 3. (indefinite plural) --# notminimal + these_QuantPl : QuantPl ; -- 4. these --# notminimal + those_QuantPl : QuantPl ; -- 5. those --# notminimal +-} --# notminimal -- export needed, since not in Cat - ListAdv : Type = Grammar.ListAdv ; - ListAP : Type = Grammar.ListAP ; - ListNP : Type = Grammar.ListNP ; - ListS : Type = Grammar.ListS ; + ListAdv : Type = Grammar.ListAdv ; --# notminimal + ListAP : Type = Grammar.ListAP ; --# notminimal + ListNP : Type = Grammar.ListNP ; --# notminimal + ListS : Type = Grammar.ListS ; --# notminimal -- bw to 1.4 - Art : Type = Quant ; - the_Art : Art = DefArt ; -- the - a_Art : Art = IndefArt ; -- a + Art : Type = Quant ; + the_Art : Art = DefArt ; -- the --# notminimal + a_Art : Art = IndefArt ; -- a --# notminimal - the_Quant : Quant = DefArt ; -- the - a_Quant : Quant = IndefArt ; -- a + the_Quant : Quant = DefArt ; -- the --# notminimal + a_Quant : Quant = IndefArt ; -- a --# notminimal - DetArtSg : Art -> CN -> NP = \a -> DetCN (DetQuant a sgNum) ; - DetArtPl : Art -> CN -> NP = \a -> DetCN (DetQuant a plNum) ; + DetArtSg : Art -> CN -> NP = \a -> DetCN (DetQuant a sgNum) ; + DetArtPl : Art -> CN -> NP = \a -> DetCN (DetQuant a plNum) ; - DetArtOrd : Quant -> Num -> Ord -> Det = DetQuantOrd ; - DetArtCard : Art -> Card -> Det = \a,c -> DetQuant a (NumCard c) ; + DetArtOrd : Quant -> Num -> Ord -> Det = DetQuantOrd ; --# notminimal + DetArtCard : Art -> Card -> Det = \a,c -> DetQuant a (NumCard c) ; - TUseCl : Tense -> Ant -> Pol -> Cl -> S = \t,a -> UseCl (TTAnt t a) ; - TUseQCl : Tense -> Ant -> Pol -> QCl -> QS = \t,a -> UseQCl (TTAnt t a) ; - TUseRCl : Tense -> Ant -> Pol -> RCl -> RS = \t,a -> UseRCl (TTAnt t a) ; + TUseCl : Tense -> Ant -> Pol -> Cl -> S = \t,a -> UseCl (TTAnt t a) ; + TUseQCl : Tense -> Ant -> Pol -> QCl -> QS = \t,a -> UseQCl (TTAnt t a) ; + TUseRCl : Tense -> Ant -> Pol -> RCl -> RS = \t,a -> UseRCl (TTAnt t a) ; --# notminimal -} +} diff --git a/next-lib/src/api/minimals.txt b/next-lib/src/api/minimals.txt new file mode 100644 index 000000000..8c3bd21f0 --- /dev/null +++ b/next-lib/src/api/minimals.txt @@ -0,0 +1,87 @@ +ASimul +AdAP +AdjCN +CompAP +CompAdv +CompNP +ComparA +ComplSlash +ComplV2 +ComplV3 +DefArt +DetArtCard +DetArtSg +DetCN +DetQuant +Grammar +IdetCN +IdetQuant +ImpVP +IndefArt +MassNP +NoPConj +NoVoc +NumCard +NumDigits +NumNumeral +NumPl +NumSg +PExclMark +PFullStop +PNeg +PPos +PQuestMark +PhrUtt +PositA +PositAdvAdj +PredVP +PredetNP +PrepNP +Quant +QuestCl +QuestIAdv +QuestVP +Slash3V3 +SlashV2A +SlashV2a +TEmpty +TEmpty; +TExclMark +TFullStop +TPres +TQuestMark +TTAnt +TUseCl +TUseQCl +UseCl +UseComp +UseN +UsePN +UsePron +UseQCl +UseV +UttAdv +UttIAdv +UttIP +UttImpSg +UttNP +UttQS +UttS +n2 +n3 +n4 +n5 +n6 +n7 +n8 +n9 +plNum +pot0 +pot01 +pot0as1 +pot1 +pot110 +pot1as2 +pot2 +pot2as3 +pot3 diff --git a/next-lib/src/mkMinimal b/next-lib/src/mkMinimal new file mode 100644 index 000000000..aaef00b07 --- /dev/null +++ b/next-lib/src/mkMinimal @@ -0,0 +1 @@ +grep -v "\-\-\# notminimal" $1