profile
viewpoint

ecavallo/ptt 18

Experimental type-checker for internally parametric type theory

jonsterling/agda-zipper-machine 14

An abstract machine using indexed containers and their zippers

jonsterling/agda-brouwerian-mathematics 9

some "modernized" brouwerian mathematics, inspired by Hancock, Ghani & Pattinson

jonsterling/agda-effectful-forcing 9

Constructive and formal proof of Brouwer's Bar Theorem & Monotone Bar Induction Principle for System T-definable functionals.

ayberkt/sml-system-f 8

An implementation of System F, as described in PFPL.

david-christiansen/pudding 7

Tactics in the macro expander

dlicata335/cubicalexperiments 7

HoTT MRC Cubical experiments group

jonsterling/agda-abt 6

Abstract binding trees in Agda

startedtomdjong/domain-theory-in-uf

started time in 13 hours

push eventjonsterling/HoTT-Intro

Fabian

commit sha 41cbe32a4e2425e8c7555f08d48a7577f9ab3366

Fix typos in README

view details

Fabian

commit sha 2e58ed524b38eac85a80355069b6d81bb960bd06

Fix typos in Groups chapter - write "pre-category" with hyphen after the prefix as in the definition - place comma efter "i.e." as in the rest of the chapter

view details

Fabian

commit sha 05ccc220a7ef751e92c579c1df62850c5a8d43ca

Fix cross-reference to propositional truncations axiom

view details

Egbert Rijke

commit sha e6b7d22badd624679c5b35e0951a51b022348f81

Merge pull request #5 from bafain/patch-1 Fix typos and add cross-reference

view details

Egbert Rijke

commit sha 4d39b471a7ab242f24cf0da735608e7839e39d44

isomorphic abelian groups are equal

view details

Egbert Rijke

commit sha 4693b7af193f03bdf79e287aefc99cb71c979d71

Merge branch 'master' of https://github.com/EgbertRijke/HoTT-Intro

view details

Egbert Rijke

commit sha cf8e823cd109726366df91a9972def29891e2e6d

basic infrastructure rings

view details

Egbert Rijke

commit sha 8cc1478faa61ad755ac4bfdea550f494b783ca50

basic infrastructure rings

view details

Egbert Rijke

commit sha 6261841f0d005f77dd54ae02347d22a2292c015e

basic infrastructure of ring homomorphisms

view details

Egbert Rijke

commit sha 7bbd700dbf5d07444c0db904650ad1868e1ac255

characterized id-type of hom-Ring

view details

Egbert Rijke

commit sha 4147b3bf45c7dbc9ca6ed83ec9e991328ee1a1ea

isomorphic rings are equal

view details

Egbert Rijke

commit sha 075ec7390f3b835fabb38cc3e90c8d2d354d3f76

subgroups

view details

Egbert Rijke

commit sha 1ce47185f622a745921abf2c755441ac4ebc3700

subgroups

view details

Egbert Rijke

commit sha b492a067102b80db3933436e84237398f560dffa

subgroups and ideals

view details

Egbert Rijke

commit sha e83de746ba6fb04f86c579359a20555f537e5572

cosets

view details

Egbert Rijke

commit sha a249ad78c9c341350787c5d324eb6ca4c5c30216

coset relations are prop-valued

view details

Egbert Rijke

commit sha fa1526ba43afedc529b4bddaedc7885ef322d5fb

moving files around

view details

Egbert Rijke

commit sha 71dcf8c1205c004245c8442d8829d4306023e5a8

universal property of set quotients

view details

Egbert Rijke

commit sha 2072a56dbbcbd4d31da029ff1771440f28d06355

universal property of the image

view details

Egbert Rijke

commit sha 7a7d2869390453875fe9cf47d446971ef44d4c9d

working on group structure on Fin n

view details

push time in 4 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha e9b563f52afad4183c4de642370e8d109948bb2c

crary:2020

view details

push time in 5 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha b4d039349f6cfc8ea46e82050582f3181146ae61

ocaml

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 1a9f2fae1287470c707339b25925624224a5a2eb

public/prviate

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha f25cd9e5543be3eac510b218296d65d7a039d410

cleanup

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 583b89ce8b12e7c72712e3d48d5acb7275e61e12

types

view details

Jonathan Sterling

commit sha b89bc7de2ebb3609c3df99905ad9d3e08889091a

remove yuujinchou dependency for now

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 15758aff87a4ba44825cd981194fbc5e5ff89e6e

remove dead code

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 1d666e3016adf3d8b8637d8a642c9aab4e0425a9

starting to resolve my misunderstandings

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 39d0e0690b97a31322596d00c08fb9384a3eb8e0

