Mix-up of bool and Datatypes.bool after Require Import Omega
I'm going through software foundations and ran into an error. ERROR : The term "true" has type "bool" while it is expected to have type "Datatypes.bool" for the proof below. Theorem beq_nat_true : forall n m, beq_nat n m = true -> n = m. I found out that this is happening when I use Require Import Omega. Any tips, suggestions or explanations of what Omega introduces into the environment?
The Omega module indirectly imports many definitions of the standard library that manipulate natural numbers, some of which end up shadowing parts of Software Foundations. The beq_nat function is one of them. The problem arises because the version of the standard library for beq_nat returns standard booleans, whereas the one of SF returns its redefined booleans. We noticed this problem a while ago, and have already fixed it in the current version. If you don't want to redownload everything (or if you have imported Omega yourself), you can also just qualify beq_nat to use the right version. My guess is that Basics.beq_nat should work.
Coq fixpoint defintion numerated by natural numbers.(type of (n+1)'s type depends on (n)'s type)
`No more subgoals, but there are non-instantiated existential variables` in Coq proof language?
Apply partially instantiated lemma
Using reflexivity in Coq
High-speed calculation of Coq's theorems
Topological Definition of Continuous in Coq
Reference in Coq Lists library not found
Purpose of maximal vs non-maximal implicit arguments
Idris type system properties
How to destruct/generalize over Program's rewritten match statements
Show all axioms Coq
Product Type in Coq
Coq inductive definition for the entailment property
How to make sublists in Coq?
Nested theorems in Coq