:: Introduction to Modal Propositional Logic :: by Alicia de la Cruz :: :: Received September 30, 1991 :: Copyright (c) 1991-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies NUMBERS, SUBSET_1, TREES_2, ZFMISC_1, FINSEQ_1, XBOOLE_0, TREES_1, FUNCT_1, RELAT_1, ORDINAL4, NAT_1, CARD_1, XXREAL_0, PARTFUN1, TARSKI, ORDINAL1, ARYTM_3, FINSET_1, FUNCOP_1, MARGREL1, MCART_1, QC_LANG1, XBOOLEAN, VALUED_1, ZF_LANG, MODAL_1, TREES_3; notations TARSKI, XBOOLE_0, ENUMSET1, ZFMISC_1, XTUPLE_0, SUBSET_1, CARD_1, ORDINAL1, NUMBERS, WELLORD2, XCMPLX_0, NAT_1, DOMAIN_1, MCART_1, RELAT_1, FUNCT_1, RELSET_1, FINSEQ_1, FUNCOP_1, FINSEQ_2, FUNCT_2, FINSET_1, PARTFUN1, TREES_1, TREES_2, XXREAL_0, TREES_3; constructors PARTFUN1, WELLORD2, DOMAIN_1, XXREAL_0, XREAL_0, NAT_1, FINSEQ_2, TREES_2, RELSET_1, FUNCOP_1, TREES_3, XTUPLE_0, NUMBERS; registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, FINSET_1, XXREAL_0, XREAL_0, FINSEQ_1, TREES_1, TREES_2, CARD_1, RELSET_1, TREES_3, XTUPLE_0; requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM; begin reserve x,y,x1,x2,z for set, n,m,k for Nat, t1 for (DecoratedTree of [: NAT,NAT :]), w,s,t,u for FinSequence of NAT, D for non empty set; definition let Z be Tree; func Root Z -> Element of Z equals :: MODAL_1:def 1 {}; end; definition let D; let T be DecoratedTree of D; func Root T -> Element of D equals :: MODAL_1:def 2 T.(Root dom T); end; theorem :: MODAL_1:1 n <> m implies not <*n*>,<*m*>^s are_c=-comparable; ::$CT theorem :: MODAL_1:3 n <> m implies not <*n*> is_a_proper_prefix_of <*m*>^s; ::$CT 4 theorem :: MODAL_1:8 for Z being Tree,n,m st n <= m & <*m*> in Z holds <*n*> in Z; theorem :: MODAL_1:9 w^t is_a_proper_prefix_of w^s implies t is_a_proper_prefix_of s ; theorem :: MODAL_1:10 t1 in PFuncs(NAT*,[: NAT,NAT :]); theorem :: MODAL_1:11 for Z,Z1,Z2 being Tree,z being Element of Z st Z with-replacement (z,Z1) = Z with-replacement (z,Z2) holds Z1 = Z2; theorem :: MODAL_1:12 for Z,Z1,Z2 being (DecoratedTree of D),z being Element of dom Z st Z with-replacement (z,Z1) = Z with-replacement (z,Z2) holds Z1 = Z2; theorem :: MODAL_1:13 for Z1,Z2 being Tree,p being FinSequence of NAT st p in Z1 holds for v being Element of Z1 with-replacement (p,Z2), w being Element of Z1 st v = w & w is_a_proper_prefix_of p holds succ v = succ w; theorem :: MODAL_1:14 for Z1,Z2 being Tree,p being FinSequence of NAT st p in Z1 holds for v being Element of Z1 with-replacement (p,Z2),w being Element of Z1 st v = w & not p,w are_c=-comparable holds succ v = succ w; theorem :: MODAL_1:15 for Z1,Z2 being Tree,p being FinSequence of NAT st p in Z1 holds for v being Element of Z1 with-replacement (p,Z2),w being Element of Z2 st v = p^w holds succ v,succ w are_equipotent; theorem :: MODAL_1:16 for Z1 being Tree,p being FinSequence of NAT st p in Z1 holds for v being Element of Z1,w being Element of Z1|p st v = p^w holds succ v,succ w are_equipotent; theorem :: MODAL_1:17 for Z being finite Tree st branchdeg (Root Z) = 0 holds card Z = 1 & Z = {{}} ; theorem :: MODAL_1:18 for Z being finite Tree st branchdeg (Root Z) = 1 holds succ ( Root Z) = { <*0*> }; theorem :: MODAL_1:19 for Z being finite Tree st branchdeg (Root Z) = 2 holds succ ( Root Z) = { <*0*>,<*1*> }; reserve s9,w9,v9 for Element of NAT*; theorem :: MODAL_1:20 for Z being Tree,o being Element of Z st o <> Root Z holds Z|o,{ o^s9: o^s9 in Z } are_equipotent & not Root Z in { o^w9 : o^w9 in Z }; theorem :: MODAL_1:21 for Z being finite Tree,o being Element of Z st o <> Root Z holds card (Z|o) < card Z; theorem :: MODAL_1:22 for Z being finite Tree,z being Element of Z st succ (Root Z) = {z} holds Z = elementary_tree 1 with-replacement (<*0*>,Z|z); theorem :: MODAL_1:23 for Z being finite (DecoratedTree of D),z be Element of dom Z st succ (Root dom Z) = {z} holds Z = ((elementary_tree 1) --> Root Z) with-replacement (<*0*>,Z|z); theorem :: MODAL_1:24 for Z being Tree,x1,x2 be Element of Z st x1 = <*0*> & x2 = <*1 *> & succ (Root Z) = {x1,x2} holds Z = (elementary_tree 2 with-replacement (<*0 *>,Z|x1)) with-replacement (<*1*>,Z|x2); theorem :: MODAL_1:25 for Z being (DecoratedTree of D),x1,x2 being Element of dom Z st x1 = <*0*> & x2 = <*1*> & succ (Root dom Z) = {x1,x2} holds Z = ((( elementary_tree 2) --> Root Z) with-replacement (<*0*>, Z|x1)) with-replacement (<*1*>,Z|x2); definition func MP-variables -> set equals :: MODAL_1:def 3 [: {3},NAT :]; end; registration cluster MP-variables -> non empty; end; definition mode MP-variable is Element of MP-variables; end; definition func MP-conectives -> set equals :: MODAL_1:def 4 [: {0,1,2},NAT :]; end; registration cluster MP-conectives -> non empty; end; definition mode MP-conective is Element of MP-conectives; end; theorem :: MODAL_1:26 MP-conectives misses MP-variables; reserve p,q for MP-variable; definition let T be finite Tree,v be Element of T; redefine func branchdeg v -> Nat; end; definition func MP-WFF -> DTree-set of [: NAT,NAT :] means :: MODAL_1:def 5 (for x being DecoratedTree of [: NAT,NAT :] st x in it holds x is finite) & for x being finite DecoratedTree of [: NAT,NAT :] holds x in it iff for v being Element of dom x holds branchdeg v <= 2 & (branchdeg v = 0 implies x .v = [0,0] or ex k st x .v = [3,k]) & (branchdeg v = 1 implies x .v = [1,0] or x .v = [1,1]) & (branchdeg v = 2 implies x .v = [2,0]); end; :: [0,0] = VERUM :: [1,0] = negation :: [1,1] = modal operator of necessity :: [2,0] = & definition mode MP-wff is Element of MP-WFF; end; registration cluster -> finite for MP-wff; end; reserve A,A1,B,B1,C,C1 for MP-wff; definition let A; let a be Element of dom A; redefine func A|a -> MP-wff; end; definition let a be Element of MP-conectives; func the_arity_of a -> Nat equals :: MODAL_1:def 6 a`1; end; definition let D be non empty set, T,T1 be (DecoratedTree of D), p be FinSequence of NAT; assume p in dom T; func @(T,p,T1) -> DecoratedTree of D equals :: MODAL_1:def 7 T with-replacement (p,T1); end; theorem :: MODAL_1:27 ((elementary_tree 1) --> [1,0]) with-replacement (<*0*>,A) is MP-wff; theorem :: MODAL_1:28 ((elementary_tree 1)-->[1,1]) with-replacement (<*0*>,A) is MP-wff; theorem :: MODAL_1:29 (((elementary_tree 2)-->[2,0]) with-replacement (<*0*>,A)) with-replacement (<*1*>,B) is MP-wff; definition let A; func 'not' A -> MP-wff equals :: MODAL_1:def 8 ((elementary_tree 1)-->[1,0]) with-replacement (<*0*>,A); func (#) A -> MP-wff equals :: MODAL_1:def 9 ((elementary_tree 1)-->[1,1]) with-replacement ( <*0*>,A); let B; func A '&' B -> MP-wff equals :: MODAL_1:def 10 ((((elementary_tree 2)-->[2,0]) with-replacement (<*0*>,A))) with-replacement (<*1*>,B); end; definition let A; func ? A -> MP-wff equals :: MODAL_1:def 11 'not' (#) 'not' A; let B; func A 'or' B -> MP-wff equals :: MODAL_1:def 12 'not'('not' A '&' 'not' B); func A => B -> MP-wff equals :: MODAL_1:def 13 'not'(A '&' 'not' B); end; theorem :: MODAL_1:30 (elementary_tree 0) --> [3,n] is MP-wff; theorem :: MODAL_1:31 (elementary_tree 0) --> [0,0] is MP-wff; definition let p; func @p -> MP-wff equals :: MODAL_1:def 14 (elementary_tree 0) --> p; end; theorem :: MODAL_1:32 @p = @q implies p = q; theorem :: MODAL_1:33 'not' A = 'not' B implies A = B; theorem :: MODAL_1:34 (#)A = (#)B implies A = B; theorem :: MODAL_1:35 (A '&' B) = (A1 '&' B1) implies A = A1 & B = B1; definition func VERUM -> MP-wff equals :: MODAL_1:def 15 (elementary_tree 0) --> [0,0]; end; theorem :: MODAL_1:36 card dom A = 1 implies A = VERUM or ex p st A = @p; theorem :: MODAL_1:37 card dom A >= 2 implies (ex B st A = 'not' B or A = (#)B) or ex B,C st A = B '&' C; theorem :: MODAL_1:38 card dom A < card dom 'not' A; theorem :: MODAL_1:39 card dom A < card dom (#)A; theorem :: MODAL_1:40 card dom A < card dom(A '&' B) & card dom B < card dom (A '&' B); definition let IT be MP-wff; attr IT is atomic means :: MODAL_1:def 16 ex p st IT = @p; attr IT is negative means :: MODAL_1:def 17 ex A st IT = 'not' A; attr IT is necessitive means :: MODAL_1:def 18 ex A st IT = (#) A; attr IT is conjunctive means :: MODAL_1:def 19 ex A,B st IT = A '&' B; end; registration cluster atomic for MP-wff; cluster negative for MP-wff; cluster necessitive for MP-wff; cluster conjunctive for MP-wff; end; scheme :: MODAL_1:sch 1 MPInd { Prop[Element of MP-WFF] }: for A being Element of MP-WFF holds Prop[ A] provided Prop[VERUM] and for p being MP-variable holds Prop[@p] and for A being Element of MP-WFF st Prop[A] holds Prop['not' A] and for A being Element of MP-WFF st Prop[A] holds Prop[(#) A] and for A, B being Element of MP-WFF st Prop[A] & Prop[B] holds Prop[A '&' B]; theorem :: MODAL_1:41 for A being Element of MP-WFF holds A = VERUM or A is atomic MP-wff or A is negative MP-wff or A is necessitive MP-wff or A is conjunctive MP-wff; theorem :: MODAL_1:42 A = VERUM or (ex p st A = @p) or (ex B st A = 'not' B) or (ex B st A = (#) B) or ex B,C st A = B '&' C; theorem :: MODAL_1:43 @p <> 'not' A & @p <> (#)A & @p <> A '&' B; theorem :: MODAL_1:44 'not' A <> (#)B & 'not' A <> B '&' C; theorem :: MODAL_1:45 (#)A <> B '&' C; theorem :: MODAL_1:46 VERUM <> @p & VERUM <> 'not' A & VERUM <> (#)A & VERUM <> A '&' B; scheme :: MODAL_1:sch 2 MPFuncEx{ D() -> non empty set, d() -> Element of D(), F(Element of MP-variables) -> Element of D(), N,H(Element of D()) -> Element of D(), C(( Element of D()),Element of D()) -> Element of D() }: ex f being Function of MP-WFF, D() st f.VERUM = d() & (for p being MP-variable holds f.@p = F(p)) & ( for A being Element of MP-WFF holds f.('not' A) = N(f.A)) & (for A being Element of MP-WFF holds f.((#)A) = H(f.A)) & for A,B being Element of MP-WFF holds f.(A '&' B) = C(f.A,f.B);