aboutsummaryrefslogtreecommitdiff
path: root/examples/equality.makkai
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2026-05-06 11:21:22 +0100
committertslil <tslil@posteo.de>2026-05-06 13:35:14 +0100
commit1b4abb8fdd81f6de2166ef3f064a77fd5622fe83 (patch)
tree7a1bea5e296fc8607fed97d7fe82de618959fd32 /examples/equality.makkai
parentfbb8835cb73fd51e130f4e319290eeb44eadfcf5 (diff)
clean up examples vs tests
Diffstat (limited to 'examples/equality.makkai')
-rw-r--r--examples/equality.makkai21
1 files changed, 12 insertions, 9 deletions
diff --git a/examples/equality.makkai b/examples/equality.makkai
index a9b3368..ede2a54 100644
--- a/examples/equality.makkai
+++ b/examples/equality.makkai
@@ -4,16 +4,19 @@ let element pt : Unit = {}
let set Three = variant [ zero : Unit | one : Unit | two : Unit ]
-let signature EqS = (x : Three) (y: Three) -> theory { E :: Set }
-let instance eqThree :: EqS = for (x: Three) (y: Three), {
- .E = case x of [ zero. z => case y of [ zero. w => Unit :: Set | one. w => Empty :: Set | two. w => Empty :: Set ]
- | one. z => case y of [ zero. w => Empty :: Set | one. w => Unit :: Set | two. w => Empty :: Set ]
- | two. z => case y of [ zero. w => Empty :: Set | one. w => Empty :: Set | two. w => Unit :: Set ]
- ]
+let signature SetWitRelation = theory {
+ Carrier :: Set,
+ Relation :: (x : set-of(Carrier)) (y: set-of(Carrier)) -> Set
+
+}
+let instance eqThree :: SetWitRelation = {
+ .Carrier = Three :: Set,
+ .Relation = for (x: Three) (y: Three),
+ case x of [ zero. z => case y of [ zero. w => Unit :: Set | one. w => Empty :: Set | two. w => Empty :: Set ]
+ | one. z => case y of [ zero. w => Empty :: Set | one. w => Unit :: Set | two. w => Empty :: Set ]
+ | two. z => case y of [ zero. w => Empty :: Set | one. w => Empty :: Set | two. w => Unit :: Set ] ]
}
-let set Diagonal = record { x : Three, y : Three, equal : set-of((eqThree x y) .E) }
+let set Diagonal = record { x : set-of(eqThree .Carrier), y : set-of(eqThree .Carrier), equal : set-of((eqThree .Relation) x y) }
let element oneEqualsOne : Diagonal = { .x = one. pt, .y = one. pt, .equal = pt }
-
-let element oopsOneEqualsTwo : Diagonal = { .x = one. pt, .y = two. pt, .equal = pt }