serialization of types

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 8b7f2f08df0bce8ce6c3a2ff76b623bddbd8bf54

whitespace

view details

push time in 5 days

create barnchRedPRL/cooltt

branch : serialization

created branch time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 07350c6fb31ec5fd2c42bf9a5a1f6670080823dd

attrs?

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 991b91fa669628c2cbd89b0ddcf582ee0e1b6117

use Set

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha d599fe60260df62f1d66bbd4ad72decd3c9f418a

not lossy

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 340046dfb9f0ae93d8129a933665b1a93d7da68c

support reverse direction of resolver (currently lossy)

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha fa4543f1195ee7e7241c9be78944ae1bef7a444a

fix opam

view details

Jonathan Sterling

commit sha f972c223f742528ae1e4a3192ad1b34dcda3dd16

fix opam

view details

push time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha db83e1955a170b2afad63bfbd4874528052db2df

remove confusing "problem" stack

view details

push time in 5 days

PR opened RedPRL/cooltt

Support for fancy name resolution environments
+66 -17

0 comment

9 changed files

pr created time in 5 days

create barnchRedPRL/cooltt

branch : fun

created branch time in 5 days

push eventRedPRL/cooltt

Alex Gryzlov

commit sha 8a43a4b4b7dd59b001dcf1dd0de5e9e38cec0df5

more hlevel additions (#168) * more hlevel additions * simplify prop-set Co-authored-by: Jonathan Sterling <jonsterling@users.noreply.github.com>

view details

push time in 5 days

PR merged RedPRL/cooltt

more hlevel additions

Ok, I have no idea if this is idiomatic or even correct but it does seem to typecheck :)

+45 -0

0 comment

1 changed file

clayrat

pr closed time in 5 days

push eventclayrat/cooltt

Jonathan Sterling

commit sha 9f312f3f453ecd03c9ad0fa463cc22e6345b37ee

