# `Monty.Simulators.Synthetic.LearningModule`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/simulators/synthetic/learning_module.ex#L1)

A learning module that counts what it is shown, so the runtime can be
exercised before evidence matching is ported.

It keeps the same shape an `EvidenceGraphLM` will: percepts in a buffer, a
vote out, votes in, a top-down output and a goal. When the real module lands,
the coordinator does not change — only this stand-in goes away.

# `state`

```elixir
@type state() :: %{
  id: atom() | String.t(),
  percepts: [Monty.Cmp.Message.t()],
  votes_received: [term()],
  output: Monty.Cmp.Message.t() | nil
}
```

# `new`

```elixir
@spec new(atom() | String.t()) :: state()
```

---

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