Add more stuff to equality and more logging
Need to get names in there though.
This commit is contained in:
23
newt/eq.newt
23
newt/eq.newt
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user