Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/PLM/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 31.4.2026 mit Größe 19 kB image not shown  

Quelle  TAO_7_Axioms.thy

  Sprache: Isabelle
 

(*<*)
theory TAO_7_Axioms
imports TAO_6_Identifiable
begin
(*>*)

sectionThe Axioms of PLM
text\label{TAO_Axioms}

text
 begin{remark}
 The axioms of PLM can now be derived from the Semantics
 and the model structure.
 end{remark}
 


(* TODO: why is this needed again here? The syntax should already
         have been disabled in TAO_Semantics. *)

(* disable list syntax [] to replace it with truth evaluation *)
(*<*) unbundle no list_enumeration_syntax and no list_comprehension_syntax(*>*) 

locale Axioms
begin
  interpretation MetaSolver .
  interpretation Semantics .
  named_theorems axiom

text
 begin{remark}
 The special syntax [[_]] is introduced for stating the axioms.
 Modally-fragile axioms are stated with the syntax for actual validity [_].
 end{remark}
 


  definition axiom :: "o==>bool" ([[_]]where "axiom λ φ . v . [φ in v]"

  method axiom_meta_solver = ((((unfold axiom_def)?, rule allI) | (unfold actual_validity_def)?), meta_solver,
                              (simp | (auto; fail))?)

subsectionClosures
text\label{TAO_Axioms_Closures}

  text
 begin{remark}
 Rules resembling the concepts of closures in PLM are derived. Theorem attributes are introduced
 to aid in the instantiation of the axioms.
 end{remark}
 


  lemma axiom_instance[axiom]: "[[φ]] ==> [φ in v]"
    unfolding axiom_def by simp
  lemma closures_universal[axiom]: "(x.[[φ x]]) ==> [[\<forall> x. φ x]]"
    by axiom_meta_solver
  lemma closures_actualization[axiom]: "[[φ]] ==> [[\<A> φ]]"
    by axiom_meta_solver
  lemma closures_necessitation[axiom]: "[[φ]] ==> [[\<box> φ]]"
    by axiom_meta_solver
  lemma necessitation_averse_axiom_instance[axiom]: "[φ] ==> [φ in dw]"
    by axiom_meta_solver
  lemma necessitation_averse_closures_universal[axiom]: "(x.[φ x]) ==> [\<forall> x. φ x]"
    by axiom_meta_solver

  attribute_setup axiom_instance = 
 Scan.succeed (Thm.rule_attribute []
 (fn _ => fn thm => thm RS @{thm axiom_instance}))
 


  attribute_setup necessitation_averse_axiom_instance = 
 Scan.succeed (Thm.rule_attribute []
 (fn _ => fn thm => thm RS @{thm necessitation_averse_axiom_instance}))
 


  attribute_setup axiom_necessitation = 
 Scan.succeed (Thm.rule_attribute []
 (fn _ => fn thm => thm RS @{thm closures_necessitation}))
 


  attribute_setup axiom_actualization = 
 Scan.succeed (Thm.rule_attribute []
 (fn _ => fn thm => thm RS @{thm closures_actualization}))
 


  attribute_setup axiom_universal = 
 Scan.succeed (Thm.rule_attribute []
 (fn _ => fn thm => thm RS @{thm closures_universal}))
 


subsectionAxioms for Negations and Conditionals
text\label{TAO_Axioms_NegationsAndConditionals}

  lemma pl_1[axiom]:
    "[[φ \<rightarrow> (ψ \<rightarrow> φ)]]"
    by axiom_meta_solver
  lemma pl_2[axiom]:
    "[[(φ \<rightarrow> (ψ \<rightarrow> χ)) \<rightarrow> ((φ \<rightarrow> ψ) \<rightarrow> \<rightarrow> χ))]]"
    by axiom_meta_solver
  lemma pl_3[axiom]:
    "[[(\<not>φ \<rightarrow> \<not>ψ) \<rightarrow> ((\<not>φ \<rightarrow> ψ) \<rightarrow> φ)]]"
    by axiom_meta_solver

subsectionAxioms of Identity
text\label{TAO_Axioms_Identity}

  lemma l_identity[axiom]:
    "[[α = β \<rightarrow> (φ α \<rightarrow> φ β)]]"
    using l_identity apply - by axiom_meta_solver

subsectionAxioms of Quantification
text\label{TAO_Axioms_Quantification}

  lemma cqt_1[axiom]:
    "[[(\<forall> α. φ α) \<rightarrow> φ α]]"
    by axiom_meta_solver
  lemma cqt_1_κ[axiom]:
    "[[(\<forall> α. φ (αP)) \<rightarrow> ((\<exists> β . (βP) = α) \<rightarrow> φ α)]]"
    proof -
      {
        fix v
        assume 1"[(\<forall> α. φ (αP)) in v]"
        assume "[(\<exists> β . (βP) = α) in v]"
        then obtain β where 2:
          "[(βP) = α in v]" by (rule ExERule)
        hence "[φ (βP) in v]" using 1 AllE by fast
        hence "[φ α in v]"
          using l_identity[where φ=φ, axiom_instance]
          ImplS 2 by simp
      }
      thus "[[(\<forall> α. φ (αP)) \<rightarrow> ((\<exists> β . (βP) = α) \<rightarrow> φ α)]]"
        unfolding axiom_def using ImplI by blast
    qed
  lemma cqt_3[axiom]:
    "[[(\<forall>α. φ α \<rightarrow> ψ α) \<rightarrow> ((\<forall>α. φ α) \<rightarrow> (\<forall>α. ψ α))]]"
    by axiom_meta_solver
  lemma cqt_4[axiom]:
    "[[φ \<rightarrow> (\<forall>α. φ)]]"
    by axiom_meta_solver

  inductive SimpleExOrEnc
    where "SimpleExOrEnc (λ x . (F,x))"
        | "SimpleExOrEnc (λ x . (F,x,y))"
        | "SimpleExOrEnc (λ x . (F,y,x))"
        | "SimpleExOrEnc (λ x . (F,x,y,z))"
        | "SimpleExOrEnc (λ x . (F,y,x,z))"
        | "SimpleExOrEnc (λ x . (F,y,z,x))"
        | "SimpleExOrEnc (λ x . {x,F})"

  lemma cqt_5[axiom]:
    assumes "SimpleExOrEnc ψ"
    shows "[[(ψ (\<iota>x . φ x)) \<rightarrow> (\<exists> α. (αP) = (\<iota>x . φ x))]]"
    proof -
      have " w . ([(ψ (\<iota>x . φ x)) in w] ( o1 . Some o1 = d\<kappa> (\<iota>x . φ x)))"
        using assms apply induct by (meta_solver;metis)+
     thus ?thesis
      apply - unfolding identity_κ_def
      apply axiom_meta_solver
      using d\<kappa>_proper by auto
    qed

  lemma cqt_5_mod[axiom]:
    assumes "SimpleExOrEnc ψ"
    shows "[[ψ τ \<rightarrow> (\<exists> α . (αP) = τ)]]"
    proof -
      have " w . ([(ψ τ) in w] ( o1 . Some o1 = d\<kappa> τ))"
        using assms apply induct by (meta_solver;metis)+
      thus ?thesis
        apply - unfolding identity_κ_def
        apply axiom_meta_solver
        using d\<kappa>_proper by auto
    qed

subsectionAxioms of Actuality
text\label{TAO_Axioms_Actuality}

  lemma logic_actual[axiom]: "[(\<A>φ) \<equiv> φ]"
    by axiom_meta_solver
  lemma "[[(\<A>φ) \<equiv> φ]]"
    nitpick[user_axioms, expect = genuine, card = 1, card i = 2]
    oops ― Counter-model by nitpick

  lemma logic_actual_nec_1[axiom]:
    "[[\<A>\<not>φ \<equiv> \<not>\<A>φ]]"
    by axiom_meta_solver
  lemma logic_actual_nec_2[axiom]:
    "[[(\<A>(φ \<rightarrow> ψ)) \<equiv> (\<A>φ \<rightarrow> \<A>ψ)]]"
    by axiom_meta_solver
  lemma logic_actual_nec_3[axiom]:
    "[[\<A>(\<forall>α. φ α) \<equiv> (\<forall>α. \<A>(φ α))]]"
    by axiom_meta_solver
  lemma logic_actual_nec_4[axiom]:
    "[[\<A>φ \<equiv> \<A>\<A>φ]]"
    by axiom_meta_solver

subsectionAxioms of Necessity
text\label{TAO_Axioms_Necessity}

  lemma qml_1[axiom]:
    "[[\<box>(φ \<rightarrow> ψ) \<rightarrow> (\<box>φ \<rightarrow> \<box>ψ)]]"
    by axiom_meta_solver
  lemma qml_2[axiom]:
    "[[\<box>φ \<rightarrow> φ]]"
    by axiom_meta_solver
  lemma qml_3[axiom]:
    "[[\<diamond>φ \<rightarrow> \<box>\<diamond>φ]]"
    by axiom_meta_solver
  lemma qml_4[axiom]:
    "[[\<diamond>(\<exists>x. (E!,xP) & \<diamond>\<not>(E!,xP)) & \<diamond>\<not>(\<exists>x. (E!,xP) & \<diamond>\<not>(E!,xP))]]"
     unfolding axiom_def
     using PossiblyContingentObjectExistsAxiom
           PossiblyNoContingentObjectExistsAxiom
     apply (simp add: meta_defs meta_aux conn_defs forall_ν_def
                 split: ν.split υ.split)
     by (metis νυ_ψν_is_ψυ υ.distinct(1) υ.inject(1))

subsectionAxioms of Necessity and Actuality
text\label{TAO_Axioms_NecessityAndActuality}

  lemma qml_act_1[axiom]:
    "[[\<A>φ \<rightarrow> \<box>\<A>φ]]"
    by axiom_meta_solver
  lemma qml_act_2[axiom]:
    "[[\<box>φ \<equiv> \<A>(\<box>φ)]]"
    by axiom_meta_solver

subsectionAxioms of Descriptions
text\label{TAO_Axioms_Descriptions}

  lemma descriptions[axiom]:
    "[[xP = (\<iota>x. φ x) \<equiv> (\<forall>z.(\<A>(φ z) \<equiv> z = x))]]"
    unfolding axiom_def
    proof (rule allI, rule EquivI; rule)
      fix v
      assume "[xP = (\<iota>x. φ x) in v]"
      moreover hence 1:
        "o1 o2. Some o1 = d\<kappa> (xP) Some o2 = d\<kappa> (\<iota>x. φ x) o1 = o2"
        apply - unfolding identity_κ_def by meta_solver
      then obtain o1 o2 where 2:
        "Some o1 = d\<kappa> (xP) Some o2 = d\<kappa> (\<iota>x. φ x) o1 = o2"
        by auto
      hence 3:
        "( x .((w0 φ x) (y. (w0 φ y) y = x)))
          d\<kappa> (\<iota>x. φ x) = Some (THE x. (w0 φ x))"
        using D3 by (metis option.distinct(1))
      then obtain X where 4:
        "((w0 φ X) (y. (w0 φ y) y = X))"
        by auto
      moreover have "o1 = (THE x. (w0 φ x))"
        using 2 3 by auto
      ultimately have 5"X = o1"
        by (metis (mono_tags) theI)
      have " z . [\<A>φ z in v] = [(zP) = (xP) in v]"
      proof
        fix z
        have "[\<A>φ z in v] ==> [(zP) = (xP) in v]"
          unfolding identity_κ_def apply meta_solver
          using 4 5 2 d\<kappa>_proper w0_def by auto
        moreover have "[(zP) = (xP) in v] ==> [\<A>φ z in v]"
          unfolding identity_κ_def apply meta_solver
          using 2 4 5 
          by (simp add: d\<kappa>_proper w0_def)
        ultimately show "[\<A>φ z in v] = [(zP) = (xP) in v]"
          by auto
      qed
      thus "[\<forall>z. \<A>φ z \<equiv> (z) = (x) in v]"
        unfolding identity_ν_def
        by (simp add: AllI EquivS)
    next
      fix v
      assume "[\<forall>z. \<A>φ z \<equiv> (z) = (x) in v]"
      hence "z. (dw φ z) = (o1 o2. Some o1 = d\<kappa> (zP)
                 Some o2 = d\<kappa> (xP) o1 = o2)"
        apply - unfolding identity_ν_def identity_κ_def by meta_solver
      hence " z . (dw φ z) = (z = x)"
        by (simp add: d\<kappa>_proper)
      moreover hence "x = (THE z . (dw φ z))" by simp
      ultimately have "xP = (\<iota>x. φ x)"
        using D3 d\<kappa>_inject d\<kappa>_proper w0_def by presburger
      thus "[xP = (\<iota>x. φ x) in v]"
        using EqκS unfolding identity_κ_def by (metis d\<kappa>_proper)
    qed

