Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  Meson.thy   Sprache: Isabelle

 
(*  Title:      HOL/Meson.thy
    Author:     Lawrence C. Paulson, Cambridge University Computer Laboratory
    Author:     Tobias Nipkow, TU Muenchen
    Author:     Jasmin Blanchette, TU Muenchen
    Copyright   2001  University of Cambridge
*)


section MESON Proof Method

theory Meson
imports Nat
begin

subsection Negation Normal Form

text de Morgan laws

lemma not_conjD: "\(P\Q) \ \P \ \Q"
  and not_disjD: "\(P\Q) \ \P \ \Q"
  and not_notD: "\\P \ P"
  and not_allD: "\P. \(\x. P(x)) \ \x. \P(x)"
  and not_exD: "\P. \(\x. P(x)) \ \x. \P(x)"
  by fast+

text Removal of  and  (positive and negative occurrences)

lemma imp_to_disjD: "P\Q \ \P \ Q"
  and not_impD: "\(P\Q) \ P \ \Q"
  and iff_to_disjD: "P=Q \ (\P \ Q) \ (\Q \ P)"
  and not_iffD: "\(P=Q) \ (P \ Q) \ (\P \ \Q)"
    🍋 Much more efficient than 🍋(P  ¬Q)  (Q  ¬P) for computing CNF
  and not_refl_disj_D: "x \ x \ P \ P"
  by fast+


subsection Pulling out the existential quantifiers

text Conjunction

lemma conj_exD1: "\P Q. (\x. P(x)) \ Q \ \x. P(x) \ Q"
  and conj_exD2: "\P Q. P \ (\x. Q(x)) \ \x. P \ Q(x)"
  by fast+


text Disjunction

lemma disj_exD: "\P Q. (\x. P(x)) \ (\x. Q(x)) \ \x. P(x) \ Q(x)"
  🍋 DO NOT USE with forall-Skolemization: makes fewer schematic variables!!
  🍋 With ex-Skolemization, makes fewer Skolem constants
  and disj_exD1: "\P Q. (\x. P(x)) \ Q \ \x. P(x) \ Q"
  and disj_exD2: "\P Q. P \ (\x. Q(x)) \ \x. P \ Q(x)"
  by fast+

lemma disj_assoc: "(P\Q)\R \ P\(Q\R)"
  and disj_comm: "P\Q \ Q\P"
  and disj_FalseD1: "False\P \ P"
  and disj_FalseD2: "P\False \ P"
  by fast+


textGeneration of contrapositives

textInserts negated disjunct after removing the negation; P is a literal.
  Model elimination requires assuming the negation of every attempted subgoal,
  hence the negated disjuncts.
lemma make_neg_rule: "\P\Q \ ((\P\P) \ Q)"
by blast

textVersion for Plaisted's "Postive refinement" of the Meson procedure\
lemma make_refined_neg_rule: "\P\Q \ (P \ Q)"
by blast

text🍋P should be a literal
lemma make_pos_rule: "P\Q \ ((P\\P) \ Q)"
by blast

textVersions of make_neg_rule and make_pos_rule that don't
insert new assumptions, for ordinary resolution.

lemmas make_neg_rule' = make_refined_neg_rule

lemma make_pos_rule': "\P\Q; \P\ \ Q"
by blast

textGeneration of a goal clause -- put away the final literal

lemma make_neg_goal: "\P \ ((\P\P) \ False)"
by blast

lemma make_pos_goal: "P \ ((P\\P) \ False)"
by blast


subsection Lemmas for Forward Proof

textThere is a similarity to congruence rules. They are also useful in ordinary proofs.

(*NOTE: could handle conjunctions (faster?) by
    nf(th RS conjunct2) RS (nf(th RS conjunct1) RS conjI) *)

lemma conj_forward: "\P'\Q'; P' \ P; Q' \ Q \ \ P\Q"
by blast

lemma disj_forward: "\P'\Q'; P' \ P; Q' \ Q \ \ P\Q"
by blast

lemma imp_forward: "\P' \ Q'; P \ P'; Q' \ Q \ \ P \ Q"
by blast

lemma imp_forward2: "\P' \ Q'; P \ P'; P' \ Q' \ Q \ \ P \ Q"
  by blast

(*Version of @{text disj_forward} for removal of duplicate literals*)
lemma disj_forward2: "\ P'\Q'; P' \ P; \Q'; P\False\ \ Q\ \ P\Q"
apply blast 
done

lemma all_forward: "[| \x. P'(x); !!x. P'(x) ==> P(x) |] ==> \x. P(x)"
by blast

lemma ex_forward: "[| \x. P'(x); !!x. P'(x) ==> P(x) |] ==> \x. P(x)"
by blast


subsection Clausification helper

lemma TruepropI: "P \ Q \ Trueprop P \ Trueprop Q"
by simp

lemma ext_cong_neq: "F g \ F h \ F g \ F h \ (\x. g x \ h x)"
apply (erule contrapos_np)
apply clarsimp
apply (rule cong[where f = F])
by auto


textCombinator translation helpers

definition COMBI :: "'a \ 'a" where
"COMBI P = P"

definition COMBK :: "'a \ 'b \ 'a" where
"COMBK P Q = P"

definition COMBB :: "('b => 'c) \ ('a => 'b) \ 'a \ 'c" where
"COMBB P Q R = P (Q R)"

definition COMBC :: "('a \ 'b \ 'c) \ 'b \ 'a \ 'c" where
"COMBC P Q R = P R Q"

definition COMBS :: "('a \ 'b \ 'c) \ ('a \ 'b) \ 'a \ 'c" where
"COMBS P Q R = P R (Q R)"

lemma abs_S: "\x. (f x) (g x) \ COMBS f g"
apply (rule eq_reflection)
apply (rule ext) 
apply (simp add: COMBS_def) 
done

lemma abs_I: "\x. x \ COMBI"
apply (rule eq_reflection)
apply (rule ext) 
apply (simp add: COMBI_def) 
done

lemma abs_K: "\x. y \ COMBK y"
apply (rule eq_reflection)
apply (rule ext) 
apply (simp add: COMBK_def) 
done

lemma abs_B: "\x. a (g x) \ COMBB a g"
apply (rule eq_reflection)
apply (rule ext) 
apply (simp add: COMBB_def) 
done

lemma abs_C: "\x. (f x) b \ COMBC f b"
apply (rule eq_reflection)
apply (rule ext) 
apply (simp add: COMBC_def) 
done


subsection Skolemization helpers

definition skolem :: "'a \ 'a" where
"skolem = (\x. x)"

lemma skolem_COMBK_iff: "P \ skolem (COMBK P (i::nat))"
unfolding skolem_def COMBK_def by (rule refl)

lemmas skolem_COMBK_I = iffD1 [OF skolem_COMBK_iff]


subsection Meson package

ML_file Tools/Meson/meson.ML
ML_file Tools/Meson/meson_clausify.ML
ML_file Tools/Meson/meson_tactic.ML

hide_const (open) COMBI COMBK COMBB COMBC COMBS skolem
hide_fact (open) not_conjD not_disjD not_notD not_allD not_exD imp_to_disjD
    not_impD iff_to_disjD not_iffD not_refl_disj_D conj_exD1 conj_exD2 disj_exD
    disj_exD1 disj_exD2 disj_assoc disj_comm disj_FalseD1 disj_FalseD2 TruepropI
    ext_cong_neq COMBI_def COMBK_def COMBB_def COMBC_def COMBS_def abs_I abs_K
    abs_B abs_C abs_S skolem_def skolem_COMBK_iff skolem_COMBK_I
end

Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge