src/ZF/Inductive.thy
changeset 69597 ff784d5a5bfb
parent 69593 3dda49e08b9d
child 69605 a96320074298
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
    35 ML_file "Tools/primrec_package.ML"
    35 ML_file "Tools/primrec_package.ML"
    36 
    36 
    37 ML \<open>
    37 ML \<open>
    38 structure Lfp =
    38 structure Lfp =
    39   struct
    39   struct
    40   val oper      = @{const lfp}
    40   val oper      = \<^const>\<open>lfp\<close>
    41   val bnd_mono  = @{const bnd_mono}
    41   val bnd_mono  = \<^const>\<open>bnd_mono\<close>
    42   val bnd_monoI = @{thm bnd_monoI}
    42   val bnd_monoI = @{thm bnd_monoI}
    43   val subs      = @{thm def_lfp_subset}
    43   val subs      = @{thm def_lfp_subset}
    44   val Tarski    = @{thm def_lfp_unfold}
    44   val Tarski    = @{thm def_lfp_unfold}
    45   val induct    = @{thm def_induct}
    45   val induct    = @{thm def_induct}
    46   end;
    46   end;
    47 
    47 
    48 structure Standard_Prod =
    48 structure Standard_Prod =
    49   struct
    49   struct
    50   val sigma     = @{const Sigma}
    50   val sigma     = \<^const>\<open>Sigma\<close>
    51   val pair      = @{const Pair}
    51   val pair      = \<^const>\<open>Pair\<close>
    52   val split_name = \<^const_name>\<open>split\<close>
    52   val split_name = \<^const_name>\<open>split\<close>
    53   val pair_iff  = @{thm Pair_iff}
    53   val pair_iff  = @{thm Pair_iff}
    54   val split_eq  = @{thm split}
    54   val split_eq  = @{thm split}
    55   val fsplitI   = @{thm splitI}
    55   val fsplitI   = @{thm splitI}
    56   val fsplitD   = @{thm splitD}
    56   val fsplitD   = @{thm splitD}
    59 
    59 
    60 structure Standard_CP = CartProd_Fun (Standard_Prod);
    60 structure Standard_CP = CartProd_Fun (Standard_Prod);
    61 
    61 
    62 structure Standard_Sum =
    62 structure Standard_Sum =
    63   struct
    63   struct
    64   val sum       = @{const sum}
    64   val sum       = \<^const>\<open>sum\<close>
    65   val inl       = @{const Inl}
    65   val inl       = \<^const>\<open>Inl\<close>
    66   val inr       = @{const Inr}
    66   val inr       = \<^const>\<open>Inr\<close>
    67   val elim      = @{const case}
    67   val elim      = \<^const>\<open>case\<close>
    68   val case_inl  = @{thm case_Inl}
    68   val case_inl  = @{thm case_Inl}
    69   val case_inr  = @{thm case_Inr}
    69   val case_inr  = @{thm case_Inr}
    70   val inl_iff   = @{thm Inl_iff}
    70   val inl_iff   = @{thm Inl_iff}
    71   val inr_iff   = @{thm Inr_iff}
    71   val inr_iff   = @{thm Inr_iff}
    72   val distinct  = @{thm Inl_Inr_iff}
    72   val distinct  = @{thm Inl_Inr_iff}
    82        and Su=Standard_Sum val coind = false);
    82        and Su=Standard_Sum val coind = false);
    83 
    83 
    84 
    84 
    85 structure Gfp =
    85 structure Gfp =
    86   struct
    86   struct
    87   val oper      = @{const gfp}
    87   val oper      = \<^const>\<open>gfp\<close>
    88   val bnd_mono  = @{const bnd_mono}
    88   val bnd_mono  = \<^const>\<open>bnd_mono\<close>
    89   val bnd_monoI = @{thm bnd_monoI}
    89   val bnd_monoI = @{thm bnd_monoI}
    90   val subs      = @{thm def_gfp_subset}
    90   val subs      = @{thm def_gfp_subset}
    91   val Tarski    = @{thm def_gfp_unfold}
    91   val Tarski    = @{thm def_gfp_unfold}
    92   val induct    = @{thm def_Collect_coinduct}
    92   val induct    = @{thm def_Collect_coinduct}
    93   end;
    93   end;
    94 
    94 
    95 structure Quine_Prod =
    95 structure Quine_Prod =
    96   struct
    96   struct
    97   val sigma     = @{const QSigma}
    97   val sigma     = \<^const>\<open>QSigma\<close>
    98   val pair      = @{const QPair}
    98   val pair      = \<^const>\<open>QPair\<close>
    99   val split_name = \<^const_name>\<open>qsplit\<close>
    99   val split_name = \<^const_name>\<open>qsplit\<close>
   100   val pair_iff  = @{thm QPair_iff}
   100   val pair_iff  = @{thm QPair_iff}
   101   val split_eq  = @{thm qsplit}
   101   val split_eq  = @{thm qsplit}
   102   val fsplitI   = @{thm qsplitI}
   102   val fsplitI   = @{thm qsplitI}
   103   val fsplitD   = @{thm qsplitD}
   103   val fsplitD   = @{thm qsplitD}
   106 
   106 
   107 structure Quine_CP = CartProd_Fun (Quine_Prod);
   107 structure Quine_CP = CartProd_Fun (Quine_Prod);
   108 
   108 
   109 structure Quine_Sum =
   109 structure Quine_Sum =
   110   struct
   110   struct
   111   val sum       = @{const qsum}
   111   val sum       = \<^const>\<open>qsum\<close>
   112   val inl       = @{const QInl}
   112   val inl       = \<^const>\<open>QInl\<close>
   113   val inr       = @{const QInr}
   113   val inr       = \<^const>\<open>QInr\<close>
   114   val elim      = @{const qcase}
   114   val elim      = \<^const>\<open>qcase\<close>
   115   val case_inl  = @{thm qcase_QInl}
   115   val case_inl  = @{thm qcase_QInl}
   116   val case_inr  = @{thm qcase_QInr}
   116   val case_inr  = @{thm qcase_QInr}
   117   val inl_iff   = @{thm QInl_iff}
   117   val inl_iff   = @{thm QInl_iff}
   118   val inr_iff   = @{thm QInr_iff}
   118   val inr_iff   = @{thm QInr_iff}
   119   val distinct  = @{thm QInl_QInr_iff}
   119   val distinct  = @{thm QInl_QInr_iff}