Skip to content
Discussion options

You must be logged in to vote

By default, F* uses the SMT solver to prove asserts. SMT solvers are not the ideal tool for proving properties that require computation. They are better suited for equational reasoning.

To ask F* to prove this assert by computation, you can do this:

assert_norm (contains "estxyz" 't' = true)

which F* reduces and proves easily.

There's a bit about it in the wiki: https://github.com/FStarLang/FStar/wiki/Using-SMT-fuel-and-the-normalizer#using-smt-fuel-to-control-fixpoint-unrolling

And a bit about how F* encodes recursive functions to SMT here: https://fstar-lang.org/tutorial/book/under_the_hood/uth_smt.html#recursive-functions-and-fuel

There are a couple of references to assert_norm in the…

Replies: 2 comments

Comment options

You must be logged in to vote
0 replies
Answer selected by JansthcirlU
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants