Fork channel

Create a new channel as a copy of main.

Rename channel

Rename main to:

Delete channel

Delete main? This cannot be undone.

Total.idr
module Control.Total

-- Antisymmetricity (Reflexivity also follows)
public export
interface Ord ty => AntiSym ty where
    antisym : (x,y:ty) -> (compare x y) = contra (compare y x)

export
possibles : Ordering -> Ordering -> Type
possibles LT GT = Void
possibles GT LT = Void
possibles _ _ = ()

-- Transitivity
public export
interface Ord ty => Trans ty where
    trans : (x,y,z:ty) -> {auto p: possibles (compare x y) (compare y z)} -> compare x y <+> compare y z = compare x z

public export
interface (AntiSym ty, Trans ty) => Total ty where

export
AntiSym Nat where
    antisym 0 0 = Refl
    antisym 0 (S k) = Refl
    antisym (S k) 0 = Refl
    antisym (S k) (S j) = antisym k j

export
Trans Nat where
    trans 0 0 0 = Refl
    trans 0 0 (S _) = Refl
    trans 0 (S _) (S _) = Refl
    trans (S _) 0 0 = Refl
    trans (S i) (S j) 0 with (compare i j)
        _ | EQ = Refl
        _ | GT = Refl
    trans (S i) (S j) (S k) = trans i j k

export
Total Nat where