# Idea: Reduct for hypergraphs

**Idea**: generalize the current notion of reduct for combo trees into a general graph-re-writing system that can compile hypergraphs down to a simpler 'normal form'. This is needed for several different projects.

## Reduct for PLN

One important place where even a very rudimentary reduct could be used is for avoiding the excessive representational richness in PLN. By reducing graphs to a simpler normal form, PLN could be made smaller, simpler and faster.

this email thread kicks it off:

*There's an obvious redundancy/symmetry in PLN between*

*ConceptNode : PredicateNode**InheritanceLink : ImplicationLink**SimilarityLink : EquivalenceLink**etc. etc.*

*The inference formulas are the same for both sides of the : ...*

*Mathematically there is a difference between the two sides, e.g.*

*-- ConceptNode corresponds to a set*

*-- PredicateNode corresponds to a (fuzzy) indicator function of a set*

and so on. A set of reduct rules could convert the one form into the other, as desired.

One way to think of this reduct is as a 'byte-code compiler': it would reduce incoming hypergraphs to a smaller, simpler set. As a result, PLN could be smaller and simpler, and could run faster.

## Reduct for MOSES

Currently, reduct works only on combo programs. If/when MOSES is ported to run on top of the atomspace, then we'd need a reduct that worked there.