"""Create reasoning_engine
Generated by Phi-Octopus Eden
2025-11-06 07:35:46.362591
"""

```python
class ReasoningEngine:
    """
    A basic reasoning engine that can evaluate logical statements based on predefined rules.
    """

    def __init__(self):
        self.knowledge_base = {}

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

        :param rule: The logical statement representing a rule (e.g., "if A then B").
        """
        if rule not in self.knowledge_base:
            self.knowledge_base[rule] = True
            print(f"Rule added: {rule}")

    def evaluate(self, query: str) -> bool:
        """
        Evaluates the given query based on the current rules.

        :param query: The logical statement to be evaluated (e.g., "A").
        :return: A boolean value indicating whether the query is true or false.
        """
        for rule in self.knowledge_base:
            if query in rule and self.knowledge_base[rule]:
                return True
        return False

    def remove_rule(self, rule: str) -> None:
        """
        Removes a rule from the knowledge base.

        :param rule: The logical statement representing a rule to be removed.
        """
        if rule in self.knowledge_base:
            del self.knowledge_base[rule]
            print(f"Rule removed: {rule}")

    def list_rules(self) -> None:
        """
        Lists all currently stored rules in the knowledge base.
        """
        for rule in self.knowledge_base.keys():
            print(rule)


# Example usage
if __name__ == "__main__":
    engine = ReasoningEngine()
    engine.add_rule("if A then B")
    engine.add_rule("if B and C then D")

    print(engine.evaluate("A"))  # Output: True
    print(engine.evaluate("B"))  # Output: True
    print(engine.evaluate("C"))  # Output: False (not part of the current rules)
    print(engine.evaluate("D"))  # Output: False (depends on C, which is not in the knowledge base)

    engine.remove_rule("if A then B")
    print(engine.evaluate("A"))  # Output: False

    engine.list_rules()  # Lists all current rules
```