Commit Graph

198 Commits

Author SHA1 Message Date
Fedor Isakov 012b8963cb Fix errors found by model checker in lambdacalc sample. 2019-01-31 12:05:21 +01:00
Fedor Isakov 9243c00c65 Fix issues found by model checker (ex typesystem). 2019-01-31 11:30:02 +01:00
grigorii.kirgizov 8d7bdcf173 lc: minor: Remove unneeded checkConstraints in subsumption
This case is anyhow handled by typeConstraints_discharge rule, when subsumes_leaves fires up,
even before those removed checks repeat this work.
2019-01-28 17:02:55 +03:00
grigorii.kirgizov 172f74b6f8 lc: minor: Add some comments. Some cleanup. 2019-01-28 16:59:05 +03:00
grigorii.kirgizov a2012219b7 lc: Fix spurious typeConstraints reactivation on forall gen. Fix recursive case in instanceCheck.
As a consequence, there's a simplification of produceTypeConstraints rules.
Also add comments and fix some test cases: some of them are actually typeable.
Now tests are correct (checked against Haskell's typechecker) and all pass.
2019-01-28 13:32:32 +03:00
grigorii.kirgizov 0a5a7ec3c6 lc: minor: in 'typeclasses' restructure rule for Typeclass, add few comments, add Doc for failing type output (TypeclassesTest) 2019-01-28 11:38:33 +03:00
grigorii.kirgizov 41e8d3d96e lc: Fix forgotten typeOf rule for 'fix' operator. Add typeclasses tests to test suite. 2019-01-28 11:38:33 +03:00
grigorii.kirgizov 2a44bb0ef0 lc: Fix absence of type output in some cases -- match in `produceTypeConstraints` rule in a different way 2019-01-28 11:38:33 +03:00
grigorii.kirgizov d364dc24e4 lc: add type output (with a workaround) for Constraints in 'recover'
Workaround: ConstraintRepr SNode is added specifically for outputting types.
2019-01-28 11:38:33 +03:00
grigorii.kirgizov 4044b7f5e8 lc: Split typeConstraints constraint to two, according to its 2 types of usages: as typevar def and as actual Constraints 2019-01-28 11:38:33 +03:00
grigorii.kirgizov ecc6c4aed2 lc: Add Constraint check for unified terms. Few fixes for typeclasses. Add typecheck deps for typeclasses. Some tests.
Some Constraints checks are not covered by 'subsumed', so, need top rule for discharging those.
Fix Constraint set production in 'types', use new set for each type var. Fix 'instance' constraint.
2019-01-28 11:38:33 +03:00
grigorii.kirgizov 20c9e0aae8 lc: add initial version of Constraints check rules, part of subsumption. Add partial recover rules. Other minor changes.
Also a fix to typeOf_PrototypeImpl rule, and a fix to instTypeVars: needed to copy Constraint sets.
2019-01-28 11:38:33 +03:00
Fedor Isakov 37b6afa642 Enable back working tests in lambdacalc 2019-01-26 14:15:30 +01:00
Fedor Isakov f3c2f53fa6 Temporarily disable failing tests in lambdacalc sample 2019-01-25 15:02:26 +01:00
Fedor Isakov fc1fcaaf9d Cleanup a test: better layout of nested lists. 2019-01-21 11:20:30 +01:00
grigorii.kirgizov 5d5a102661 lc: minor: move Cons-list utils to its own handler 2019-01-16 18:19:11 +03:00
grigorii.kirgizov 87cdde5309 lc: 2 fixes for previous commit: walkaround in rules with 'deep' pattern-matching in heads; produce empty typeConstraints on user annos (in types) 2019-01-16 18:16:11 +03:00
grigorii.kirgizov 06623693bf lc: add rules for Proto & ProtoImpl; modify inst and gen for Constraints in forall; move typeConstraints rule
Rule for PrototypeImpl is the heaviest.
Also, it seems that constraint field in Forall DataForm isn't needed.
2019-01-16 17:48:34 +03:00
grigorii.kirgizov bd8e0ab00c lc: add handling of Typeclass and Instance clauses, add macro for Constraint collection, add Set for this 2019-01-16 13:27:56 +03:00
grigorii.kirgizov b0e5edb03a lc: remove getType rule and translate type annotations to dataforms in macro; also minor changes 2019-01-16 11:48:09 +03:00
grigorii.kirgizov 94659549bc lc: fix failing test: fix usages of eq rule in subsumption 2019-01-16 11:14:41 +03:00
Fedor Isakov 7f7f290b01 Temporarily comment out two instances of let clause that produced errors in tests 2019-01-13 17:53:06 +01:00
Fedor Isakov dce532c5c7 Apply automatic migrations in lambdalc project 2019-01-13 17:53:01 +01:00
Fedor Isakov 275070c786 Apply automatic migrations to mpscore subproject 2019-01-13 14:27:38 +01:00
Fedor Isakov 08bed0c578 Apply automatic migrations to FitchProof subproject 2019-01-13 14:27:32 +01:00
grigorii.kirgizov ce34b598c2 lc: minor: add simple Typeclass examples (it's only structure/editor/scopes example); add one test case to DemoScopes 2019-01-11 19:09:44 +03:00
grigorii.kirgizov c8233c24d7 lc: move to fully nameless representation of type vars; assign names only in recover
It is also a necessary step to bidirectional typechecking and can simplify things in other places
2019-01-11 19:09:44 +03:00
grigorii.kirgizov eb80329a54 lc: change recover_varRef rule, propagate to recover_Var rule instead of duplicating it 2019-01-11 19:09:44 +03:00
grigorii.kirgizov fb4fe40973 lc: typeclasses: added structure, editor, constraints (mainly concerned with scoping) aspects 2019-01-11 19:09:44 +03:00
grigorii.kirgizov cf855fc19b lc: add test case for correct handling of instantiation scopes in forall. fails now. 2019-01-11 19:09:44 +03:00
grigorii.kirgizov 2cc804079a lc: add test case in DemoScopes for isomorphism between similar forall type
It checks that subsumtion relation is actually a richer 'dsk' relation
from Peyton Jones et al. 2007
2019-01-11 19:09:44 +03:00
grigorii.kirgizov 61e282da6c lc: minor: remove few commented lines, add few comments; add space between typevars in ForallType editor 2019-01-11 19:09:44 +03:00
Fedor Isakov 134fbb5cdb Add missing dependency to lambdacalc test model 2019-01-09 14:48:21 +01:00
Fedor Isakov f226bea8c2 Minor fixes in the BL typechecking templates. Insert manual new lines in the test structures for better visualization. 2019-01-09 13:01:37 +01:00
grigorii.kirgizov 4eab15c0a3 lc: add DemoScopes test case, fix one test example; reverse displayed order of user-supplied type annotations 2019-01-09 12:49:34 +03:00
grigorii.kirgizov 583358dc25 lc: modify name assignment to variables in 'forall' 2019-01-09 11:54:27 +03:00
grigorii.kirgizov 9180f16c25 lc: minor: uncomment typeOf_AnnVarRef rule (not fully tested yet), add dummy test rule 2019-01-09 11:18:20 +03:00
grigorii.kirgizov 8da1f51434 lc: move some examples, add error annotations in DemoScopes and test case for annotations 2019-01-09 11:18:20 +03:00
grigorii.kirgizov 1de24dd83c lc: minor: editor enhancements 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 47130f794d lc: add proper type var scopes for AnnExpr 2019-01-09 11:17:42 +03:00
grigorii.kirgizov b727b375ba lc: disallow nested annotations on variables definitions 2019-01-09 11:17:42 +03:00
grigorii.kirgizov c407e29ec4 lc: some refactorings nothing special 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 682ed5b90b lc: refine subsumption rel; add examples in DemoScope; editor enhancements (amend commit) 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 24ce9e73aa lc: refine subsumption rel; add examples in DemoScope; editor enhancements 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 7f02d10b62 Add expr annotations; add examples 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 440fcf868a Intermediate commit: add VarType DF with editor; partial work on subsumed relation 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 2fa00cac72 Minor: move annotation rules to its own handler 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 06baa99da8 Add Var term; use it instead of free var-s in forall for subst.
Still not finished: can't pass Var name (see forall, freeTypeVars_isFree).
Also add subsumption relation for annotations.
2019-01-09 11:17:42 +03:00
grigorii.kirgizov 58a518af4f Partially working forall quantified types
Substitution (i.e. forall instantiation) doesn't work in this version.
2019-01-09 11:17:42 +03:00
grigorii.kirgizov 084c4581f0 Bounded type vars: add free type var collection (in typeOf), gen, inst, list utils 2019-01-09 11:17:42 +03:00