Minimalist Machine Derivations

Files: grammar.pl / m12.pl / Back to homepage

Examples:

  • Extra relative clause examples collapse
    Example Instruction stream (clickable) Notes
    (rcx1) the boy John thinks called Mary
    the boy John thinks that called Mary
    [mary, d, call, 'v*', [boy, d_rel], 'Tpast', c_e, think, v_unerg, [john, d], 'T', c_rel, the] Relativize from embedded subject position.
    (rcx2) the student who lives here who studies English [[here, d, live, 'v*', [student, who_rel], 'T', c_rel], [english, d, study, 'v*', [student, who_rel], 'T', c_rel], the] Doubly stacked relative clause. Uses FormSet.
    (rcx3) the student who lives here who studies English who I know >[[here, d, live, 'v*', [student, who_rel], 'T', c_rel], [english, d, study, 'v*', [student, who_rel], 'T', c_rel],[student, who_rel, know, 'v*', [i, d], 'T', c_rel], the] Triply stacked relative clause. Uses FormSet.
  • Machine Parameters: expand

    Animation:
    (rcx1) the boy John thinks called Mary
    the boy John thinks that called Mary

    Derivation:
    (rcx1) the boy John thinks called Mary
    the boy John thinks that called Mary

    Stream:[[mary!D],[d!case!N],[call],[v*!phi],[[boy!D],[drel!case!N]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):
    SO:[]

    Step 1.

    Head of stream [mary!D] is the initial SO
    Stream:[[d!case!N],[call],[v*!phi],[[boy!D],[drel!case!N]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):
    SO:[mary!D]

    Step 2.

    Merge [d!case!N] and [mary!D]
    Label from [d!case!N] (syntactic head with an unvalued uF)
    Inherit interpretable feature(s) [f(phi,[3,sg,n])] from [mary!D]
    [d!case!N] values D on [mary!D]
    [mary] values N on [d!case!N]
    Stream:[[call],[v*!phi],[[boy!D],[drel!case!N]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):
    SO:[d!case[d][mary]]

    Step 3.

    Merge [call] and [d!case[d][mary]]
    Label from [call] (syntactic head merging with a non-head)
    Theta-mark [d!case[d][mary]]
    Push [d!case[d][mary]] (unvalued uF) onto stack
    Stream:[[v*!phi],[[boy!D],[drel!case!N]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d!case[d][mary]]
    SO:[call[call][d!case[d][mary]]]

    Step 4.

    Merge [v*!phi] and [call[call][d!case[d..][mary..]]]
    Label from [v*!phi] (syntactic head merging with a non-head)
    [d!case[d][mary]] values uPhi on [v*!phi]
    [v*] values acc case on [d!case[d][mary]]
    Stream:[[[boy!D],[drel!case!N]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d[d][mary]]
    SO:[v*[v*][call[call][d[d][mary]]]]

    Step 5.

    Begin substream
    Stream:[[boy!D],[drel!case!N]]
    Stack (⥥):
    SO:[]

    Step 6.

    Head of stream [boy!D] is the initial SO
    Stream:[[drel!case!N]]
    Stack (⥥):
    SO:[boy!D]

    Step 7.

    Merge [drel!case!N] and [boy!D]
    Label from [drel!case!N] (syntactic head with an unvalued uF)
    Inherit interpretable feature(s) [f(phi,[3,sg,n])] from [boy!D]
    [boy!D] values N on [drel!case!N]
    Push [boy!D] (unvalued uF) onto stack
    Stream:[]
    Stack (⥥):[boy!D]
    SO:[drel!case[drel][boy!D]]
    End substream, SO [drel!case[drel][boy!D]] re-inserted into main stream
    Substream stack [[boy!D]] saved for possible stack merge

    Step 8.

    Stream:[[drel!case[drel][boy!D]],[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d[d][mary]]
    SO:[v*[v*][call[call][d[d][mary]]]]

    Step 9.

    Merge [v*[v*][call[call..][d..]]] and [drel!case[drel][boy!D]]
    Label from [v*[v*][call[call..][d..]]] (edge feature)
    Theta-mark [drel!case[drel][boy!D]]
    Saved substream stack [[boy!D]] merged with stack
    Push [drel!case[drel][boy!D]] (unvalued uF) onto stack
    Stream:[[Tpast!phi],[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel!case[drel][boy!D]]
    [boy!D]
    [d[d][mary]]
    SO:[v*[drel!case[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]

    Step 10.

    Merge [Tpast!phi] and [v*[drel!case[drel..][boy..]][v*[v*..][call..]]]
    Label from [Tpast!phi] (syntactic head merging with a non-head)
    [drel!case[drel][boy!D]] values uPhi on [Tpast!phi]
    [Tpast] values nom case on [drel!case[drel][boy!D]]
    Stream:[[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    [d[d][mary]]
    SO:[Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]

    Step 11.

    Internal merge selected
    Merge [Tpast[Tpast][v*[drel..][v*..]]] and [drel[drel][boy!D]]
    Label from [Tpast[Tpast][v*[drel..][v*..]]] (edge feature)
    Stream:[[ce!T],[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    [d[d][mary]]
    SO:[Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]

    Step 12.

    Merge [ce!T] and [Tpast[drel[drel..][boy..]][Tpast[Tpast..][v*..]]]
    Label from [ce!T] (syntactic head merging with a non-head)
    Relativized TOS search for iF(T) skipping [drel[drel][boy!D]]
    Relativized TOS search for iF(T) skipping [boy!D]
    Relativized TOS search for iF(T) skipping [d[d][mary]]
    [ce!T] attracts [Tpast[drel[drel..][boy..]][Tpast[Tpast..][v*..]]]
    Internal merge selected
    Merge [ce[ce][Tpast[drel..][Tpast..]]] and [Tpast]
    Label from [ce[ce][Tpast[drel..][Tpast..]]] (edge feature)
    Stream:[[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    [d[d][mary]]
    SO:[ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]

    Step 13.

    Local Extent boundary at [ce[Tpast][ce[ce..][Tpast..]]]
    Stack element [drel[drel][boy!D]] with unvalued uF found
    Stack element [boy!D] with unvalued uF found
    New boundary (b) marker stacked
    Restack [boy!D] onto stack
    Restack [drel[drel][boy!D]] onto stack
    Stream:[[think],[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]

    Step 14.

    Merge [think] and [ce[Tpast][ce[ce..][Tpast..]]]
    Label from [think] (syntactic head merging with a non-head)
    Theta-mark [ce[Tpast][ce[ce..][Tpast..]]]
    Stream:[[vunerg],[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]

    Step 15.

    Merge [vunerg] and [think[think][ce[Tpast..][ce..]]]
    Label from [vunerg] (syntactic head merging with a non-head)
    Stream:[[[john!D],[d!case!N]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]

    Step 16.

    Begin substream
    Stream:[[john!D],[d!case!N]]
    Stack (⥥):
    SO:[]

    Step 17.

    Head of stream [john!D] is the initial SO
    Stream:[[d!case!N]]
    Stack (⥥):
    SO:[john!D]

    Step 18.

    Merge [d!case!N] and [john!D]
    Label from [d!case!N] (syntactic head with an unvalued uF)
    Inherit interpretable feature(s) [f(phi,[3,sg,n])] from [john!D]
    [d!case!N] values D on [john!D]
    [john] values N on [d!case!N]
    Stream:[]
    Stack (⥥):
    SO:[d!case[d][john]]
    End substream, SO [d!case[d][john]] re-inserted into main stream

    Step 19.

    Stream:[[d!case[d][john]],[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]

    Step 20.

    Merge [vunerg[vunerg][think[think..][ce..]]] and [d!case[d][john]]
    Label from [vunerg[vunerg][think[think..][ce..]]] (edge feature)
    Theta-mark [d!case[d][john]]
    Push [d!case[d][john]] (unvalued uF) onto stack
    Stream:[[T!phi],[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d!case[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[vunerg[d!case[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]

    Step 21.

    Merge [T!phi] and [vunerg[d!case[d..][john..]][vunerg[vunerg..][think..]]]
    Label from [T!phi] (syntactic head merging with a non-head)
    [d!case[d][john]] values uPhi on [T!phi]
    [T] values nom case on [d!case[d][john]]
    Stream:[[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]

    Step 22.

    Internal merge selected
    Merge [T[T][vunerg[d..][vunerg..]]] and [d[d][john]]
    Label from [T[T][vunerg[d..][vunerg..]]] (edge feature)
    Stream:[[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]

    Step 23.

    Merge [crel!rel!T!phi] and [T[d[d..][john..]][T[T..][vunerg..]]]
    Label from [crel!rel!T!phi] (syntactic head merging with a non-head)
    Relativized TOS search for iF(rel) skipping [d[d][john]]
    [drel[drel][boy!D]] values rel on [crel!rel!T!phi]
    [d[d][john]] values T on [crel!T!phi]
    [drel[drel][boy!D]] values phi on [crel!phi] (economy)
    [crel] values obq case on [drel[drel][boy!D]]
    Internal merge selected
    Merge [crel[crel][T[d..][T..]]] and [d[d][john]]
    Label from [crel[crel][T[d..][T..]]] (edge feature)
    Merge [crel[d[d..][john..]][crel[crel..][T..]]] and [drel[drel][boy!D]]
    Label from [crel[d[d..][john..]][crel[crel..][T..]]] (edge feature)
    Stream:[[the!case!N]]
    Stack (⥥):[d[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[crel[drel[drel][boy!D]][crel[d[d][john]][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]

    Step 24.

    Local Extent boundary at [crel[drel[drel..][boy..]][crel[d..][crel..]]]
    Stack element [drel[drel][boy!D]] with unvalued uF found
    Stack element [boy!D] with unvalued uF found
    New boundary (b) marker stacked
    Restack [boy!D] onto stack
    Restack [drel[drel][boy!D]] onto stack
    Stream:[[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[crel[drel[drel][boy!D]][crel[d[d][john]][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]

    Step 25.

    Merge [boy!D] and [crel[drel[drel..][boy..]][crel[d..][crel..]]]
    Label from [boy!D] (syntactic head merging with a non-head)
    Stream:[[the!case!N]]
    Stack (⥥):b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[boy!D[boy!D][crel[drel[drel][boy!D]][crel[d[d][john]][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]]

    Step 26.

    Merge [the!case!N] and [boy!D[boy!D][crel[drel..][crel..]]]
    Label from [the!case!N] (syntactic head merging with a non-head)
    Inherit interpretable feature(s) [f(phi,[3,sg,n])] from [boy!D[boy!D][crel[drel..][crel..]]]
    [the!case!N] values D on [boy!D[boy!D][crel[drel..][crel..]]]
    [boy[boy][crel[drel..][crel..]]] values N on [the!case!N]
    Stream:[]
    Stack (⥥):b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[the!case[the][boy[boy][crel[drel[drel][boy]][crel[d[d][john]][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy]][Tpast[Tpast][v*[drel[drel][boy]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]]]

    Parse:
    Spell-out:
    the boy John -s think that -ed(sg) call -acc Mary (after morpheme realization)
    the boy John think -s that call -ed(sg) Mary -acc (after affix-hop)
    the boy John think -s that call -ed(sg) Mary -acc (after morpheme realization, stage 2)
    the boy John thinks that called Mary  

    Backtrack

    Stream:[[crel!rel!T!phi],[the!case!N]]
    Stack (⥥):[d[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]
    re-doing step 23

    Step 27.

    [crel!T!phi] attracts [T[d[d..][john..]][T[T..][vunerg..]]]
    [drel[drel][boy!D]] values phi on [crel!phi] (economy)
    [crel] values obq case on [drel[drel][boy!D]]
    Internal merge selected
    Merge [crel[crel][T[d..][T..]]] and [T]
    Label from [crel[crel][T[d..][T..]]] (edge feature)
    Merge [crel[T][crel[crel..][T..]]] and [drel[drel][boy!D]]
    Label from [crel[T][crel[crel..][T..]]] (edge feature)
    Stream:[[the!case!N]]
    Stack (⥥):[d[d][john]]
    [drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][mary]]
    SO:[crel[drel[drel][boy!D]][crel[T][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]

    Step 28.

    Local Extent boundary at [crel[drel[drel..][boy..]][crel[T..][crel..]]]
    Stack element [drel[drel][boy!D]] with unvalued uF found
    Stack element [boy!D] with unvalued uF found
    New boundary (b) marker stacked
    Restack [boy!D] onto stack
    Restack [drel[drel][boy!D]] onto stack
    Stream:[[the!case!N]]
    Stack (⥥):[drel[drel][boy!D]]
    [boy!D]
    b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[crel[drel[drel][boy!D]][crel[T][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]

    Step 29.

    Merge [boy!D] and [crel[drel[drel..][boy..]][crel[T..][crel..]]]
    Label from [boy!D] (syntactic head merging with a non-head)
    Stream:[[the!case!N]]
    Stack (⥥):b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[boy!D[boy!D][crel[drel[drel][boy!D]][crel[T][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy!D]][Tpast[Tpast][v*[drel[drel][boy!D]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]]

    Step 30.

    Merge [the!case!N] and [boy!D[boy!D][crel[drel..][crel..]]]
    Label from [the!case!N] (syntactic head merging with a non-head)
    Inherit interpretable feature(s) [f(phi,[3,sg,n])] from [boy!D[boy!D][crel[drel..][crel..]]]
    [the!case!N] values D on [boy!D[boy!D][crel[drel..][crel..]]]
    [boy[boy][crel[drel..][crel..]]] values N on [the!case!N]
    Stream:[]
    Stack (⥥):b
    [d[d][john]]
    b
    [d[d][mary]]
    SO:[the!case[the][boy[boy][crel[drel[drel][boy]][crel[T][crel[crel][T[d[d][john]][T[T][vunerg[d[d][john]][vunerg[vunerg][think[think][ce[Tpast][ce[ce][Tpast[drel[drel][boy]][Tpast[Tpast][v*[drel[drel][boy]][v*[v*][call[call][d[d][mary]]]]]]]]]]]]]]]]]]]

    Parse:
    Spell-out:
    the boy that John -s think that -ed(sg) call -acc Mary (after morpheme realization)
    the boy that John think -s that call -ed(sg) Mary -acc (after affix-hop)
    the boy that John think -s that call -ed(sg) Mary -acc (after morpheme realization, stage 2)
    the boy that John thinks that called Mary  

    2 derivations found.
    Computational Cost:
    Merge: 24, Agree: 23, Unify: 0, Push: 4, Boundaries: 3, Inject: 6
    Non-TOS access: 4, Pop: 0, Depth cost: 62
    Step:0123456789101112131415161718192021222324252627282930
    Stack depth:0001100113333444000455556445644

    Back to top