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