Skip to content

Legacy.Base.Structures.Sigma.Products

Product structures


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

module Legacy.Base.Structures.Sigma.Products where

-- Imports from the Agda Standard Library ------------------------------------
open import Agda.Primitive  using ( _โŠ”_ ; lsuc ) renaming ( Set to Type )
open import Data.Product    using ( _,_ ; _ร—_ ; ฮฃ-syntax )
open import Level           using ( Level ; Lift )
open import Relation.Unary  using ( _โˆˆ_ ; Pred )

-- Imports from the Agda Universal Algebra Library ---------------------------
open import Overture                     using ( โˆฃ_โˆฃ ; โˆฅ_โˆฅ ; ฮ  ; ฮ -syntax )
open import Legacy.Base.Structures.Sigma.Basic  using ( Signature ; Structure ; _สณ_ ; _แต’_ )

private variable
 ๐‘… ๐น : Signature
 ฮฑ ฯ ฮน : Level

โจ… : {โ„‘ : Type ฮน}(๐’œ : โ„‘ โ†’ Structure  ๐‘… ๐น{ฮฑ}{ฯ}) โ†’ Structure ๐‘… ๐น {ฮฑ โŠ” ฮน} {ฯ โŠ” ฮน}
โจ… {โ„‘ = โ„‘} ๐’œ =  ฮ [ ๐”ฆ โˆˆ โ„‘ ] โˆฃ ๐’œ ๐”ฆ โˆฃ                         -- domain of the product structure
               , ( ฮป r a โ†’ โˆ€ ๐”ฆ โ†’ (r สณ ๐’œ ๐”ฆ) ฮป x โ†’ a x ๐”ฆ )  -- interpretations of relations
               , ( ฮป ๐‘“ a ๐”ฆ โ†’ (๐‘“ แต’ ๐’œ ๐”ฆ) ฮป x โ†’ a x ๐”ฆ )      -- interpretations of  operations

module _ {ฮฑ ฯ ฯ„ : Level}{๐’ฆ : Pred (Structure ๐‘… ๐น {ฮฑ}{ฯ}) ฯ„} where

 โ„“p : Level
 โ„“p = lsuc (ฮฑ โŠ” ฯ) โŠ” ฯ„

 โ„‘ : Type โ„“p
 โ„‘ = ฮฃ[ ๐‘จ โˆˆ Structure ๐‘… ๐น ] (๐‘จ โˆˆ ๐’ฆ)

 ๐”– : โ„‘ โ†’ Structure ๐‘… ๐น        -- (type \MfS to get ๐”–)
 ๐”– ๐”ฆ = โˆฃ ๐”ฆ โˆฃ

 class-prod : Structure ๐‘… ๐น
 class-prod = โจ… ๐”–

If p : ๐‘จ โˆˆ ๐’ฆ, we view the pair (๐‘จ , p) โˆˆ โ„‘ as an index over the class, so we can think of ๐”„ (๐‘จ , p) (which is simply ๐‘จ) as the projection of the product โจ… ๐”„ onto the (๐‘จ , p)-th component.