equal
deleted
inserted
replaced
123 |
123 |
124 val avoidingN = "avoiding"; |
124 val avoidingN = "avoiding"; |
125 val fixingN = "fixing"; |
125 val fixingN = "fixing"; |
126 val ruleN = "rule"; |
126 val ruleN = "rule"; |
127 |
127 |
128 val inst = Scan.lift (Args.$$$ "_") >> K NONE || Args.local_term >> SOME; |
128 val inst = Scan.lift (Args.$$$ "_") >> K NONE || Args.term >> SOME; |
129 |
129 |
130 val def_inst = |
130 val def_inst = |
131 ((Scan.lift (Args.name --| (Args.$$$ "\\<equiv>" || Args.$$$ "==")) >> SOME) |
131 ((Scan.lift (Args.name --| (Args.$$$ "\\<equiv>" || Args.$$$ "==")) >> SOME) |
132 -- Args.local_term) >> SOME || |
132 -- Args.term) >> SOME || |
133 inst >> Option.map (pair NONE); |
133 inst >> Option.map (pair NONE); |
134 |
134 |
135 val free = Scan.state -- Args.local_term >> (fn (_, Free v) => v | (ctxt, t) => |
135 val free = Scan.state -- Args.term >> (fn (_, Free v) => v | (ctxt, t) => |
136 error ("Bad free variable: " ^ ProofContext.string_of_term ctxt t)); |
136 error ("Bad free variable: " ^ ProofContext.string_of_term (Context.proof_of ctxt) t)); |
137 |
137 |
138 fun unless_more_args scan = Scan.unless (Scan.lift |
138 fun unless_more_args scan = Scan.unless (Scan.lift |
139 ((Args.$$$ avoidingN || Args.$$$ fixingN || Args.$$$ ruleN) -- Args.colon)) scan; |
139 ((Args.$$$ avoidingN || Args.$$$ fixingN || Args.$$$ ruleN) -- Args.colon)) scan; |
140 |
140 |
141 |
141 |
143 Scan.repeat (unless_more_args free)) []; |
143 Scan.repeat (unless_more_args free)) []; |
144 |
144 |
145 val fixing = Scan.optional (Scan.lift (Args.$$$ fixingN -- Args.colon) |-- |
145 val fixing = Scan.optional (Scan.lift (Args.$$$ fixingN -- Args.colon) |-- |
146 Args.and_list (Scan.repeat (unless_more_args free))) []; |
146 Args.and_list (Scan.repeat (unless_more_args free))) []; |
147 |
147 |
148 val rule_spec = Scan.lift (Args.$$$ "rule" -- Args.colon) |-- Attrib.local_thmss; |
148 val rule_spec = Scan.lift (Args.$$$ "rule" -- Args.colon) |-- Attrib.thms; |
149 |
149 |
150 in |
150 in |
151 |
151 |
152 fun nominal_induct_method src = |
152 fun nominal_induct_method src = |
153 Method.syntax |
153 Method.syntax |