From d682ad6bbb5547ffbcc19da90275ff43e4e03e20 Mon Sep 17 00:00:00 2001 From: tslil Date: Wed, 6 May 2026 14:27:43 +0100 Subject: WiP --- examples/equality.makkai | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'examples/equality.makkai') diff --git a/examples/equality.makkai b/examples/equality.makkai index ede2a54..438e930 100644 --- a/examples/equality.makkai +++ b/examples/equality.makkai @@ -4,19 +4,25 @@ let element pt : Unit = {} let set Three = variant [ zero : Unit | one : Unit | two : Unit ] -let signature SetWitRelation = theory { +let signature SetWithEquivRelation = theory { Carrier :: Set, - Relation :: (x : set-of(Carrier)) (y: set-of(Carrier)) -> Set + Relation :: (x : set-of(Carrier)) (y: set-of(Carrier)) -> Set, + Reflexive :: (x : set-of(Carrier)) -> , + Symmetric :: (x : set-of(Carrier)) (y : set-of(Carrier)) (r : set-of(Relation x y)) -> , + Transitive :: (x : set-of(Carrier)) (y : set-of(Carrier)) (z : set-of(Carrier)) (r : set-of(Relation x y)) (s : set-of(Relation z z)) -> } -let instance eqThree :: SetWitRelation = { +let instance eqThree :: SetWithEquivRelation = { .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 ] ] + | two. z => case y of [ zero. w => Empty :: Set | one. w => Empty :: Set | two. w => Unit :: Set ] ], + .Reflexive = for (x: Three), case x of [ zero. z => | one. z => | two. z => ], + .Symmetric = for (x: Three)(y: Three)(r: set-of(Relation x y)), , + .Transitive = for (x: Three)(y: Three)(z: Three)(r: set-of(Relation x y))(s: set-of(Relation y z)), } -let set Diagonal = record { x : set-of(eqThree .Carrier), y : set-of(eqThree .Carrier), equal : set-of((eqThree .Relation) x y) } +// 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 oneEqualsOne : Diagonal = { .x = one. pt, .y = one. pt, .equal = pt } -- cgit v1.3.1