Skip to content

Conversation

briangmilnes
Copy link
Contributor

Here is a much cleaner FStar.Strings.* which proves index_extensionality instead of defining a new eq.
Once I had it there, I also proved it for Seq and ImmutableArray.

The biggest question that I have, due to FStar.String.fsti being implemented only in FStar_String.ml I had to make
this FStar.String.{Base,Properties} which must be separately included ONLY for the new lemmas and functions.

FStar.String.Match contains first_diff as we are sure to end up adding some string matching someday.

There are two test files, one validation time, Test.FStar.String and one runtime that mere prints Test.FStar.String.TestMain
as with interfaces some functionality can not be tested at assert time. When Final is ready we might move the runtime tests
to that, once it is accepted.

@briangmilnes
Copy link
Contributor Author

Interestingly this checkin left around some file references in my next branch (from master) that appeared in test. What's the right way to clean up test? make clean; make -j20; make -j20 ci did not do the job.

(forall (i: nat{i < pos}). index s1 i = index s2 i))

let streq_upto_min s1 s2 (pos: int{pos < (min (strlen s1) (strlen s2))}) =
(forall (i: nat{i < (pos - 1)}). index s1 i = index s2 i)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The minus 1 here looks suspicious.

Tot (o : (option (pos: nat{pos <= (min (strlen s1) (strlen s2))})) {
(None? o ==> strlen s1 = strlen s2 /\ streq_upto s1 s2 (strlen s1)) /\
(Some? o ==>
streq_upto_min s1 s2 ((Some?.v o) - 1) /\
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Especially given an additional -1 here

@briangmilnes
Copy link
Contributor Author

Thank you it was indeed bogus to use a -1 there when pos means the index (not exclusive).

@briangmilnes
Copy link
Contributor Author

And now, no -1s.

@briangmilnes
Copy link
Contributor Author

I take that back, build issues not detecting a bug, the LSP was passing things that the command line is catching. I'll get this fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants