module Cubical.Tactics.CategorySolver.Examples where
open import Cubical.Foundations.Prelude
open import Cubical.Categories.Category
open import Cubical.Tactics.CategorySolver.Reflection
private
  variable
    โ โ' : Level
module Examples (๐ : Category โ โ') where
  open Category ๐
  _ : โ {A} โ id {A} โก id {A}
  _ = solveCat! ๐
  _ : โ {A B}{f : ๐ [ A , B ]}
    โ f โ id โก f
  _ = solveCat! ๐
  _ : โ {A B}{f : ๐ [ A , B ]}
    โ id โ (id โ id โ f) โ id โก id โ id โ (id โ f)
  _ = solveCat! ๐
  _ : โ {A B C}{f : ๐ [ A , B ]}{g : ๐ [ B , C ]}
    โ f โ g โก g โ (id โ f) โโจ ๐ โฉ id
  _ = solveCat! ๐
  ex : โ {A B C}(f : ๐ [ A , B ])(g : ๐ [ B , C ])(h : ๐ [ A , C ])
    โ (f โ (id โ g)) โก h
    โ f โ g โก h โ id
  ex f g h p =
    f โ g โกโจ solveCat! ๐ โฉ
    (f โ (id โ g)) โกโจ p โฉ
    h โกโจ solveCat! ๐ โฉ
    h โ id โ