diff options
| author | tslil <tslil@posteo.de> | 2026-05-01 11:59:10 +0100 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-05-01 12:29:19 +0100 |
| commit | 8b540449755ca8e73feb88e708f22fd292ace610 (patch) | |
| tree | 29d9d2b8e41b2715a5deb55109cba6a42de341c7 /src/main.rs | |
| parent | 8839959fd05a04f2d37461ab842d23107b104d20 (diff) | |
make parser more lenient, add the one simplex example, fix naming for records
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index eb16b32..834792e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,23 +23,32 @@ let signature Graph = theory { Edge :: (s : set-of(Node)) (t : set-of(Node)) -> Set } -let set FinTwo = variant [ zero : record{} | one : record{} ] +let set Empty = variant[] +let set Unit = record{} +let element pt : Unit = {} +let set F1 = variant [ one0 : Unit ] +let set F2 = variant [ two0 : Unit | two1 : Unit ] +let set F3 = variant [ three0 : Unit | three1 : Unit | three2: Unit ] -let instance natGraph :: Graph = { - .Node = FinTwo :: Set, - .Edge = for (s : set-of(Node)) (t : set-of(Node)), case s of [ zero. ignore => Bool :: Set | one. ignore => Nat :: Set ] +let instance oneSimplex :: Graph = { + .Node = F3 :: Set, + .Edge = for (s : set-of(Node)) (t : set-of(Node)), + case s of [ + three0. pt => case t of [ three0. pt => Empty :: Set | three1. pt => Unit :: Set | three2. pt => Unit :: Set ] + | three1. pt => case t of [ three0. pt => Empty :: Set | three1. pt => Empty :: Set | three2. pt => Unit :: Set ] + | three2. pt => case t of [ three0. pt => Empty :: Set | three1. pt => Empty :: Set | three2. pt => Empty :: Set ] + ] } -let set NatEdges = record { - source: set-of(natGraph .Node), - target: set-of(natGraph .Node), - connected: set-of(natGraph .Edge source target) +let set OneSimplexEdges = record { + source: set-of(oneSimplex .Node), + target: set-of(oneSimplex .Node), + connected: set-of(oneSimplex .Edge source target) } -let element s_val : FinTwo = zero. {} -let element edge : set-of(natGraph .Edge s_val ( one. {} )) = true +let element edge : set-of(oneSimplex .Edge (three0. pt) (three1. pt)) = pt "#; - let programme = parser::debug_parse(src); + let programme = parser::parse(src); if let Err(e) = programme.check() { println!("{}", e); |
