Files
2025-11-30 09:07:22 +08:00

8.3 KiB
Raw Permalink Blame History

Symbolic Language Reference

Formal syntax for compact, expressive subagent prompts using lambda calculus and predicate logic.


Lambda Calculus

Function Definition

λ(parameters) → output | constraints

Example:

λ(feature_spec, todo_ref?) → (plan, execution_report, status) | TDD ∧ code_limits

Type Signatures

function_name :: InputType → OutputType

Examples:

parse_feature :: FeatureSpec → Requirements
execute_stage :: (Plan, StageNumber) → StageResult
quality_check :: StageResult → QualityReport

Function Application

function_name(arguments) = definition

Example:

parse_feature(spec) =
  extract(objectives, scope, constraints) ∧
  identify(deliverables) ∧
  assess(complexity)

Logic Operators

Conjunction (AND)

Symbol:

Usage:

condition1 ∧ condition2 ∧ condition3

Example:

validate(input) ∧ process(input) ∧ output(result)

Semantics: All conditions must be true

Disjunction (OR)

Symbol:

Usage:

condition1  condition2  condition3

Example:

is_complete(task)  is_blocked(task)  is_cancelled(task)

Semantics: At least one condition must be true

Negation (NOT)

Symbol: ¬

Usage:

¬condition

Example:

¬empty(results) ∧ ¬error(status)

Semantics: Condition must be false

Implication (THEN)

Symbol:

Usage:

step1 → step2 → step3 → result

Example:

parse(input) → validate → process → output

Semantics: Sequential execution or logical implication

Bidirectional Implication

Symbol:

Usage:

condition1 ↔ condition2

Example:

valid_input(x) ↔ passes_schema(x) ∧ passes_constraints(x)

Semantics: Conditions are equivalent (both true or both false)


Quantifiers

Universal Quantifier (For All)

Symbol:

Usage:

∀element ∈ collection: predicate(element)

Examples:

∀stage ∈ plan.stages: execute(stage)
∀result ∈ results: result.status == "complete"
∀stage ∈ stages: |code(stage)| ≤ 200

Semantics: Predicate must be true for all elements

Existential Quantifier (Exists)

Symbol:

Usage:

∃element ∈ collection: predicate(element)

Examples:

∃error ∈ results: error.severity == "critical"
∃stage ∈ stages: stage.status == "failed"

Semantics: Predicate must be true for at least one element

Unique Existence

Symbol: ∃!

Usage:

∃!element ∈ collection: predicate(element)

Example:

∃!config ∈ configs: config.name == "production"

Semantics: Exactly one element satisfies predicate


Set Operations

Element Of

Symbol:

Usage:

element ∈ collection

Example:

"complete" ∈ valid_statuses
stage ∈ plan.stages

Subset

Symbol:

Usage:

set1 ⊆ set2

Example:

completed_stages ⊆ all_stages
required_tools ⊆ available_tools

Superset

Symbol:

Usage:

set1 ⊇ set2

Example:

all_features ⊇ implemented_features

Union

Symbol:

Usage:

set1  set2

Example:

errors  warnings → all_issues
agents_required  mcp_tools_required → dependencies

Intersection

Symbol:

Usage:

set1 ∩ set2

Example:

completed_stages ∩ tested_stages → verified_stages

Comparison Operators

Equality

Symbols: =, ==

Usage:

variable = value
expression == expected

Examples:

status = "complete"
result.count == expected_count

Inequality

Symbols: , !=

Usage:

value ≠ unwanted

Example:

status ≠ "error"

Less Than

Symbol: <

Usage:

value < threshold

Example:

error_count < 5

Less Than or Equal

Symbol:

Usage:

value ≤ maximum

Examples:

|code| ≤ 200
coverage ≥ 0.80 ∧ lines ≤ 150

Greater Than

Symbol: >

Usage:

value > minimum

Example:

coverage > 0.75

Greater Than or Equal

Symbol:

Usage:

value ≥ threshold

Examples:

coverage(stage) ≥ 0.80
integration_score ≥ 0.50

Special Symbols

Cardinality/Length

Symbol: |x|

Usage:

|collection|
|string|

Examples:

|code(stage)| ≤ 200
|results| > 0
|plan.stages| == expected_count

Delta (Change)

Symbol: Δx

Usage:

Δvariable

Examples:

ΔV_meta = V_meta(s_1) - V_meta(s_0)
Δcoverage = coverage_after - coverage_before

Prime (Next State)

Symbol: x'

Usage:

variable'

Examples:

state' = update(state)
results' = results + [new_result]

Subscript (Iteration)

Symbol: x_n

Usage:

variable_n

Examples:

V_meta_1 = evaluate(methodology_1)
iteration_n
stage_i

Composite Patterns

Conditional Logic

if condition then
  action1
else if condition2 then
  action2
else
  action3

Compact form:

condition ? action1 : action2

Pattern Matching

match value:
  case pattern1 → action1
  case pattern2 → action2
  case _ → default_action

List Comprehension

[expression | element ∈ collection, predicate(element)]

Example:

completed = [s | s ∈ stages, s.status == "complete"]
error_count = |[r | r ∈ results, r.status == "error"]|

Compactness Examples

Verbose vs. Compact

Verbose (50 lines):

First, we need to validate the input to ensure it meets all requirements.
If the input is valid, we should proceed to extract the objectives.
After extracting objectives, we need to identify the scope.
Then we should assess the complexity of the task.
Finally, we return the parsed requirements.

Compact (5 lines):

parse :: Input → Requirements
parse(input) =
  validate(input) ∧
  extract(objectives, scope) ∧
  assess(complexity) → requirements

Constraints

Verbose:

For each stage in the execution plan:
  - The code should not exceed 200 lines
  - The tests should not exceed 200 lines
  - The test coverage should be at least 80%
For the entire phase:
  - The total code should not exceed 500 lines
  - TDD compliance must be maintained
  - All tests must pass

Compact:

constraints :: PhaseExecution → Bool
constraints(exec) =
  ∀stage ∈ exec.plan.stages:
    |code(stage)| ≤ 200 ∧
    |test(stage)| ≤ 200 ∧
    coverage(stage) ≥ 0.80 ∧
  |code(exec.phase)| ≤ 500 ∧
  tdd_compliance(exec) ∧
  all_tests_pass(exec)

Style Guidelines

Function Names

  • Use snake_case: parse_feature, execute_stage
  • Descriptive verbs: extract, validate, generate
  • Domain-specific terminology: quality_check, error_analysis

Type Names

  • Use PascalCase: FeatureSpec, StageResult, PhaseReport
  • Singular nouns: Plan, Result, Report
  • Composite types: (Plan, StageNumber), [StageResult]

Variable Names

  • Use snake_case: feature_spec, stage_num, recent_errors
  • Abbreviations acceptable: req, exec, ctx
  • Descriptive in context: plan, result, report

Spacing

  • Spaces around operators: x ∧ y, a ≤ b
  • No spaces in function calls: function(arg1, arg2)
  • Indent nested blocks consistently

Line Length

  • Target: ≤80 characters
  • Break long expressions at logical operators
  • Align continuations with opening delimiter

Common Idioms

Sequential Steps

step1 → step2 → step3 → result

Conditional Execution

if condition then action else alternative

Iteration with Predicate

∀element ∈ collection: predicate(element)

Filtering

filtered = [x | x ∈ collection, predicate(x)]

Aggregation

total = sum([metric(x) | x ∈ collection])

Validation

valid(x) = constraint1(x) ∧ constraint2(x) ∧ constraint3(x)

  • Patterns: patterns.md (how to use symbolic language in patterns)
  • Integration Patterns: integration-patterns.md (agent/MCP/skill syntax)
  • Template: ../templates/subagent-template.md (symbolic language in practice)
  • Example: ../examples/phase-planner-executor.md (real-world usage)