subsectionAxioms for Complex Relation Terms
text\label{TAO_Axioms_ComplexRelationTerms}

  lemma lambda_predicates_1[axiom]:
    "(\<lambda> x . φ x) = (\<lambda> y . φ y)" ..

  lemma lambda_predicates_2_1[axiom]:
    assumes "IsProperInX φ"
    shows "[[(\<lambda> x . φ (xP), xP) \<equiv> φ (xP)]]"
    apply axiom_meta_solver
    using D5_1[OF assms] d\<kappa>_proper propex1
    by metis

  lemma lambda_predicates_2_2[axiom]:
    assumes "IsProperInXY φ"
    shows "[[((\<lambda>2 (λ x y . φ (xP) (yP))), xP, yP) \<equiv> φ (xP) (yP)]]"
    apply axiom_meta_solver
    using D5_2[OF assms] d\<kappa>_proper propex2
    by metis

  lemma lambda_predicates_2_3[axiom]:
    assumes "IsProperInXYZ φ"
    shows "[[((\<lambda>3 (λ x y z . φ (xP) (yP) (zP))),xP,yP,zP) \<equiv> φ (xP) (yP) (zP)]]"
    proof -
      have "[[((\<lambda>3 (λ x y z . φ (xP) (yP) (zP))),xP,yP,zP) \<rightarrow> φ (xP) (yP) (zP)]]"
        apply axiom_meta_solver using D5_3[OF assms] by auto
      moreover have
        "[[φ (xP) (yP) (zP) \<rightarrow> ((\<lambda>3 (λ x y z . φ (xP) (yP) (zP))),xP,yP,zP)]]"
        apply axiom_meta_solver
        using D5_3[OF assms] d\<kappa>_proper propex3
        by (metis (no_types, lifting))
      ultimately show ?thesis unfolding axiom_def equiv_def ConjS by blast
    qed

  lemma lambda_predicates_3_0[axiom]:
    "[[(\<lambda>0 φ) = φ]]"
    unfolding identity_defs
    apply axiom_meta_solver
    by (simp add: meta_defs meta_aux)

  lemma lambda_predicates_3_1[axiom]:
    "[[(\<lambda> x . (F, xP)) = F]]"
    unfolding axiom_def
    apply (rule allI)
    unfolding identity_Π1_def apply (rule Eq1I)
    using D4_1 d1_inject by simp

  lemma lambda_predicates_3_2[axiom]:
    "[[(\<lambda>2 (λ x y . (F, xP, yP))) = F]]"
    unfolding axiom_def
    apply (rule allI)
    unfolding identity_Π2_def apply (rule Eq2I)
    using D4_2 d2_inject by simp

  lemma lambda_predicates_3_3[axiom]:
    "[[(\<lambda>3 (λ x y z . (F, xP, yP, zP))) = F]]"
    unfolding axiom_def
    apply (rule allI)
    unfolding identity_Π3_def apply (rule Eq3I)
    using D4_3 d3_inject by simp

  lemma lambda_predicates_4_0[axiom]:
    assumes "x.[(\<A>(φ x \<equiv> ψ x)) in v]"
    shows "[[(\<lambda>0 (χ (\<iota>x. φ x)) = \<lambda>0 (χ (\<iota>x. ψ x)))]]"
    unfolding axiom_def identity_o_def apply - apply (rule allI; rule Eq0I)
    using TheEqI[OF assms[THEN ActualE, THEN EquivE]] by auto

  lemma lambda_predicates_4_1[axiom]:
    assumes "x.[(\<A>(φ x \<equiv> ψ x)) in v]"
    shows "[[((\<lambda> x . χ (\<iota>x. φ x) x) = (\<lambda> x . χ (\<iota>x. ψ x) x))]]"
    unfolding axiom_def identity_Π1_def apply - apply (rule allI; rule Eq1I)
    using TheEqI[OF assms[THEN ActualE, THEN EquivE]] by auto

  lemma lambda_predicates_4_2[axiom]:
    assumes "x.[(\<A>(φ x \<equiv> ψ x)) in v]"
    shows "[[((\<lambda>2 (λ x y . χ (\<iota>x. φ x) x y)) = (\<lambda>2 (λ x y . χ (\<iota>x. ψ x) x y)))]]"
    unfolding axiom_def identity_Π2_def apply - apply (rule allI; rule Eq2I)
    using TheEqI[OF assms[THEN ActualE, THEN EquivE]] by auto

  lemma lambda_predicates_4_3[axiom]:
    assumes "x.[(\<A>(φ x \<equiv> ψ x)) in v]"
    shows "[[(\<lambda>3 (λ x y z . χ (\<iota>x. φ x) x y z)) = (\<lambda>3 (λ x y z . χ (\<iota>x. ψ x) x y z))]]"
    unfolding axiom_def identity_Π3_def apply - apply (rule allI; rule Eq3I)
    using TheEqI[OF assms[THEN ActualE, THEN EquivE]] by auto

