# prove(`x + 1 = 1 + x /\ 1 + 1 = 2`,
CONJ_TAC THENL [ALL_TAC; ARITH_TAC] THEN REWRITE_TAC[ADD_SYM]);;
val it : thm = |- x + 1 = 1 + x /\ 1 + 1 = 2
# g `x + 1 = 1 + x /\ 1 + 1 = 2`;;
Warning: Free variables in goal: x
val it : goalstack = 1 subgoal (1 total)
`x + 1 = 1 + x /\ 1 + 1 = 2`
# e(CONJ_TAC);;
val it : goalstack = 2 subgoals (2 total)
`1 + 1 = 2`
`x + 1 = 1 + x`
# er(ALL_TAC);; (* rotates 1 subgoal *)
1 subgoal (2 total)
`x + 1 = 1 + x`
(Rotating 1 subgoal...)
val it : goalstack = 1 subgoal (2 total)
`1 + 1 = 2`
# e(ARITH_TAC);;
val it : goalstack = 1 subgoal (1 total)
`x + 1 = 1 + x`
# e(REWRITE_TAC[ADD_SYM]);;
val it : goalstack = No subgoals