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