module Library.LessThan.Reasoning where

open import Library.Nat
open import Library.LessThan
open import Library.Equality

infix  1 begin_
infixr 2 _<=⟨⟩_ _<=⟨_⟩_ _==⟨_⟩_ _<⟨_⟩_ _<⟨⟩_
infix  3 _end

begin_ : {x y : } -> x <= y -> x <= y
begin_ p = p

_end : (x : ) -> x <= x
_end _ = le-refl

_==⟨_⟩_ : (x : ) {y z : } -> x == y -> y <= z -> x <= z
_==⟨_⟩_ _ refl p = p

_<=⟨_⟩_ : (x : ) {y z : } -> x <= y -> y <= z -> x <= z
_<=⟨_⟩_ _ = le-trans

_<=⟨⟩_ : (x : ) {y : } -> x <= y -> x <= y
_ <=⟨⟩ p = p

_<⟨_⟩_ : (x : ) {y z : } -> x < y -> y <= z -> x < z
_<⟨_⟩_ _ = le-trans

_<⟨⟩_ : (x : ) {y : } -> succ x <= y -> x < y
_ <⟨⟩ p = p