src/Tools/induct.ML
changeset 25985 8d69087f6a4b
parent 25959 9ad285dbc7a4
child 26291 d01bf7b10c75
equal deleted inserted replaced
25984:da0399c9ffcb 25985:8d69087f6a4b
   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));