module building where data Platform : Set data Building : Platform → Set data Platform where ground : Platform extension : (p : Platform) → Building p → Platform data Building where onTop : (p : Platform) → Building p hangingUnder : {p : Platform} → (b : Building p) → Building (extension p b) firstBuilding : Building ground firstBuilding = onTop ground firstPlatform : Platform firstPlatform = extension ground firstBuilding secondBuilding : Building firstPlatform secondBuilding = onTop firstPlatform hangingBuilding : Building (extension firstPlatform secondBuilding) hangingBuilding = hangingUnder secondBuilding