Inductive Data Type

Explained in CoinductiveDataType