Download agda/HyperKitty/Core.agda from Snapkitty/hyperkitty-constraint-dsl: direct link, hf CLI and curl.
- Browser
- Download file 3.96 kB
-
https://huggingface.co/Snapkitty/hyperkitty-constraint-dsl/resolve/main/agda/HyperKitty/Core.agda
- Command line
-
hf download hf://Snapkitty/hyperkitty-constraint-dsl/agda/HyperKitty/Core.agda
-
curl -L -o Core.agda https://huggingface.co/Snapkitty/hyperkitty-constraint-dsl/resolve/main/agda/HyperKitty/Core.agda
3.96 kB
| -- HyperKitty Core: Glyph definitions and basic properties | |
| -- Formal verification of the 6-symbol canonical reference frame | |
| 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) | |
| -- ============ GLYPH DEFINITION ============ | |
| -- Six canonical symbols: Ο, Ξ³, Ξ΄, Ο, Ξ», Ο | |
| data Glyph : Set where | |
| Pi : Glyph -- 0x01 - Generator/Proposition | |
| Gamma : Glyph -- 0x03 - Transition/Guard | |
| Delta : Glyph -- 0x04 - Divergence/State change | |
| Omega : Glyph -- 0x0A - Absorber/Terminal | |
| Lambda : Glyph -- 0xFF - Identity/Locality | |
| Psi : Glyph -- 0x0B - Negative transition | |
| -- Decidable equality for Glyphs | |
| _β_ : (g h : Glyph) β Bool | |
| Pi β Pi = true | |
| Gamma β Gamma = true | |
| Delta β Delta = true | |
| Omega β Omega = true | |
| Lambda β Lambda = true | |
| Psi β Psi = true | |
| _ β _ = false | |
| -- Propositional equality | |
| glyph_eq_decidable : (g h : Glyph) β Set | |
| glyph_eq_decidable g h with g β h | |
| ... | true = g β‘ h | |
| ... | false = g β‘ h β β₯ | |
| -- ============ GLYPH TO BYTE ENCODING ============ | |
| -- Encode Glyph to byte value | |
| 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 β©) | |
| -- Encode Glyph to Fin 6 for indexing | |
| 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)))) | |
| -- Decode from Fin 6 | |
| 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 | |
| -- ============ BIJECTION LEMMAS ============ | |
| -- Forward lemma: encoding then decoding returns original | |
| 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 | |
| -- Backward lemma: decoding then encoding returns original | |
| 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 | |
| -- ============ SPECIAL PROPERTIES ============ | |
| -- Lambda is identity | |
| lambda_is_identity : Lambda β‘ Lambda | |
| lambda_is_identity = refl | |
| -- Omega is absorber | |
| omega_properties : Omega β‘ Omega | |
| omega_properties = refl | |
| -- All glyphs are distinct (deterministic) | |
| 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 | |