The Coordinator unit — marking + operation #
A coordinator (and / or / but / nor) is one thing: a lexical marking whose
role selects a Boolean operation. This file is the carrier-agnostic core of the
Coordinator API — it needs only Mathlib.Order.BooleanAlgebra, so Fragments import it
directly to type their lexical coordinators (the Semantics/Verb/Defs.lean precedent: a
word-class lexical-entry type at Semantics/{class}/Defs). The Denot-specific bridges
(genConj = op, engineOp, the BooleanAlgebra (Denot) instances) live downstream in
Semantics/Coordination/Basic.lean.
op is the at-issue truth-conditional operation: the role selects the Boolean method
(⊓ / ⊔ / (·⊔·)ᶜ), the instance supplies the algebra. It is faithful for and (.j),
or (.disj), nor (.negDisj/.negCoord); the additive .mu and adversative .advers
collapse onto and's meet here (op_mu_eq_j/op_advers_eq_j), their surplus content (M&S
additive/focus, adversative contrast) diverging to the relevant studies / the discourse layer.
Main definitions #
Coordinator.Role— which Boolean operation a coordinator denotes.Coordinator.op— the operation a role denotes, polymorphic over[BooleanAlgebra α].Coordinator— a lexical coordinator's marking (decidable data Fragments configure).
The role of a coordinator — which Boolean operation it denotes.
- j : Role
J particle: set intersection / conjunction proper (English "and", Hungarian "es", Georgian "da").
- mu : Role
MU particle: subset/additive (Hungarian "is", Georgian "-c", Japanese "mo"); at-issue identical to
j. - disj : Role
Disjunction (English "or", Hungarian "vagy").
- advers : Role
Adversative (English "but", Hungarian "de"); at-issue identical to
j. - negDisj : Role
Negative disjunction (Irish "na" = "nor").
- negCoord : Role
Negative coordination (Latin "neque/nec" = "neither...nor").
Instances For
Equations
- Coordinator.instDecidableEqRole x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Coordinator.instReprRole = { reprPrec := Coordinator.instReprRole.repr }
Equations
- Coordinator.instReprRole.repr Coordinator.Role.j prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.j")).group prec✝
- Coordinator.instReprRole.repr Coordinator.Role.mu prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.mu")).group prec✝
- Coordinator.instReprRole.repr Coordinator.Role.disj prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.disj")).group prec✝
- Coordinator.instReprRole.repr Coordinator.Role.advers prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.advers")).group prec✝
- Coordinator.instReprRole.repr Coordinator.Role.negDisj prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.negDisj")).group prec✝
- Coordinator.instReprRole.repr Coordinator.Role.negCoord prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Coordinator.Role.negCoord")).group prec✝
Instances For
Equations
- Coordinator.instBEqRole = { beq := Coordinator.instBEqRole.beq }
Equations
- Coordinator.instBEqRole.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
THE operation a role denotes, polymorphic over any Boolean carrier: the role selects
the Boolean method (⊓ / ⊔ / (·⊔·)ᶜ), the instance supplies the algebra. Faithful for
and (.j), or (.disj), nor (.negDisj/.negCoord); the additive .mu and
adversative .advers give only the at-issue meet — {j, mu, advers} all collapse onto
⊓ here, the surplus diverging (see op_mu_eq_j/op_advers_eq_j).
Equations
- Coordinator.op Coordinator.Role.j = fun (x1 x2 : α) => x1 ⊓ x2
- Coordinator.op Coordinator.Role.mu = fun (x1 x2 : α) => x1 ⊓ x2
- Coordinator.op Coordinator.Role.advers = fun (x1 x2 : α) => x1 ⊓ x2
- Coordinator.op Coordinator.Role.disj = fun (x1 x2 : α) => x1 ⊔ x2
- Coordinator.op Coordinator.Role.negDisj = fun (p q : α) => (p ⊔ q)ᶜ
- Coordinator.op Coordinator.Role.negCoord = fun (p q : α) => (p ⊔ q)ᶜ
Instances For
A coordination morpheme's marking — decidable data Fragments configure. The
denotation is not stored: it is Coordinator.op of role.
- form : String
Surface form of the morpheme.
- gloss : String
Gloss / translation.
- role : Role
Which Boolean operation it denotes.
- boundness : Boundness
Free word vs bound clitic/suffix.
- alsoAdditive : Bool
Does this morpheme also serve as an additive/focus particle?
- alsoQuantifier : Bool
Does this morpheme also serve as a quantifier particle? Japanese "mo" and "ka" both do — tracks the coordination-quantification connection.
- correlative : Bool
Can this morpheme be used in correlative (bisyndetic) patterns? Latin "et...et", "aut...aut".
- note : String
Notes on usage or distribution.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instReprCoordinator = { reprPrec := instReprCoordinator.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instBEqCoordinator.beq x✝¹ x✝ = false
Instances For
Equations
- instBEqCoordinator = { beq := instBEqCoordinator.beq }