;;;;;;;;;;;; ;; HEADED ;; ;;;;;;;;;;;; structure-headed := phrase & [ HD-DTR.SYNSEM [ LOCAL [ CAT [ HEAD #head, LINEAR-C linear-c-finish ], PLACE-V #place-v, PLACE-N #place-n, PLACE-O #place-o ] ], SYNSEM [ LOCAL [ CAT [ HEAD #head, LINEAR-C linear-c-start ], PLACE-V #place-v, PLACE-N #place-n, PLACE-O #place-o ] ] ]. structure-headed-unary := structure-headed & structure-unary & [ HD-DTR #sign & [ LR-PHASE lr-phase-finish ], ARGS < #sign & [ INFL + ] > ]. structure-headed-binary := structure-headed & structure-binary & [ NH-DTR [ SYNSEM [ LOCAL.CAT.LINEAR-C linear-c-finish ], LR-PHASE lr-phase-finish, INFL + ], HD-DTR [ LR-PHASE lr-phase-finish, INFL + ] ]. structure-head-first := structure-headed-binary & [ ARGS < #0 , #1 >, HD-DTR #0, NH-DTR #1 ]. structure-head-last := structure-headed-binary & [ ARGS < #0 , #1 >, HD-DTR #1, NH-DTR #0 ]. structure-key-first := structure-binary & [ ARGS < [ KEY-ARG + ], [ KEY-ARG bool ] > ]. structure-key-last := structure-binary & [ ARGS < [ KEY-ARG bool ], [ KEY-ARG + ] > ]. structure-key-head := structure-headed-binary & [ HD-DTR.KEY-ARG +, NH-DTR.KEY-ARG bool ]. structure-key-non-head := structure-headed-binary & [ HD-DTR.KEY-ARG bool, NH-DTR.KEY-ARG + ]. ;;;;;;;;;;;;;;;; ;; NON-HEADED ;; ;;;;;;;;;;;;;;;; structure-non-headed := phrase & [ ROBUST - ]. structure-non-headed-unary := structure-non-headed & structure-unary & [ ARGS < [ SYNSEM.LOCAL.CAT.LINEAR-C linear-c-finish, INFL +, LR-PHASE lr-phase-finish ] >, SYNSEM [ LOCAL.CAT.LINEAR-C linear-c-start ] ]. structure-non-headed-binary := structure-non-headed & structure-binary & [ ARGS < [ INFL +, LR-PHASE lr-phase-finish ], [ INFL +, LR-PHASE lr-phase-finish ] > ]. ;;;;;;;;;;;;;;; ;; SEMANTICS ;; ;;;;;;;;;;;;;;; structure-add-no-rels-hcons := lex-rule-or-phrase & [ C-CONT [ RELS , HCONS ] ]. structure-compositional := structure-headed & structure-add-no-rels-hcons & [ C-CONT [ HOOK #hook ], HD-DTR.SYNSEM.LOCAL.CONT [ HOOK #hook ] ]. structure-anti-compositional := structure-headed-binary & structure-add-no-rels-hcons & [ C-CONT [ HOOK #hook ], NH-DTR.SYNSEM.LOCAL.CONT [ HOOK #hook ] ]. structure-add-1-rel := lex-rule-or-phrase & [ ORTH [ FROM #from, TO #to ], C-CONT [ RELS ] ]. ;;;;;;;;;;;;;;;; ;; ROBUSTNESS ;; ;;;;;;;;;;;;;;;; ; Replaying structure-key-head, structure-headed-binary and structure-headed. Not beautiful, but needed. structure-robust := phrase & structure-add-1-rel & structure-binary & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT #cat, CONT mrs, PLACE-V #linear-v, PLACE-N #linear-n, PLACE-O #linear-o ], NONLOCAL #nonlocal ], MN-DTR [ SYNSEM [ LOCAL [ CAT #cat & [ LINEAR-C linear-c-finish ], CONT.HOOK #hook & [ INDEX #hd-index ], PLACE-V #linear-v, PLACE-N #linear-n, PLACE-O #linear-o ], NONLOCAL #nonlocal ], ROBUST -, LR-PHASE lr-phase-finish, INFL +, KEY-ARG + ], RB-DTR [ SYNSEM [ LOCAL [ CAT.LINEAR-C linear-c-finish, CONT.HOOK.INDEX #nh-index ] ], ROBUST -, LR-PHASE lr-phase-finish, INFL + ], C-CONT [ HOOK #hook, RELS , HCONS ], ROBUST + ]. structure-robust-head-first := structure-robust & [ MN-DTR #1, RB-DTR #2, ARGS < #1, #2 > ]. structure-robust-head-last := structure-robust & [ MN-DTR #1, RB-DTR #2, ARGS < #2, #1 > ]. structure-robust-nv1 := structure-robust & [ MN-DTR [ SYNSEM [ LOCAL.CAT.HEAD head-super-verb ] ], RB-DTR [ SYNSEM [ LOCAL.CAT [ HEAD n-j-r-p-x-q, VAL val-saturated ], NONLOCAL no-nonlocal ] ], C-CONT [ RELS ] ]. structure-robust-nv1-head-first := structure-robust-nv1 & structure-robust-head-first. structure-robust-nv1-head-last := structure-robust-nv1 & structure-robust-head-last. structure-robust-nv2 := structure-robust & [ MN-DTR [ SYNSEM [ LOCAL.CAT.HEAD head-super-verb ] ], RB-DTR [ SYNSEM [ LOCAL.CAT [ HEAD n-r-x, VAL val-saturated ], NONLOCAL no-nonlocal ] ], C-CONT [ RELS ] ]. structure-robust-nv2-head-first := structure-robust-nv2 & structure-robust-head-first. structure-robust-nv2-head-last := structure-robust-nv2 & structure-robust-head-last. structure-robust-v1 := structure-robust & [ MN-DTR [ SYNSEM [ LOCAL.CAT.HEAD head-super-verb ] ], RB-DTR [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb, VAL val-saturated ], NONLOCAL no-nonlocal ] ], C-CONT [ RELS ] ]. structure-robust-v1-head-first := structure-robust-v1 & structure-robust-head-first. structure-robust-v1-head-last := structure-robust-v1 & structure-robust-head-last. structure-robust-v2 := structure-robust & [ MN-DTR [ SYNSEM [ LOCAL.CAT.HEAD head-super-verb ] ], RB-DTR [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb, VAL val ], NONLOCAL no-nonlocal ] ], C-CONT [ RELS ] ]. structure-robust-v2-head-first := structure-robust-v2 & structure-robust-head-first. structure-robust-v2-head-last := structure-robust-v2 & structure-robust-head-last. structure-robust-v3 := structure-robust & [ MN-DTR [ SYNSEM [ LOCAL.CAT.HEAD head-super-verb ] ], RB-DTR [ SYNSEM [ LOCAL.CAT [ HEAD head-super-verb, VAL val-saturated ], NONLOCAL nonlocal ] ], C-CONT [ RELS ] ]. structure-robust-v3-head-first := structure-robust-v3 & structure-robust-head-first. structure-robust-v3-head-last := structure-robust-v3 & structure-robust-head-last. ;;;;;;;;;;;;;;; ;; NON-LOCAL ;; ;;;;;;;;;;;;;;; ; These structures describe non-local properties of rules. structure-anc-add-none := lex-rule-or-phrase & [ SYNSEM.ANC [ ANC-ALL ] ]. structure-anc-add-unary := lex-rule-or-phrase & [ ARGS < [ SYNSEM.ANC [ ANC-ALL #anc-all ] ] >, SYNSEM.ANC [ ANC-ALL #anc-all ] ]. structure-anc-add-binary := structure-binary & [ ARGS < [ SYNSEM.ANC [ ANC-ALL [ LIST #mid, LAST #last ] ] ], [ SYNSEM.ANC [ ANC-ALL [ LIST #first, LAST #mid ] ] ] >, SYNSEM.ANC [ ANC-ALL [ LIST #first, LAST #last ] ] ]. structure-anc-add-binary-self := structure-binary & [ ARGS < [ SYNSEM.ANC [ ANC-ALL [ LIST #mid, LAST #last ] ] ], [ SYNSEM.ANC [ ANC-ALL [ LIST #first, LAST #mid ] ] ] >, SYNSEM [ LOCAL.CONT [ HOOK #hook ], ANC [ ANC-ALL [ LIST [ FIRST #hook, REST #first ], LAST #last ] ] ] ]. structure-anc-inactive := lex-rule-or-phrase & [ SYNSEM.ANC.ANC-ACTIVE [ LIST #empty & < >, LAST #empty ] ]. structure-anc-active-hd := structure-headed & [ HD-DTR.SYNSEM [ ANC.ANC-ALL #active ], SYNSEM [ ANC.ANC-ACTIVE #active ] ]. structure-anc-active-nh := structure-headed-binary & [ NH-DTR.SYNSEM [ ANC.ANC-ALL #active ], SYNSEM [ ANC.ANC-ACTIVE #active ] ]. structure-bind-anc := structure-head-non-adjunct & structure-head-non-cluster & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-head-non-complement & structure-no-que & structure-no-rel & structure-compositional & structure-head-first & structure-key-non-head & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT #cat ], NONLOCAL #nonlocal ], HD-DTR.SYNSEM [ LOCAL [ CAT #cat ], NONLOCAL #nonlocal, ANC [ ANC-ACTIVE.LAST < > ] ], NH-DTR.SYNSEM [ LOCAL.CAT [ HEAD.EXTRA +, VAL val-saturated ] ] ]. structure-bind-anc-1 := structure-bind-anc & [ HD-DTR.SYNSEM.ANC.ANC-ACTIVE.LIST.FIRST #local, NH-DTR.SYNSEM.LOCAL.CAT.HEAD.MOD.LOCAL.CONT.HOOK.INDEX #local ]. structure-bind-anc-2 := structure-bind-anc & [ HD-DTR.SYNSEM.ANC.ANC-ACTIVE.LIST.REST.FIRST #local, NH-DTR.SYNSEM.LOCAL.CAT.HEAD.MOD.LOCAL.CONT.HOOK.INDEX #local ]. structure-bind-anc-3 := structure-bind-anc & [ HD-DTR.SYNSEM.ANC.ANC-ACTIVE.LIST.REST.REST.FIRST #local, NH-DTR.SYNSEM.LOCAL.CAT.HEAD.MOD.LOCAL.CONT.HOOK.INDEX #local ]. structure-no-rslash := structure-headed-binary & [ SYNSEM [ NONLOCAL.RSLASH #rslash & local-no-match ], HD-DTR.SYNSEM [ NONLOCAL.RSLASH #rslash ], NH-DTR.SYNSEM [ NONLOCAL.RSLASH #rslash ] ]. structure-rslash-from-h := structure-headed-binary & [ SYNSEM [ NONLOCAL.RSLASH #rslash ], HD-DTR.SYNSEM [ NONLOCAL.RSLASH #rslash ], NH-DTR.SYNSEM [ NONLOCAL.RSLASH local-no-match ] ]. structure-rslash-from-nh := structure-headed-binary & [ SYNSEM [ NONLOCAL.RSLASH #rslash ], HD-DTR.SYNSEM [ NONLOCAL.RSLASH local-no-match ], NH-DTR.SYNSEM [ NONLOCAL.RSLASH #rslash ] ]. structure-no-que := structure-headed-binary & [ SYNSEM [ NONLOCAL.QUE #que & - ], HD-DTR.SYNSEM [ NONLOCAL.QUE #que ], NH-DTR.SYNSEM [ NONLOCAL.QUE #que ] ]. structure-que-from-h := structure-headed-binary & [ SYNSEM [ NONLOCAL.QUE #que ], HD-DTR.SYNSEM [ NONLOCAL.QUE #que ], NH-DTR.SYNSEM [ NONLOCAL.QUE bool ] ]. ; Bool underspecified: wer soll mit wem diskutieren? structure-que-from-nh := structure-headed-binary & [ SYNSEM [ NONLOCAL.QUE #que ], HD-DTR.SYNSEM [ NONLOCAL.QUE bool ], NH-DTR.SYNSEM [ NONLOCAL.QUE #que ] ]. structure-no-rel := structure-headed-binary & [ SYNSEM [ NONLOCAL.REL #rel & local-no-match ], HD-DTR.SYNSEM [ NONLOCAL.REL #rel ], NH-DTR.SYNSEM [ NONLOCAL.REL #rel ] ]. structure-rel-from-h := structure-headed-binary & [ SYNSEM [ NONLOCAL.REL #rel ], HD-DTR.SYNSEM [ NONLOCAL.REL #rel ], NH-DTR.SYNSEM [ NONLOCAL.REL local ] ]. structure-rel-from-nh := structure-headed-binary & [ SYNSEM [ NONLOCAL.REL #rel ], HD-DTR.SYNSEM [ NONLOCAL.REL local ], NH-DTR.SYNSEM [ NONLOCAL.REL #rel ] ]. ;;;;;;;;;;;;;;;;;;;;;; ;; GENERIC SCHEMATA ;; ;;;;;;;;;;;;;;;;;;;;;; ;; Adjunct vs non-adjunct: adjunct takes the CONT from its non-head daughter, non-adjunct from its head daughter. ;; Head-adjunct requires that the non-head selects for the head. structure-head-non-adjunct := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.HEAD.MOD #mod ], HD-DTR.SYNSEM [ LOCAL.CAT.HEAD.MOD #mod ] ]. structure-head-adjunct := structure-head-non-complement & structure-head-non-cluster & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-compositional & structure-que-from-nh & structure-key-non-head & [ SYNSEM [ LOCAL.CAT.HEAD.MOD #hd-mod ], NH-DTR.SYNSEM [ LOCAL.CAT [ HEAD [ MOD #mod ], VAL val-saturated ] ], HD-DTR.SYNSEM #mod & [ LOCAL.CAT.HEAD [ MOD #hd-mod, MODABLE + ] ] ]. structure-head-non-specifier := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL [ SPR #spr, SPEC #spec ] ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL [ SPR #spr, SPEC #spec ] ] ]. structure-head-specifier := structure-head-non-complement & structure-head-non-cluster & structure-head-non-adjunct & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-subject & structure-que-from-nh & structure-compositional & structure-key-head & [ SYNSEM [ LOCAL.CAT.VAL [ SPR < >, SPEC < > ] ], HD-DTR.SYNSEM #synsem & [ LOCAL.CAT.VAL [ SPR < >, SPEC < synsem > ] ], NH-DTR.SYNSEM [ LOCAL.CAT.VAL [ SPR < #synsem >, SPEC < > ] ] ]. structure-head-non-subject := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.SUBJ #subj ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SUBJ #subj ] ]. structure-head-subject := structure-head-non-complement & structure-head-non-cluster & structure-head-non-adjunct & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-que-from-nh & structure-compositional & structure-key-head & [ SYNSEM [ LOCAL.CAT.VAL.SUBJ < > ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.SUBJ < #subj > ], NH-DTR.SYNSEM #subj ]. ;; Complement vs non-complement: complement discharges the head of the comps list, while non-complement just copies the COMPS feature. The added constituent should only be added when the non-head is saturated. structure-head-non-complement := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.COMPS #comps ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.COMPS #comps ] ]. structure-head-complement-basic := structure-head-non-adjunct & structure-head-non-cluster & structure-head-non-filler-from-hd & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-que-from-nh & structure-compositional & structure-key-head. structure-head-complement-1 := structure-head-complement-basic & [ SYNSEM.LOCAL.CAT.VAL.COMPS #tail, HD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < #head . #tail >, NH-DTR.SYNSEM #head ]. structure-head-complement-2 := structure-head-complement-basic & [ SYNSEM.LOCAL.CAT.VAL.COMPS < #1 . #tail >, HD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < #1 , #head . #tail >, NH-DTR.SYNSEM #head ]. structure-head-complement-3 := structure-head-complement-basic & [ SYNSEM.LOCAL.CAT.VAL.COMPS < #1, #2 . #tail >, HD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < #1, #2, #head . #tail >, NH-DTR.SYNSEM #head ]. ;; Cluster vs non-cluster: cluster discharges the head of the XCOMP list, while non-cluster just copies the XCOMP feature. XCOMP of the non-head daughter is appended to the end of the list, to account for extraposed zu-sentences: das werde ich versuchen wollen zu machen ; TODO: er hat ihm gebeten den kase essen zu wollen ; The empty list requirement is needed to prevent other schemata from combining with underspecified COMPS frames (e.g. in argument attraction) structure-head-non-cluster := structure-headed-binary & [ SYNSEM [ LOCAL.CAT.VAL.XCOMP #xcomp & < > ], HD-DTR.SYNSEM [ LOCAL.CAT.VAL.XCOMP #xcomp ] ]. structure-head-cluster := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-nh & structure-que-from-nh & structure-compositional & structure-key-head & [ SYNSEM [ LOCAL.CAT [ HEAD.AGR [ PERSON #person, NUMBER #number ], VAL.XCOMP #1 ], NONLOCAL [ REL local-no-match ] ], HD-DTR [ SYNSEM [ LOCAL.CAT.VAL.XCOMP [ FIRST #2, REST #1 ] ] ], NH-DTR [ SYNSEM #2 & [ LOCAL.CAT [ HEAD.AGR [ PERSON #person, NUMBER #number ], VAL.XCOMP < > ], NONLOCAL [ REL local-no-match ] ] ] ]. ;; Filler vs non-filler: filler discharges the SLASH feature by one (selects for LOCAL), while non-filler concatenates the SLASH lists of both daughters (ideally). structure-head-non-filler-from-hd := structure-headed-binary & [ SYNSEM.NONLOCAL.SLASH #slash, HD-DTR.SYNSEM.NONLOCAL.SLASH #slash, NH-DTR.SYNSEM.NONLOCAL.SLASH local-no-match ]. structure-head-non-filler-from-nh := structure-headed-binary & [ SYNSEM.NONLOCAL.SLASH #slash, HD-DTR.SYNSEM.NONLOCAL.SLASH local-no-match, NH-DTR.SYNSEM.NONLOCAL.SLASH #slash ]. structure-head-filler := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-cluster & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-que-from-nh & structure-compositional & structure-key-head & [ SYNSEM.NONLOCAL.SLASH local-no-match, HD-DTR.SYNSEM.NONLOCAL.SLASH #local & [ CAT.VAL.COMPS < > ], NH-DTR.SYNSEM [ LOCAL #local, NONLOCAL.SLASH local-no-match ] ]. structure-head-rfiller := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-cluster & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-hd & structure-no-que & structure-compositional & structure-key-head & [ SYNSEM.NONLOCAL.RSLASH local-no-match, HD-DTR.SYNSEM.NONLOCAL.RSLASH #local, NH-DTR.SYNSEM [ LOCAL #local, NONLOCAL.RSLASH local-no-match ] ]. structure-head-non-apposition := structure-headed-binary & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.APP #app, SYNSEM.LOCAL.CAT.HEAD.APP #app ]. structure-head-apposition := structure-head-non-adjunct & structure-head-non-complement & structure-head-non-cluster & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-hd & structure-no-que & structure-add-1-rel & structure-key-head & [ HD-DTR.SYNSEM.LOCAL [ CAT [ HEAD [ AGR [ CASE case, GENDER gender ], APP + ] ], CONT [ HOOK #hook & [ INDEX #noun ] ] ], NH-DTR.SYNSEM.LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE case-nom-dat-acc, GENDER gender ] ], LINEAR linear-n-can-pre, VAL.COMPS < > ], CONT [ HOOK.INDEX #app ] ], SYNSEM.LOCAL [ CAT [ HEAD [ APP + ] ] ], C-CONT [ HOOK #hook, RELS , HCONS ] ]. ;;;;;;;;;;;;;; ;; DIVISION ;; ;;;;;;;;;;;;;; structure-verbal := structure-headed-binary & [ SYNSEM.LOCAL [ CAT cat-verbal & [ VOICE #voice ] ], HD-DTR.SYNSEM.LOCAL [ CAT cat-verbal & [ VOICE #voice ] ] ]. structure-nominal := structure-headed-binary & structure-anc-add-binary & [ SYNSEM.LOCAL.CAT [ HEAD head-super-noun ], HD-DTR.SYNSEM.LOCAL.CAT [ HEAD head-super-noun ] ]. structure-other := structure-headed-binary & structure-anc-add-binary & [ SYNSEM.LOCAL.CAT cat-other, HD-DTR.SYNSEM.LOCAL.CAT cat-other ]. ;; Verbal domain ;; ;; Different rules for different topological fields. structure-vorfeld := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING #b, LINEAR linear-v-can-vf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-vf, SYNSEM.LOCAL.CAT [ V-POS v-pos-second, BRANCHING #b, LINEAR linear-v-did-vf ] ]. structure-mittelfeld-lb := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-left, LINEAR linear-v-can-lb-mf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-mf, SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-left, LINEAR linear-v-did-lb-mf ] ]. structure-mittelfeld-rb := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-can-rb-mf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-mf, SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-did-rb-mf ] ]. ; Assumption: left-branching sentences do not have a Nachfeld. structure-nachfeld := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-can-rb-nf ], NH-DTR.SYNSEM.LOCAL.PLACE-V place-v-nf, SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-did-rb-nf ] ]. ; Here, the topological field features should be taken over from the NH-DTR. Also, only final verbs are allowed here as HD. ; Restrictions on the linear status are imposed on the NH-DTR, and not on the HD-DTR. structure-left-bracket := structure-verbal & [ NH-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right ], HD-DTR.SYNSEM.LOCAL [ CAT [ HEAD.AGR.FORM-VERB form-verb-12, LINEAR linear-v-can-rb-lb ] ], SYNSEM.LOCAL.CAT [ V-POS v-pos-first, BRANCHING branching-right, LINEAR linear-v-did-rb-lb ] ]. structure-right-bracket := structure-verbal & [ HD-DTR.SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right ], NH-DTR.SYNSEM.LOCAL [ CAT [ LINEAR linear-v-can-rb-rb ], PLACE-V place-v-rb ], SYNSEM.LOCAL.CAT [ V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-did-rb-rb ] ]. ; Couples the schemata with a position in a topological field, and adds some extra constraints for non-locality. structure-vorfeld-filler-head := structure-vorfeld & structure-head-filler & structure-head-last & structure-no-rslash & structure-no-rel & structure-anc-active-nh & structure-anc-add-none & [ SYNSEM.LOCAL.CAT.VAL [ SUBJ < >, COMPS < > ] ]. structure-vorfeld-adjunct-head-modal := structure-vorfeld & structure-head-adjunct & structure-head-last & structure-no-rslash & structure-no-rel & structure-anc-inactive & structure-anc-add-none & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.VTYPE vtype-modal-aux ]. structure-left-bracket-head-cluster := structure-left-bracket & structure-head-cluster & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-inactive & structure-anc-add-none & [ SYNSEM.LOCAL.CAT.VAL [ SUBJ < >, COMPS < > ] ]. structure-mittelfeld-lb-head-subject := structure-mittelfeld-lb & structure-head-subject & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-binary & structure-anc-active-hd. structure-mittelfeld-lb-head-complement-1 := structure-mittelfeld-lb & structure-head-complement-1 & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-binary & structure-anc-active-hd. structure-mittelfeld-lb-head-complement-2 := structure-mittelfeld-lb & structure-head-complement-2 & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-binary & structure-anc-active-hd. structure-mittelfeld-lb-head-complement-3 := structure-mittelfeld-lb & structure-head-complement-3 & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-binary & structure-anc-active-hd. structure-mittelfeld-lb-head-adjunct := structure-mittelfeld-lb & structure-head-adjunct & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-binary & structure-anc-active-hd. structure-mittelfeld-rb-subject-head := structure-mittelfeld-rb & structure-head-subject & structure-head-last & structure-rslash-from-nh & structure-rel-from-nh & structure-anc-active-nh & structure-anc-add-none & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-complement-head-1 := structure-mittelfeld-rb & structure-head-complement-1 & structure-head-last & structure-rslash-from-nh & structure-rel-from-nh & structure-anc-active-nh & structure-anc-add-none & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-complement-head-2 := structure-mittelfeld-rb & structure-head-complement-2 & structure-head-last & structure-rslash-from-nh & structure-rel-from-nh & structure-anc-active-nh & structure-anc-add-none & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-complement-head-3 := structure-mittelfeld-rb & structure-head-complement-3 & structure-head-last & structure-rslash-from-nh & structure-rel-from-nh & structure-anc-active-nh & structure-anc-add-none & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-adjunct-head := structure-mittelfeld-rb & structure-head-adjunct & structure-head-last & structure-rslash-from-nh & structure-rel-from-nh & structure-anc-add-none & structure-anc-active-nh & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-mittelfeld-rb-head-rfiller := structure-mittelfeld-rb & structure-head-rfiller & structure-head-first & structure-no-rel & structure-anc-add-none & structure-anc-inactive & [ HD-DTR.SYNSEM.NONLOCAL.REL local-no-match ]. structure-right-bracket-head-cluster := structure-right-bracket & structure-head-cluster & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.BRANCH-CLUSTER branching-right ]. structure-right-bracket-cluster-head := structure-right-bracket & structure-head-cluster & structure-head-last & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD.BRANCH-CLUSTER branching-left ]. structure-nachfeld-head-subject := structure-nachfeld & structure-head-subject & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive. structure-nachfeld-head-complement-1 := structure-nachfeld & structure-head-complement-1 & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive. structure-nachfeld-head-complement-2 := structure-nachfeld & structure-head-complement-2 & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive. structure-nachfeld-head-adjunct := structure-nachfeld & structure-head-adjunct & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive. structure-nachfeld-head-cluster := structure-nachfeld & structure-head-cluster & structure-head-first & structure-no-rslash & structure-no-rel & structure-anc-add-none & structure-anc-inactive & [ HD-DTR.SYNSEM.LOCAL.CAT.VAL.INCOH + ]. structure-slash-escape := structure-head-non-adjunct & structure-head-non-cluster & structure-head-non-apposition & structure-head-non-specifier & structure-head-non-subject & structure-que-from-nh & structure-no-rel & structure-compositional & structure-mittelfeld-lb & structure-head-first & structure-anc-add-none & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT [ VAL val-saturated ] ], NONLOCAL [ SLASH #fronted ] ], HD-DTR.SYNSEM [ LOCAL [ CAT [ VAL val-just-one-comp & [ COMPS < synsem-sent & [ LOCAL.CONT.HOOK #hook ] > ] ] ], NONLOCAL no-nonlocal ], NH-DTR.SYNSEM [ LOCAL [ CAT [ VAL val-saturated, LINEAR linear-v-can-vf ], CONT [ HOOK #hook ] ], NONLOCAL [ SLASH #fronted ] ] ]. ;;;;;;;;;;;;;;;;;;;;;; ;; RELATIVE PHRASES ;; ;;;;;;;;;;;;;;;;;;;;;; ; Der Mann der ein Getraenk getrunken hat liegt morgen ; Das Getraenk den der Mann getrunken hat liegt morgen ; Der Mann dessen Getraenk ich getrunken habe ; Der Mann mit wem ich ein Getraenk getrunken habe ; Der Mann mit dessen Vater ich ein Getraenk getrunken habe structure-rel-phrase := structure-non-headed-binary & structure-add-1-rel & structure-anc-inactive & structure-key-first & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head, VAL val-saturated, LINEAR-C linear-c-finish ], CONT mrs ], NONLOCAL just-rel & [ REL #rel ] ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ AGR.FORM-VERB form-verb-fin ], VAL.XCOMP < >, V-POS v-pos-last, BRANCHING branching-right, LINEAR linear-v-can-rb-lb, LINEAR-C linear-c-finish ], CONT psoa & [ HOOK #hook ] ], NONLOCAL no-nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ AGR agr-no-match, MOD.LOCAL #rel & [ CAT.HEAD head-super-noun, CONT.HOOK.INDEX index & #rel-modified ] ], VAL val-saturated, LINEAR-C linear-c-start, LINEAR linear-v-can-not ], CONT [ HOOK #hook & [ INDEX #rel-modifies ] ], PLACE-N place-n-post ], NONLOCAL no-nonlocal ], C-CONT [ RELS , HCONS ] ]. structure-rel-phrase-subject := structure-rel-phrase & [ ARGS < [ SYNSEM.LOCAL #local ], [ SYNSEM.LOCAL.CAT.VAL val-just-one-subj & [ SUBJ < [ LOCAL #local, NONLOCAL no-nonlocal ] > ] ] > ]. structure-rel-phrase-complement := structure-rel-phrase & [ ARGS < [ SYNSEM.LOCAL #local ], [ SYNSEM.LOCAL.CAT.VAL val-just-one-comp & [ COMPS < [ LOCAL #local, NONLOCAL no-nonlocal ] > ] ] > ]. structure-rel-phrase-adjunct := structure-rel-phrase & [ ARGS < [ SYNSEM [ LOCAL.CAT.HEAD [ MOD #synsem ] ] ], [ SYNSEM #synsem & [ LOCAL.CAT.VAL val-saturated ] ] >, SYNSEM [ LOCAL.CAT.VAL.COMPS < > ] ]. ;;;;;;;;;;;;;;;;;;;; ;; NOMINAL DOMAIN ;; ;;;;;;;;;;;;;;;;;;;; structure-nominal-pre := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-n-can-pre, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-pre, SYNSEM.LOCAL.CAT.LINEAR linear-n-did-pre ]. structure-nominal-det := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-n-can-det, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-det, SYNSEM.LOCAL.CAT.LINEAR linear-n-did-det ]. structure-nominal-mid := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-n-can-mid, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-mid, SYNSEM.LOCAL.CAT.LINEAR linear-n-did-mid ]. structure-nominal-post := structure-nominal & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-n-can-post, NH-DTR.SYNSEM.LOCAL.PLACE-N place-n-post, SYNSEM.LOCAL.CAT.LINEAR linear-n-did-post ]. structure-nominal-pre-head-adjunct := structure-nominal-pre & structure-head-adjunct & structure-rslash-from-h & structure-no-rel & structure-anc-inactive & structure-head-last. structure-nominal-det-head-determiner := structure-nominal-det & structure-head-specifier & structure-rslash-from-h & structure-rel-from-nh & structure-anc-inactive & structure-head-last & [ SYNSEM.LOCAL.CAT.HEAD.BARE -, HD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < > ]. structure-nominal-mid-head-adjunct := structure-nominal-mid & structure-head-adjunct & structure-rslash-from-h & structure-rel-from-nh & structure-anc-active-nh & structure-head-last. structure-nominal-post-head-complement := structure-nominal-post & structure-head-complement-1 & structure-rslash-from-h & structure-no-rel & structure-anc-inactive & structure-head-first. structure-nominal-post-head-apposition := structure-nominal-post & structure-head-apposition & structure-rslash-from-h & structure-no-rel & structure-anc-inactive & structure-head-first. structure-nominal-post-head-adjunct := structure-nominal-post & structure-head-adjunct & structure-no-rel & structure-anc-inactive & structure-head-first. structure-nominal-post-head-adjunct-1 := structure-nominal-post-head-adjunct & structure-rslash-from-h & [ NH-DTR.SYNSEM.NONLOCAL.RSLASH local-no-match ]. structure-nominal-post-head-adjunct-2 := structure-nominal-post-head-adjunct & structure-rslash-from-nh & [ HD-DTR.SYNSEM.NONLOCAL.RSLASH local-no-match, NH-DTR.SYNSEM.NONLOCAL.RSLASH local-match ]. structure-genitive-modification := structure-head-non-complement & structure-head-non-cluster & structure-head-non-specifier & structure-head-non-subject & structure-head-non-filler-from-hd & structure-rslash-from-nh & structure-no-que & structure-no-rel & structure-add-1-rel & structure-nominal-post & structure-anc-inactive & structure-head-first & structure-key-non-head & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun ] ] ], HD-DTR [ SYNSEM [ LOCAL [ CAT [ LINEAR linear-n-start ], CONT [ HOOK #hook ] ] ] ], NH-DTR [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ MOD synsem-no-match, AGR.CASE case-gen ], LINEAR linear-n-did-det ], CONT [ HOOK.INDEX #gen-index ] ] ] ], C-CONT [ HOOK #hook & [ INDEX #hd-index ], RELS , HCONS ] ]. ; To control ambiguity, there are going to be two separate structure for genitive modification: ; - Only match when the RHS has a det, and the LHS can be either a pronominal or a non-pronominal. ; - Only match when the RHS has no det, and the LHS is not a pronominal. structure-genitive-modification-det := structure-genitive-modification & [ NH-DTR.SYNSEM.LOCAL.CAT.HEAD [ BARE - ] ]. structure-genitive-modification-no-det := structure-genitive-modification & [ HD-DTR.SYNSEM.LOCAL.CAT.HEAD head-non-pronominal, NH-DTR.SYNSEM.LOCAL.CAT.HEAD [ BARE + ] ]. structure-np-no-det := structure-compositional & structure-headed-unary & structure-anc-add-unary & structure-anc-inactive & [ HD-DTR.SYNSEM [ LOCAL [ CAT [ HEAD head-super-noun & [ AGR.N-INFL n-infl-strong ], VAL val-just-one-spec, LINEAR linear-n-can-det, LINEAR-C linear-c-start ] ], NONLOCAL #nonlocal ], SYNSEM [ LOCAL [ CAT [ HEAD [ BARE + ], VAL val-saturated, LINEAR linear-n-did-det, LINEAR-C linear-c-start ] ], NONLOCAL #nonlocal ], LR-PHASE lr-phase-phrase ]. ;;;;;;;;;;;;;;;;;;; ;; OTHER DOMAINS ;; ;;;;;;;;;;;;;;;;;;; structure-other-right := structure-other & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-o-can-right, NH-DTR.SYNSEM.LOCAL.PLACE-O place-o-right, SYNSEM.LOCAL.CAT.LINEAR linear-o-did-right ]. structure-other-left := structure-other & [ HD-DTR.SYNSEM.LOCAL.CAT.LINEAR linear-o-can-left, NH-DTR.SYNSEM.LOCAL.PLACE-O place-o-left, SYNSEM.LOCAL.CAT.LINEAR linear-o-did-left ]. structure-ordered-other-right-head-complement := structure-other-right & structure-head-complement-1 & structure-head-first & structure-anc-inactive & structure-rel-from-nh & structure-rslash-from-nh. structure-ordered-other-right-head-adjunct := structure-other-right & structure-head-adjunct & structure-head-first & structure-anc-inactive & structure-no-rel & structure-rslash-from-nh. structure-ordered-other-left-complement-head := structure-other-left & structure-head-complement-1 & structure-head-last & structure-anc-inactive & structure-no-rel & structure-rslash-from-nh. structure-ordered-other-left-adjunct-head := structure-other-left & structure-head-adjunct & structure-head-last & structure-anc-active-nh & structure-no-rel & structure-rslash-from-nh. ;;;;;;;;;;;;;;;;;;; ;; COORDINATIONS ;; ;;;;;;;;;;;;;;;;;;; structure-coordination := structure-non-headed-binary. structure-coordination-truncable := structure-coordination. ; Daughters of these are s-c-nbar and s-c-ap, as these can be adjoined with TRUNCs. ; c-right: crd + start = did-right und | die Kinder ; c-left: start + did-right = did-left die Frau | und die Kinder ; c-asynd: start + start = did-left die Frau | die Kinder ; c-left2: start + did-left = did-left der Mann | die Frau und die Kinder structure-coordination-right := structure-coordination & structure-key-first & [ SYNSEM [ LOCAL [ CAT [ LINEAR-C linear-c-did-right ], CONT [ HOOK #hook ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ HEAD head-coord ], CONT [ HOOK #hook & [ R-ARG #r-index ] ] ] ], [ SYNSEM.LOCAL [ CAT [ LINEAR-C linear-c-start ], CONT [ HOOK.INDEX #r-index ], PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ] >, C-CONT no-c-cont ]. structure-coordination-left-side := structure-coordination & structure-key-last & [ SYNSEM [ LOCAL [ PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], ARGS < [ SYNSEM.LOCAL [ PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ], [ SYNSEM.LOCAL [ PLACE-N #place-n, PLACE-V #place-v, PLACE-O #place-o ] ] > ]. structure-coordination-left := structure-coordination-left-side & [ SYNSEM [ LOCAL [ CAT [ LINEAR-C linear-c-did-left ], CONT [ HOOK #hook ] ] ], ARGS < [ SYNSEM.LOCAL [ CAT [ LINEAR-C linear-c-start ], CONT [ HOOK.INDEX #l-index ] ] ], [ SYNSEM.LOCAL [ CAT [ LINEAR-C linear-c-did-right ], CONT [ HOOK #hook & [ L-ARG #l-index ] ] ] ] >, C-CONT no-c-cont ]. structure-coordination-add-rel := structure-coordination-left-side & structure-add-1-rel & [ SYNSEM [ LOCAL.CONT.HOOK #hook ], ARGS < [ SYNSEM.LOCAL.CONT.HOOK.INDEX #l-index ], [ SYNSEM.LOCAL.CONT.HOOK.INDEX #r-index ] >, C-CONT [ HOOK #hook & [ INDEX #index ], RELS , HCONS ] ]. structure-coordination-asyndetic := structure-coordination-add-rel & [ SYNSEM [ LOCAL.CAT.LINEAR-C linear-c-did-left ], ARGS < [ SYNSEM.LOCAL.CAT.LINEAR-C linear-c-start ], [ SYNSEM.LOCAL.CAT.LINEAR-C linear-c-start ] > ]. structure-coordination-left2 := structure-coordination-add-rel & [ SYNSEM [ LOCAL.CAT.LINEAR-C linear-c-did-left ], ARGS < [ SYNSEM.LOCAL.CAT.LINEAR-C linear-c-start ], [ SYNSEM.LOCAL.CAT.LINEAR-C linear-c-did-left ] > ]. ; Verb coordination structure-coordination-v := structure-coordination & structure-anc-add-binary & structure-anc-inactive & [ SYNSEM.LOCAL.CONT psoa ]. structure-coordination-noslash-sep-subj := structure-coordination-v. ; No slash allowed, do not unify the XARGs of both verb phrases. ; - antje isst das brot und antje isst das brot ; - das brot stinkt und antje will das brot essen ; - isst antje das brot und isst antje das brot ; - dass antje das brot isst und antje das brot isst ; - wird antje das brot essen und peter das brot ablehnen? ; - bestimmt wird antje das brot essen und wird antje das brot essen structure-coordination-noslash-sep-subj-right := structure-coordination-right & structure-coordination-noslash-sep-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR [ FORM-VERB #form-verb ], MOD #mod & synsem-no-match ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < >, SPR < >, SPEC < >, XCOMP < > ] ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR [ FORM-VERB #form-verb ], MOD #mod ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-noslash-sep-subj-left-side := structure-coordination-noslash-sep-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR [ FORM-VERB #form-verb ], MOD #mod & synsem-no-match ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < >, SPR < >, SPEC < >, XCOMP < > ] ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR [ FORM-VERB #form-verb ], MOD #mod ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR [ FORM-VERB #form-verb ], MOD #mod ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-noslash-sep-subj-left := structure-coordination-noslash-sep-subj-left-side & structure-coordination-left. structure-coordination-noslash-sep-subj-left2 := structure-coordination-noslash-sep-subj-left-side & structure-coordination-left2. structure-coordination-noslash-sep-subj-asynd := structure-coordination-noslash-sep-subj-left-side & structure-coordination-asyndetic. structure-coordination-noslash-uni-subj := structure-coordination-v. ; No slash allowed, unify the XARGS of both verb phrases. ; - dass antje das brot isst und das brot isst ; - bestimmt wird antje das brot essen und das brot essen ; - wird antje das brot essen und das brot essen? structure-coordination-noslash-uni-subj-right := structure-coordination-right & structure-coordination-noslash-uni-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, MOD #mod & synsem-no-match ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < synsem >, SPR < >, SPEC < >, XCOMP < > ] ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, MOD #mod ], LINEAR #linear, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-noslash-uni-subj-left-side := structure-coordination-noslash-uni-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, MOD #mod & synsem-no-match ], LINEAR linear, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < synsem >, SPR < >, SPEC < >, XCOMP < > ] ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, MOD #mod ], LINEAR linear, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, MOD #mod ], LINEAR linear, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-noslash-uni-subj-left := structure-coordination-noslash-uni-subj-left-side & structure-coordination-left. structure-coordination-noslash-uni-subj-left2 := structure-coordination-noslash-uni-subj-left-side & structure-coordination-left2. structure-coordination-noslash-uni-subj-asynd := structure-coordination-noslash-uni-subj-left-side & structure-coordination-asyndetic. structure-coordination-slash-subj := structure-coordination-v. ; SLASH compulsory, unify both SLASHes (and hence, the XARG). ; - antje isst das brot und isst das brot ; - antje hat das brot gegessen und das brot gegessen ; - antje hat das brot gegessen und hat das brot gegessen structure-coordination-slash-subj-right := structure-coordination-right & structure-coordination-slash-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, VTYPE #vtype, MOD #mod & synsem-no-match ], BRANCHING #branching, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < >, SPR < >, SPEC < >, XCOMP < > ] ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-rslash-rel & [ SLASH local-match & [ CAT.HEAD head-super-noun & [ AGR.CASE case-nom ] ] ] ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, VTYPE #vtype, MOD #mod ], BRANCHING #branching, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-slash-subj-left-side := structure-coordination-slash-subj & [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, VTYPE #vtype, MOD #mod ], BRANCHING #branching, V-POS #v-pos, VOICE #voice, VAL #val & [ SUBJ < >, SPR < >, SPEC < >, XCOMP < > ] ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-rslash-rel & [ SLASH local-match & [ CAT.HEAD head-super-noun & [ AGR.CASE case-nom ] ] ] ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, VTYPE #vtype, MOD #mod ], BRANCHING #branching, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR #agr, VTYPE #vtype, MOD #mod ], BRANCHING #branching, V-POS #v-pos, VOICE #voice, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-slash-subj-left := structure-coordination-slash-subj-left-side & structure-coordination-left. structure-coordination-slash-subj-left2 := structure-coordination-slash-subj-left-side & structure-coordination-left2. structure-coordination-slash-subj-asynd := structure-coordination-slash-subj-left-side & structure-coordination-asyndetic. structure-coordination-rc := structure-coordination-v. ; Das Brot auf das ich mich freue und das du isst structure-coordination-rc-right := structure-coordination-right & structure-coordination-rc & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ MOD #mod & synsem-match ], V-POS #v-pos & v-pos-last, BRANCHING #branching & branching-right, VAL #val & val-saturated ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ MOD #mod ], V-POS #v-pos, BRANCHING #branching, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-rc-left-side := structure-coordination-rc & [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ MOD #mod & synsem-match ], V-POS #v-pos & v-pos-last, BRANCHING #branching & branching-right, VAL #val & val-saturated ] ], NONLOCAL #nonlocal & no-slash-rslash-rel ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ MOD #mod ], V-POS #v-pos, BRANCHING #branching, VAL #val ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-super-verb & [ MOD #mod ], V-POS #v-pos, BRANCHING #branching, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-rc-left := structure-coordination-rc-left-side & structure-coordination-left. structure-coordination-rc-left2 := structure-coordination-rc-left-side & structure-coordination-left2. structure-coordination-rc-asynd := structure-coordination-rc-left-side & structure-coordination-asyndetic. ; Noun coordinations structure-coordination-np-right := structure-coordination-right & structure-anc-add-binary & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT [ HEAD head-nominal & [ AGR [ CASE #case, GENDER gender, PERSON person-3, NUMBER number-pl ], MOD #mod & synsem-no-match, BARE #bare ], LINEAR linear-n-can-pre, VAL #val & val-saturated ] ], NONLOCAL #nonlocal & no-rslash-rel ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-nominal & [ AGR [ CASE #case, GENDER gender, PERSON person, NUMBER number ], MOD #mod, BARE #bare ], LINEAR linear-n-can-pre, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. ; After a coordination, it can't act as reflexive. structure-coordination-np-left-side := structure-coordination & structure-anc-add-binary-self & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, GENDER gender, PERSON person-3, NUMBER number-pl ], MOD #mod & synsem-no-match, BARE #bare ], LINEAR linear-n-can-pre, VAL #val & val-saturated ] ], NONLOCAL #nonlocal & no-rslash-rel ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-nominal & [ AGR [ CASE #case, GENDER gender, PERSON person, NUMBER number ], MOD #mod, BARE #bare ], LINEAR linear-n-can-pre, VAL #val ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-nominal & [ AGR [ CASE #case, GENDER gender, PERSON person, NUMBER number ], MOD #mod ], LINEAR linear-n-can-pre, VAL #val ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-np-left := structure-coordination-np-left-side & structure-coordination-left. structure-coordination-np-left2 := structure-coordination-np-left-side & structure-coordination-left2. structure-coordination-np-asynd := structure-coordination-np-left-side & structure-coordination-asyndetic & [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal, ARGS < [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ], [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ] > ]. ; Extra constraints needed to reduce ambiguity. structure-coordination-nbar := structure-coordination-truncable & structure-anc-add-binary & structure-anc-inactive. ; In these nbar structures, the total structure get an undetermined number. This is to accomodate sentences like ; - kostenlose [ Gesundheitsversorgung und Ausbildung ] ; - [ Parteien und Massenorganisationen ] der DDR ; - Der [ französische Multi-Unternehmer und ehemalige Minister ] Bernard Tapie ; LINEAR percolated, so coord-trunc can see whether this side is a word or a phrase. ; Even though the whole coordinated nbar should have undetermined number, having the number from right conjunct is still usefule for coord-trunc. structure-coordination-nbar-right := structure-coordination-nbar & structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, PERSON person-3, NUMBER #number ], MOD #mod & synsem-no-match ], VAL #val & val-just-one-spec, LINEAR #linear ], CONT [ HOOK.XARG #det ] ], NONLOCAL #nonlocal & no-slash-rel-que ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, PERSON person-3, NUMBER #number ], MOD #mod ], VAL #val, LINEAR #linear ], CONT [ HOOK.XARG #det ] ], NONLOCAL #nonlocal & no-slash-rel-que ] ] > ]. structure-coordination-nbar-left-side := structure-coordination-nbar & [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, PERSON person-3 ], MOD #mod & synsem-no-match ], VAL #val & val-just-one-spec, LINEAR linear-n-start ], CONT [ HOOK.XARG #det ] ], NONLOCAL #nonlocal & no-slash-rel-que ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, PERSON person-3 ], MOD #mod ], VAL #val ], CONT [ HOOK.XARG #det ] ], NONLOCAL #nonlocal & no-slash-rel-que ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-non-pronominal & [ AGR [ CASE #case, PERSON person-3 ], MOD #mod ], VAL #val ], CONT [ HOOK.XARG #det ] ], NONLOCAL #nonlocal & no-slash-rel-que ] ] > ]. structure-coordination-nbar-left := structure-coordination-nbar-left-side & structure-coordination-left. structure-coordination-nbar-left2 := structure-coordination-nbar-left-side & structure-coordination-left2. structure-coordination-nbar-asynd := structure-coordination-nbar-left-side & structure-coordination-asyndetic & [ ARGS < [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ], [ SYNSEM.LOCAL.CAT.HEAD head-non-pronominal ] > ]. ; Extra constraints needed to reduce ambiguity. ;; PP coordination ;; There are two types of PP coordination. When it is coordinated, there is no way to determine what the FORM-ADP should be. ;; Therefore, the first requires the FORM-ADPs to be equal. The resulting CPP can be selected for by verbs, for example. ;; The second type can have conjuncts with different FORM-ADPs. The resulting CPP gets a FORM-ADP "--no-select--", so that it cannot be selected for. structure-coordination-eq-pp := structure-coordination & structure-anc-add-binary & structure-anc-inactive. structure-coordination-eq-pp-right := structure-coordination-eq-pp & structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD [ MOD synsem-no-match, FORM-ADP #form ], VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD [ FORM-ADP #form ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-eq-pp-left-side := structure-coordination-eq-pp & [ SYNSEM [ LOCAL [ CAT [ HEAD [ MOD synsem-no-match, EXTRA #extra, FORM-ADP #form ], VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD [ FORM-ADP #form, EXTRA #extra ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD [ FORM-ADP #form ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-eq-pp-left := structure-coordination-eq-pp-left-side & structure-coordination-left. structure-coordination-eq-pp-left2 := structure-coordination-eq-pp-left-side & structure-coordination-left2. structure-coordination-eq-pp-asynd := structure-coordination-eq-pp-left-side & structure-coordination-asyndetic. structure-coordination-diff-pp := structure-coordination & structure-anc-add-binary & structure-anc-inactive. structure-coordination-diff-pp-right := structure-coordination-diff-pp & structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod, FORM-ADP "--no-select--" ], VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-diff-pp-left-side := structure-coordination-diff-pp & [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod, EXTRA #extra, FORM-ADP "--no-select--" ], VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod, EXTRA #extra ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD head-adposition & [ MOD #mod ], VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-diff-pp-left := structure-coordination-diff-pp-left-side & structure-coordination-left. structure-coordination-diff-pp-left2 := structure-coordination-diff-pp-left-side & structure-coordination-left2. structure-coordination-diff-pp-asynd := structure-coordination-diff-pp-left-side & structure-coordination-asyndetic & [ ARGS < [ SYNSEM.LOCAL.CAT.HEAD.FORM-ADP #form ], [ SYNSEM.LOCAL.CAT.HEAD.FORM-ADP #form ] > ]. ; AP coordination structure-coordination-ap := structure-coordination-truncable & structure-anc-add-binary & structure-anc-inactive. ; LINEAR percolated, so coord-trunc can see whether this side is a word or a phrase. structure-coordination-ap-right := structure-coordination-ap & structure-coordination-right & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adjective, VAL val-saturated, LINEAR #linear ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated, LINEAR #linear ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-ap-left-side := structure-coordination-ap & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adjective, VAL val-saturated ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-ap-left := structure-coordination-ap-left-side & structure-coordination-left. structure-coordination-ap-left2 := structure-coordination-ap-left-side & structure-coordination-left2. structure-coordination-ap-asynd := structure-coordination-ap-left-side & structure-coordination-asyndetic & [ SYNSEM.LOCAL.CAT.HEAD head-adj-pred ]. ; The last addition to prevent spurious ambiguity in the form of DET ATTR ATTR N. ; AVP coordination structure-coordination-avp-right := structure-coordination-right & structure-anc-add-binary & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adverb, VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < sign, [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-avp-left-side := structure-coordination & structure-anc-add-binary & structure-anc-inactive & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & head-super-adverb, VAL val-saturated ] ], NONLOCAL #nonlocal & no-nonlocal ], ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated ] ], NONLOCAL #nonlocal ] ], [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL val-saturated ] ], NONLOCAL #nonlocal ] ] > ]. structure-coordination-avp-left := structure-coordination-avp-left-side & structure-coordination-left. structure-coordination-avp-left2 := structure-coordination-avp-left-side & structure-coordination-left2. structure-coordination-avp-asynd := structure-coordination-avp-left-side & structure-coordination-asyndetic. ; For sentences like: ; [ vier- bis fünfhundert ] Kriegsinvaliden ; im [ Kindes- und Jugendalter ] structure-coordination-trunc := structure-coordination & structure-anc-add-binary & structure-anc-inactive. structure-coordination-trunc-left-side := structure-coordination-trunc & [ SYNSEM [ LOCAL [ CAT [ HEAD #head, VAL #val ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal ], ARGS < lt-trunc & [ SYNSEM.LOCAL.CONT.HOOK.XARG #xarg ], structure-coordination-truncable & [ SYNSEM [ LOCAL [ CAT [ HEAD #head & n-j, VAL #val & [ COMPS < > ], LINEAR linear-start ], CONT [ HOOK.XARG #xarg ] ], NONLOCAL #nonlocal & no-nonlocal ] ] > ]. structure-coordination-trunc-left := structure-coordination-trunc-left-side & structure-coordination-left. structure-coordination-trunc-left2 := structure-coordination-trunc-left-side & structure-coordination-left2. ;;;;;;;;;;; ;; OTHER ;; ;;;;;;;;;;; ; Maybe it is better to make this a lexical rule? structure-psp-to-ap := structure-non-headed-unary & structure-add-1-rel & structure-anc-add-unary & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-verb & [ AGR.FORM-VERB form-verb-psp ], VAL val-just-one-subj, LINEAR-C #linear-c, VOICE voice-passive ], CONT [ HOOK [ INDEX #psp ] ] ], NONLOCAL no-nonlocal ] ] >, SYNSEM [ LOCAL [ CAT [ HEAD head-adj-attr & [ MOD synsem-nbar & [ LOCAL [ CAT.HEAD head-non-pronominal, CONT.HOOK.INDEX #mod ] ] ], VAL val-saturated, LINEAR-C #linear-c ], PLACE-N place-n-mid ], NONLOCAL no-nonlocal ], C-CONT [ HOOK [ INDEX #index ], RELS , HCONS ] ]. structure-direct-speech := structure-add-1-rel & structure-anc-inactive & structure-key-first & [ ARGS < [ SYNSEM [ LOCAL [ CAT [ HEAD head-name & [ AGR.CASE case-nom ], VAL val-saturated, LINEAR-C linear-c-finish, LINEAR linear-n-can-pre ], CONT [ HOOK [ INDEX #speaker ] ] ] ] ], [ SYNSEM synsem-sent & [ LOCAL [ CONT [ HOOK.INDEX #spoken ] ] ] ] >, SYNSEM synsem-sat & [ LOCAL [ CAT [ HEAD head-ds ], CONT [ HOOK #hook ] ] ], C-CONT [ HOOK #hook & [ INDEX #ds ], RELS , HCONS ] ].