# 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) ``` --- ## Related Resources - **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)