subsectionAxioms of Encoding
text\label{TAO_Axioms_Encoding}

  lemma encoding[axiom]:
    "[[{x,F} \<rightarrow> \<box>{x,F}]]"
    by axiom_meta_solver
  lemma nocoder[axiom]:
    "[[(O!,x) \<rightarrow> \<not>(\<exists> F . {x,F})]]"
    unfolding axiom_def
    apply (rule allI, rule ImplI, subst (asm) OrdS)
    apply meta_solver unfolding en_def
    by (metis ν.simps(5) mem_Collect_eq option.sel)
  lemma A_objects[axiom]:
    "[[\<exists>x. (A!,xP) & (\<forall> F . ({xP,F} \<equiv> φ F))]]"
    unfolding axiom_def
    proof (rule allI, rule ExIRule)
      fix v
      let ?x = "αν { F . [φ F in v]}"
      have "[(A!,?xP) in v]" by (simp add: AbsS d\<kappa>_proper)
      moreover have "[(\<forall>F. {?xP,F} \<equiv> φ F) in v]"
        apply meta_solver unfolding en_def
        using d1.rep_eq d\<kappa>_def d\<kappa>_proper evalΠ1_inverse by auto
      ultimately show "[(A!,?xP) & (\<forall>F. {?xP,F} \<equiv> φ F) in v]"
        by (simp only: ConjS)
    qed

end

(*<*)
end
(*>*)

Messung V0.5 in Prozent
C=93 H=98 G=95

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© 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.