src/HOL/Tools/Sledgehammer/metis_tactics.ML
changeset 37925 1188e6bff48d
parent 37924 17f36ad210d6
child 37926 e6ff246c0cdb
equal deleted inserted replaced
37924:17f36ad210d6 37925:1188e6bff48d
   168   (TrueI,
   168   (TrueI,
   169    Metis.Thm.axiom (Metis.LiteralSet.fromList (map m_arity_cls (conclLit :: premLits))));
   169    Metis.Thm.axiom (Metis.LiteralSet.fromList (map m_arity_cls (conclLit :: premLits))));
   170 
   170 
   171 (* CLASSREL CLAUSE *)
   171 (* CLASSREL CLAUSE *)
   172 
   172 
   173 fun m_classrel_cls (subclass, _) (superclass, _) =
   173 fun m_class_rel_cls (subclass, _) (superclass, _) =
   174   [metis_lit false subclass [Metis.Term.Var "T"], metis_lit true superclass [Metis.Term.Var "T"]];
   174   [metis_lit false subclass [Metis.Term.Var "T"], metis_lit true superclass [Metis.Term.Var "T"]];
   175 
   175 
   176 fun classrel_cls (ClassrelClause {subclass, superclass, ...}) =
   176 fun class_rel_cls (ClassRelClause {subclass, superclass, ...}) =
   177   (TrueI, Metis.Thm.axiom (Metis.LiteralSet.fromList (m_classrel_cls subclass superclass)));
   177   (TrueI, Metis.Thm.axiom (Metis.LiteralSet.fromList (m_class_rel_cls subclass superclass)));
   178 
   178 
   179 (* ------------------------------------------------------------------------- *)
   179 (* ------------------------------------------------------------------------- *)
   180 (* FOL to HOL  (Metis to Isabelle)                                           *)
   180 (* FOL to HOL  (Metis to Isabelle)                                           *)
   181 (* ------------------------------------------------------------------------- *)
   181 (* ------------------------------------------------------------------------- *)
   182 
   182 
   604 fun type_ext thy tms =
   604 fun type_ext thy tms =
   605   let val subs = tfree_classes_of_terms tms
   605   let val subs = tfree_classes_of_terms tms
   606       val supers = tvar_classes_of_terms tms
   606       val supers = tvar_classes_of_terms tms
   607       and tycons = type_consts_of_terms thy tms
   607       and tycons = type_consts_of_terms thy tms
   608       val (supers', arity_clauses) = make_arity_clauses thy tycons supers
   608       val (supers', arity_clauses) = make_arity_clauses thy tycons supers
   609       val classrel_clauses = make_classrel_clauses thy subs supers'
   609       val class_rel_clauses = make_class_rel_clauses thy subs supers'
   610   in  map classrel_cls classrel_clauses @ map arity_cls arity_clauses
   610   in  map class_rel_cls class_rel_clauses @ map arity_cls arity_clauses
   611   end;
   611   end;
   612 
   612 
   613 (* ------------------------------------------------------------------------- *)
   613 (* ------------------------------------------------------------------------- *)
   614 (* Logic maps manage the interface between HOL and first-order logic.        *)
   614 (* Logic maps manage the interface between HOL and first-order logic.        *)
   615 (* ------------------------------------------------------------------------- *)
   615 (* ------------------------------------------------------------------------- *)