"""Create logic_validator
Generated by Phi-Octopus Eden
2025-11-08 03:13:13.253844
"""

```python
def create_logic_validator(logic: str) -> callable:
    """
    Creates a logic validator function based on the given logical expression.

    Args:
        logic (str): A string representing the logical expression to be validated.
                     Example: "a and b or not c"

    Returns:
        callable: A function that takes in variables (a, b, c) as keyword arguments
                  and returns True if the logical expression evaluates to true,
                  otherwise False.

    Raises:
        ValueError: If the input string is not a valid logical expression.
    """

    import ast

    class LogicValidator(ast.NodeVisitor):
        def visit_BinOp(self, node: ast.BinOp) -> bool:
            left = self.visit(node.left)
            right = self.visit(node.right)
            if isinstance(node.op, ast.And):
                return left and right
            elif isinstance(node.op, ast.Or):
                return left or right
            else:
                raise ValueError("Unsupported binary operation")

        def visit_UnaryOp(self, node: ast.UnaryOp) -> bool:
            operand = self.visit(node.operand)
            if isinstance(node.op, ast.Not):
                return not operand
            else:
                raise ValueError("Unsupported unary operation")

        def visit_Name(self, node: ast.Name) -> bool:
            var_name = node.id
            try:
                return locals()[var_name]
            except KeyError:
                raise NameError(f"Undefined variable {var_name}")

    def validator(**kwargs):
        tree = ast.parse(logic, mode='eval')
        lv = LogicValidator()
        result = eval(compile(tree, filename="<ast>", mode="eval"), kwargs, {})
        return bool(result)

    return validator


# Example usage
validator_func = create_logic_validator("a and b or not c")
print(validator_func(a=True, b=False, c=True))  # Output: False
```