"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-08 18:31:44.998356
"""

```python
from typing import List, Dict

class KnowledgeBase:
    def __init__(self):
        self.facts = []

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

    def get_facts(self) -> List[str]:
        """Retrieve all facts in the knowledge base."""
        return self.facts


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

    def is_fact_present(self, fact: str) -> bool:
        """
        Check if a specific fact is present in the knowledge base.
        
        :param fact: The fact to check
        :return: True if the fact exists, False otherwise
        """
        return fact in self.knowledge_base.get_facts()

    def infer_new_fact(self, premises: List[str], conclusion: str) -> bool:
        """
        Infer a new fact from existing knowledge.
        
        This function is a simple implementation that checks if all premises are present to conclude the given fact.
        
        :param premises: A list of premises (facts)
        :param conclusion: The inferred fact
        :return: True if the inference can be made, False otherwise
        """
        for premise in premises:
            if not self.is_fact_present(premise):
                return False
        self.knowledge_base.add_fact(conclusion)
        return True


def example_usage():
    kb = KnowledgeBase()
    kb.add_fact("All humans need water to survive.")
    kb.add_fact("Socrates is a human.")

    reasoner = ReasoningEngine(knowledge_base=kb)

    print(reasoner.is_fact_present("Socrates needs water to survive."))  # Should return False initially

    premises = ["All humans need water to survive.", "Socrates is a human."]
    conclusion = "Socrates needs water to survive."

    if reasoner.infer_new_fact(premises, conclusion):
        print(reasoner.is_fact_present("Socrates needs water to survive."))  # Should now return True


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

This code defines a basic reasoning engine that can add facts and infer new facts based on existing ones. The `ReasoningEngine` class uses a simple truth maintenance system where it checks if all premises are true before inferring the conclusion as a new fact.