# `ExDatalog.IR.Rule`
[🔗](https://github.com/thanos/ex_datalog/blob/v0.5.0/lib/ex_datalog/ir.ex#L175)

An IR rule: a head atom, a body of literals, an assigned stratum, and
optional metadata.

# `t`

```elixir
@type t() :: %ExDatalog.IR.Rule{
  body: [ExDatalog.IR.ir_literal()],
  head: ExDatalog.IR.Atom.t(),
  id: non_neg_integer(),
  metadata: map(),
  stratum: non_neg_integer()
}
```

# `serialize`

```elixir
@spec serialize(t()) :: map()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
