-- A discussion from -- https://twitter.com/YuumuKonpaku/status/1052959340468953088
-- Andreas, 2019-08-18, test also #1346 (infix declaration in renaming)
-- Andreas, 2019-02-17, test alse #3432 (pattern synonyms in import directive)

module MdJustHighlightAgdaAsHtml where

open import Agda.Builtin.Nat
open import Agda.Builtin.Equality
open import Agda.Primitive public using (lzero)
  renaming (Level to ULevel; lsuc to lsucc; _⊔_ to infixl 42 _⊔_)

Type : (i : ULevel) -> Set (lsucc i)
Type i = Set i

data ⊥ : Type lzero where

module PatternSyns where
  pattern O' = zero
  pattern S n = (suc n)
open PatternSyns using (S) renaming (O' to O)

variable i : ULevel

¬ : (A : Type i) → Type i
¬ A = A → ⊥
_≠_ : {A : Type i} → (A → A → Type i)
x ≠ y = ¬ (x ≡ y)

infix 10 _∨_
data _∨_ {a b} (A : Type a) (B : Type b) : Set (a ⊔ b) where
  a-intro : A -> A ∨ B
  b-intro : B -> A ∨ B

test : (x y : Nat) -> (x ≡ y) ∨ (x ≠ y)
test O O = a-intro refl
test O (S y) = b-intro (λ ())
test (S x) O = b-intro (λ ())
test (S x) (S y) with test x y
... | a-intro refl = a-intro refl
... | b-intro k = b-intro (lemma k)
  where
    lemma : {a b : Nat} -> a ≠ b -> S a ≠ S b
    lemma p refl = p refl
