Skip to content

Instantly share code, notes, and snippets.

@zelinskiy
Last active March 28, 2017 05:57
Show Gist options
  • Select an option

  • Save zelinskiy/14b167d6af849efb52bc353b6c9c187f to your computer and use it in GitHub Desktop.

Select an option

Save zelinskiy/14b167d6af849efb52bc353b6c9c187f to your computer and use it in GitHub Desktop.
module lol where
open import Level
open import Relation.Binary.Core
--------------BOOL---------------------------------------
data 𝔹 : Set where
tt : 𝔹
ff : 𝔹
infix 7 Β¬_
Β¬_ : 𝔹 β†’ 𝔹
Β¬ tt = ff
Β¬ ff = tt
if_then_else_ : βˆ€ {β„“} {A : Set β„“} β†’ 𝔹 β†’ A β†’ A β†’ A
if tt then a₁ else aβ‚‚ = a₁
if ff then a₁ else aβ‚‚ = aβ‚‚
infixl 5 _∧_
_∧_ : 𝔹 β†’ 𝔹 β†’ 𝔹
tt ∧ tt = tt
a ∧ b = ff
infixl 4 _∨_
_∨_ : 𝔹 β†’ 𝔹 β†’ 𝔹
tt ∨ b = tt
ff ∨ b = b
infixl 5 _βŠ•_
_βŠ•_ : 𝔹 β†’ 𝔹 β†’ 𝔹
tt βŠ• b = tt
a βŠ• tt = tt
a βŠ• b = ff
¬¬-elim : βˆ€ (x : 𝔹) β†’ Β¬ Β¬ x ≑ x
¬¬-elim tt = refl
¬¬-elim ff = refl
∧-refl : βˆ€ (x : 𝔹) β†’ x ∧ x ≑ x
∧-refl tt = refl
∧-refl ff = refl
∧-elim₁ : βˆ€ {x y} β†’ x ∧ y ≑ tt β†’ x ≑ tt
∧-elim₁ {tt} proof = refl
∧-elim₁ {ff} ()
∧-elimβ‚‚ : βˆ€ {x y} β†’ x ∧ y ≑ tt β†’ y ≑ tt
∧-elimβ‚‚ {tt} {tt} proof = refl
∧-elimβ‚‚ {tt} {ff} ()
∧-elimβ‚‚ {ff} ()
∨-∧-absorp : βˆ€ {a b} β†’ (a ∨ (a ∧ b)) ≑ tt β†’ a ≑ tt
∨-∧-absorp {tt} p = refl
∨-∧-absorp {ff} ()
∧-∨-absorp : βˆ€ {a b} β†’ (a ∧ (a ∨ b)) ≑ tt β†’ a ≑ tt
∧-∨-absorp {tt} p = refl
∧-∨-absorp {ff} ()
∧-comm : βˆ€ {a b} β†’ (a ∧ b) ≑ tt β†’ (b ∧ a) ≑ tt
∧-comm {tt} {tt} p = refl
∧-comm {tt} {ff} ()
∧-comm {ff} ()
∨-comm : βˆ€ {a b} β†’ (a ∨ b) ≑ tt β†’ (b ∨ a) ≑ tt
∨-comm {tt} {tt} p = refl
∨-comm {tt} {ff} p = refl
∨-comm {ff} {tt} p = refl
∨-comm {ff} {ff} ()
--------------NATS---------------------------------------
data β„• : Set where
β„€ : β„•
π•Š : β„• β†’ β„•
infixl 5 _+_
_+_ : β„• β†’ β„• β†’ β„•
a + β„€ = a
a + (π•Š b) = (π•Š a) + b
infixl 3 _>_
_>_ : β„• β†’ β„• β†’ 𝔹
β„€ > (π•Š x) = ff
(π•Š x) > β„€ = tt
(π•Š a) > (π•Š b) = a > b
β„€ > β„€ = ff
infixl 3 _β‰₯_
_β‰₯_ : β„• β†’ β„• β†’ 𝔹
β„€ β‰₯ β„€ = tt
β„€ β‰₯ (π•Š x) = ff
(π•Š x) β‰₯ β„€ = tt
(π•Š a) β‰₯ (π•Š b) = a β‰₯ b
infixl 2 _β‰Š_
_β‰Š_ : β„• β†’ β„• β†’ 𝔹
β„€ β‰Š β„€ = tt
(π•Š a) β‰Š (π•Š b) = a β‰Š b
_β‰Š_ a b = ff
three : β„•
three = π•Š (π•Š (π•Š β„€))
four : β„•
four = π•Š three
--β‰₯-antisymm : βˆ€ {a b} β†’ (a β‰₯ b) ≑ tt β†’ (b β‰₯ a) ≑ tt β†’ (a β‰Š b) ≑ tt
-->-implies-β‰₯ : βˆ€ {a b} β†’ (a > b) ≑ tt β†’ (a β‰₯ b) ≑ tt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment