# lawref.a3

*module*

Normative A3 parameter/table analyzer and CLIR lowerer.

The module deliberately stops at CLIR.  It never evaluates a parameter JSON or
decision-table JSON: generated helper ``FunctionDecl``/``Rule`` nodes are fed to
the ordinary evaluator.  Rust ``law-a3`` is a byte-differential port of this
file, not an alternative semantics.

## lawref.a3.MISSING_PARAMETER

*attribute* · *module attribute*

```python
MISSING_PARAMETER = 'urn:law:a3#MissingParameterValue'
```

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

## lawref.a3.NO_DECISION

*attribute* · *module attribute*

```python
NO_DECISION = 'urn:law:a3#NoDecision'
```

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

## lawref.a3.OK

*attribute* · *module attribute*

```python
OK = 'urn:law:a3#Result/Ok'
```

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

## lawref.a3.PARAM_FEATURE

*attribute* · *module attribute*

```python
PARAM_FEATURE = 'law.params/0.1'
```

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

## lawref.a3.RESULT

*attribute* · *module attribute*

```python
RESULT = 'urn:law:std#Result'
```

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

## lawref.a3.TABLE_FEATURE

*attribute* · *module attribute*

```python
TABLE_FEATURE = 'law.decision/0.1'
```

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

## lawref.a3.Segment

*class* · *dataclass*

```python
class Segment
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L351-L356)

### lawref.a3.Segment.lower

*attribute* · *instance attribute*

```python
lower: Any | None
```

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

### lawref.a3.Segment.lower_inc

*attribute* · *instance attribute*

```python
lower_inc: bool
```

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

### lawref.a3.Segment.upper

*attribute* · *instance attribute*

```python
upper: Any | None
```

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

### lawref.a3.Segment.upper_inc

*attribute* · *instance attribute*

```python
upper_inc: bool
```

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

## lawref.a3.lower_parameter

*function*

```python
def lower_parameter(source: dict, package: str, uri: str = 'memory:parameter') -> dict
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L306-L348)

## lawref.a3.lower_source

*function*

```python
def lower_source(source: dict, package: str, uri: str, enums: dict[str, list[str]] | None = None) -> dict
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L1094-L1100)

## lawref.a3.lower_table

*function*

```python
def lower_table(source: dict, package: str, uri: str = 'memory:table', enums: dict[str, list[str]] | None = None) -> dict
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L1081-L1091)

## lawref.a3.semantic_hash

*function*

```python
def semantic_hash(source: dict) -> str
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L51-L53)

## lawref.a3.semantic_projection

*function*

```python
def semantic_projection(source: dict) -> dict
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L32-L48)

## lawref.a3.validate_parameter

*function*

```python
def validate_parameter(source: dict, uri: str = 'memory:parameter') -> list[dict]
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L119-L211)

## lawref.a3.validate_table

*function*

```python
def validate_table(source: dict, uri: str = 'memory:table', enums: dict[str, list[str]] | None = None) -> list[dict]
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/a3.py#L594-L807)
