8.* "&!  !".&*. "#$(-./89:@G%RTZVglntw|{m '?Ys    %)- $(, "#$&'(*+,  #$%'()+,-45678  &! "  ""!.*.&*\\\\\\\\\VV2222222\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\VzVz2Vz2Vz2Vz2Vz2Vz2Vz2VzVW~  N"5!5tWx&P"TIIV`#\N x!3W }WW<OJ|O[2!pJNQ`KR R<RrRfRMRNRUWPUXZNRUWWSUWRRUWKRUWJUWYPUyUy1Uy1Uy1Uy1Uy1Uy1Uy1Uyfkfjfcahc`^jfcaaecaffcamfcanca_hggCgCgCgCgCgCgCgNMMNPPPPNNNNRUWWRRRRKKKKJJJJPPPPUyUy1Uy1Uy1Uy1Uy1Uy1Uy1UyjkkjhhhhjjjjfcaaffffmmmmnnnnhhhhJIHQiy !Sjv}z[o!Uu]^\`P_k~x.XNVAPCPDMS Sans Serif I MS Sans Serif C MS Sans Serif MS Sans SerifMS Sans SerifMS Sans SerifDP1MS Sans Serif1MS Sans SerifJohnJohnDPverbal2MS Sans SerifMS Sans SerifMaryMaryDPDP VP!IP"VP#V'$V%root-attach&MS Sans Serif'see(see)MS Sans Serif*MS Sans Serif+MS Sans Serif,MS Sans Serif-IP.I'/I0MS Sans Serif1MS Sans Serif2MS Sans Serif4MS Sans Serif5MS Sans Serif6MS Sans Serif7MS Sans Serif8CP9C':C;MS Sans SerifMS Sans Serif?ø@øAMS Sans SerifBMS Sans SerifCMS Sans SerifDMS Sans SerifEMS Sans SerifFMS Sans SerifGgrmrH+I+J+KMS Sans SerifLMS Sans SerifMMS Sans SerifNMS Sans SerifOMS Sans SerifP2Q+RC'SIPTCU+VcheckingWMS Sans SerifXMS Sans SerifYthatZthat[3\+]2^+_+`+aMS Sans SerifbMS Sans SerifcMS Sans SerifdMS Sans SerifeMS Sans SeriffMS Sans SerifgVPhMS Sans Serifi+jDPk+lV'mInVo1pMS Sans SerifqMS Sans SerifrMS Sans Serifslaughtlaughu+vwVPx+y+zVP{I'|V'}DP~+V12+MS Sans SerifarrivearriveMS Sans SerifIPMS Sans SerifMS Sans SerifMS Sans SerifMS Sans SerifMS Sans SerifmaymayMS Sans SerifMS Sans SerifMS Sans Serif2pastpastMS Sans Serif+MS Sans Serifsubj++define variables grammar, attach-control define function g1-set if grammar eq "" then let grammar = 1 message("Grammar is G1.") check-menu-item("g1-set") else alert ("You cannot change the grammar for a document once you have set it.") end if end define define function g2-set if grammar eq "" then let grammar = 2 message("Grammar is G2.") check-menu-item("g2-set") else alert ("You cannot change the grammar for a document once you have set it.") end if end define define function check-derivation define variable x if how-many-root-nodes > 1 then alert("There is more than one tree in the workspace. There is no unique derivation to test.") exit end if if how-many-root-nodes eq 0 then alert("The workspace is empty. There is no derivation to test.") exit end if for every node x if is-root-node(x) and label(x) ne "CP" then alert("This derivation is incomplete. All sentences must be rooted in CP.") exit end if if (checking(x) eq "+" or checking(x) eq grammar) then alert("This derivation is incomplete or incorrect.") exit end if end for alert("This derivation is at least minimally complete.") end define define menu "Grammar Choice/Checking" "g1-set" "G1" "g2-set" "G2" divider "check-derivation" "Check Derivation" end define define function open define variable x alert("For new documents, set the grammar before dragging any trees into the workspace.") for every node x if grmr(x) eq "1" then let grammar = 1 check-menu-item("g1-set") message("Grammar is G1.") alert("The grammar choice is defined for this document. See the message line.") exit else if grmr(x) eq "2" then let grammar = 2 check-menu-item("g2-set") message("Grammar is G2.") alert("The grammar choice is defined for this document. See the message line.") exit end if end if end for end define define function drag-from-lexicon(target-node) define variable x if grammar eq "" then alert("For new documents, set the grammar before dragging any trees into the workspace.") kill-node(target-node) exit end if if grmr(target-node) eq "+" then for every node x if grammar eq "1" then let grmr(x) = 1 else if grammar eq "2" then let grmr(x) = 2 end if end if end for end if end define define function is-dragging-allowed (target-node) if how-many-daughters(target-node) eq 1 and label(leftmost-daughter(target-node)) eq "t" then return(0) exit end if if is-root-node (target-node) then return(1) end if if verbal(target-node) ne"" then return(1) end if if label(target-node) eq "DP" then return(1) end if end define define function is-landing-allowed(dragged-node,target-node) if how-many-daughters(target-node) > 1 then return(0) exit end if if is-root-node(dragged-node) and root-attach(target-node) eq label(dragged-node) then let attach-control = "RT" return(1) exit end if if ((verbal(target-node) eq verbal(dragged-node)) and (checking(target-node) eq "+" or checking(target-node) eq "2")) and (not(is-root-node(dragged-node))) then if grmr(target-node) >= verbal(target-node) and c-command(target-node,dragged-node) then let attach-control = "HA" return(1) exit end if end if if (not (is-root-node(dragged-node))) and label(dragged-node) eq "DP" then if (label(bottom-max(dragged-node)) eq "VP" and subj(mother(dragged-node)) eq "+") and (grmr(target-node) eq 2 and label(target-node) eq "IP") then let attach-control = "HA" return(1) exit else if (grmr(target-node) eq "1" and label(target-node) eq "IP") or (grmr(target-node) eq "2" and label(target-node) eq "CP") then let attach-control = "HA" return(1) exit end if end if end if return(0) end define define function drag-completed(dragged-node,target-node) define variables index, temp, trace if attach-control = "RT" then if projection(target-node) eq "2" or (grammar eq "1" and label(target-node) eq "V'") then let root-attach(target-node) = "" let checking(target-node) = "" attach-daughter-to-left(dragged-node, target-node) else let root-attach(target-node) = "" let checking(target-node) = "" attach-daughter-to-right(dragged-node, target-node) end if end if if attach-control="HA" then let index = get-subscript (dragged-node) if index eq "" then let index = new-index set-subscript (dragged-node, index) end if let temp = clone-for-adjunction (dragged-node) attach-daughter-to-left (leftmost-daughter (temp), target-node) let verbal(target-node) = verbal(target-node) + 1 let checking(target-node) = "" if label (rightmost-daughter (target-node)) eq "ø" then kill-node (rightmost-daughter (target-node)) end if let trace = create-daughter-to-left (temp) set-subscript (mother (trace), index) set-node-label (trace, "t") set-node-projection (trace, "-1") set-node-category (trace, category(mother(trace))) end if end define DATATabl(HStri(HVersAA