(* Title: HoTT/HoTT_Methods.thy Author: Josh Chen Date: Jun 2018 Method setup for the HoTT library. Relies heavily on Eisbach. *) theory HoTT_Methods imports "HOL-Eisbach.Eisbach" "HOL-Eisbach.Eisbach_Tools" HoTT_Base begin section \Method definitions\ subsection \Simple type rule proof search\ text " Prove type judgments \A : U\ and inhabitation judgments \a : A\ using the type rules declared [intro] and [elim] (in the respective theory files), as well as additional provided lemmas. Can also perform typechecking, and search for elements of a type. " method simple uses lems = (assumption | rule lems | standard)+ subsection \Wellformedness checker\ text " \wellformed\ finds a proof of any valid typing judgment derivable from the judgments passed as \lem\. The named theorem \wellform\ is declared in HoTT_Base.thy. " method wellformed' uses jdmt declares wellform = match wellform in rl: "PROP ?P" \ \( catch \rule rl[OF jdmt]\ \fail\ | catch \wellformed' jdmt: rl[OF jdmt]\ \fail\ )\ method wellformed uses lems = match lems in lem: "?X : ?Y" \ \wellformed' jdmt: lem\ subsection \Derivation search\ text " Combine \simple\ and \wellformed\ to search for derivations of judgments." method derive uses lems = (simple lems: lems | wellformed lems: lems)+ subsection \Substitution and simplification\ text "Import the \subst\ method, used for substituting definitional equalities." ML_file "~~/src/Tools/misc_legacy.ML" ML_file "~~/src/Tools/IsaPlanner/isand.ML" ML_file "~~/src/Tools/IsaPlanner/rw_inst.ML" ML_file "~~/src/Tools/IsaPlanner/zipper.ML" ML_file "~~/src/Tools/eqsubst.ML" text "Perform basic single-step computations:" method compute uses lems = (subst lems comp) end