Resolution rules #
This file defines resolution rules, which give the agreement form of a coordination from its conjuncts, and their application in order.
A resolution rule is of one of two types: at least one conjunct is of a sort (type A), or every conjunct is (type B), and the rule then selects a form; the logically possible type referring to a majority of the conjuncts is unattested. A language's rules are ordered, the first that applies selects the form, and a coordination to which no rule applies has no resolved form, an ineffable coordination. The final rule is often unconditional, an "otherwise" clause, and then every coordination has a form. The sort may be read off the conjuncts' gender, a syntactic rule, or their meaning, a semantic rule; the descriptor type is a parameter.
Rules of both types see only which descriptors occur among the conjuncts, never how many conjuncts bear one, so they cannot count: number resolution, which gives two singulars the dual and three the plural, is not of this form.
Main definitions #
Agreement.ResolutionRule: a rule, of type A (any) or type B (all), with its sort and the form it selects.Agreement.ResolutionRule.Applies: whether a rule applies to a list of conjuncts.Agreement.ResolutionRule.resolve: the form the first applicable rule of an ordered list selects.
Main results #
Agreement.ResolutionRule.resolve_congr: resolution depends only on which descriptors occur among the conjuncts.Agreement.ResolutionRule.resolve_any_otherwise: a type-A rule and its default are the type-B rule for the complementary sort with the two forms swapped.Agreement.ResolutionRule.resolve_factorsThrough: rules reading their sorts through a map resolve through it.
References #
A resolution rule: at least one conjunct (any) or every conjunct (all) of a sort, and
the form it selects.
- any
{α : Type u_1}
{G : Type u_2}
(p : α → Prop)
[DecidablePred p]
(g : G)
: ResolutionRule α G
The type-A rule: some conjunct is of the sort
p. - all
{α : Type u_1}
{G : Type u_2}
(p : α → Prop)
[DecidablePred p]
(g : G)
: ResolutionRule α G
The type-B rule: every conjunct is of the sort
p.
Instances For
The sort a rule asks of its conjuncts.
Equations
- (Agreement.ResolutionRule.any p g).pred = p
- (Agreement.ResolutionRule.all p g).pred = p
Instances For
The form a rule selects.
Equations
- (Agreement.ResolutionRule.any p g).out = g
- (Agreement.ResolutionRule.all p g).out = g
Instances For
Whether the rule applies to a coordination.
Equations
- (Agreement.ResolutionRule.any p g).Applies x✝ = ∃ (c : α), c ∈ x✝ ∧ p c
- (Agreement.ResolutionRule.all p g).Applies x✝ = ∀ (c : α), c ∈ x✝ → p c
Instances For
Equations
- (Agreement.ResolutionRule.any p g).instDecidableApplies x✝ = Agreement.ResolutionRule.instDecidableApplies._aux_1 p inst g x✝
- (Agreement.ResolutionRule.all p g).instDecidableApplies x✝ = Agreement.ResolutionRule.instDecidableApplies._aux_3 p inst g x✝
The unconditional final rule.
Equations
- Agreement.ResolutionRule.otherwise g = Agreement.ResolutionRule.all (fun (x : α) => True) g
Instances For
Whether a rule applies depends only on which descriptors occur among the conjuncts.
Apply ordered rules: the first that applies selects the form; none applying, the coordination has no resolved form.
Equations
- Agreement.ResolutionRule.resolve rs cs = Option.map Agreement.ResolutionRule.out (List.find? (fun (x : Agreement.ResolutionRule α G) => decide (x.Applies cs)) rs)
Instances For
A resolved form is the form of one of the rules.
Rules ending in an unconditional rule resolve every coordination.
Rules applying alike to two coordinations resolve them alike.
Resolution depends only on which descriptors occur among the conjuncts, so rules cannot count them.
A type-A rule with its default is the type-B rule for the complementary sort with the default swapped.
Rules whose sorts read the conjuncts through f give a resolution reading them through
f.