BECAUSE

Provides a reason or justification for a breach in regulative rules. Used with BREACH to document why a violation occurred.

Syntax

BREACH BECAUSE reason
BREACH BY party BECAUSE reason

Where:

  • party - The party responsible for the breach (optional)
  • reason - A STRING explaining why the breach occurred

Purpose

BECAUSE serves two purposes in L4:

  1. Documentation - Records the legal reason for a breach, useful for generating explanations and audit trails
  2. Specificity - Distinguishes between different types of breaches in complex contracts

Examples

Example file:

-- BECAUSE Keyword Examples
-- Demonstrates breach reasons in regulative rules

--------------------------------------------------------------------------------
-- Type Declarations
--------------------------------------------------------------------------------

DECLARE Person IS ONE OF Seller, Buyer, Employee, Employer, Tenant, Landlord

DECLARE Action IS ONE OF
  `deliver goods`
  `pay amount` HAS amount IS A NUMBER
  `pass inspection`
  `disclose information`
  `pay rent` HAS amount IS A NUMBER
  `maintain property`
  smoke

--------------------------------------------------------------------------------
-- Basic BECAUSE Usage
--------------------------------------------------------------------------------

-- Simple breach with reason only
`delivery with reason` MEANS
  PARTY Seller
  MUST `deliver goods`
  WITHIN 14
  HENCE FULFILLED
  LEST BREACH BECAUSE "delivery deadline exceeded"

-- Full form: BY party BECAUSE reason
`delivery full form` MEANS
  PARTY Seller
  MUST `deliver goods`
  WITHIN 14
  HENCE FULFILLED
  LEST BREACH BY Seller BECAUSE "failed to deliver within contractual period"

--------------------------------------------------------------------------------
-- Distinguishing Different Breach Types
--------------------------------------------------------------------------------

-- Payment deadline breach
`payment deadline` MEANS
  PARTY Buyer
  MUST `pay amount` 1000
  WITHIN 30
  HENCE FULFILLED
  LEST BREACH BY Buyer BECAUSE "payment received after deadline"

-- Quality inspection failure
`quality check` MEANS
  PARTY Seller
  MUST `pass inspection`
  WITHIN 7
  HENCE FULFILLED
  LEST BREACH BY Seller BECAUSE "goods failed quality inspection per spec A.3"

--------------------------------------------------------------------------------
-- Referencing Legal Text in Reasons
--------------------------------------------------------------------------------

-- Reference to contract section
`nda obligation` MEANS
  PARTY Employee
  SHANT `disclose information`
  HENCE FULFILLED
  LEST BREACH BY Employee BECAUSE "violated NDA section 3.2"

-- Reference to lease agreement
`subletting prohibition` MEANS
  PARTY Tenant
  SHANT `disclose information`
  HENCE FULFILLED
  LEST BREACH BY Tenant BECAUSE "violated lease agreement section 8"

--------------------------------------------------------------------------------
-- Chained Obligations with Different Reasons
--------------------------------------------------------------------------------

`rental agreement` MEANS
  PARTY Tenant
  MUST `pay rent` 2000
  WITHIN 5
  HENCE (
    PARTY Landlord
    MUST `maintain property`
    WITHIN 30
    HENCE FULFILLED
    LEST BREACH BY Landlord BECAUSE "failed to perform maintenance duties"
  )
  LEST BREACH BY Tenant BECAUSE "rent payment overdue"

--------------------------------------------------------------------------------
-- BECAUSE in Prohibition (SHANT)
--------------------------------------------------------------------------------

`no smoking policy` MEANS
  PARTY Employee
  SHANT smoke
  HENCE FULFILLED
  LEST BREACH BY Employee BECAUSE "violated workplace no-smoking policy"

--------------------------------------------------------------------------------
-- Testing with #TRACE
--------------------------------------------------------------------------------

-- Test 1: Obligation fulfilled (no breach)
#TRACE `delivery with reason` AT 0 WITH
  PARTY Seller DOES `deliver goods` AT 10

-- Test 2: Obligation breached (deadline passes without action)
-- This will show the BECAUSE reason in the breach output
#TRACE `delivery full form` AT 0 WITH

-- Test 3: Prohibition violated
#TRACE `no smoking policy` AT 0 WITH
  PARTY Employee DOES smoke AT 5

