------------------------------------------------------------------------------
-- Bisimilarity relation on unbounded lists
------------------------------------------------------------------------------

{-# OPTIONS --exact-split              #-}
{-# OPTIONS --no-sized-types           #-}
{-# OPTIONS --no-universe-polymorphism #-}
{-# OPTIONS --without-K                #-}

module FOTC.Relation.Binary.Bisimilarity.Type where

open import FOTC.Base
open import FOTC.Base.List

infix 4 _≈_ _≉_

------------------------------------------------------------------------------
-- The bisimilarity relation _≈_ on unbounded lists is the greatest
-- fixed-point (by ≈-out and ≈-coind) of the bisimulation functional
-- (FOTC.Relation.Binary.Bisimulation).

-- The bisimilarity relation on unbounded lists.
postulate _≈_ : D  D  Set

-- The bisimilarity relation _≈_ on unbounded lists is a post-fixed
-- point of the bisimulation functional (FOTC.Relation.Binary.Bisimulation).
postulate
  ≈-out :  {xs ys}  xs  ys 
          ∃[ x' ] ∃[ xs' ] ∃[ ys' ] xs  x'  xs'  ys  x'  ys'  xs'  ys'
{-# ATP axiom ≈-out #-}

-- The bisimilarity relation _≈_ on unbounded lists is the greatest
-- post-fixed point of the bisimulation functional (see
-- FOTC.Relation.Binary.Bisimulation).
--
-- N.B. This is an axiom schema. Because in the automatic proofs we
-- *must* use an instance, we do not add this postulate as an ATP
-- axiom.
postulate
  ≈-coind :
    (B : D  D  Set) 
    -- B is a post-fixed point of the bisimulation functional.
    (∀ {xs ys}  B xs ys 
      ∃[ x' ] ∃[ xs' ] ∃[ ys' ] xs  x'  xs'  ys  x'  ys'  B xs' ys') 
    -- _≈_ is greater than B.
     {xs ys}  B xs ys  xs  ys

------------------------------------------------------------------------------
-- Auxiliary definition.
_≉_ : D  D  Set
x  y = ¬ x  y
{-# ATP definition _≉_ #-}