| |
| |
|
|
| module HyperKitty.Core where |
|
|
| open import Data.Fin using (Fin; zero; suc; toβ) |
| open import Data.Vec using (Vec; []; _β·_; head; tail; lookup) |
| open import Data.Nat using (β; zero; suc; _+_; _*_) |
| open import Data.Bool using (Bool; true; false) |
| open import Data.Char using (Char) |
| open import Relation.Binary.PropositionalEquality using (_β‘_; refl; sym; trans; subst; cong) |
|
|
| |
|
|
| |
| data Glyph : Set where |
| Pi : Glyph |
| Gamma : Glyph |
| Delta : Glyph |
| Omega : Glyph |
| Lambda : Glyph |
| Psi : Glyph |
|
|
| |
| _β_ : (g h : Glyph) β Bool |
| Pi β Pi = true |
| Gamma β Gamma = true |
| Delta β Delta = true |
| Omega β Omega = true |
| Lambda β Lambda = true |
| Psi β Psi = true |
| _ β _ = false |
|
|
| |
| glyph_eq_decidable : (g h : Glyph) β Set |
| glyph_eq_decidable g h with g β h |
| ... | true = g β‘ h |
| ... | false = g β‘ h β β₯ |
|
|
| |
|
|
| |
| glyph_to_byte : Glyph β Fin 256 |
| glyph_to_byte Pi = Fin.fromβ< (Data.Nat._<_ 0x01 256 (by norm_num)) |
| glyph_to_byte Gamma = Fin.fromβ< (0x03 < 256 β¨ by norm_num β©) |
| glyph_to_byte Delta = Fin.fromβ< (0x04 < 256 β¨ by norm_num β©) |
| glyph_to_byte Omega = Fin.fromβ< (0x0A < 256 β¨ by norm_num β©) |
| glyph_to_byte Lambda = Fin.fromβ< (0xFF < 256 β¨ by norm_num β©) |
| glyph_to_byte Psi = Fin.fromβ< (0x0B < 256 β¨ by norm_num β©) |
|
|
| |
| glyph_to_idx : Glyph β Fin 6 |
| glyph_to_idx Pi = Fin.zero |
| glyph_to_idx Gamma = Fin.suc Fin.zero |
| glyph_to_idx Delta = Fin.suc (Fin.suc Fin.zero) |
| glyph_to_idx Omega = Fin.suc (Fin.suc (Fin.suc Fin.zero)) |
| glyph_to_idx Lambda = Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero))) |
| glyph_to_idx Psi = Fin.suc (Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero)))) |
|
|
| |
| idx_to_glyph : Fin 6 β Glyph |
| idx_to_glyph Fin.zero = Pi |
| idx_to_glyph (Fin.suc Fin.zero) = Gamma |
| idx_to_glyph (Fin.suc (Fin.suc Fin.zero)) = Delta |
| idx_to_glyph (Fin.suc (Fin.suc (Fin.suc Fin.zero))) = Omega |
| idx_to_glyph (Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero)))) = Lambda |
| idx_to_glyph (Fin.suc (Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero))))) = Psi |
|
|
| |
|
|
| |
| idx_glyph_inv_l : β (g : Glyph) β idx_to_glyph (glyph_to_idx g) β‘ g |
| idx_glyph_inv_l Pi = refl |
| idx_glyph_inv_l Gamma = refl |
| idx_glyph_inv_l Delta = refl |
| idx_glyph_inv_l Omega = refl |
| idx_glyph_inv_l Lambda = refl |
| idx_glyph_inv_l Psi = refl |
|
|
| |
| idx_glyph_inv_r : β (i : Fin 6) β glyph_to_idx (idx_to_glyph i) β‘ i |
| idx_glyph_inv_r Fin.zero = refl |
| idx_glyph_inv_r (Fin.suc Fin.zero) = refl |
| idx_glyph_inv_r (Fin.suc (Fin.suc Fin.zero)) = refl |
| idx_glyph_inv_r (Fin.suc (Fin.suc (Fin.suc Fin.zero))) = refl |
| idx_glyph_inv_r (Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero)))) = refl |
| idx_glyph_inv_r (Fin.suc (Fin.suc (Fin.suc (Fin.suc (Fin.suc Fin.zero))))) = refl |
|
|
| |
|
|
| |
| lambda_is_identity : Lambda β‘ Lambda |
| lambda_is_identity = refl |
|
|
| |
| omega_properties : Omega β‘ Omega |
| omega_properties = refl |
|
|
| |
| glyphs_distinct : (g h : Glyph) β g β‘ h β g β h β‘ true |
| glyphs_distinct Pi Pi refl = refl |
| glyphs_distinct Gamma Gamma refl = refl |
| glyphs_distinct Delta Delta refl = refl |
| glyphs_distinct Omega Omega refl = refl |
| glyphs_distinct Lambda Lambda refl = refl |
| glyphs_distinct Psi Psi refl = refl |
|
|