Skip to content

Latest commit

 

History

History
174 lines (121 loc) · 4.75 KB

File metadata and controls

174 lines (121 loc) · 4.75 KB

CSL-Core Syntax Specification

This document defines the official syntax, grammar, and semantics for Chimera Specification Language (CSL-Core).

CSL is a domain-specific language (DSL) designed for defining deterministic policies for AI agents. It compiles into an executable Intermediate Representation (IR) verified by Z3.


1. File Structure

A standard .csl file consists of two main blocks:

  1. CONFIG (Optional): Runtime and compiler settings.
  2. DOMAIN (Required): The problem space definitions and constraints.
CONFIG {
  ENFORCEMENT_MODE: BLOCK
}

DOMAIN MyDomain {
  VARIABLES { ... }
  STATE_CONSTRAINT MyRule { ... }
}

2. Configuration (CONFIG)

The configuration block controls the behavior of the CSL Compiler and Runtime Guard.

Key Type Allowed Values Default Description
ENFORCEMENT_MODE Enum BLOCK, WARN, LOG BLOCK Action to take on violation.
CHECK_LOGICAL_CONSISTENCY Bool TRUE, FALSE TRUE Enable Z3 formal verification at compile time.
ENABLE_FORMAL_VERIFICATION Bool TRUE, FALSE FALSE (Enterprise) Enable TLA+ engine.
ENABLE_CAUSAL_INFERENCE Bool TRUE, FALSE FALSE (Enterprise) Enable Causal Inference engine.
INTEGRATION String "native", "langchain" "native" Integration context metadata.

3. Domain Definition (DOMAIN)

The DOMAIN block encapsulates the context (variables) and the laws (constraints) of your system.

3.1 Variable Declarations (VARIABLES)

All variables referenced in constraints must be declared here to pass semantic validation. CSL supports three types of domains:

  • Range (Intervals): Defined by start..end (inclusive).
  • Set (Enums): Defined by explicit values { "A", "B" }.
  • Primitive Types: Int, Nat, BOOLEAN.
VARIABLES {
  amount: 0..100000            // Interval
  currency: {"USD", "EUR"}     // Set (String)
  risk_score: 0.0..1.0         // Interval (Float)
  is_verified: BOOLEAN         // Primitive
  kyc_level: Int               // Primitive
}

4. Constraints

Constraints are the core logic units. CSL-Core supports STATE_CONSTRAINT (invariants).

Structure:

STATE_CONSTRAINT rule_name {
  WHEN <condition_expression>
  THEN <action_expression>
}

4.1 Temporal Operators (WHEN Clause)

Defines when a rule applies.

Operator Description
WHEN Standard trigger. Applies if condition is true in current state.
ALWAYS Invariant. Condition is effectively TRUE (applies to all states).
BEFORE (Context-dependent) Pre-condition check.
AFTER (Context-dependent) Post-condition check.
EVENTUALLY (Liveness) Requires condition to be true in a future state.

4.2 Modal Operators (THEN Clause)

Defines the obligation or prohibition.

Operator Usage Logic Equivalent
MUST BE THEN status MUST BE "ACTIVE" status == "ACTIVE"
MUST NOT BE THEN risk MUST NOT BE "HIGH" risk != "HIGH"
MAY BE THEN status MAY BE "PENDING" (Permissive / No-op)
Comparisons THEN amount <= 1000 amount <= 1000

5. Expressions & Operators

CSL supports standard logic, arithmetic, and comparison operations within expressions.

5.1 Binary Operators

  • Logic: AND, OR
  • Comparison: ==, !=, <, >, <=, >=
  • Arithmetic: +, -, *, /, %

5.2 Unary Operators

  • Logic: NOT (e.g., NOT is_admin)
  • Arithmetic: - (e.g., -amount)

5.3 Built-in Functions

Only the following safe, side-effect-free functions are supported in CSL-Core:

  • len(x): Length of a string or list.
  • max(a, b): Maximum of two values.
  • min(a, b): Minimum of two values.
  • abs(x): Absolute value.

Note: Attempting to call other functions will result in a Compilation Error.

5.4 Member Access

Dot notation is supported for accessing nested JSON properties.

WHEN user.profile.age > 18

6. Lexical Structure

  • Comments: Support C-style single line // and multi-line /* ... */.
  • Strings: Double-quoted "value".
  • Booleans: Case-insensitive TRUE, FALSE.
  • Identifiers: Alphanumeric, must start with a letter ([a-zA-Z_][a-zA-Z0-9_]*).

7. Example Policy

CONFIG {
  ENFORCEMENT_MODE: BLOCK
}

DOMAIN PaymentGuard {
  VARIABLES {
    action: {"TRANSFER", "REFUND"}
    amount: 0..50000
    user_tier: {"BASIC", "PREMIUM"}
  }

  STATE_CONSTRAINT limit_basic_tier {
    WHEN action == "TRANSFER" AND user_tier == "BASIC"
    THEN amount <= 1000
  }

  STATE_CONSTRAINT no_refund_abuse {
    WHEN action == "REFUND"
    THEN amount MUST NOT BE > 5000
  }
}