Understanding the Why
... why English is a bad programming language
5.1 Why Type Safety Matters for Law
The Problem: Legal drafting often suffers from ambiguity and inconsistency.
Example ambiguity:
"The charity must notify the person responsible within 30 days."
Questions arise:
Which person? The governor? The secretary? The Commissioner?
30 days from what event?
What form should the notification take?
L4's type safety prevents these problems:
DECLARE NotificationTarget IS ONE OF
Governor HAS name IS A STRING
Commissioner
Secretary HAS name IS A STRING
DECLARE NotificationEvent IS ONE OF
GovernorAppointment HAS date IS A Date
ConvictionReported HAS convictionDate IS A Date
AddressChange HAS changeDate IS A Date
DECLARE Actor IS ONE OF
CharityActor HAS charity IS A RegisteredCharity
DECLARE Action IS ONE OF
NotifyPerson HAS target IS A NotificationTarget
content IS A STRING
GIVEN charity IS A RegisteredCharity
notificationContent IS A STRING
event IS A NotificationEvent
GIVETH A PROVISION Actor Action
`notification obligation` MEANS
PARTY CharityActor charity
MUST NotifyPerson Commissioner notificationContent
WITHIN 30 -- days from event date
HENCE FULFILLED
LEST FULFILLEDBenefits:
Eliminates ambiguity: Exactly which person, exactly which event
Prevents inconsistency: Can't accidentally use wrong notification type
Enables automation: Computer can check compliance automatically
5.2 Why PROVISION Over Simple Rules
Traditional legal drafting: Each section states an isolated obligation.
Problem: Real legal processes are interconnected workflows, not isolated duties.
Example - Annual Return Process:
Art 13(7): Charity must file return
Art 13(8): Commissioner must publish data
Art 27(1): Commissioner may issue Required Steps Notice for non-compliance
Art 16(1): Commissioner may deregister for continued non-compliance
These are connected steps in a process, not separate obligations.
CONTRACT approach captures the connections:
Benefits:
Captures legal reality: Shows how legal processes actually work
Enables simulation: Can test complete workflows, not just isolated rules
Supports drafting: Reveals gaps and inconsistencies in legal design
5.3 Why Modular Architecture Works
Legal reality: Modern regulation involves primary law + multiple subsidiary instruments.
Jersey Charities Example:
Primary Law: Charities (Jersey) Law 2014
Core Financial Info Regs 2018: Defines financial reporting requirements
Additional Info Order 2018: Adds governor payment reporting
Timing Order 2019: Sets annual return deadlines
Reasons and Time Limits Order 2020: Appeals procedures
L4 modular approach:
Benefits:
Mirrors legal structure: Matches how law is actually organized
Supports collaboration: Different teams can work on different modules
Enables updates: Can amend subsidiary regulations without changing primary law
Reduces complexity: Each file focuses on its specific domain
5.4 Common Patterns in Regulatory Law
Recognition Patterns (registration, licensing):
Application → Assessment → Decision → Registration → Ongoing compliance
Ongoing Compliance Patterns (reporting, inspection):
Periodic obligations → Monitoring → Non-compliance → Enforcement → Resolution
Enforcement Patterns (sanctions, appeals):
Detection → Investigation → Decision → Sanction → Appeal → Final resolution
These patterns appear across different regulatory domains (charities, financial services, professional regulation, etc.)
L4 captures these patterns consistently:
Last updated
