ROLE: Hypothesis Aggregator

TASK: {task}

RAW_HYPOTHESES:
{raw_hypotheses}

MAX_OUTPUT_BRANCHES: {max_branches}

INSTRUCTIONS:

1. ANALYSIS: Review all hypotheses for:
   - Overlapping approaches (candidates for merging)
   - Complementary strengths (can be combined)
   - Redundant or inferior approaches (can be discarded)

2. AGGREGATION STRATEGY:
   - MERGE similar hypotheses into unified, stronger versions
   - PRESERVE unique approaches that cover different solution families
   - DISCARD hypotheses that are strictly inferior to others
   - Reduce total count to at most {max_branches} branches

3. FOR EACH MERGED BRANCH:
   - Combine the best elements from source hypotheses
   - Explain WHY this combination is optimal
   - Track which original branches contributed (source_indices)

4. DISCARDING RULES:
   - Only discard if another hypothesis is strictly better
   - Never discard unique solution families
   - Document discarded indices

5. OUTPUT REQUIREMENTS:
   - Each branch must have a unique index (0-based, sequential)
   - combined_hypothesis: The merged/refined hypothesis text
   - source_indices: List of original branch indices used
   - merge_reasoning: Why this combination was chosen

OUTPUT: Follow AggregationResult schema exactly.
