Cases : tactic
The cases theorem for a type ty will be of the form:
|- !v:ty. (?x11...x1n1. v = C1 x11 ... x1n1) \/ .... \/
(?xm1...xmnm. v = Cm xm1 ... xmnm)
|- !n. (n = 0) \/ (?m. n = SUC m)
- Hol_datatype `foo = Bar of num | Baz of bool`; > val it = () : unit
- val foofn_def = Define `(foofn (Bar n) = n + 10) /\
(foofn (Baz x) = 10)`;
> val foofn_def =
|- (!n. foofn (Bar n) = n + 10) /\
!x. foofn (Baz x) = 10 : thm
?- !x. foofn x >= 10
====================================================== Cases
?- foofn (Bar n) >= 10 ?- foofn (Baz b) >= 10