equal
deleted
inserted
replaced
670 end; |
670 end; |
671 |
671 |
672 |
672 |
673 (* outer syntax *) |
673 (* outer syntax *) |
674 |
674 |
675 local structure P = OuterParse and K = OuterKeyword in |
675 val _ = Keyword.keyword "avoids"; |
676 |
|
677 val _ = OuterKeyword.keyword "avoids"; |
|
678 |
676 |
679 val _ = |
677 val _ = |
680 OuterSyntax.local_theory_to_proof "nominal_inductive" |
678 Outer_Syntax.local_theory_to_proof "nominal_inductive" |
681 "prove equivariance and strong induction theorem for inductive predicate involving nominal datatypes" K.thy_goal |
679 "prove equivariance and strong induction theorem for inductive predicate involving nominal datatypes" |
682 (P.xname -- Scan.optional (P.$$$ "avoids" |-- P.and_list1 (P.name -- |
680 Keyword.thy_goal |
683 (P.$$$ ":" |-- Scan.repeat1 P.name))) [] >> (fn (name, avoids) => |
681 (Parse.xname -- Scan.optional (Parse.$$$ "avoids" |-- Parse.and_list1 (Parse.name -- |
|
682 (Parse.$$$ ":" |-- Scan.repeat1 Parse.name))) [] >> (fn (name, avoids) => |
684 prove_strong_ind name avoids)); |
683 prove_strong_ind name avoids)); |
685 |
684 |
686 val _ = |
685 val _ = |
687 OuterSyntax.local_theory "equivariance" |
686 Outer_Syntax.local_theory "equivariance" |
688 "prove equivariance for inductive predicate involving nominal datatypes" K.thy_decl |
687 "prove equivariance for inductive predicate involving nominal datatypes" Keyword.thy_decl |
689 (P.xname -- Scan.optional (P.$$$ "[" |-- P.list1 P.name --| P.$$$ "]") [] >> |
688 (Parse.xname -- Scan.optional (Parse.$$$ "[" |-- Parse.list1 Parse.name --| Parse.$$$ "]") [] >> |
690 (fn (name, atoms) => prove_eqvt name atoms)); |
689 (fn (name, atoms) => prove_eqvt name atoms)); |
691 |
690 |
692 end; |
|
693 |
|
694 end |
691 end |