Commit graph

337 commits

Author SHA1 Message Date
d9cdf1306d fix IsReserved
IsReserved should be true for e.g. "λ" but not "fun", since only the
first can show up in the lexer output
2023-11-05 15:43:20 +01:00
6c8ebfb804 fix some comments 2023-11-05 15:41:21 +01:00
f58fa5218f subscript numbers are no longer special 2023-11-05 15:39:52 +01:00
e211887a34 string/nat lit stuff 2023-11-05 15:38:13 +01:00
3b9a339e5e rename "Tag" highlight to "Constant" 2023-11-05 14:30:40 +01:00
2f8a2d2cd2 fix typo in error 2023-11-04 17:45:55 +01:00
b6c435049d escape strings in scheme
the characters \, ", and everything below space or above ~ are replaced
with a \xdd;-style escape inside string literals
2023-11-03 20:17:35 +01:00
90cdcfe4da add \n and \t escapes to the lexer 2023-11-03 20:07:59 +01:00
5dfefe443c more tidying of outputs 2023-11-03 18:05:54 +01:00
0514fff481 represent ℕ constants directly
instead of as huge `succ (succ (succ ⋯))` terms
2023-11-03 18:05:54 +01:00
fa7f82ae5a rename Nat to NAT in AST 2023-11-03 18:05:54 +01:00
e0ed37720f always vsep scheme lets, otherwise they are unreadable 2023-11-03 18:05:54 +01:00
050346e344 add postulate, #[compile-scheme], #[main] 2023-11-03 18:05:54 +01:00
cc0bade747 scheme output 2023-11-03 18:05:54 +01:00
cd08a0fd98 more erasure 2023-11-03 18:05:54 +01:00
314e7f036d make nat elimination with erased IH non-recursive at runtime 2023-11-03 18:05:54 +01:00
6ab9637ab5 don't keep erased applications actually 2023-11-03 18:05:54 +01:00
b6fd1e921e pretty printing improvements 2023-11-03 18:05:54 +01:00
f4a45b6c52 keep the Except effect at the start of the list 2023-11-03 18:05:54 +01:00
8e0d66cab8 more erasure 2023-11-03 18:05:54 +01:00
ea74c148b7 some of this EffExtra stuff doesn't work 2023-11-03 18:05:54 +01:00
83ab871d61 new main 2023-11-03 18:05:54 +01:00
421eb220fd erasure refactor 2023-11-03 18:05:54 +01:00
fbb862c88b %default total 2023-11-03 18:05:54 +01:00
b651ed5447 LoadFile does the parsing 2023-11-03 18:05:54 +01:00
d6985cad55 tweak the pretty printer stuff slightly 2023-11-03 18:05:54 +01:00
52e54dcc3c add PrettyVal stuff for parser AST 2023-11-03 18:05:54 +01:00
0c1df54d62 improve handling of context lengths 2023-11-03 18:05:54 +01:00
2e9183bc14 add prettyDef 2023-11-03 18:05:54 +01:00
428397f42b erasure to untyped syntax 2023-11-03 18:05:54 +01:00
0b7bd0ef46 add locations and substitutions to untyped syntax 2023-11-03 18:05:54 +01:00
9cbd998d6f simplify isEmpty and isSubSing 2023-11-03 18:05:54 +01:00
6896c8fcc4 rename SQtys to sg (σ) 2023-11-03 18:05:54 +01:00
be8797a3ef untyped λ calculus syntax 2023-11-03 18:05:54 +01:00
69f032584e fix constructor name in comment 2023-11-03 17:56:42 +01:00
f04c4619ef detect reserved words inside names like 'a.λ.b' 2023-09-24 17:36:26 +02:00
d4de74eab6 change it to #[..] since # is also reserved 2023-09-22 18:38:40 +02:00
8395bec4cb check for duplicate cases in enum matches 2023-09-22 18:37:53 +02:00
d4cfbd4045 add @[fail] modifier to declarations
- `@[fail] def foo = ...` succeeds if `foo` has some error.
- `@[fail "scope"] def foo = ...` succeeds if `foo` has some error
  containing the word "scope" somewhere
- `@[fail] namespace foo { }` works too and the error must be anywhere
  in the namespace
2023-09-22 14:03:22 +02:00
ea674503c0 export PushSubsts, oops 2023-09-20 21:58:55 +02:00
b1eefb0f4d move prettyTag to Quox.Pretty 2023-09-20 21:58:42 +02:00
ee22486e97 rename BindName.name to .val 2023-09-20 21:58:27 +02:00
08fb686bf6 move Scoped to separate module 2023-09-20 21:58:04 +02:00
cf3ed604a4 move Quox.Syntax.Var to just Quox.Var 2023-09-20 21:56:59 +02:00
4704dd0441 remove on-hold dir 2023-09-20 21:55:03 +02:00
dc076b636d fix warnings 2023-09-19 18:13:45 +02:00
80b1b3581a use ST from base 2023-09-19 13:05:01 +02:00
ebde478adc add η for pairs in zero contexts 2023-09-19 00:41:17 +02:00
bb8d2464af add fst and snd 2023-09-18 21:53:38 +02:00
e6c06a5c81 pass the subject quantity through equality etc
in preparation for non-linear η laws
2023-09-18 21:53:38 +02:00
3fe9b96f05 make function types with an empty domain subsingletons
this is useful for the base cases of W types when i try those again

