"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-06 17:43:50.306011
"""

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

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

    def add_fact(self, fact: str) -> None:
        """Add a new fact to the knowledge base."""
        if fact not in self.knowledge:
            self.knowledge[fact] = []

    def retrieve_facts(self, fact: str) -> List[str]:
        """Retrieve all facts related to the given fact."""
        return self.knowledge.get(fact, [])

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

    def add_fact(self, fact: str) -> None:
        """Add a new fact to the reasoning engine's knowledge base."""
        self.kb.add_fact(fact)

    def infer_new_facts(self) -> Dict[str, List[str]]:
        """
        Infer new facts by logical inference.
        
        Returns:
            A dictionary where keys are inferred facts and values are lists of
            supporting facts.
        """
        inferences = {}
        for fact in self.kb.knowledge:
            related_facts = self.kb.retrieve_facts(fact)
            if len(related_facts) > 1:  # Simplified condition to demonstrate limited reasoning
                inferred_fact = f"Inferred from {', '.join(related_facts)}"
                inferences[inferred_fact] = related_facts
        return inferences

# Example usage:
if __name__ == "__main__":
    kb = KnowledgeBase()
    kb.add_fact("All birds can fly")
    kb.add_fact("Penguins are birds")

    reasoning_engine = ReasoningEngine(kb)
    
    print("Adding facts to knowledge base...")
    reasoning_engine.add_fact("All penguins cannot fly")
    
    inferences = reasoning_engine.infer_new_facts()
    if inferences:
        for inferred, supports in inferences.items():
            print(f"Inferred: {inferred} from: {supports}")
    else:
        print("No new inferences made.")
```