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]