# lawref.query.inference

*module*

Ф5: `query … over …` → эфемерный CLIR → существующие движки ядра.

Компилятор намеренно мал: он переводит связку атомов, сравнения и явные
binder-ы. Рекурсию, отрицание, стратификацию и сам вывод считает evaluator,
не LawQL.

## lawref.query.inference.compile_inference

*function*

```python
def compile_inference(query: InferenceQuery, target: dict, base_path: Path) -> tuple[dict, dict, dict]
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/query/inference.py#L139-L209)

## lawref.query.inference.execute_inference

*function*

```python
def execute_inference(query: InferenceQuery, store: FactStore, *, base_path: Path, engine: str = 'lawref', case_override: dict | None = None) -> dict
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/query/inference.py#L227-L243)
