What you're trying to prove doesn't hold if y <= z, because with nat a-b is zero if a <= b. Omega is a useful tactic to use for inequalities and simple arithmetic over nat. Require Import Omega. Theorem foo: forall x y z:nat, (x = 0 \/ z <=...

arguments,coq,implicit-typing,coqide

I just tried it on my (somewhat old) Coq 8.4 and I don't have any problem with the implicit declaration. However if I write Argument instead of Arguments (notice the lack of "s"), I get Error: Unknown command of the non proof-editing mode. Did you correctly spelled it ? EDIT:...

I'm fairly certain that this is not provable. Given your proof context: 4 subgoal a : aexp a0 : aexp st : state ______________________________________(1/4) (BEq a a0 = BTrue \/ BEq a a0 = BFalse) \/ (exists b' : bexp, BEq a a0 / st ==>b b') You need to...

If you want to show such an equality, you need to (1) show the associated relations are equal, and (2) show that the corresponding proofs are equal. There are two problems, however. The first one is that the notion of equality on functions is too weak in Coq. In other...

Following your answer to my comment, I don't think you can define a "function" g, because you need a constructive way do distinguish x from other instances of type X. However you could define a relation between the two, which could be transformed into a function if you get decidability....