Probes as interaction and satisfaction specifications #
This file defines a probe over a goal type as two predicates on goals, following Deal's
interaction/satisfaction theory of Agree. A goal interacts with the probe when it bears features
the probe copies, and satisfies it when it bears features that halt the search. A search over an
ordered goal sequence stops at the first satisfying goal, and the probe Agrees with that goal when
it also interacts; a satisfying goal that does not interact absorbs the probe, Deal's satisfaction
without interaction. The outcome of a search is valued iff some goal satisfies the probe, and an
unvalued outcome is failed Agree, tolerated under Preminger's obligatory-operations model. A goal is
licensed when the search reaches it, as for Béjar and Rezac; which goals need licensing and which
satisfy the probe come apart in general, as for Halpert's Zulu L⁰, which every goal satisfies while
only augmentless nominals need it. The full operation, which copies from every interacting goal up
to the satisfier, is Probe.run in Probe/Run.lean.
Probe specifications, such as relativized targets, horizon profiles and articulated probes,
denote a Probe by a toProbe map rather than re-implementing search.
Main definitions #
Minimalist.Probe: an interaction predicate and a satisfaction predicate on goals.Minimalist.Probe.relativized,Minimalist.Probe.ofInt,Minimalist.Probe.insatiable,Minimalist.Probe.indiscriminate: the probes[INT:F, SAT:F],[INT:F, SAT:⊤],[INT:F, SAT:⊥]and[INT:⊤, SAT:⊤].Minimalist.Probe.search,Minimalist.Probe.agree: the first satisfying goal, and that goal when it interacts.Minimalist.Probe.outcome:valuediff the search finds a goal.Minimalist.Probe.Licensed,Minimalist.Probe.AllLicensed: a goal the search reaches, and every needy goal occurrence being reached.Minimalist.Probe.cascade: the first finding of an ordered sequence of probes.
Main results #
Minimalist.Probe.search_eq_some_iff_closest: locality as list search.Minimalist.Probe.not_rel_of_search_eq_some: the found goal is minimal for any precedence the sequence respects.Minimalist.Probe.AllLicensed.countP_le_one,Minimalist.Probe.relativized_allLicensed_iff: one search licenses at most one goal.Minimalist.Probe.indiscriminate_allLicensed_iff: under bare minimality only the closest goal may need licensing.
References #
A probe over goals of type α is an interaction predicate, the goals it copies from, and a
satisfaction predicate, the goals that halt its search ([Dea25a]).
- int : α → Bool
The goal bears features the probe copies.
- sat : α → Bool
The goal bears features that halt the probe's search.
Instances For
Equations
- Minimalist.Probe.instDecidableEqOutcome x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Minimalist.Probe.instReprOutcome = { reprPrec := Minimalist.Probe.instReprOutcome.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The probe relativized to f, which interacts with and is satisfied by the same goals, the
[INT:F, SAT:F] probe of [BR03] and [Pre14].
Equations
- Minimalist.Probe.relativized f = { int := f, sat := f }
Instances For
The probe satisfied by every goal and interacting with those that pass int, which Agrees
with the closest goal iff that goal is active, the Active Goal Hypothesis of [Cho00].
Equations
- Minimalist.Probe.ofInt int = { int := int, sat := fun (x : α) => true }
Instances For
The insatiable probe interacting with f, which no goal halts, so that it copies from every
f-goal in its domain, Multiple Agree ([Dea25a]).
Equations
- Minimalist.Probe.insatiable f = { int := f, sat := fun (x : α) => false }
Instances For
The indiscriminate probe, which every goal satisfies and interacts with, so that bare minimality delivers the closest goal ([Hal12]'s L⁰).
Equations
- Minimalist.Probe.indiscriminate = Minimalist.Probe.relativized fun (x : α) => true
Instances For
Search #
The found goal is a member of the sequence.
Over a two-goal sequence whose lower goal's satisfaction entails the higher's, the search lands on the higher goal if anywhere, the kernel of gluttony only in inverse configurations ([CK21]) and of highest-only licensing ([Hal12]).
A probe satisfied by every goal finds the closest one.
A probe satisfied by every goal Agrees with the closest one iff it interacts.
A relativized probe Agrees with the goal it finds.
Locality as list search. The probe finds a iff a satisfies it and every earlier goal
does not, so that nothing intervenes.
Over a goal sequence in which no later goal precedes an earlier one, the found goal is minimal among the satisfying goals.
Outcomes #
The outcome of an obligatory probing operation over a goal sequence, valued iff the search
finds a goal.
Equations
- p.outcome goals = if (p.search goals).isSome = true then Minimalist.Probe.Outcome.valued else Minimalist.Probe.Outcome.unvalued
Instances For
The probe is valued iff the search finds a goal.
The probe ends unvalued iff the search comes back empty.
The probe is valued iff some goal satisfies it.
The probe ends unvalued iff no goal satisfies it.
Widening satisfaction can only keep a probe valued. If p is valued and q is satisfied by
everything that satisfies p among goals, so is q.
Licensing #
Equations
- p.instDecidableLicensedOfDecidableEq goals a = Minimalist.Probe.instDecidableLicensedOfDecidableEq._aux_1 p goals a
Licensing is being the closest satisfying goal, with no satisfying goal intervening.
A licensed goal is a member of the sequence.
Licensing by the indiscriminate probe is being the structurally closest goal, bare minimality ([Hal12]'s L⁰).
The goals that needs selects are all licensed by the probe's single search when each of them
satisfies the probe and no goal before it does. The condition is on occurrences, like
List.Nodup, so one search licenses one occurrence and two equal needy goals are not both
licensed.
Equations
- p.AllLicensed needs goals = ((∀ (a : α), a ∈ goals → needs a = true → p.sat a = true) ∧ List.Pairwise (fun (a b : α) => needs b = true → p.sat a = false) goals)
Instances For
Equations
- One or more equations did not get rendered due to their size.
When all needy goals are licensed, the search reaches each of them.
Goals none of which needs licensing are all licensed.
One search licenses at most one needy goal.
Over goals without repetitions, all needy goals are licensed iff each is reached by the search.
On the diagonal, where the probe is relativized to exactly the needy goals, all needy goals are licensed iff at most one goal is needy, one search licensing one goal, the fact behind [Pre14]'s person restriction.
Licensing by the indiscriminate probe allows no needy goal below the head of the sequence, the highest-element condition of [Hal12].
Cascades #
The goal an ordered sequence of probes delivers, the first probe's finding, else the next's,
and so on. This is Probe.search at the goal level composed with List.findSome? at the probe
level, and also the single-slot morphological competition in which the first probe with output
wins the slot, as in [Pre14] where π⁰'s clitic beats #⁰'s exponent beats nothing.
Equations
- Minimalist.Probe.cascade ps goals = List.findSome? (fun (x : Minimalist.Probe α) => x.search goals) ps
Instances For
cascade is a monoid map (List (Probe α), ++) → (Option α, <|>), the single-slot
competition running the left probes and then the right.
The cascade's goal is a member of the sequence.