"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-06 18:06:43.453085
"""

```python
from typing import List, Dict

class ReasoningEngine:
    """
    A basic reasoning engine that attempts to solve a problem of limited reasoning sophistication.
    
    This engine can handle logical rules and apply them to a set of input data to infer new information.
    """

    def __init__(self, rules: List[Dict[str, any]], facts: Dict[str, bool] = {}):
        """
        Initialize the ReasoningEngine with given rules and initial facts.

        :param rules: A list of dictionaries where each dictionary contains a condition and an action
        :param facts: An optional dictionary containing initial known facts
        """
        self.rules = rules
        self.facts = facts

    def add_fact(self, fact_name: str, value: bool) -> None:
        """Add or update a fact in the engine."""
        self.facts[fact_name] = value

    def infer(self) -> Dict[str, bool]:
        """
        Apply the rules to current known facts and infer new information.

        :return: A dictionary of inferred facts
        """
        inferred_facts = {}
        for rule in self.rules:
            condition = rule.get('condition', {})
            action = rule.get('action', {})

            # Check if all conditions are met
            if all(self.facts.get(condition_key, False) == condition_value for condition_key, condition_value in condition.items()):
                inferred_facts.update(action)
        return inferred_facts

def example_usage():
    """
    Example usage of the ReasoningEngine.
    """

    rules = [
        {'condition': {'weather': 'sunny', 'humidity': 'low'}, 'action': {'is_good_day_for_outdoor_party': True}},
        {'condition': {'weather': 'rainy', 'humidity': 'high'}, 'action': {'need_umbrella': True}}
    ]

    engine = ReasoningEngine(rules, facts={'weather': 'sunny', 'humidity': 'low'})
    print("Initial Facts:", engine.facts)

    new_facts = engine.infer()
    print("Inferred Facts:", {**engine.facts, **new_facts})

if __name__ == "__main__":
    example_usage()
```