"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-08 15:09:18.573607
"""

```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.
        """
        self.knowledge[fact] = True

    def query(self, facts: List[str]) -> bool:
        """
        Queries if all provided facts are in the knowledge base.

        :param facts: A list of strings representing the facts to be queried.
        :return: True if all facts are present, False otherwise.
        """
        return all(fact in self.knowledge for fact in facts)

class ReasoningEngine:
    def __init__(self):
        self.kb = KnowledgeBase()

    def add_fact(self, fact: str) -> None:
        self.kb.add_fact(fact)

    def query_reasoning(self, statement: str) -> bool:
        """
        Queries the knowledge base for a specific statement.

        :param statement: A string representing the statement to be queried.
        :return: True if the statement is supported by the knowledge, False otherwise.
        """
        facts = statement.split(" and ")
        return self.kb.query(facts)

    def explain_reasoning(self, statement: str) -> Dict[str, bool]:
        """
        Explains the reasoning for a specific statement based on the knowledge base.

        :param statement: A string representing the statement to be explained.
        :return: A dictionary with facts as keys and their status (True/False) in the knowledge base.
        """
        facts = statement.split(" and ")
        results = {fact: fact in self.kb.knowledge for fact in facts}
        return results

# Example usage
engine = ReasoningEngine()
engine.add_fact("It is raining")
engine.add_fact("I have an umbrella")

print(engine.query_reasoning("It is raining"))
# Output: True

print(engine.explain_reasoning("It is raining and I have an umbrella"))
# Output: {'It is raining': True, 'I have an umbrella': True}
```