bossLib.FULL_SIMP_TAC : simpset -> thm list -> tactic
In addition, simplified assumptions are added back onto the goal using the equivalent of STRIP_ASSUME_TAC and this causes automatic skolemization of existential assumptions, case splits on disjunctions, and the separate assumption of conjunctions. If an assumption is simplified to TRUTH, then this is left on the assumption list. If an assumption is simplified to falsity, this proves the goal.
> FULL_SIMP_TAC arith_ss [] (map Term [`x = 3`, `x < 2`], Term `?y. x * y = 51`) - val it = ([], fn) : tactic_result
> FULL_SIMP_TAC bool_ss [LESS_OR_EQ] (map Term [`x <= y`, `x < z`], Term `x + y < z`); - val it = ([([`x < y`, `x < z`], `x + y < z`), ([`x = y`, `x < z`], `y + y < z`)], fn) : tactic_result
Each assumption is used to rewrite lower-numbered assumptions. To get the opposite effect, where each assumption is used to rewrite higher-numbered assumptions, use REV_FULL_SIMP_TAC.