Because F* uses an SMT solver in the backend, and in general SMT solvers cannot 
solve formulas by induction*. Literature on SAT/SMT is huge and I am not the 
right person to point you to the best reads but you can always start at 
wikipedia: https://en.wikipedia.org/wiki/Satisfiability_modulo_theories 
<https://en.wikipedia.org/wiki/Satisfiability_modulo_theories>

* Came by this paper recently, which tries to integrate inductive reasoning to 
the CVC4 solver: https://dl.acm.org/citation.cfm?id=2958791

> On Apr 3, 2018, at 3:12 AM, Nitin John Raj via fstar-club 
> <fstar-club@lists.gforge.inria.fr> wrote:
> 
> Hey all!
> I was practicing verifying lemmas in F* from the tutorial, and I came across 
> a few things that I didn't really understand. 
> 
> From 
> https://www.fstar-lang.org/tutorial/tutorial.html#sec-to-type-intrinsically-or-to-prove-lemmas
>  
> <https://www.fstar-lang.org/tutorial/tutorial.html#sec-to-type-intrinsically-or-to-prove-lemmas>:
> '''
> val reverse: #a:Type -> f:(list a -> Tot (list a)){forall l. l == f (f l)
> However, F* refuses to accept this as a valid type for reverse: proving this 
> property requires two separate inductions, neither of which F* can perform 
> automatically.
> 
> '''
> 
> Why can't F* perform these inductions automatically? What are the bounds of 
> inference on the SMT solver? Can someone shoot me resources on the same?
> 
> Sincerely,
> 
> Nitin John Raj
> 
> _______________________________________________
> fstar-club mailing list
> fstar-club@lists.gforge.inria.fr
> https://lists.gforge.inria.fr/mailman/listinfo/fstar-club

_______________________________________________
fstar-club mailing list
fstar-club@lists.gforge.inria.fr
https://lists.gforge.inria.fr/mailman/listinfo/fstar-club

Reply via email to