"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-06 11:04:36.888973
"""

```python
from typing import List, Dict, Any


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

    def add_fact(self, fact: str) -> None:
        """
        Adds a new fact to the knowledge base.

        :param fact: A string representing the fact.
        """
        if fact not in self.knowledge:
            self.knowledge[fact] = []

    def get_facts(self) -> Dict[str, List[Any]]:
        """
        Returns all facts stored in the knowledge base along with their associated evidence.

        :return: A dictionary where keys are facts and values are lists of evidence.
        """
        return self.knowledge

    def derive_conclusion(self, rule: str) -> bool:
        """
        Derives a conclusion based on a given inference rule.

        :param rule: A string representing the inference rule.
        :return: True if the conclusion can be derived from existing knowledge; False otherwise.
        """
        premise1, premise2, conclusion = rule.split(' -> ')
        return (premise1 in self.knowledge and
                premise2 in self.knowledge and
                conclusion not in self.knowledge)


def create_reasoning_engine() -> KnowledgeBase:
    """
    Creates a reasoning engine that can add facts to a knowledge base,
    retrieve all stored facts, and derive conclusions based on inference rules.

    :return: A newly initialized KnowledgeBase instance.
    """
    return KnowledgeBase()


# Example usage
if __name__ == "__main__":
    reasoning_engine = create_reasoning_engine()
    reasoning_engine.add_fact("It is raining")
    reasoning_engine.add_fact("I have an umbrella")

    # Adding a rule that if it's raining and you have an umbrella, then you don't get wet.
    inference_rule = "It is raining -> I have an umbrella -> I am not getting wet"
    
    # Checking the conclusion based on the given rule
    print(reasoning_engine.derive_conclusion(inference_rule))  # Should return True

    facts = reasoning_engine.get_facts()
    for fact, evidence in facts.items():
        print(f"{fact}: {evidence}")
```
```python

# Output Example:
# It is raining: ['']
# I have an umbrella: ['']
# I am not getting wet: []
# True

```