-- Test 4: Chained obligation - first party fulfills, second breaches
#TRACE `rental agreement` AT 0 WITH
  PARTY Tenant DOES `pay rent` 2000 AT 3

Basic BECAUSE

-- Breach with reason only
PARTY Seller
MUST `deliver goods`
WITHIN 14
LEST BREACH BECAUSE "failed to deliver within deadline"

Full Form: BY and BECAUSE

-- Breach with party and reason
PARTY Seller
MUST `deliver goods`
WITHIN 14
LEST BREACH BY Seller BECAUSE "failed to deliver within deadline"

Multiple Breach Types

BECAUSE allows distinguishing between different breach scenarios:

-- Different breach reasons for different conditions
`delivery obligation` MEANS
  PARTY Seller
  MUST `deliver goods` qty PROVIDED qty AT LEAST 100
  WITHIN 14
  HENCE FULFILLED
  LEST BREACH BY Seller BECAUSE "insufficient quantity delivered"

`quality obligation` MEANS
  PARTY Seller
  MUST `pass inspection`
  WITHIN 7
  HENCE FULFILLED
  LEST BREACH BY Seller BECAUSE "goods failed quality inspection"

Usage Patterns

With LEST (Most Common)

BECAUSE typically appears in the LEST clause to explain what went wrong:

PARTY Employee
SHANT `disclose confidential information`
HENCE FULFILLED
LEST BREACH BY Employee BECAUSE "violated NDA section 3.2"

With HENCE (Unusual but Valid)

In rare cases, BECAUSE can appear with HENCE when exercising a permission itself triggers a breach:

-- Smoking is permitted but still recorded as a policy violation
PARTY Employee
MAY smoke
WITHIN 30
HENCE BREACH BY Employee BECAUSE "smoking policy violation logged"

In Chained Obligations

`payment chain` MEANS
  PARTY Buyer
  MUST `pay deposit` 1000
  WITHIN 7
  HENCE (
    PARTY Buyer
    MUST `pay balance` 9000
    WITHIN 30
    HENCE FULFILLED
    LEST BREACH BY Buyer BECAUSE "failed to pay balance"
  )
  LEST BREACH BY Buyer BECAUSE "failed to pay deposit"

BREACH Forms

BREACH can be used in several forms:

Form Example Description
Simple BREACH Anonymous breach
With party BREACH BY Seller Identifies responsible party
With reason BREACH BECAUSE "reason" Documents why
Full form BREACH BY Seller BECAUSE "reason" Complete breach info

Best Practices

1. Be Specific

-- ✅ Good: Specific reason
LEST BREACH BY Seller BECAUSE "delivery exceeded 14-day SLA"

-- ❌ Vague: Doesn't help with analysis
LEST BREACH BECAUSE "failed"
-- ✅ Good: References contract section
LEST BREACH BY Tenant BECAUSE "violated lease agreement section 8.3"

-- ✅ Also good: References regulation
LEST BREACH BY Employer BECAUSE "non-compliance with Employment Act s.42"

3. Use Meaningful Party Names

-- ✅ Good: Clear party identification
LEST BREACH BY `The Borrower` BECAUSE "exceeded debt covenant"

-- Less clear
LEST BREACH BY x BECAUSE "exceeded debt covenant"

4. Distinguish Breach Types

When a contract has multiple potential breaches, use BECAUSE to distinguish them:

-- Payment late vs. payment insufficient
LEST BREACH BY Buyer BECAUSE "payment received after deadline"

-- vs.

LEST BREACH BY Buyer BECAUSE "payment amount below minimum"

Type Checking

The BECAUSE clause must be a STRING type:

-- ✅ Valid: String literal
LEST BREACH BECAUSE "reason text"

-- ✅ Valid: String expression
LEST BREACH BECAUSE (CONCAT "failed to pay ", TOSTRING amount)

-- ❌ Invalid: Not a string
-- LEST BREACH BECAUSE 42

Evaluation and Tracing

When tracing regulative rules, BECAUSE reasons appear in the output:

#TRACE obligation AT 0 WITH
  -- No action taken, deadline passes
-- Output includes: BREACH BY Seller BECAUSE "failed to deliver"

This helps with:

  • Debugging contracts during development
  • Explainability when generating reports
  • Audit trails for compliance
  • BREACH - The violation marker
  • BY - Identifies the breaching party
  • LEST - Breach consequence clause
  • HENCE - Fulfillment consequence

See Also