aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/precedence.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/precedence.ml')
-rw-r--r--lib/kernel/precedence.ml14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/kernel/precedence.ml b/lib/kernel/precedence.ml
index c207117..7138b6a 100644
--- a/lib/kernel/precedence.ml
+++ b/lib/kernel/precedence.ml
@@ -91,3 +91,17 @@ let resolve rules ctx ~temporal ~sanctoral =
List.rev omitted
@ List.map (fun (c, _) -> (c, "omitted: admission limit reached")) dropped;
}
+
+(* RG 111(a): at most one commemoration, and it must be privileged -- see
+ the .mli for the full citation and why this is a derivation over the
+ admitted Low-Mass list rather than a second admission rule. [List.find_opt]
+ keeps input order, which is already precedence order (RG 113), so "the
+ first privileged entry, if any" is "the highest-precedence privileged
+ entry, if any" -- the correct single survivor if more than one privileged
+ commemoration were ever admitted together (not known to occur on any
+ shipped rite's data, but not assumed impossible either: this reads the
+ list rather than asserting its length). *)
+let sung_mass_commemorations low_mass_set =
+ match List.find_opt (fun (_, p) -> p = Privileged) low_mass_set with
+ | Some c -> [ c ]
+ | None -> []