Multi-Step Legal Processes
Defining obligations and consequences
3.1 Beyond Single Rules: The CONTRACT Approach
Problem: Real legal processes involve multiple connected steps, not isolated rules.
Example Process: Charity registration involves application → assessment → decision → registration → ongoing compliance.
Traditional approach (limited):
-- These would be disconnected rules that don't connect to each other
PARTY applicant MUST `submit application`
PARTY Commissioner MUST `assess application`
PARTY Commissioner MUST `make decision`
CONTRACT approach (it's the powerful deontics of rules):
DECLARE CharityApplication
HAS applicantName IS A STRING
purposes IS A LIST OF Purpose
constitution IS A STRING
DECLARE Actor IS ONE OF
ApplicantActor HAS application IS A CharityApplication
CommissionerActor
DECLARE Action IS ONE OF
ProvideApplication HAS contents IS A STRING
AssessApplication HAS application IS A STRING
GIVEN applicant IS A CharityApplication
GIVETH A CONTRACT Actor Action
`registration process` MEANS
PARTY ApplicantActor applicant
MUST ProvideApplication "complete application documents"
WITHIN 30 -- reasonable time
HENCE FULFILLED -- This would connect to assessment in a full system
LEST FULFILLED -- Application incomplete
Key insight: Real legal processes involve connected steps that can be modeled as contracts.
3.2 Actor/Action Patterns
Structure who can do what:
DECLARE Actor IS ONE OF
CharityActor HAS charity IS A RegisteredCharity
PersonActor HAS person IS A Person
CommissionerActor -- Regulatory authority
ApplicantActor HAS application IS A CharityApplication
DECLARE Action IS ONE OF
ProvideApplication HAS contents IS A STRING
AssessApplication HAS application IS A STRING
RegisterCharity HAS charity IS A RegisteredCharity
IssueNotice HAS notice IS A STRING
Why This Works:
Legal precision: Matches how law defines roles and powers
Prevents errors: A charity can't issue regulatory notices
Clear authority: Shows who has power to do what
Example using structured actors/actions:
GIVEN application IS A STRING
GIVETH A CONTRACT Actor Action
`registration assessment` MEANS
PARTY CommissionerActor
MUST AssessApplication application
WITHIN 28 -- days
HENCE FULFILLED -- Would connect to registration decision
LEST FULFILLED -- Refuse registration with reasons
3.3 State Changes and Register Events
Legal processes change official records. We need to model how actions update the register:
DECLARE CharityRegister
HAS activeCharities IS A LIST OF RegisteredCharity
historicCharities IS A LIST OF RegisteredCharity
lastUpdated IS A Date
-- Show how registration changes the register (as a function)
GIVEN newCharity IS A RegisteredCharity
register IS A CharityRegister
date IS A Date
GIVETH A CharityRegister
`add charity to register` MEANS
CharityRegister (register's activeCharities) (register's historicCharities) date
-- Note: This is simplified - real implementation would add newCharity to the list
Complete process with state changes:
DECLARE Action IS ONE OF
RegisterCharity HAS charity IS A RegisteredCharity
UpdateRegister HAS newRegister IS A CharityRegister
GIVEN newCharity IS A RegisteredCharity
GIVETH A CONTRACT Actor Action
`complete registration` MEANS
PARTY CommissionerActor
MUST RegisterCharity newCharity
WITHIN 10 -- days to complete registration
HENCE FULFILLED -- Registration completed
LEST FULFILLED -- Registration failed
Success Check: You can now model connected legal processes, structured authority relationships, and state changes to official records.
Last updated