closes #23
2023-09-17 20:10:51 +02:00
244b33d786 fix some comments 2023-09-17 19:11:20 +02:00
b85dcb5402 η for box
fixes #27
2023-09-17 19:11:12 +02:00
e1257560b7 Show for contexts, etc 2023-09-17 19:09:54 +02:00
4c88918ade stop throwing names away 2023-09-17 19:08:49 +02:00
8221d71416 some refactors 2023-09-17 14:41:20 +02:00
7b53d56072 a few basic fv tests to make sure it's not reversed or whatever 2023-09-16 13:34:11 +02:00
fa14ce1a02 add FreeVars, and split only on used dvars in Equal 2023-09-12 09:56:49 +02:00
9973f8d07b refactor elim equality error stuff 2023-09-12 06:48:51 +02:00
1e8932690b untangle big mutual block in Equal 2023-08-28 22:07:57 +02:00
d5d30ee198 loosen pushCoe's type slightly 2023-08-28 20:03:06 +02:00
add2eb400c make Elim.compare0 able to pass a type to isSubSing
it now recovers from (most) errors and always returns a type, so that
isSubSing doesn't have to recalculate it

it already assumed the inputs had the same type. now it just leans on
that assumption harder
2023-08-28 20:00:54 +02:00
6f9d31aa0a add displacement to Definition 2023-08-28 19:59:36 +02:00
32f6e5a3b1 make displace total (with a few asserts) 2023-08-28 19:57:02 +02:00
72609bc12f Elim.compare0 infers the type
instead of calling computeElimType over and over. now there's just one
at the start
2023-08-27 19:05:25 +02:00
3e3bf1b67f factor out this case !mode of {..} stuff 2023-08-27 19:04:30 +02:00
2340b14407 partly improve coercions over constant lines
still needs a real quality check, or something, for stuff like
e : (x ≡ x : A) ⊢ coe (𝑖 ⇒ e @𝑖) x
2023-08-27 18:28:08 +02:00
edfe30ff63 update compare0 for type-directed whnf 2023-08-26 21:32:15 +02:00
ba77c45c64 always print the direction in coe/comp 2023-08-26 21:19:40 +02:00
f3f74d581a fix Main 2023-08-26 21:07:10 +02:00
22db2724ce make coercion computation type-directed like it should be 2023-08-26 21:00:19 +02:00
0bcb8c24db make an optional Loc non-optional 2023-08-26 20:59:39 +02:00
a221380d61 more effect stuff, incl. ST 2023-08-25 18:59:54 +02:00
4b6b3853a1 make uses of eff more consistent 2023-08-24 19:55:57 +02:00
8264a1bb81 split up whnf module 2023-08-24 18:42:26 +02:00
a24ebe0702 tycasePi etc don't actually need a scope of (S d) 2023-08-24 17:45:37 +02:00
688204f1a4 make some things private 2023-08-24 17:45:20 +02:00
09e39d6224 add some comments 2023-08-24 17:45:12 +02:00
00d92d3f25 add missing parens in pretty printer 2023-08-12 10:25:07 +02:00
932469a91e make quantities optional and default to 1 2023-07-18 23:12:04 +02:00
349cf2f477 remove unused Tighten impl 2023-07-17 18:10:13 +02:00
b6264f388d fix #11 the easy way
tightening just pushes substitutions all the way through. bleh
2023-07-17 03:50:16 +02:00
612fb33663 bump again 2023-07-13 21:28:39 +02:00
fa09aaf228 squash warnings 2023-06-23 18:32:05 +02:00
f0d3529f63 fix subtype stuff for Eq 2023-06-22 22:20:12 +02:00
cd330c1092 remove a noLoc 2023-06-11 19:25:38 +02:00
865772d512 remove stale todos 2023-06-11 19:25:32 +02:00
00e79d4264 quote names in Show 2023-05-25 18:34:13 +02:00
3bbf0366c8 make 0 in ★₀ optional 2023-05-21 20:34:05 +02:00
282565c7a3 Whnf ⇒ CanWhnf; WhnfM ⇒ Eff Whnf 2023-05-21 20:34:05 +02:00
2af8ee20ea those were not meant to stay there 2023-05-21 20:34:05 +02:00
42aa07c9c8 crude but effective stratification 2023-05-21 20:34:05 +02:00
e4a20cc632 remove redundancy in equality check 2023-05-20 21:38:23 +02:00
64de93a13c remove square brackets around type lines
(parens are needed if they are anything other than a `term arg`)
2023-05-16 18:14:42 +02:00
d631b86be3 make p,q in coe/comp optional and default to @0 @1 2023-05-15 20:06:40 +02:00
7b93a913c7 rewrite pretty printer 2023-05-15 17:13:14 +02:00
f6abf084b3 qty lub is total actually (usually ω) 2023-05-12 17:28:29 +02:00
8d6ae6cc32 move location to the start of type errors 2023-05-02 19:03:05 +02:00
d5f4a012c5 add source locations to inner syntax 2023-05-02 03:06:25 +02:00
30fa93ab4e refactor core syntax slightly to derive Eq/Show
add a new `WithSubst tm env to` record that packages a `tm from`
with a `Subst env from to`, and write instances for just that. the
rest of the AST can be derived
2023-04-27 21:37:20 +02:00