type algebra: |