INNER CODE UNIT · Python

_lean_json

lean-dojo/TorchLean · torchlean/__init__.py:122

def _lean_json(value: Any, indent: int = 2) -> str:
    """Quote JSON constructors so Lean can reduce the importer inside proofs."""
    if value is None:
        return ".null"
    if isinstance(value, bool):
        return ".bool " + ("true" if value else "false")
    if isinstance(value, (int, Decimal)):
        number = Decimal(value)
        sign, digits, exponent = number.as_tuple()
        mantissa = int("".join(map(str, digits))) * (-1 if sign else 1)
        if exponent > 0:
            mantissa *= 10 ** exponent
        return f".num ⟨{mantissa}, {max(0, -exponent)}⟩"
    if isinstance(value, str):
        return ".str " + _lean_string(value)
    if isinstance(value, list):
        opening = ".arr #["
        entries = [_lean_json(item, indent + 2) for item in value]

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…