All Questions
25
questions
3
votes
1
answer
156
views
Applying custom tactic in hypothesis
To avoid tedious repetition I have a tactic that looks something like this:
Ltac unfolds := try unfold foo;
try unfold bar;
try unfold baz;
apply some_lemma.
...
3
votes
2
answers
232
views
Coq: can `tauto` be used to prove classical tautologies?
When I experiment, I get inconsistent results.
Running the following code (with a proof included to double-check that it's provable)
...
3
votes
0
answers
93
views
Where is the discriminate tactic defined in Coq?
One can read the Coq documentation about discriminate tactic here.
Were is this tactic actually defined?
6
votes
1
answer
405
views
How to evaluate proof terms through opaque definitions?
Is there is a way to force computation over opaque terms, for the purposes of debugging/meta-analysis of proof scripts.
I understand why Coq doesn’t do this by default, and guess it would probably ...
5
votes
0
answers
164
views
Prove equality in a record type
I am trying to prove something about monoids an categories. This results in the following (partial) proof:
...
5
votes
1
answer
313
views
Cannot discriminate `0 = 1`
I am just practicing a bit with coq, doing some UniMath exercises and am trying to prove (0 = 1) -> empty. However, for some reason, I seem unable to reason ...
11
votes
2
answers
415
views
Proving uniqueness of an instance of an indexed inductive type
Consider the simple indexed inductive type
Inductive Single : nat -> Set :=
| single_O : Single O
| single_S {n} : Single n -> Single (S n).
Intuitively, I ...
4
votes
1
answer
175
views
Why does this trivial proof fail with structuring tacticals?
Given this:
Inductive color := Black | White.
Inductive point_state :=
| Occupied of color
| Empty
.
this works:
...
1
vote
1
answer
370
views
Form of intros in Coq specifically for `forall` and explicitly for `->`
Are there tactics in Coq that are more limited versions (subtactics?) of intros?
I'm curious if there are any specifically for ...
8
votes
2
answers
228
views
How to prove `forall m n : nat, m == n -> m = n`?
I am learning Coq with ssreflect. Just to understand things, I've proved forall a b : bool, a == b -> a = b but I can't figure out how to prove ...