packages feed

moonlight-category-0.1.0.0: src-laws/Moonlight/Category/Effect/Laws/Adhesive.hs

module Moonlight.Category.Effect.Laws.Adhesive
  ( lawSuites,
  )
where

import qualified Moonlight.Category.Effect.Harness as Harness
import Moonlight.Category.Effect.LawNames (LawName (..))
import Moonlight.Category.Effect.Laws.Generators (SampleUnitMorphism (..))
import Moonlight.Category.Pure.Adhesive (PBPOComplementWitness, PushoutComplementWitness)
import Moonlight.Category.Pure.Unit (UnitCat (..), UnitMor)
import Moonlight.Pale.Test.Laws.Suite (LawSuite, lawGroup, namedQuickCheckLaw)

adhesiveWitnessMonicSoundProp :: SampleUnitMorphism -> Bool
adhesiveWitnessMonicSoundProp (SampleUnitMorphism morphism) =
  Harness.adhesiveWitnessMonicSound @UnitCat UnitCat unitMorphismIsMonic morphism

pushoutComplementSquareProp :: SampleUnitMorphism -> Bool
pushoutComplementSquareProp (SampleUnitMorphism morphism) =
  Harness.pushoutComplementSquareCommutes @UnitCat UnitCat morphism morphism

pushoutComplementUniversalProp :: SampleUnitMorphism -> Bool
pushoutComplementUniversalProp (SampleUnitMorphism morphism) =
  Harness.pushoutComplementUniversal @UnitCat UnitCat unitPushoutComplementUniversal morphism morphism

pbpoPullbackSquareProp :: SampleUnitMorphism -> Bool
pbpoPullbackSquareProp (SampleUnitMorphism morphism) =
  Harness.pbpoPullbackSquareCommutes @UnitCat UnitCat morphism morphism

pbpoPushoutSquareProp :: SampleUnitMorphism -> Bool
pbpoPushoutSquareProp (SampleUnitMorphism morphism) =
  Harness.pbpoPushoutSquareCommutes @UnitCat UnitCat morphism morphism

pbpoComplementUniversalProp :: SampleUnitMorphism -> Bool
pbpoComplementUniversalProp (SampleUnitMorphism morphism) =
  Harness.pbpoComplementUniversal @UnitCat UnitCat unitPBPOComplementUniversal morphism morphism

unitMorphismIsMonic :: UnitMor -> Bool
unitMorphismIsMonic _ =
  True

unitPushoutComplementUniversal :: PushoutComplementWitness UnitCat -> Bool
unitPushoutComplementUniversal _ =
  True

unitPBPOComplementUniversal :: PBPOComplementWitness UnitCat -> Bool
unitPBPOComplementUniversal _ =
  True

lawSuites :: [LawSuite]
lawSuites =
  [ lawGroup
      "adhesive"
      [ namedQuickCheckLaw AdhesiveWitnessMonicSound adhesiveWitnessMonicSoundProp,
        namedQuickCheckLaw PushoutComplementSquareCommutes pushoutComplementSquareProp,
        namedQuickCheckLaw PushoutComplementUniversal pushoutComplementUniversalProp,
        namedQuickCheckLaw PBPOPullbackSquareCommutes pbpoPullbackSquareProp,
        namedQuickCheckLaw PBPOPushoutSquareCommutes pbpoPushoutSquareProp,
        namedQuickCheckLaw PBPOComplementUniversal pbpoComplementUniversalProp
      ]
  ]