I have already proved the following lemma:
Lemma ord_semiconnex_bool : forall (alpha beta : ord),
ord_ltb alpha beta = true \/ ord_ltb beta alpha = true \/ ord_eqb alpha beta = true.
I would like to do case analysis on it for another theorem I'm proving, and I'm trying to apply it to the objects:
gamma1 alpha1 : ord
But if I say:
destruct (ord_semiconnex_bool gamma1 alpha1).
This gives me two branches instead of three. In the first branch I get:
H0 : ord_ltb gamma1 alpha1 = true
And in the second branch I get:
H0 : ord_ltb alpha1 gamma1 = true \/ ord_eqb gamma1 alpha1 = true
So I've just been calling "destruct H0" when I'm in the second branch, giving me the two further sub-branches I want. But that's pretty inelegant and my proofs look pretty ugly as a result.
Is there a way I can destruct my theorem into its 3 disjuncts all at once?
destruct (...) as [ H1 | [ H2 | H3 ] ]