summaryrefslogtreecommitdiff
path: root/next-lib/src
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2009-03-06 17:14:56 +0000
committeraarne <aarne@cs.chalmers.se>2009-03-06 17:14:56 +0000
commit136290184557ea9375b860bc8ec5e567677fd517 (patch)
tree2acd02b0b350539e399e1ae3eb4b20a171951fd8 /next-lib/src
parenta0abbc5cddb710da9c844585c752e8faf26a0425 (diff)
marked Constructors that don't belong to a minimal implementation of RG
Diffstat (limited to 'next-lib/src')
-rw-r--r--next-lib/src/Makefile2
-rw-r--r--next-lib/src/api/Combinators.gf88
-rw-r--r--next-lib/src/api/Constructors.gf2388
-rw-r--r--next-lib/src/api/minimals.txt87
-rw-r--r--next-lib/src/mkMinimal1
5 files changed, 1321 insertions, 1245 deletions
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
- } ;
-
- 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
-
---3 Dig, single digits
-
- 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
+ mkDigits : overload { --# notminimal
+ mkDigits : Dig -> Digits ; -- 1. 8 --# notminimal
+ mkDigits : Dig -> Digits -> Digits ; -- 2. 876 --# notminimal
+ } ; --# notminimal
+
+ 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 --# notminimal
+
+ 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 ; --# 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 --# 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
+ = 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 --# 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 --# 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 ; --# notminimal
+
+
+ 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 --# 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 : 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 --# 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 -> 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 --# notminimal
+ = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ; --# notminimal
+
+ 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 --# 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 --# notminimal
+ = \q,n -> DetCN (DetQuant q NumSg) n ; --# notminimal
+ mkNP : QuantPl -> CN -> NP --# notminimal
+ = \q,n -> DetCN (DetQuant q NumPl) n ; --# notminimal
- reflAP = ReflA2 ;
- comparAP = UseComparA ;
-
- 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 ;
- } ;
+ } ;
- 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 : 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 : 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)
- } ;
+ mkDet = overload {
- genericCl : VP -> Cl = GenericCl ;
-
-
- 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 : 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 : 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 : 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 : 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 : Digits -> N -> NP -- 51 men
- = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ;
-
- 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 : 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 ;
--- backward compat
- mkNP : QuantSg -> CN -> NP
- = \q,n -> DetCN (DetQuant q NumSg) n ;
- mkNP : QuantPl -> CN -> NP
- = \q,n -> DetCN (DetQuant q NumPl) n ;
+ mkDet : Art -> Card -> Det -- the five men --n14 --# notminimal
+ = \d,nu -> (DetArtCard d nu) ; --# notminimal
- } ;
-
- mkDet = overload {
-
- mkDet : Art -> Card -> Det -- the five men --n14
- = \d,nu -> (DetArtCard d nu) ;
-
-
-
- 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) ;
- } ;
- the_Art : Art = DefArt ; -- the
- a_Art : Art = IndefArt ; -- a
+ 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
+ } ;
--- 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
+ the_Art : Art = DefArt ; -- the
+ a_Art : Art = IndefArt ; -- a
- mkQuantSg : Quant -> QuantSg = SgQuant ;
- mkQuantPl : Quant -> QuantPl = PlQuant ;
+ ---- obsol --# notminimal
--- defQuant = DefArt ;
--- indefQuant = IndefArt ;
+ mkQuantSg : Quant -> QuantSg = SgQuant ; --# notminimal
+ mkQuantPl : Quant -> QuantPl = PlQuant ; --# notminimal
--- 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