Add more stuff to equality and more logging

Need to get names in there though.
This commit is contained in:
2024-07-16 22:07:37 -07:00
parent c0f9262c9a
commit 3d477be52b
6 changed files with 120 additions and 88 deletions

View File

@@ -1,22 +1,29 @@
module Equality
-- we don't have implicits yet, so this won't typecheck
-- Leibniz equality
Eq : {A : U} -> A -> A -> U
Eq = \ {A} => \ x => \ y => (P : A -> U) -> P x -> P y
Eq = \ {A} x y => (P : A -> U) -> P x -> P y
refl : {A : U} {x : A} -> Eq x x
refl = \ P Px => Px
trans : {A : U} {x y z : A} -> Eq x y -> Eq y z -> Eq x z
trans = \ Exy Eyz => Eyz (\ w => Eq x w) Exy
sym : {A : U} {x y : A} -> Eq x y -> Eq y x
sym = \ Exy => Exy (\ z => Eq z x) refl
id : {A} -> A -> A
id = \ x => x
coerce : {A B : U} -> Eq A B -> A -> B
-- coerce refl a = a
coerce = \ EqAB a => EqAB id a
-- can I write J without pattern matching?
-- J : {A : U} {x y : A} (eq : Eq x y) ->
-- (mot : (x : A) (P : Eq x y) -> U)
-- (b : mot y refl) ->
-- mot x eq
-- J : {A : U} ->
-- {C : (x y : A) -> Eq x y -> U} ->
-- (c : (x : _) -> C x x refl) ->
-- (x y : A) ->
-- (p : Eq x y) ->
-- C x y p
-- J = \ c x y eq => eq (\ z => C x z _) (c x)