"""Create fact_checker
Generated by Phi-Octopus Eden
2025-11-06 03:49:24.206299
"""

```python
from typing import List, Union
from functools import lru_cache

class FactChecker:
    """
    A simple fact checker that verifies if a given statement is supported by at least three pieces of evidence.
    Each piece of evidence must independently support the statement to be considered valid.
    """

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

    @lru_cache(maxsize=1024)
    def _verify_evidence(self, evidence: str) -> bool:
        """
        Verifies if a single piece of evidence supports the statement.

        :param evidence: A string representing a piece of evidence.
        :return: True if the evidence supports the statement, False otherwise.
        """
        # Example verification logic (simplified for demonstration)
        return 'true' in evidence.lower()

    def check_fact(self, statement: str, evidences: Union[str, List[str]]) -> bool:
        """
        Checks if a given statement is supported by at least three pieces of evidence.

        :param statement: A string representing the statement to be checked.
        :param evidences: A single string or list of strings, each being a piece of evidence.
        :return: True if the statement is supported by at least 3 valid pieces of evidence, False otherwise.
        """
        # Convert to list if not already
        if isinstance(evidences, str):
            evidences = [evidences]
        
        supporting_evidence_count = sum(self._verify_evidence(e) for e in evidences)
        
        return supporting_evidence_count >= 3

# Example usage:
if __name__ == "__main__":
    fact_checker = FactChecker()
    
    # Mock evidence
    mock_evidence_1 = "The sky is blue."
    mock_evidence_2 = "Trees are green and tall."
    mock_evidence_3 = "Water boils at 100 degrees Celsius under standard atmospheric pressure."
    mock_evidence_4 = "Cats can climb trees."  # This one will not support the statement
    
    # Statement to check
    statement_to_check = "The sky is blue and water boils at a certain temperature."

    # Check if statement is supported by evidence
    print(fact_checker.check_fact(statement_to_check, [mock_evidence_1, mock_evidence_3]))  # Should return True
    print(fact_checker.check_fact(statement_to_check, [mock_evidence_2, mock_evidence_4]))  # Should return False

```