summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-01-28cleanup unused function and importHelmut Grohne
2014-01-27Merge branch feature-deleteHelmut Grohne
Most conflicts stem from varying imports or added functions and a take-both approach merges them. A notable exception is theorem-2, where a new result sequence-cong was required. Apart from that, theorem-2 could be taken almost verbatim from feature-delete albeit its type coming from feature-decsetoid. Conflicts: Bidir.agda FinMap.agda Generic.agda Precond.agda
2014-01-27Merge branch feature-decsetoidHelmut Grohne
2014-01-27cleanup unused functions and useless stepsHelmut Grohne
2014-01-27prove assoc-enough in the presence of deleteHelmut Grohne
The old definition of bff had a single failure mode - assoc - and its proof was a single cong. Now we need to show that the other failure mode - mapM (flip lookupM ...) - is eliminated by the success of the former resulting in a larger proof.
2014-01-24prove theorem-2 in the presence of deleteHelmut Grohne
The biggest piece of this puzzle was establishing get <$> mapMV f v == mapMV f (get v) provided that the result of mapMV is just something. lemma-union-not-used lost a "map just", but could be retained in structure.
2014-01-23generalize BFF and theorem-2 to arbitrary SetoidsHelmut Grohne
Since the generalization of lemma-checkInsert-restrict there is nothing to show for theorem-1. So everything works with Setoids now yielding the same results as the paper proofs.
2014-01-23show a stronger lemma-checkInsert-restrictHelmut Grohne
We can actually get semantic equality there without requiring anything else. Indeed this was already hinted in the BX for free paper that says, that lemma-1 holds in semantic equality.
2014-01-17generalize checkInsert to arbitrary SetoidsHelmut Grohne
This is another step towards permitting arbitrary Setoids in bff.
2014-01-17show that Vec is an indexed SetoidHelmut Grohne
We get the plain Setoid for free then.
2014-01-16generalize lemma-insert-same to arbitrary SetoidsHelmut Grohne
The general idea is to enable bff to use arbitrary DecSetoids. * assoc needs to learn about DecSetoid * checkInsert needs to learn about DecSetoid * InsertionResult needs to learn about Setoid * Parameters to InsertionResult.same become weaker * lemma-checkInsert-restrict should work with weaker same * lemma-insert-same needs to learn about Setoid
2013-12-17refactor to get rid of FinMap without Maybe entirelyHelmut Grohne
The union was the only user of this type and now it uses only partial mappings. So drop remaining uses of FinMap and make everything work with FinMapMaybe instead.
2013-12-17update bff implementation to use deleteHelmut Grohne
In the presence of shape-changing updates, bff needs to shrink one of the mappings before unifying them. As long the shape does not change, the union becomes a disjoint union. With this insight we can adapt the proof of theorem-1 using the adapted lemma-disjoint-union. Unfortunately theorem-2 requires more work and assoc-enough becomes non-trivial due to the introduction of mapMV.
2013-12-16add a mapM variant on the Maybe monad on VecsHelmut Grohne
2013-12-16move generic functions to a new Generic moduleHelmut Grohne
2013-12-16add new functions delete, delete-many and partializeHelmut Grohne
and accompanying lemmata.
2013-12-16get rid of the ListBFF implementationHelmut Grohne
It is unused, has no proofs and starts to get into the way of refactoring the union function type.
2013-10-02need to fully qualify Data.List.All._::_Helmut Grohne
agda 2.3.0.1 supported the old notation, but 2.3.2.1 needs full qualification.
2013-07-21import _>>=_ and fmap from Data.MaybeHelmut Grohne
Also rename fmap to _<$>_ to match Agda naming conventions. The imported _>>=_ appears to have different binding, so some braces were necessary.
2013-04-19move lemma-\notin-lookupM-assoc to PrecondHelmut Grohne
This removes imports.
2013-04-18trim lemma-union-restrictHelmut Grohne
2013-04-14simpler formulation of All-differentHelmut Grohne
2013-04-10lemma-map-lookupM-assoc is even simplerHelmut Grohne
Since we do the induction in the lemma itself now, there is no need to defer the i =? j test to any.
2013-04-09rewrite lemma-map-lookupM-assocHelmut Grohne
Indeed the usage of is in two different places can be disentangled. What we need is that all lookupM succeed. We already know how to express this: _in-domain-of_. So use a separate list js to map over and require js in-domain-of h'. This is what the original proof actually did. Just now we can drop ph' and therefore is and xs. Also lemma-map-lookupM-insert vanishes, because this generalized form permits direct induction.
2013-02-01employ insertionresult in lemma-lookupM-checkInsertHelmut Grohne
2013-01-28drop the insert- prefix from the insertionresult ctorsHelmut Grohne
2013-01-28polish lemmata in FinMapHelmut Grohne
2013-01-17Merge branch view2 into masterHelmut Grohne
Get rid of checkInsertProof entirely. Conflicts: Bidir.agda (change of lemma-just\==nnothing vs. checkInsertProof removal)
2013-01-14shrink lemma-union-not-used by matching on All's ctorHelmut Grohne
2013-01-14define a more useful version of lemma-just\==nnothingHelmut Grohne
If one had a parameter of type just x \== nothing it could be simply refuted by case splitting. So the cases where lemma-just\==nnothing was used always employed trans to combine two results. The new version takes both results instead.
2013-01-12introduce a proper view on checkInsertHelmut Grohne
Thanks to Joachim Breitner for helping me to work out the definition of InsertionResult and to Daniel Seidel for helping me understand what makes a view.
2013-01-10clean imports of PrecondHelmut Grohne
2013-01-10use different formulation of all-differentHelmut Grohne
Suggested by Joachim Breitner.
2013-01-10Merge branch 'newlemma'Helmut Grohne
This branch splits lemma-\notin-lookupM-assoc into an offspring lemma-lookupM-checkInsert-other in the spirit of lemma-lookupM-insert-other.
2013-01-10reduce a precondition of lemma-checkInsert-lookupMHelmut Grohne
Now it looks a lot more like lemma-lookupM-insert-other, so rename it to lemma-lookupM-checkInsert-other.
2013-01-10rewrite lemma-\notin-lookupM-assocHelmut Grohne
It can be shortened considerably using lemma-checkInsert-lookupM.
2013-01-10add new lemma-checkInsert-lookupMHelmut Grohne
Suggested by Joachim Breitner.
2013-01-09simplify lemma-lookupM-checkInsert using case-splitHelmut Grohne
2013-01-05shrink lemma-union-not-used using cong\_2Helmut Grohne
2013-01-05shrink lemma-tabulate-\circ using cong\_2Helmut Grohne
2013-01-05shrink lemma-map-lookupM-insert using cong\_2Helmut Grohne
2013-01-05shrink base case of lemma-/notin-lookupM-assocHelmut Grohne
2012-12-14un-inline different-dropHelmut Grohne
2012-12-10drop unused importHelmut Grohne
2012-12-10get rid of contrapositionHelmut Grohne
Using function composition in all other places already.
2012-12-10drop unused param from lemma-map-lookupM-insertHelmut Grohne
2012-12-07reduce useless case in lemma-map-lookupM-assocHelmut Grohne
2012-11-22shorten line length of lemma-lookupM-checkInsertHelmut Grohne
2012-11-22shorten line lengths lemma-union-restrictHelmut Grohne
2012-11-22shorten line lengths of theorem-2Helmut Grohne