src/HOL/Nominal/nominal_datatype.ML
changeset 54895 515630483010
parent 54742 7a86358a3c0b
child 55990 41c6b99c5fb7
equal deleted inserted replaced
54894:cb9d981fa9a0 54895:515630483010
  1521         val ths = map (fn th => Drule.export_without_context (th RS mp)) (Datatype_Aux.split_conj_thm
  1521         val ths = map (fn th => Drule.export_without_context (th RS mp)) (Datatype_Aux.split_conj_thm
  1522           (Goal.prove_global_future thy11 [] []
  1522           (Goal.prove_global_future thy11 [] []
  1523             (augment_sort thy1 pt_cp_sort
  1523             (augment_sort thy1 pt_cp_sort
  1524               (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj (map HOLogic.mk_imp ps))))
  1524               (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj (map HOLogic.mk_imp ps))))
  1525             (fn {context = ctxt, ...} => rtac rec_induct 1 THEN REPEAT
  1525             (fn {context = ctxt, ...} => rtac rec_induct 1 THEN REPEAT
  1526                (simp_tac (Simplifier.global_context thy11 HOL_basic_ss
  1526                (simp_tac (put_simpset HOL_basic_ss ctxt
  1527                   addsimps flat perm_simps'
  1527                   addsimps flat perm_simps'
  1528                   addsimprocs [NominalPermeq.perm_simproc_app]) 1 THEN
  1528                   addsimprocs [NominalPermeq.perm_simproc_app]) 1 THEN
  1529                 (resolve_tac rec_intrs THEN_ALL_NEW
  1529                 (resolve_tac rec_intrs THEN_ALL_NEW
  1530                  asm_simp_tac (put_simpset HOL_ss ctxt addsimps (fresh_bij @ perm_bij))) 1))))
  1530                  asm_simp_tac (put_simpset HOL_ss ctxt addsimps (fresh_bij @ perm_bij))) 1))))
  1531         val ths' = map (fn ((P, Q), th) =>
  1531         val ths' = map (fn ((P, Q), th) =>
  1923                         (fn _ => simp_tac (put_simpset HOL_ss context'' addsimps fresh_bij) 1 THEN
  1923                         (fn _ => simp_tac (put_simpset HOL_ss context'' addsimps fresh_bij) 1 THEN
  1924                            rtac th 1)
  1924                            rtac th 1)
  1925                       in
  1925                       in
  1926                         Goal.prove context'' [] []
  1926                         Goal.prove context'' [] []
  1927                           (HOLogic.mk_Trueprop (fresh_const aT rT $ b $ lhs'))
  1927                           (HOLogic.mk_Trueprop (fresh_const aT rT $ b $ lhs'))
  1928                           (fn _ => EVERY
  1928                           (fn {context = ctxt, ...} => EVERY
  1929                              [cut_facts_tac [th'] 1,
  1929                              [cut_facts_tac [th'] 1,
  1930                               full_simp_tac (Simplifier.global_context thy11 HOL_ss  (* FIXME context'' (!?) *)
  1930                               full_simp_tac (put_simpset HOL_ss ctxt
  1931                                 addsimps rec_eqns @ pi1_pi2_eqs @ perm_swap
  1931                                 addsimps rec_eqns @ pi1_pi2_eqs @ perm_swap
  1932                                 addsimprocs [NominalPermeq.perm_simproc_app]) 1,
  1932                                 addsimprocs [NominalPermeq.perm_simproc_app]) 1,
  1933                               full_simp_tac (put_simpset HOL_ss context'' addsimps (calc_atm @
  1933                               full_simp_tac (put_simpset HOL_ss context'' addsimps (calc_atm @
  1934                                 fresh_prems' @ freshs2' @ perm_fresh_fresh)) 1])
  1934                                 fresh_prems' @ freshs2' @ perm_fresh_fresh)) 1])
  1935                       end;
  1935                       end;