Voice system typology #
Theory-neutral types for cross-linguistic voice-system typology — how languages
map argument roles to a privileged syntactic position (the "pivot") via voice
alternation. Per-language data are bare def voices : List VoiceEntry and
def symmetry : VoiceSystemSymmetry in Fragments/<Lang>/…; the queries below
operate on the voice list.
Main definitions #
PivotTarget: the role a voice promotes to pivot (finer thanArgumentRole).VoiceEntry,VoiceSystemSymmetry: one voice (name + promoted role); system symmetry.Voice.voiceCount/promotesRole/distinguishesObliques/isActivePassive/promotableRoles: queries over a language'sList VoiceEntry.
Pivot target #
Which argument role a voice promotes to pivot. Finer-grained than
Extraction.ArgumentRole: Philippine-type systems distinguish locative,
instrumental, benefactive, and circumstantial pivots, all collapsing to oblique.
- agent : PivotTarget
- patient : PivotTarget
- locative : PivotTarget
- instrumental : PivotTarget
- benefactive : PivotTarget
- circumstantial : PivotTarget
Instances For
Equations
- Voice.instDecidableEqPivotTarget x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Voice.instReprPivotTarget = { reprPrec := Voice.instReprPivotTarget.repr }
Equations
- One or more equations did not get rendered due to their size.
- Voice.instReprPivotTarget.repr Voice.PivotTarget.agent prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Voice.PivotTarget.agent")).group prec✝
- Voice.instReprPivotTarget.repr Voice.PivotTarget.patient prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Voice.PivotTarget.patient")).group prec✝
- Voice.instReprPivotTarget.repr Voice.PivotTarget.locative prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Voice.PivotTarget.locative")).group prec✝
Instances For
Coarsen a PivotTarget to a Extraction.ArgumentRole (obliques collapse).
Equations
- Voice.PivotTarget.agent.toArgumentRole = Extraction.ArgumentRole.agent
- Voice.PivotTarget.patient.toArgumentRole = Extraction.ArgumentRole.patient
- Voice.PivotTarget.locative.toArgumentRole = Extraction.ArgumentRole.oblique
- Voice.PivotTarget.instrumental.toArgumentRole = Extraction.ArgumentRole.oblique
- Voice.PivotTarget.benefactive.toArgumentRole = Extraction.ArgumentRole.oblique
- Voice.PivotTarget.circumstantial.toArgumentRole = Extraction.ArgumentRole.oblique
Instances For
Voice entry and symmetry #
A single voice in a voice system: a name and the role it promotes.
- name : String
Name of the voice (e.g., "Actor Voice", "Patient Voice").
- promotes : PivotTarget
Which argument role this voice promotes to pivot.
Instances For
Equations
- Voice.instDecidableEqVoiceEntry.decEq { name := a, promotes := a_1 } { name := b, promotes := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Voice.instReprVoiceEntry = { reprPrec := Voice.instReprVoiceEntry.repr }
Whether a voice system is symmetrical (no basic voice, e.g. Tagalog) or asymmetrical (one basic voice, e.g. English active/passive).
- symmetrical : VoiceSystemSymmetry
- asymmetrical : VoiceSystemSymmetry
Instances For
Equations
- Voice.instDecidableEqVoiceSystemSymmetry x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Voice.instReprVoiceSystemSymmetry = { reprPrec := Voice.instReprVoiceSystemSymmetry.repr }
Queries over a voice inventory #
Does any voice promote a given role?
Equations
- Voice.promotesRole voices r = ∃ (v : Voice.VoiceEntry), v ∈ voices ∧ v.promotes = r
Instances For
Equations
- Voice.instDecidablePromotesRole voices r = Voice.instDecidablePromotesRole._aux_1 voices r
Does the system distinguish among oblique pivots (locative, instrumental, benefactive, circumstantial)?
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
A simple active/passive system: exactly agent + patient.
Equations
- Voice.isActivePassive voices = (Voice.voiceCount voices = 2 ∧ Voice.promotesRole voices Voice.PivotTarget.agent ∧ Voice.promotesRole voices Voice.PivotTarget.patient)
Instances For
Equations
The roles promotable to pivot in a system.
Equations
- Voice.promotableRoles voices = (List.map (fun (x : Voice.VoiceEntry) => x.promotes) voices).eraseDups