[Right triangle ⏵ may be expanded, down triangle ⏷ to close. Button = tree pop-up. × = close pop-up.]

Terminal: run. Derivation Graphs: (left-to-right) compact / full; (top-down) full / compact.

Help: blue = parse inside. Abbr.: WS: Workspace; Initial WS: initial heads for Merge after LEX lookup.
×

Words: did John arrive
Initial WS 1: arriveθ varrive:pst:ext(do) John INFLv
WS 1: {arriveθ, John} varrive:pst:ext(do) INFLv
WS 2: {varrive:pst:ext(do), {arriveθ, John}} INFLv
WS 3: {INFLv, {varrive:pst:ext(do), {arriveθ, John}}} 
Final WS: {C, {INFLv, {varrive:pst:ext(do), {arriveθ, John}}}} 
INT/EXT: {C, {INFLv, {varrive:pst:ext(do), {arriveθ, John}}}}
EXT: John 3sg pst arrive
Spellout: John arrived
Blocked: inconsistent with input!
EXT: there 3sg pst arrive John
Spellout: there arrived John
Blocked: inconsistent with input!
Final WS: {CQ:aux(null,pst,arrive), {INFLv, {varrive:pst:ext(do), {arriveθ, John}}}} 
INT/EXT: {CQ:aux(null,pst,arrive), {INFLv, {varrive:pst:ext(do), {arriveθ, John}}}}
EXT: null pst arrive →→ John 3sg pst arrive
Spellout: 3sg pst do John arrive
Spellout: did John arrive
Parse found: null pst arrive →→ John 3sg pst arrive
EXT: null pst arrive →→ there 3sg pst arrive John
Spellout: 3sg pst do there arrive John
Spellout: did there arrive John
Blocked: inconsistent with input!