# Command line **English** · 简体中文 The command line processes already saved RIR and also provides an entry point for [math function compilation](math-functions.md#command-line-and-cases). RIR input auto-detects both YAML and JSON text (the conventional extension is `.rir.yaml`); when writing RIR text, the format is selected with `--format yaml|json`, defaulting to `yaml`. ```bash oracq validate program.rir.yaml oracq inspect program.rir.yaml oracq requirements program.rir.yaml oracq emit program.rir.yaml -o program.originir oracq emit program.rir.yaml --basis toffoli-u3-cz -o basis.originir ``` {obj}`validate ` checks the structure and reports the open status. `inspect` prints the registers, resources, and capability description of the entry. `requirements` lists the unimplemented oracles reachable from the entry together with their call paths. ## Binding implementations ```bash oracq bind open.rir.yaml --bindings bindings.json --report binding-report.json -o closed.rir.yaml ``` A binding manifest is a JSON file that maps slot names to the implementation's RIR file and resource names: ```json { "Function": { "program": "lookup.rir.yaml", "resources": {"table": "values"} } } ``` `program` is resolved relative to the directory containing the binding manifest, and the RIR file it points to may be YAML or JSON text. The implementation's layout and alpha must match the slot. `--format` applies to the RIR text written by {obj}`bind `, `canonicalize`, and `compile-function`; the programs parsed from the two formats are identical field by field. For binding semantics and a runnable example see [Tutorial: replacing oracles](../tutorials/oracle-binding.md). ## Open and closed resource analysis ```bash oracq estimate open.rir.yaml --allow-open -o open-cost.json oracq estimate closed.rir.yaml -o closed-cost.json ``` The open report keeps oracle call counts and unknown workspaces; known costs must not be taken as the final total cost. For counting conventions and known gaps see [Resource estimation](resource-estimation.md). On binding failure the diagnostics named by `--report` are still written, and the command exits with a non-zero status. ## Execution ```bash oracq run closed.rir.yaml --memory memory.qram.yaml oracq run closed.rir.yaml --memory memory.qram.yaml --backend pysparq oracq run closed.rir.yaml --memory memory.qram.yaml --backend originir ``` The default is the [reference executor](backends.md#reference-executor). The memory file is qram YAML (format in the reference's [QRAM memory definitions](../reference/qram-memory.md)); it lists segments by entry resource name, and unspecified cells are zero. A failed execution returns a non-zero exit code; unfinished modules are never silently skipped. ## Math functions and QHAM ```bash oracq compile-function examples/math_functions.py --function pressure \ --width 12 --fraction 6 --mir-output out/pressure.mir.json -o out/pressure.rir.yaml python -m oracq.applications.qham --example burgers --order 2 --eta=-0.4 ``` The old QHAM entry point `python -m oracq.qham` is kept for compatibility. It and the new entry point call the same implementation; full usage is described in [General QHAM automatic generation](qham.md).