# Theory TAO_4_BasicDefinitions

(*<*)
theory TAO_4_BasicDefinitions
imports TAO_3_Quantifiable
begin
(*>*)

section‹Basic Definitions›
text‹\label{TAO_BasicDefinitions}›

subsection‹Derived Connectives›
text‹\label{TAO_BasicDefinitions_DerivedConnectives}›

definition conj::"𝗈⇒𝗈⇒𝗈" (infixl "❙&" 53) where
"conj ≡ λ x y . ❙¬(x ❙→ ❙¬y)"
definition disj::"𝗈⇒𝗈⇒𝗈" (infixl "❙∨" 52) where
"disj ≡ λ x y . ❙¬x ❙→ y"
definition equiv::"𝗈⇒𝗈⇒𝗈" (infixl "❙≡" 51) where
"equiv ≡ λ x y . (x ❙→ y) ❙& (y ❙→ x)"
definition diamond::"𝗈⇒𝗈" ("❙◇_" [62] 63) where
"diamond ≡ λ φ . ❙¬❙□❙¬φ"
definition (in quantifiable) exists :: "('a⇒𝗈)⇒𝗈" (binder "❙∃" [8] 9) where
"exists ≡ λ φ . ❙¬(❙∀ x . ❙¬φ x)"

named_theorems conn_defs
declare diamond_def[conn_defs] conj_def[conn_defs]
disj_def[conn_defs] equiv_def[conn_defs]
exists_def[conn_defs]

subsection‹Abstract and Ordinary Objects›
text‹\label{TAO_BasicDefinitions_AbstractOrdinary}›

definition Ordinary :: "Π⇩1" ("O!") where "Ordinary ≡ ❙λx. ❙◇⦇E!,x⇧P⦈"
definition Abstract :: "Π⇩1" ("A!") where "Abstract ≡ ❙λx. ❙¬❙◇⦇E!,x⇧P⦈"

subsection‹Identity Definitions›
text‹\label{TAO_BasicDefinitions_Identity}›

definition basic_identity⇩E::"Π⇩2" where
"basic_identity⇩E ≡ ❙λ⇧2 (λ x y . ⦇O!,x⇧P⦈ ❙& ⦇O!,y⇧P⦈
❙& ❙□(❙∀ F. ⦇F,x⇧P⦈ ❙≡ ⦇F,y⇧P⦈))"

definition basic_identity⇩E_infix::"κ⇒κ⇒𝗈" (infixl "❙=⇩E" 63) where
"x ❙=⇩E y ≡ ⦇basic_identity⇩E, x, y⦈"

definition basic_identity⇩κ (infixl "❙=⇩κ" 63) where
"basic_identity⇩κ ≡ λ x y . (x ❙=⇩E y) ❙∨ ⦇A!,x⦈ ❙& ⦇A!,y⦈
❙& ❙□(❙∀ F. ⦃x,F⦄ ❙≡ ⦃y,F⦄)"

definition basic_identity⇩1 (infixl "❙=⇩1" 63) where
"basic_identity⇩1 ≡ λ F G . ❙□(❙∀ x. ⦃x⇧P,F⦄ ❙≡ ⦃x⇧P,G⦄)"

definition basic_identity⇩2 :: "Π⇩2⇒Π⇩2⇒𝗈" (infixl "❙=⇩2" 63) where
"basic_identity⇩2 ≡ λ F G .  ❙∀ x. ((❙λy. ⦇F,x⇧P,y⇧P⦈) ❙=⇩1 (❙λy. ⦇G,x⇧P,y⇧P⦈))
❙& ((❙λy. ⦇F,y⇧P,x⇧P⦈) ❙=⇩1 (❙λy. ⦇G,y⇧P,x⇧P⦈))"

definition basic_identity⇩3::"Π⇩3⇒Π⇩3⇒𝗈" (infixl "❙=⇩3" 63) where
"basic_identity⇩3 ≡ λ F G . ❙∀ x y. (❙λz. ⦇F,z⇧P,x⇧P,y⇧P⦈) ❙=⇩1 (❙λz. ⦇G,z⇧P,x⇧P,y⇧P⦈)
❙& (❙λz. ⦇F,x⇧P,z⇧P,y⇧P⦈) ❙=⇩1 (❙λz. ⦇G,x⇧P,z⇧P,y⇧P⦈)
❙& (❙λz. ⦇F,x⇧P,y⇧P,z⇧P⦈) ❙=⇩1 (❙λz. ⦇G,x⇧P,y⇧P,z⇧P⦈)"

definition basic_identity⇩0::"𝗈⇒𝗈⇒𝗈" (infixl "❙=⇩0" 63) where
"basic_identity⇩0 ≡ λ F G . (❙λy. F) ❙=⇩1 (❙λy. G)"

(*<*)
end
(*>*)