{-# OPTIONS --safe #-}
module Function.Reasoning where
open import Level
infixl 0 ⇒⟨∙⟩-syntax
⇒⟨∙⟩-syntax : {A : Type a} (B : Type b) → A → (A → B) → B
⇒⟨∙⟩-syntax _ x f = f x
syntax ⇒⟨∙⟩-syntax A x f = x ⇒⟨ f ⟩ A
infixl 0 ⇒⟨⟩-syntax
⇒⟨⟩-syntax : (A : Type a) → A → A
⇒⟨⟩-syntax _ x = x
syntax ⇒⟨⟩-syntax A x = x ⇒⟨⟩ A
-- private module Examples where
-- open import Prelude
-- example : (x y : ℕ) → x ≡ y → suc (suc x) ≡ ℕ.suc (suc y)
-- example x y p =
-- p ⦂ x ≡ y ⇒⟨ cong suc ⟩
-- suc x ≡ suc y ⇒⟨ cong suc ⟩
-- suc (suc x) ≡ suc (suc y) ⇒⟨⟩
-- suc (suc x) ≡ suc (suc y)