Commit Graph

328 Commits

Author SHA1 Message Date
rhiannon morris 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
rhiannon morris 6c8ebfb804 fix some comments 2023-11-05 15:41:21 +01:00
rhiannon morris f58fa5218f subscript numbers are no longer special 2023-11-05 15:39:52 +01:00
rhiannon morris e211887a34 string/nat lit stuff 2023-11-05 15:38:13 +01:00
rhiannon morris 3b9a339e5e rename "Tag" highlight to "Constant" 2023-11-05 14:30:40 +01:00
rhiannon morris 2f8a2d2cd2 fix typo in error 2023-11-04 17:45:55 +01:00
rhiannon morris 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
rhiannon morris 90cdcfe4da add \n and \t escapes to the lexer 2023-11-03 20:07:59 +01:00
rhiannon morris 5dfefe443c more tidying of outputs 2023-11-03 18:05:54 +01:00
rhiannon morris 0514fff481 represent ℕ constants directly
instead of as huge `succ (succ (succ ⋯))` terms
2023-11-03 18:05:54 +01:00
rhiannon morris fa7f82ae5a rename Nat to NAT in AST 2023-11-03 18:05:54 +01:00
rhiannon morris e0ed37720f always vsep scheme lets, otherwise they are unreadable 2023-11-03 18:05:54 +01:00
rhiannon morris 050346e344 add postulate, #[compile-scheme], #[main] 2023-11-03 18:05:54 +01:00
rhiannon morris cc0bade747 scheme output 2023-11-03 18:05:54 +01:00
rhiannon morris cd08a0fd98 more erasure 2023-11-03 18:05:54 +01:00
rhiannon morris 314e7f036d make nat elimination with erased IH non-recursive at runtime 2023-11-03 18:05:54 +01:00
rhiannon morris 6ab9637ab5 don't keep erased applications actually 2023-11-03 18:05:54 +01:00
rhiannon morris b6fd1e921e pretty printing improvements 2023-11-03 18:05:54 +01:00
rhiannon morris f4a45b6c52 keep the Except effect at the start of the list 2023-11-03 18:05:54 +01:00
rhiannon morris 8e0d66cab8 more erasure 2023-11-03 18:05:54 +01:00
rhiannon morris ea74c148b7 some of this EffExtra stuff doesn't work 2023-11-03 18:05:54 +01:00
rhiannon morris 83ab871d61 new main 2023-11-03 18:05:54 +01:00
rhiannon morris 421eb220fd erasure refactor 2023-11-03 18:05:54 +01:00
rhiannon morris fbb862c88b %default total 2023-11-03 18:05:54 +01:00
rhiannon morris b651ed5447 LoadFile does the parsing 2023-11-03 18:05:54 +01:00
rhiannon morris 52e54dcc3c add PrettyVal stuff for parser AST 2023-11-03 18:05:54 +01:00
rhiannon morris 0c1df54d62 improve handling of context lengths 2023-11-03 18:05:54 +01:00
rhiannon morris 2e9183bc14 add prettyDef 2023-11-03 18:05:54 +01:00
rhiannon morris 428397f42b erasure to untyped syntax 2023-11-03 18:05:54 +01:00
rhiannon morris 0b7bd0ef46 add locations and substitutions to untyped syntax 2023-11-03 18:05:54 +01:00
rhiannon morris 9cbd998d6f simplify isEmpty and isSubSing 2023-11-03 18:05:54 +01:00
rhiannon morris 6896c8fcc4 rename SQtys to sg (σ) 2023-11-03 18:05:54 +01:00
rhiannon morris be8797a3ef untyped λ calculus syntax 2023-11-03 18:05:54 +01:00
rhiannon morris 69f032584e fix constructor name in comment 2023-11-03 17:56:42 +01:00
rhiannon morris f04c4619ef detect reserved words inside names like 'a.λ.b' 2023-09-24 17:36:26 +02:00
rhiannon morris d4de74eab6 change it to #[..] since # is also reserved 2023-09-22 18:38:40 +02:00
rhiannon morris 8395bec4cb check for duplicate cases in enum matches 2023-09-22 18:37:53 +02:00
rhiannon morris 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
rhiannon morris ea674503c0 export PushSubsts, oops 2023-09-20 21:58:55 +02:00
rhiannon morris b1eefb0f4d move prettyTag to Quox.Pretty 2023-09-20 21:58:42 +02:00
rhiannon morris ee22486e97 rename BindName.name to .val 2023-09-20 21:58:27 +02:00
rhiannon morris 08fb686bf6 move Scoped to separate module 2023-09-20 21:58:04 +02:00
rhiannon morris cf3ed604a4 move Quox.Syntax.Var to just Quox.Var 2023-09-20 21:56:59 +02:00
rhiannon morris dc076b636d fix warnings 2023-09-19 18:13:45 +02:00
rhiannon morris 80b1b3581a use ST from base 2023-09-19 13:05:01 +02:00
rhiannon morris ebde478adc add η for pairs in zero contexts 2023-09-19 00:41:17 +02:00
rhiannon morris bb8d2464af add fst and snd 2023-09-18 21:53:38 +02:00
rhiannon morris e6c06a5c81 pass the subject quantity through equality etc
in preparation for non-linear η laws
2023-09-18 21:53:38 +02:00
rhiannon morris 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
rhiannon morris 244b33d786 fix some comments 2023-09-17 19:11:20 +02:00
rhiannon morris b85dcb5402 η for box
fixes #27
2023-09-17 19:11:12 +02:00
rhiannon morris e1257560b7 Show for contexts, etc 2023-09-17 19:09:54 +02:00
rhiannon morris 4c88918ade stop throwing names away 2023-09-17 19:08:49 +02:00
rhiannon morris 8221d71416 some refactors 2023-09-17 14:41:20 +02:00
rhiannon morris 7b53d56072 a few basic fv tests to make sure it's not reversed or whatever 2023-09-16 13:34:11 +02:00
rhiannon morris fa14ce1a02 add FreeVars, and split only on used dvars in Equal 2023-09-12 09:56:49 +02:00
rhiannon morris 9973f8d07b refactor elim equality error stuff 2023-09-12 06:48:51 +02:00
rhiannon morris 1e8932690b untangle big mutual block in Equal 2023-08-28 22:07:57 +02:00
rhiannon morris d5d30ee198 loosen pushCoe's type slightly 2023-08-28 20:03:06 +02:00
rhiannon morris 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
rhiannon morris 6f9d31aa0a add displacement to Definition 2023-08-28 19:59:36 +02:00
rhiannon morris 32f6e5a3b1 make displace total (with a few asserts) 2023-08-28 19:57:02 +02:00
rhiannon morris 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
rhiannon morris 3e3bf1b67f factor out this `case !mode of {..}` stuff 2023-08-27 19:04:30 +02:00
rhiannon morris 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
rhiannon morris edfe30ff63 update compare0 for type-directed whnf 2023-08-26 21:32:15 +02:00
rhiannon morris ba77c45c64 always print the direction in coe/comp 2023-08-26 21:19:40 +02:00
rhiannon morris f3f74d581a fix Main 2023-08-26 21:07:10 +02:00
rhiannon morris 22db2724ce make coercion computation type-directed like it should be 2023-08-26 21:00:19 +02:00
rhiannon morris 0bcb8c24db make an optional Loc non-optional 2023-08-26 20:59:39 +02:00
rhiannon morris a221380d61 more effect stuff, incl. ST 2023-08-25 18:59:54 +02:00
rhiannon morris 4b6b3853a1 make uses of eff more consistent 2023-08-24 19:55:57 +02:00
rhiannon morris 8264a1bb81 split up whnf module 2023-08-24 18:42:26 +02:00
rhiannon morris a24ebe0702 tycasePi etc don't actually need a scope of (S d) 2023-08-24 17:45:37 +02:00
rhiannon morris 688204f1a4 make some things private 2023-08-24 17:45:20 +02:00
rhiannon morris 09e39d6224 add some comments 2023-08-24 17:45:12 +02:00
rhiannon morris 00d92d3f25 add missing parens in pretty printer 2023-08-12 10:25:07 +02:00
rhiannon morris 932469a91e make quantities optional and default to 1 2023-07-18 23:12:04 +02:00
rhiannon morris 349cf2f477 remove unused Tighten impl 2023-07-17 18:10:13 +02:00
rhiannon morris b6264f388d fix #11 the easy way
tightening just pushes substitutions all the way through. bleh
2023-07-17 03:50:16 +02:00
rhiannon morris 612fb33663 bump again 2023-07-13 21:28:39 +02:00
rhiannon morris fa09aaf228 squash warnings 2023-06-23 18:32:05 +02:00
rhiannon morris f0d3529f63 fix subtype stuff for Eq 2023-06-22 22:20:12 +02:00
rhiannon morris cd330c1092 remove a noLoc 2023-06-11 19:25:38 +02:00
rhiannon morris 865772d512 remove stale todos 2023-06-11 19:25:32 +02:00
rhiannon morris 00e79d4264 quote names in Show 2023-05-25 18:34:13 +02:00
rhiannon morris 3bbf0366c8 make 0 in ★₀ optional 2023-05-21 20:34:05 +02:00
rhiannon morris 282565c7a3 Whnf ⇒ CanWhnf; WhnfM ⇒ Eff Whnf 2023-05-21 20:34:05 +02:00
rhiannon morris 2af8ee20ea those were not meant to stay there 2023-05-21 20:34:05 +02:00
rhiannon morris 42aa07c9c8 crude but effective stratification 2023-05-21 20:34:05 +02:00
rhiannon morris e4a20cc632 remove redundancy in equality check 2023-05-20 21:38:23 +02:00
rhiannon morris 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
rhiannon morris d631b86be3 make p,q in coe/comp optional and default to @0 @1 2023-05-15 20:06:40 +02:00
rhiannon morris 7b93a913c7 rewrite pretty printer 2023-05-15 17:13:14 +02:00
rhiannon morris f6abf084b3 qty lub is total actually (usually ω) 2023-05-12 17:28:29 +02:00
rhiannon morris 8d6ae6cc32 move location to the start of type errors 2023-05-02 19:03:05 +02:00
rhiannon morris d5f4a012c5 add source locations to inner syntax 2023-05-02 03:06:25 +02:00
rhiannon morris 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
rhiannon morris 7e079a9668 add file locations to Parser.Syntax
they're immediately thrown away currently. but one step at a time
2023-04-26 06:12:03 +02:00
rhiannon morris b5f42cde64 remove big mutual blocks in parser 2023-04-26 02:28:08 +02:00