equal
deleted
inserted
replaced
712 val coinduct_rule = rule lookup_coinductT lookup_coinductP >> single_rule; |
712 val coinduct_rule = rule lookup_coinductT lookup_coinductP >> single_rule; |
713 |
713 |
714 val inst = Scan.lift (Args.$$$ "_") >> K NONE || Args.term >> SOME; |
714 val inst = Scan.lift (Args.$$$ "_") >> K NONE || Args.term >> SOME; |
715 |
715 |
716 val def_inst = |
716 val def_inst = |
717 ((Scan.lift (Args.name --| (Args.$$$ "\\<equiv>" || Args.$$$ "==")) >> SOME) |
717 ((Scan.lift (Args.name --| (Args.$$$ "\<equiv>" || Args.$$$ "==")) >> SOME) |
718 -- Args.term) >> SOME || |
718 -- Args.term) >> SOME || |
719 inst >> Option.map (pair NONE); |
719 inst >> Option.map (pair NONE); |
720 |
720 |
721 val free = Scan.state -- Args.term >> (fn (_, Free v) => v | (context, t) => |
721 val free = Scan.state -- Args.term >> (fn (_, Free v) => v | (context, t) => |
722 error ("Bad free variable: " ^ Syntax.string_of_term (Context.proof_of context) t)); |
722 error ("Bad free variable: " ^ Syntax.string_of_term (Context.proof_of context) t)); |