---
title: "Predicate"
description: "the tree, of three forms, over a population; an edit is a new predicate"
section: concepts
address: /concepts/predicate
contract: 0476e35e6e275db5
---

# Predicate

the tree, of three forms, over a population; an edit is a new predicate

[figure: Predicate is a definition at follows scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | definition |
| scope | follows |
| key | the hash of its tree |
| store | postgres |
| family | rules_engine |



## Fields


| field | type | required | note |
|---|---|---|---|
| `tree` | [PredicateNode](/concepts/predicatenode) | yes |  |
| `population` | [Population](/concepts/population) | yes |  |
| `tree_hash` | `hash` | yes |  |
| `register_hash` | `hash` | yes | the register it was written against |
| `compiler_version` | `text` | yes |  |
| `comparator_versions` | `{text:text}` | yes | each comparator's register hash, and under the key the bars of nearness the version of that parameter row the breadths resolved against |
| `summary_versions` | `{text:count}` | no | of each summary its right-hand sides name |
| `nearness` | `{text:share}` | no | for each leaf that names a breadth, keyed by the leaf's hash, the bar it resolved to under the bars of nearness at the version comparator_versions records; frozen, so a changed row never moves an armed predicate |
| `sentence` | `text` | no | the sentence a person would say |



## Routes that use it
No route takes or returns Predicate directly. The record holds it, and the objects that point at it reach it.
