Skip to content

Classical.Bundles

Stdlib-shaped record bundles for classical structures

This is the Classical.Bundles module of the Agda Universal Algebra Library.

The Classical/Bundles/ subtree houses the record-typed bundle views of the classical structures. Each per-structure file Classical/Bundles/X.lagda.md declares a record whose fields match the corresponding Algebra.Bundles.X in the Agda standard library, and supplies bidirectional conversion functions between this record and the canonical Σ-typed core defined in Classical/Structures/X. The two representations carry the same mathematical content and round-trip through each other up to the underlying setoid equivalence; the bundle view exists solely so that code typed against Algebra.Bundles can be reused without writing the stdlib record by hand.

The cost of the bundle view is bounded and predictable: per structure it is one record definition, two conversion functions, and a round-trip proof. The design rationale — including why this is not a parallel implementation of the structure but rather a narrow interop view — is recorded in ADR-002.

This file is the umbrella for the subtree. Round-trip and acceptance-check lemma names carry a per-structure suffix (-ma, -sg, -mn, -gr, …), precisely so the umbrellas can public-export every structure's witnesses without collision.

{-# OPTIONS --cubical-compatible --exact-split --safe #-}

module Classical.Bundles where

open import Classical.Bundles.AbelianGroup public
open import Classical.Bundles.CommutativeMonoid public
open import Classical.Bundles.CommutativeRing public
open import Classical.Bundles.CommutativeSemigroup public
open import Classical.Bundles.DistributiveLattice public
open import Classical.Bundles.Group public
open import Classical.Bundles.Lattice public
open import Classical.Bundles.Magma public
open import Classical.Bundles.Monoid public
open import Classical.Bundles.Ring public
open import Classical.Bundles.Semigroup public
open import Classical.Bundles.Semilattice public