[Refactoring] turning the frontend into a separate library (#169) * first attempt at moving things over to a frontend library * tweak * more a few things * rename folder lib => core * remove spurious references to CS * cleanup * move some tactics out of the refiner * remove ConcreteSyntax reference from the refiner * renaming ElabError => RefineError * disentangle refiner errors from elaborator errors * move concrete syntax to frontend * rename ElabEnv/ElabState => RefineEnv/RefineState * ElabM => RefineM * ElabBasics => RefineMonad

view details

favonia

commit sha 6f20e644b7686a2dcd93794cf10a5d4a449e0c54

Grammar hack for projectors (#170) "snd x y" is now parsed as "{snd x} y"

view details

Jonathan Sterling

commit sha fe147a02975e71bc256e1047579012523b4b89a1

Put the 🧞‍♂️ back in the bottle (#171) * Revert "Grammar hack for projectors (#170)" This reverts commit 6f20e644b7686a2dcd93794cf10a5d4a449e0c54. * this was the change I wanted LOL

view details

Jonathan Sterling

commit sha da1511514226f99ae68d7afe749cf4fe6dd647c3

Merge branch 'master' into master

view details

push time in 5 days

Pull request review commentRedPRL/cooltt

more hlevel additions

 def trans (A : type) (p : 𝕀 → A) (q : (i : 𝕀) → sub A {i=0} {p 1}) : p  def contr-prop (A : type) (A/contr : is-contr A) : is-prop A =   a a' => trans A {symm A {{snd A/contr} a}} {{snd A/contr} a'}++def prop-set (A : type) (A/prop : is-prop A) : is-set A =+  a b p q i j => hcom A 0 1 {∂ i ∨ ∂ j} {k _ =>+    [ k=0 ∨ j=0 => A/prop a {p j} k+    | j=1 => A/prop a {p j} k+    | i=0 => A/prop a {p j} k+    | i=1 => A/prop a {q j} k+    ]+  }++def raise-hlevel : (l : nat) (A : type) → has-hlevel l A → has-hlevel {suc l} A =+  let aux : (m : nat) → (B : type) → has-hlevel {suc m} B → has-hlevel {suc {suc m}} B =+    elim [+    | zero => prop-set+    | suc {l => ih} => B B/lvl b b' => ih {path B b b'} {B/lvl b b'}+    ]+  in+  elim [+  | zero => contr-prop+  | suc l => aux l+  ]++def prop-hlevel : (l : nat) (A : type) → is-prop A → has-hlevel {suc l} A =+  elim [+  | zero => _ A/prop => A/prop+  | suc {l => ih} => A A/prop => raise-hlevel {suc l} A {ih A A/prop}+  ]++def path-hlevel : (l : nat) (A : type) (A/level : has-hlevel {suc l} A) (a : A) (a' : A)+                 → has-hlevel l {path A a a'} =+  elim [+  | zero => A A/prop a a' => [A/prop a a', p => prop-set A A/prop a a' {A/prop a a'} p]+  | suc l => A A/lvl a a' => A/lvl a a'+  ]++def path/based/contr (A : type) (a : A) : is-contr {(x : A) × path A a x} =+  [ [a, i => a]+  , x i =>+    let aux : 𝕀 → A = j =>+      hcom A 0 j {∂ i} {k _ =>+        [ k=0 ∨ i=0 => a+        | i=1 => {snd x} k

@clayrat Yes that is correct, sorry about that -- I had some kind of Brain Malfunction last night when I agreed to the other proposal lol.

clayrat

comment created time in 5 days

delete branch RedPRL/cooltt

delete branch : put-the-genie-back-in-the-bottle

delete time in 5 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha fe147a02975e71bc256e1047579012523b4b89a1

Put the 🧞‍♂️ back in the bottle (#171) * Revert "Grammar hack for projectors (#170)" This reverts commit 6f20e644b7686a2dcd93794cf10a5d4a449e0c54. * this was the change I wanted LOL

view details

push time in 5 days

Pull request review commentRedPRL/cooltt

more hlevel additions

 def trans (A : type) (p : 𝕀 → A) (q : (i : 𝕀) → sub A {i=0} {p 1}) : p  def contr-prop (A : type) (A/contr : is-contr A) : is-prop A =   a a' => trans A {symm A {{snd A/contr} a}} {{snd A/contr} a'}++def prop-set (A : type) (A/prop : is-prop A) : is-set A =+  a b p q i j => hcom A 0 1 {∂ i ∨ ∂ j} {k _ =>+    [ k=0 ∨ j=0 => A/prop a {p j} k+    | j=1 => A/prop a {p j} k+    | i=0 => A/prop a {p j} k+    | i=1 => A/prop a {q j} k+    ]+  }++def raise-hlevel : (l : nat) (A : type) → has-hlevel l A → has-hlevel {suc l} A =+  let aux : (m : nat) → (B : type) → has-hlevel {suc m} B → has-hlevel {suc {suc m}} B =+    elim [+    | zero => prop-set+    | suc {l => ih} => B B/lvl b b' => ih {path B b b'} {B/lvl b b'}+    ]+  in+  elim [+  | zero => contr-prop+  | suc l => aux l+  ]++def prop-hlevel : (l : nat) (A : type) → is-prop A → has-hlevel {suc l} A =+  elim [+  | zero => _ A/prop => A/prop+  | suc {l => ih} => A A/prop => raise-hlevel {suc l} A {ih A A/prop}+  ]++def path-hlevel : (l : nat) (A : type) (A/level : has-hlevel {suc l} A) (a : A) (a' : A)+                 → has-hlevel l {path A a a'} =+  elim [+  | zero => A A/prop a a' => [A/prop a a', p => prop-set A A/prop a a' {A/prop a a'} p]+  | suc l => A A/lvl a a' => A/lvl a a'+  ]++def path/based/contr (A : type) (a : A) : is-contr {(x : A) × path A a x} =+  [ [a, i => a]+  , x i =>+    let aux : 𝕀 → A = j =>+      hcom A 0 j {∂ i} {k _ =>+        [ k=0 ∨ i=0 => a+        | i=1 => {snd x} k

OK, I have a new PR that makes the change I actually wanted: https://github.com/RedPRL/cooltt/pull/171

Sorry for mis-reading the thread and giving the impression that I wanted this crazy fst x y z to work lol. I just wanted fst x y to not be parsed as fst {x y}.

clayrat

comment created time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha fad35c4bbcd5455026567c329d9a47f2f5383c36

this was the change I wanted LOL

view details

push time in 6 days

pull request commentRedPRL/cooltt

Put the genie back in the bottle

🧞‍♂️ ⬇️ 🍼

jonsterling

comment created time in 6 days

PR opened RedPRL/cooltt

Put the genie back in the bottle
+18 -22

0 comment

6 changed files

pr created time in 6 days

create barnchRedPRL/cooltt

branch : put-the-genie-back-in-the-bottle

created branch time in 6 days

CommitCommentEvent

Pull request review commentRedPRL/cooltt

more hlevel additions

 def trans (A : type) (p : 𝕀 → A) (q : (i : 𝕀) → sub A {i=0} {p 1}) : p  def contr-prop (A : type) (A/contr : is-contr A) : is-prop A =   a a' => trans A {symm A {{snd A/contr} a}} {{snd A/contr} a'}++def prop-set (A : type) (A/prop : is-prop A) : is-set A =+  a b p q i j => hcom A 0 1 {∂ i ∨ ∂ j} {k _ =>+    [ k=0 ∨ j=0 => A/prop a {p j} k

Open to suggestions 😉

clayrat

comment created time in 6 days

Pull request review commentRedPRL/cooltt

more hlevel additions

 def trans (A : type) (p : 𝕀 → A) (q : (i : 𝕀) → sub A {i=0} {p 1}) : p  def contr-prop (A : type) (A/contr : is-contr A) : is-prop A =   a a' => trans A {symm A {{snd A/contr} a}} {{snd A/contr} a'}++def prop-set (A : type) (A/prop : is-prop A) : is-set A =+  a b p q i j => hcom A 0 1 {∂ i ∨ ∂ j} {k _ =>+    [ k=0 ∨ j=0 => A/prop a {p j} k

This system can be simplified by consolidating the first three clauses under k=0 ∨ ∂ j ∨ i=0.

clayrat

comment created time in 6 days

delete branch RedPRL/cooltt

delete branch : frontend-library

delete time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 9f312f3f453ecd03c9ad0fa463cc22e6345b37ee

[Refactoring] turning the frontend into a separate library (#169) * first attempt at moving things over to a frontend library * tweak * more a few things * rename folder lib => core * remove spurious references to CS * cleanup * move some tactics out of the refiner * remove ConcreteSyntax reference from the refiner * renaming ElabError => RefineError * disentangle refiner errors from elaborator errors * move concrete syntax to frontend * rename ElabEnv/ElabState => RefineEnv/RefineState * ElabM => RefineM * ElabBasics => RefineMonad

view details

push time in 6 days

PR merged RedPRL/cooltt

[Refactoring] turning the frontend into a separate library

Resolves #160

  • [x] extricate concrete syntax from the core
    • [x] have a distinct ElabError in the frontend,
    • [x] don't refer to CS.pat
+754 -680

0 comment

62 changed files

jonsterling

pr closed time in 6 days

issue closedRedPRL/cooltt

Factor out the frontend into a (local) library

Would be nice for cleanup purposes and for facilitating documentation!

closed time in 6 days

jonsterling

issue commentRedPRL/cooltt

Grammar 🧞 in service

Hahahahaha :) I liked that notation but everyone revolted against me in such brain-damaged ways, I am hesitant to re-introduce it. lol

On Jun 30, 2020, at 9:16 PM, favonia notifications@github.com wrote:

We could re-introduce the .fst postfix notation from a project long time ago. ;-)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/RedPRL/cooltt/issues/69#issuecomment-652129974, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAANOELPOD2247ZQ5BKESRDRZKE5XANCNFSM4M4PYOKQ.

cangiuli

comment created time in 6 days

issue commentRedPRL/cooltt

Grammar 🧞 in service

OK lmao, my new specification is "It should work like Agda" lmao. 😉 I think I don't want to answer your specific questions, because there is a very clear "obviously correct" grammar, and I feel that I will be easily trapped by answering specific questions wrongly (be careful what I wish for!) when the 🧞 can guess what I mean 🤣

cangiuli

comment created time in 6 days

issue commentRedPRL/cooltt

Grammar 🧞 in service

@favonia My specification is "fst should be like any function".

cangiuli

comment created time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 4e71e0bb5552fb392f3791d881bc6c85dd6f2ab5

ElabM => RefineM

view details

Jonathan Sterling

commit sha 07a831a28218254b6bf5bf099cd1d08a4923478b

ElabBasics => RefineMonad

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha ac41b1d6d06ef50acb3ea49524acb93acd4d6825

rename ElabEnv/ElabState => RefineEnv/RefineState

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 1a758f5a7f742918964d76a28e3d2c3e8967a877

move concrete syntax to frontend

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha a6bc7d6c549bd5bc914ba397eb523a782581ddf6

renaming ElabError => RefineError

view details

Jonathan Sterling

commit sha a038a46bbe9291ff5507e3f4f7d19a66f19fe73f

disentangle refiner errors from elaborator errors

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 26f9e606f6b506680fc3c9c4be838070d451f935

remove ConcreteSyntax reference from the refiner

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 4ad304e0c2573c97026615c8989cda0a3fa729db

move some tactics out of the refiner

view details

push time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha e3c99e2e31804623fc0ccaa5b296b7dcff4ad461

remove spurious references to CS

view details

Jonathan Sterling

commit sha 40a52223cf193452c3de76e0e78de0ed08fd6437

cleanup

view details

push time in 6 days

PR opened RedPRL/cooltt

[Refactoring] turning the frontend into a separate library
+54 -39

0 comment

54 changed files

pr created time in 6 days

create barnchRedPRL/cooltt

branch : frontend-library

created branch time in 6 days

push eventRedPRL/cooltt

Jonathan Sterling

commit sha 1e01445ad1f93d6179162790a15f54021d2953ac

foo

view details

push time in 6 days

Pull request review commentRedPRL/cooltt

more hlevel additions

 def trans (A : type) (p : 𝕀 → A) (q : (i : 𝕀) → sub A {i=0} {p 1}) : p  def contr-prop (A : type) (A/contr : is-contr A) : is-prop A =   a a' => trans A {symm A {{snd A/contr} a}} {{snd A/contr} a'}++def prop-set (A : type) (A/prop : is-prop A) : is-set A =+  a b p q i j => hcom A 0 1 {∂ i ∨ ∂ j} {k _ =>+    [ k=0 ∨ j=0 => A/prop a {p j} k+    | j=1 => A/prop a {p j} k+    | i=0 => A/prop a {p j} k+    | i=1 => A/prop a {q j} k+    ]+  }++def raise-hlevel : (l : nat) (A : type) → has-hlevel l A → has-hlevel {suc l} A =+  let aux : (m : nat) → (B : type) → has-hlevel {suc m} B → has-hlevel {suc {suc m}} B =+    elim [+    | zero => prop-set+    | suc {l => ih} => B B/lvl b b' => ih {path B b b'} {B/lvl b b'}+    ]+  in+  elim [+  | zero => contr-prop+  | suc l => aux l+  ]++def prop-hlevel : (l : nat) (A : type) → is-prop A → has-hlevel {suc l} A =+  elim [+  | zero => _ A/prop => A/prop+  | suc {l => ih} => A A/prop => raise-hlevel {suc l} A {ih A A/prop}+  ]++def path-hlevel : (l : nat) (A : type) (A/level : has-hlevel {suc l} A) (a : A) (a' : A)+                 → has-hlevel l {path A a a'} =+  elim [+  | zero => A A/prop a a' => [A/prop a a', p => prop-set A A/prop a a' {A/prop a a'} p]+  | suc l => A A/lvl a a' => A/lvl a a'+  ]++def path/based/contr (A : type) (a : A) : is-contr {(x : A) × path A a x} =+  [ [a, i => a]+  , x i =>+    let aux : 𝕀 → A = j =>+      hcom A 0 j {∂ i} {k _ =>+        [ k=0 ∨ i=0 => a+        | i=1 => {snd x} k

sounds like a grammar bug!! 🧞‍♂️

clayrat

comment created time in 7 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 52e074b3fda6552d2ca745b113927c2c140b0091

fix references

view details

push time in 7 days

push eventRedPRL/cooltt

Jt Gleason

commit sha 7be1bb32f8b0eaae75c5a11f1c1c5b0ff1086c94

Better error messages (#166) * Passing along the last_token to PP * removed REPL warning * keep the original error formats * Refactored the Error Handling some to separate repl and complie errors * Forgot a newline * Forgot new files =) * Make Mesages more clear and remove separated Error Message system * Cleanly seperate the error message and output message types * Removed the wonky error messages. Leave Locaction messsages as they were * removed last_token garbage. :) * Moved the comments to the right spots * better use of modules * removed unused function Co-authored-by: Jonathan Sterling <jonsterling@users.noreply.github.com>

view details

push time in 7 days

PR merged RedPRL/cooltt

Better error messages

I've been having some fun playing with cooltt. An annoyance I had is the opaque error message on parse error. So I added the next token to the LexingUtil. Because the span is used in the Grammar I needed to change the call to pp_span to take in a product type.

More controversially, if the output of cooltt is going to be used by another program, the INFO line numbers are a bit of a problem so I suppressed them in pp_message.

My OCaml is meh so happy to adjust this pull request to however you'd prefer it.

+138 -63

9 comments

9 changed files

EntropyFails

pr closed time in 7 days

push eventEntropyFails/cooltt

Alex Gryzlov

commit sha 92aa1faf58ee47caaebdbedfb6b11114508af8e2

hlevel additions (#167)

view details

Jonathan Sterling

commit sha 2e9fd74588725b3903d312d5e8ce08d38c01382c

Merge branch 'master' into better_error_messages

view details

push time in 7 days

Pull request review commentRedPRL/cooltt

Better error messages

+(* Driver Messages come in 2 types, either an error message or a normalized term/Definition*)

I like the new design of this module!

EntropyFails

comment created time in 7 days

push eventRedPRL/cooltt

Alex Gryzlov

commit sha 92aa1faf58ee47caaebdbedfb6b11114508af8e2

hlevel additions (#167)

view details

push time in 10 days

PR merged RedPRL/cooltt

hlevel additions

I've tried proving prop-set but couldn't figure it out for now :)

+26 -0

2 comments

1 changed file

clayrat

pr closed time in 10 days

pull request commentRedPRL/cooltt

hlevel additions

OK! Thanks @clayrat for the contribution, I'll merge this now. And good to "see" you again!

clayrat

comment created time in 10 days

pull request commentRedPRL/cooltt

Better error messages

So, this is looking a lot better! There are still some aspects that I am finding confusing at the moment; the part I'm still getting stuck on is there is a type called error that contains non-error things (by virtue of containing DriverMessage.message), and consequently, the function pp_error_message is therefore also seeming to be printing non-error things. Maybe the right question for me to ask is: perhaps the errors (like ParseError etc.) should not be part of DriverMessage.message and some types should be peeled apart?

I am also finding the distribution of the spans and the last-tokens to be a little confusing; there is some semi-subtle layering going on in the architecture and I could use a high-level gloss of the motivations.

Thanks again!

EntropyFails

comment created time in 10 days

Pull request review commentRedPRL/cooltt

Better error messages

 open Basis  type level = [`Info | `Error | `Warn] -type location = LexingUtil.span option+type location = DriverError.error_with_maybe_span option

This interface is kind of strange, because pp_message is now taking an error, but pp_message isn't always about errors... Perhaps I am getting hung up on the names of things.

Perhaps it would be helpful if you could think a bit about how you want all this stuff to work, and then summarize the interface you favor?

EntropyFails

comment created time in 11 days

Pull request review commentRedPRL/cooltt

Better error messages

++type error_with_maybe_span =  ErrorWithMaybeSpan of DriverMessage.message * Basis.LexingUtil.span option

I think we can make this a little more idiomatic, like:

type error = {message : DriverMessage.message; span : Basis.LexingUtil.span option}
EntropyFails

comment created time in 11 days

Pull request review commentRedPRL/cooltt

Better error messages

-type error = LexingError of Basis.LexingUtil.span | ParseError of Basis.LexingUtil.span+type error = LexingError of Basis.LexingUtil.span * string | ParseError of Basis.LexingUtil.span * string

I suggest changing this to be an inline record so that the intention of the string thing is clear from the interface. We could write something like:

type error = 
| LexingError of {span : ...; last_token : string}
| ...
EntropyFails

comment created time in 11 days

Pull request review commentfavonia/bantorra

Better XDG implementation

+open File++(** The scheme refers to how the default directory should be determined+    when XDG_CONFIG_HOME or XDG_CACHE_HOME is missing.++    It does not correspond to the actual OS that is running. For example, the+    [Linux] scheme covers all BSD-like systems and Cygwin on Windows. *)+type scheme = MacOS | Linux | Windows++let uname_s =+  lazy begin+    try+      let ic = Unix.open_process_args_in "uname" [|"-s"|] in+      try+        let res = String.trim @@ input_line ic in+        close_in_noerr ic;+        Some res+      with+      | _ ->+        close_in_noerr ic;+        None+    with+    | _ ->+      None+  end++let guess_scheme =+  lazy begin+    match Sys.os_type with+    | "Unix" ->+      begin+        match Lazy.force uname_s with+        | Some "Darwin" -> MacOS+        | _ -> Linux+      end+    | "Cygwin" -> Linux+    | "Win32" -> Windows+    | _ -> Linux+  end++(* XXX I did not test the following code on different platforms. *)+let get_config_home ~app_name =+  match Sys.getenv_opt "XDG_CONFIG_HOME" with+  | Some dir -> dir/app_name+  | None ->+    match Lazy.force guess_scheme with+    | Linux ->+      Sys.getenv "HOME"/".config"/app_name+    | MacOS ->

btw... developers who use macos generally prefer to put their configuration files in the linux style, even though the application support is used by most applications. that’s because most of our tools are coming from linux at first.

but i guess it’s fine to support this scheme.

favonia

comment created time in 12 days

push eventjonsterling/latex3-jmsdelim

Jonathan Sterling

commit sha 377623bcbcfd3f2612c39adef63edf745187368d

Create FUNDING.yml

view details

push time in 13 days

push eventjonsterling/lecture-notes

Jonathan Sterling

commit sha 4f2fead42433d1472c7d56f302bb02b94861f461

Create FUNDING.yml

view details

push time in 13 days

pull request commentRedPRL/cooltt

Better error messages

I will re-review this hopefully today, thank you again for your contribution! We are very excited to see some outside interest, and would be happy to discuss ways to further involve you in the project if you have interest.

EntropyFails

comment created time in 13 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 48a33fce72d248fceeb8ba75e11640aada6f3cd3

add missing date

view details

push time in 14 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha d16a5b5e9a951ab12ce190460b355d0988f512e7

fix lol

view details

push time in 14 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha f52419a6973c8061a0e2081c0339d40e245a92ff

cite foxnet

view details

push time in 14 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 7ec3251706a4af152246baef4a5df2ec2ed95c01

cooltt

view details

push time in 14 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 1745de3e78c057f3160dcbc9477bc55df748cb41

SML stuff

view details

push time in 14 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 3cd932dc3c582788d6078100173f863c903bc861

the essence of ML

view details

push time in 14 days

Pull request review commentRedPRL/cooltt

Better error messages

 let pp_lvl fmt =   | `Warn ->     Format.fprintf fmt "Warn" -let pp_message ~loc ~lvl pp data =+let pp_message ~loc ~lvl ~last_token pp data =   match loc with   | None ->     pp Format.std_formatter data   | Some span ->-    Format.printf "@[<v>%a [%a]:@,  @[<v>%a@]@]@.@."-      LexingUtil.pp_span span-      pp_lvl lvl-      pp data+    match lvl with+    | `Info ->+      Format.printf "@[<v>%a@]@."

I would prefer to keep the level and span, because it is part of the protocol that allows cooltt to be used in our editor mode; the purpose is to display an indicator near where the information emanated.

EntropyFails

comment created time in 14 days

Pull request review commentRedPRL/cooltt

Better error messages

 type span =   {start : Lexing.position;    stop : Lexing.position} -let pp_span : span Pp.printer =-  fun fmt span ->-  Format.fprintf fmt "%a:%i.%i-%i.%i"+let pp_span : (span * string) Pp.printer =+  fun fmt (span,last_token) ->+  Format.fprintf fmt "%a:%i.%i-%i.%i near %s"

Perhaps the last token should not be printed with the span, but instead should be part of the ParseError message etc. Then, the span output protocol can remain the same, but we can report "There was a parsing error near [token]" or something.

EntropyFails

comment created time in 14 days

startedocurrent/ocaml-ci

started time in 15 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha 4282b17c3c5a3657a06f8b4b55a19be8d6abfbd1

factor out popl:1986

view details

push time in 16 days

startedagda/guarded

started time in 18 days

issue commentRedPRL/redprl.github.io

Possible screenshot redo: Vim's :TOhtml

that would be sick!!!

favonia

comment created time in 19 days

push eventjonsterling/bibtex-references

Jonathan Sterling

commit sha f4db1f29bae2f0680b441fdfe3059bc7245cd02f

add macqueen 1986

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 562d9db7eaf79e15df1815c223ccf6abf7be20c6

tweak

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 22289e8bb4014b5bea7280521797d409c7e9b665

tweak

view details

push time in 19 days

delete branch RedPRL/redprl.github.io

delete branch : links

delete time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 711e15b2ed1f25eb161c8e2c9c688e213d01ff94

fix messed up bullets

view details

Jonathan Sterling

commit sha cb3ac396aae92125b663f3771545eb4543e77361

add links to some publications and talks

view details

Jonathan Sterling

commit sha 09ae863480968567c4ec71ca40fe221038b1334d

more

view details

Jonathan Sterling

commit sha e3675d34603989d6c7ccbd640d03a3881376c1db

update the svg color

view details

Jonathan Sterling

commit sha 0f478208c3cbace24d3196ba6789f298fe9d0e7f

improve responsive layout of pills at the top

view details

Jonathan Sterling

commit sha 23f412ca8dd385a9ca88f4822f2fbed53768c9b3

slightly decrease font size and wrapper width

view details

Jonathan Sterling

commit sha b27b6edcc6e09808bb089e51a079852cb535abf4

tighten up layout

view details

Jonathan Sterling

commit sha 0b97992522e517f2936731a3e002a5b399e5e217

fix a title

view details

Jonathan Sterling

commit sha de829ac80c4c9ef4f45228217c9c57d943868f02

fix order of link

view details

Jonathan Sterling

commit sha 0461abd47963ef05e74951a6b9e14b24339d1b43

Merge pull request #4 from RedPRL/links Add some links

view details

push time in 19 days

PR merged RedPRL/redprl.github.io

Add some links

This adds some links to relevant talks and papers. Please feel free to adjust as you please.

I also fixed the bullets.

+47 -11

1 comment

3 changed files

jonsterling

pr closed time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha de829ac80c4c9ef4f45228217c9c57d943868f02

fix order of link

view details

push time in 19 days

issue closedRedPRL/redtt

[Cubical] exact equality types

Let me begin to write down a story about exact equality, so that we don't lose sight of what an important aspect it is of our perspective on type theory. First I want to disentangle some things which are not the same:

  1. Exact equality
  2. Equality types whose coercions leave no trace in the terms.

To explain this, I must fix some definitions. By "exact equality" I mean any kind of equality that has enough characteristics to be used as mathematical equality, including at least the following:

  1. it must satisfy all the extensionality conditions (in particular, funext)
  2. if P, Q : Eq(A, M, N) then we must have R : Eq(Eq(A,M,N), P, Q) (analogous to the K rule)
  3. coercion along reflexivity must be definitionally the identity (analogous to the J rule).

Beyond this, it is a matter of negotiation (an implementation detail!) whether the coercions leave a trace in the terms: in RedPRL we tried out a version where they leave no trace, and while this has some advantages to be sure, we have learned that the disadvantages are so brutal that we had trouble getting off the ground.

A version of type theory with equality types in which coercion leaves a trace in the terms can still work fine for developing mathematics---so long as conditions (1,2, 3) above hold. There is no loss of expressivity (in fact, there are conservativity results which prove this mathematically for multiple type theories), and as far as usability is concerned, our experience with doing a lot of formalization work suggests that the explicit style is vastly more usable, contrary to our initial expectations. The thing that makes equality in (e.g.) Coq very hard to use is not that the coercions leave a trace, but rather (1) coq's "equality" type does not satisfy my first principle, and (2) its homogeneous nature does not play will with dependent types.

We want to develop a proof-theoretic notion of equality which has the properties (1-3) above.


One way to do this off-the-shelf is to use a version of Observational Type Theory. The great shame about OTT was that the papers about it were so difficult to read and understand that it gave the impression of being much more complicated than it really was. The idea was actually extremely simple, and had two parts:

  1. Use heterogeneous equality instead of homogeneous equality. This is because the latter is notoriously difficult to use with dependent types: a perfected way to get owned is to try and work with equality of sigma types in Coq. It's horrific!

  2. Have the meaning of an equation M : A == N : B be defined not uniformly, but rather by case on the types A,B. That is, the correct notion of equality is chosen at each type, really just the same as in the Nuprl semantics. For instance, function types get extensional equality, etc.

Beyond this, there were some technical details about how to achieve stronger and stronger definitional equivalence for coercions and neutral terms etc. Sadly these parts were not explained very well, but suffice it to say that it all makes sense and is highly relevant.


I would like to consider another idea, which is to use cubes to give a syntax or proof theory for exact equality. Cubes are naturally heterogeneous, and the meaning of equations is given directly in terms of the meaning of the types that the equations are at. So, OTT aspects (1,2) are achieved immediately without any special consideration.

OTT also satisfied definitional proof irrelevance for proofs of equality: that is, any two proofs P, Q of the same equation were actually definitionally equal. As far as I can tell, this will not work in a cubical version, but I am not completely certain. It at least seems unlikely to be possible to satisfy.

I am not yet certain whether condition (3), the unicity of equality proofs, is possible to realize in the cubical setting either. I believe it is possible in case at least one face of the "equality cube" is specified, but we need to see.


My opinion is that exact equality is of the essence for us, and we should make sure that we retain that aspect by hook or by crook. The exact way that we do it is negotiable: I would like to find a new and interesting treatment based on cubes, since somehow this seems like the "right" idea, but in the worst case scenario (if we're unable to make an idea of that kind work), we can do a LOT worse than just adopting OTT directly, which is simple both in its concept and in its use.

closed time in 19 days

jonsterling

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 0b97992522e517f2936731a3e002a5b399e5e217

fix a title

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha b27b6edcc6e09808bb089e51a079852cb535abf4

tighten up layout

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 0f478208c3cbace24d3196ba6789f298fe9d0e7f

improve responsive layout of pills at the top

view details

Jonathan Sterling

commit sha 23f412ca8dd385a9ca88f4822f2fbed53768c9b3

slightly decrease font size and wrapper width

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha e3675d34603989d6c7ccbd640d03a3881376c1db

update the svg color

view details

push time in 19 days

push eventRedPRL/redprl.github.io

Jonathan Sterling

commit sha 09ae863480968567c4ec71ca40fe221038b1334d

more

view details

push time in 19 days

pull request commentRedPRL/redprl.github.io

Add some links

I also want to add Favonia's talks.

jonsterling

comment created time in 19 days

PR opened RedPRL/redprl.github.io

Reviewers
Add some links

This adds some links to relevant talks and papers. Please feel free to adjust as you please.

I also fixed the bullets.

+32 -6

0 comment

3 changed files

pr created time in 19 days

create barnchRedPRL/redprl.github.io

branch : links

created branch time in 19 days

delete branch RedPRL/redprl.github.io

delete branch : update

delete time in 19 days

create barnchRedPRL/redprl.github.io

branch : update

created branch time in 19 days

more