(* 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}) ];
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.