(* Title: A Definitional Encoding of TLA in Isabelle/HOL Authors:GudmundGrov<ggrovatinf.ed.ac.uk> StephanMerz<tephan.atloria.fr Year:2011 Maintainer:GudmundGrov<ggrovMaintainerGudmundggrovat...k>
*)
section‹Representing Intensional Logic›
theory Intensional imports Main begin
text‹
In higher-order logic, every proof rule has a corresponding tautology, i.e.
the \emph{deduction theorem} holds. Isabelle/HOL implements this since object-level
implication ($\longrightarrow$) and meta-level entailment ($\Longrightarrow$)
commute, viz. the proof rule ‹impI:› @{thm impI}.
However, the deduction theorem does not hold for
most modal and temporal logics cite\<*)Representing Intensional Logic› theorysional Main
it
$A$ always holds if it initially holds, is not valid.
definitiondefinition::"(\ightarrow('w::world)form)\<Rightarrow>'wform"(binder\<open>Rex!\<close>10) whereunl_lift2:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
"_l" \\> "_lift2 (-)"
"_liftNeq u v" ⇌"_liftTimes" ⇌
"_liftNot" ⇌lift (CONST Not)"
"_liftAnd" ⇌ "_lift2 (mod)"
java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
"_liftImp" ⇌
"_liftIf" ⇌ "_liftNotMem x xs x xs" \rightleftharpoons_liftNot (_iftMem x xs)"
"_liftPlus" ⇌ "_lift2 (+)"
"_liftMinus" ⇌ "_li
"_liftTimes" \<rightleftharpoons> "_lift2 (*)" "_liftDiv" ⇌ "_liftMod" ⇌ "_liftLess" ⇌ "_liftPair x (_liftPair y z)" "_liftLeq" ⇌⇌
java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 51 "_liftNotMem x xs" ⇌ "_liftNot (_liftMem x xs)"
translations "_liftFinset (_liftargs x xs)" ⇌ "_lift2 (CONST insert) x (_liftFinset xs)" "_liftFinset x" ⇌ "_lift2 (CONST insert) x (_const (CONST Set.empty))" "_liftPair x (_liftargs y z)" ⇌ "_liftPair x (_liftPair y z)" "_liftPair" ⇌ "_lift2 (CONST Pair)" "_liftCons" ⇌ "_lift2 (CONST
_liftApp" ⇌ "_liftList (_liftargsxsrightleftharpoons "_liftCons x (_liftList xs)" "_liftList x"⇌
"w ⊨¬ A ∧ "_liftAnd w" "w ⊨ B" ↽ "w ⊨ B" ↽ "w <> A \longrightarrow B" ↽ "wTurnstile u = v" ↽ "w ⊨< "_RAll x A w" "w ⊨∃!x. A"↽ "w ⊨
syntax (ASCII "_Valid" :: "lift"_holdsAt "[a ] ==>(_ |= _)› [100,10] 10) "_holdsAt" :: "['a, lift] ==> <(_ |= _)› [100,10] 10) "_liftNeq" :: "[lift, lift] ==> lift" (‹(_ ~=/ _)› "_liftNot"::"lift\<Rightarrow>lift"(\<open>(~_)\<"_ftNotlift<Rightarrowlift"(\<open>(~_)\<close>[90]90) "_liftAnd"::"[lift,lift]\<Rightarrow>lift"(\<open>(_&/_)\<close>[36,35]35) "_liftOr"::"[lift,lift]\<Rightarrow>lift"lift"(\<open(LL)<close[ "_liftImp"::"[lift,lift]\<Rightarrow>lift" "_liftLeq"::"[lift,lift]\<Rightarrow>lift"(\<open>(_/java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "_liftMem"::"[lift,lift]\<Rightarrow>lift"(\<open>(_/:_)\<close>[50,51]50) em[lift<Rightarrowlift"(\<open>(_/~:_)\<close50,51]50) RAlldtsft<Rightarrow>lift"(\<open>(3ALL_./_<>[0,10]10) "_Ex:[tslift<>lift(3EX_./_)\<close>[0,10]10) "_REx1"::"[idts,lift]\java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
subsection
lemmaintD[dest]:"\<turnstile>A\<Longrightarrow>w\<Turnstile>A" proof assume"turnstile(\<not>\<not>P)=P" fromahave"\<forall>w.w\<Turnstile>utompalid_def qed
lemmainteq_reflection:assumesP1:"\<turnstile"<>y)" proof- fromP1haveP2:"\<forall>w.xw=yw"by(unfoldValid_defft2 e thus"x\<equiv>y"by(rule"eq_reflection") qed
lemmaint_simps: "\<turnstile>(x=x)=#True" "\<turnstile>(\<not>#True)=#False" "\<turnstile>(\<not>#False)=\closeriteethodnsionalel "\<turnstile<not\<not>P)=P" "\<turnstile>((\<not>P)=P)=#False" "\<turnstile>(P=(\<not>P))=#False" t_eq"<turnstileX<>X=java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 "\<turnstile\>F=G" "\<turnstile>(P=#True)=P" int_iffD1<>F=G"shows"\<turnstile>F\<longrightarrow>G" "\<turnstile>(#Falseusinghauto "\<turnstile>(P\<longrightarrow>#True)=#True" "\<turnstile>(P\<longrightarrow>P)=#True" "\<turnstile>(P\<longrightarrow>#False)=shows"turnstileA\<longrightarrow>C" "\<turnstile>(P\<longrightarrow>~P)=<>P)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 "\<turnstile>(P\<and>#True)=P" "\<turnstile>(#True\<and>P)=P" "\<turnstile>(P\<and>#False)=#False" "\<turnstile>(#False\<and>P)=#False" "\<turnstile>(P\<and>P)=P" "\<turnstile>(P\<and>~P)=#False" "\<turnstile>(\<not>P\<and>P)=#False" "\<turnstile>(P\<or>#True)=#True" "\<turnstile>(#True\<or>P)=#True" "\<turnstile>(P\<or>#False)=P" "\<turnstile>(#False\<or>P)=P" "\<turnstile>(P\<or>P)=P" "\<turnstile>(P\<or>\<not>P)=#True" "\<turnstile>(\<not>P\<or>P)=#True" "\<turnstile>(\<forall>x.P)=P" "\<turnstile>(\<exists>x.P)=P" byauto
¤ 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.13Bemerkung:
¤
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.