"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-07 07:41:56.222515
"""

```python
from typing import List, Dict

class KnowledgeBase:
    def __init__(self):
        self.knowledge = {}

    def add_fact(self, fact: str) -> None:
        """
        Adds a fact to the knowledge base.
        
        :param fact: A string representing the fact to be added.
        """
        if fact not in self.knowledge:
            self.knowledge[fact] = []

    def query(self, query: str) -> List[str]:
        """
        Queries the knowledge base for related facts.

        :param query: A string representing the query.
        :return: A list of related facts as strings.
        """
        return [fact for fact in self.knowledge if query.lower() in fact.lower()]

    def __str__(self) -> str:
        return f"KnowledgeBase({len(self.knowledge)} facts)"


class ReasoningEngine:
    def __init__(self, knowledge_base: KnowledgeBase):
        self.knowledge_base = knowledge_base

    def reason(self, problem_statement: str) -> List[str]:
        """
        Solves a specific problem using the reasoning engine.

        :param problem_statement: A string describing the problem to be solved.
        :return: A list of potential solutions or related facts as strings.
        """
        related_facts = self.knowledge_base.query(problem_statement)
        return related_facts

    def explain_reasoning(self, solution: str) -> None:
        """
        Provides a simple explanation for how the reasoning engine arrived at a solution.

        :param solution: A string representing the solution to be explained.
        """
        print(f"To arrive at the solution '{solution}', I searched for related facts and found: {self.knowledge_base.query(solution)}")

    def __str__(self) -> str:
        return f"ReasoningEngine({len(self.knowledge_base.knowledge)} knowledge)"


# Example usage
if __name__ == "__main__":
    kb = KnowledgeBase()
    kb.add_fact("Water boils at 100 degrees Celsius")
    kb.add_fact("Gold is a precious metal")
    
    engine = ReasoningEngine(kb)
    
    # Solving the problem: What temperature does water boil?
    solution = engine.reason("What temperature does water boil?")
    print(solution)  # Should output ['Water boils at 100 degrees Celsius']
    
    # Explanation
    engine.explain_reasoning(solution[0])
```
```python
# Output:
# ['Water boils at 100 degrees Celsius']
# To arrive at the solution 'Water boils at 100 degrees Celsius', I searched for related facts and found: ['Water boils at 100 degrees Celsius']
```