537 val pt_thm_unit = pt_unit_inst; |
537 val pt_thm_unit = pt_unit_inst; |
538 in |
538 in |
539 thy |
539 thy |
540 |> AxClass.prove_arity ("fun",[[cls_name],[cls_name]],[cls_name]) (pt_proof pt_thm_fun) |
540 |> AxClass.prove_arity ("fun",[[cls_name],[cls_name]],[cls_name]) (pt_proof pt_thm_fun) |
541 |> AxClass.prove_arity ("Nominal.noption",[[cls_name]],[cls_name]) (pt_proof pt_thm_noptn) |
541 |> AxClass.prove_arity ("Nominal.noption",[[cls_name]],[cls_name]) (pt_proof pt_thm_noptn) |
542 |> AxClass.prove_arity ("Datatype.option",[[cls_name]],[cls_name]) (pt_proof pt_thm_optn) |
542 |> AxClass.prove_arity ("Option.option",[[cls_name]],[cls_name]) (pt_proof pt_thm_optn) |
543 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (pt_proof pt_thm_list) |
543 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (pt_proof pt_thm_list) |
544 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (pt_proof pt_thm_prod) |
544 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (pt_proof pt_thm_prod) |
545 |> AxClass.prove_arity ("Nominal.nprod",[[cls_name],[cls_name]],[cls_name]) |
545 |> AxClass.prove_arity ("Nominal.nprod",[[cls_name],[cls_name]],[cls_name]) |
546 (pt_proof pt_thm_nprod) |
546 (pt_proof pt_thm_nprod) |
547 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (pt_proof pt_thm_unit) |
547 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (pt_proof pt_thm_unit) |
604 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (fs_proof fs_thm_unit) |
604 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (fs_proof fs_thm_unit) |
605 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (fs_proof fs_thm_prod) |
605 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (fs_proof fs_thm_prod) |
606 |> AxClass.prove_arity ("Nominal.nprod",[[cls_name],[cls_name]],[cls_name]) |
606 |> AxClass.prove_arity ("Nominal.nprod",[[cls_name],[cls_name]],[cls_name]) |
607 (fs_proof fs_thm_nprod) |
607 (fs_proof fs_thm_nprod) |
608 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (fs_proof fs_thm_list) |
608 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (fs_proof fs_thm_list) |
609 |> AxClass.prove_arity ("Datatype.option",[[cls_name]],[cls_name]) (fs_proof fs_thm_optn) |
609 |> AxClass.prove_arity ("Option.option",[[cls_name]],[cls_name]) (fs_proof fs_thm_optn) |
610 end) ak_names thy20; |
610 end) ak_names thy20; |
611 |
611 |
612 (******** cp_<ak>_<ai> class instances ********) |
612 (******** cp_<ak>_<ai> class instances ********) |
613 (*==============================================*) |
613 (*==============================================*) |
614 (* abbreviations for some lemmas *) |
614 (* abbreviations for some lemmas *) |
685 thy' |
685 thy' |
686 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (cp_proof cp_thm_unit) |
686 |> AxClass.prove_arity ("Product_Type.unit",[],[cls_name]) (cp_proof cp_thm_unit) |
687 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (cp_proof cp_thm_prod) |
687 |> AxClass.prove_arity ("*",[[cls_name],[cls_name]],[cls_name]) (cp_proof cp_thm_prod) |
688 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (cp_proof cp_thm_list) |
688 |> AxClass.prove_arity ("List.list",[[cls_name]],[cls_name]) (cp_proof cp_thm_list) |
689 |> AxClass.prove_arity ("fun",[[cls_name],[cls_name]],[cls_name]) (cp_proof cp_thm_fun) |
689 |> AxClass.prove_arity ("fun",[[cls_name],[cls_name]],[cls_name]) (cp_proof cp_thm_fun) |
690 |> AxClass.prove_arity ("Datatype.option",[[cls_name]],[cls_name]) (cp_proof cp_thm_optn) |
690 |> AxClass.prove_arity ("Option.option",[[cls_name]],[cls_name]) (cp_proof cp_thm_optn) |
691 |> AxClass.prove_arity ("Nominal.noption",[[cls_name]],[cls_name]) (cp_proof cp_thm_noptn) |
691 |> AxClass.prove_arity ("Nominal.noption",[[cls_name]],[cls_name]) (cp_proof cp_thm_noptn) |
692 end) ak_names thy) ak_names thy25; |
692 end) ak_names thy) ak_names thy25; |
693 |
693 |
694 (* show that discrete nominal types are permutation types, finitely *) |
694 (* show that discrete nominal types are permutation types, finitely *) |
695 (* supported and have the commutation property *) |
695 (* supported and have the commutation property *) |