(* Title: FOLP/intprover.ML Author: Lawrence C Paulson, Cambridge University Computer Laboratory Copyright 1992 University of Cambridge
A naive prover for intuitionistic logic
BEWARE OF NAME CLASHES WITH CLASSICAL TACTICS -- use IntPr.fast_tac ...
Completeness (for propositional logic) is proved in
Roy Dyckhoff. Contraction-Free Sequent Calculi for Intuitionistic Logic. J. Symbolic Logic (in press)
*)
signature INT_PROVER = sig val best_tac: Proof.context -> int -> tactic val fast_tac: Proof.context -> int -> tactic val inst_step_tac: Proof.context -> int -> tactic val safe_step_tac: Proof.context -> int -> tactic val safe_brls: (bool * thm) list val safe_tac: Proof.context -> tactic val step_tac: Proof.context -> int -> tactic val haz_brls: (bool * thm) list end;
structure IntPr : INT_PROVER = struct
(*Negation is treated as a primitive symbol, with rules notI (introduction), not_to_imp (converts the assumption ~P to P-->False), and not_impE (handles double negations). Could instead rewrite by not_def as the first step of an intuitionistic proof.
*) val safe_brls = sort Bires.subgoals_ord
[ (true, @{thm FalseE}), (false, @{thm TrueI}), (false, @{thm refl}),
(false, @{thm impI}), (false, @{thm notI}), (false, @{thm allI}),
(true, @{thm conjE}), (true, @{thm exE}),
(false, @{thm conjI}), (true, @{thm conj_impE}),
(true, @{thm disj_impE}), (true, @{thm disjE}),
(false, @{thm iffI}), (true, @{thm iffE}), (true, @{thm not_to_imp}) ];
(*Repeatedly attack subgoals using safe inferences*) fun safe_tac ctxt = DETERM (REPEAT_FIRST (safe_step_tac ctxt));
(*These steps could instantiate variables and are therefore unsafe.*) fun inst_step_tac ctxt = assume_tac ctxt APPEND' mp_tac ctxt;
(*One safe or unsafe step. *) fun step_tac ctxt i = FIRST [safe_tac ctxt, inst_step_tac ctxt i, biresolve_tac ctxt haz_brls i];
(*Dumb but fast*) fun fast_tac ctxt = SELECT_GOAL (DEPTH_SOLVE (step_tac ctxt 1));
(*Slower but smarter than fast_tac*) fun best_tac ctxt =
SELECT_GOAL (BEST_FIRST (Thm.no_prems, size_of_thm) (step_tac ctxt 1));
end;
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.