Theory Ugraph_Properties
section‹Classes and properties of graphs›
theory Ugraph_Properties
imports
Ugraph_Lemmas
Girth_Chromatic.Girth_Chromatic
begin
text‹A ``graph property'' is a set of graphs which is closed under isomorphism.›
type_synonym ugraph_class = "ugraph set"
definition ugraph_property :: "ugraph_class ⇒ bool" where
"ugraph_property C ≡ ∀G ∈ C. ∀G'. G ≃ G' ⟶ G' ∈ C"
abbreviation prob_in_class :: "(nat ⇒ real) ⇒ ugraph_class ⇒ nat ⇒ real" where
"prob_in_class p c n ≡ probGn p n (λes. edge_space.edge_ugraph n es ∈ c)"
text‹From now on, we consider random graphs not with fixed edge probabilities but rather with a
probability function depending on the number of vertices. Such a function is called a ``threshold''
for a graph property iff
\begin{itemize}
\item for asymptotically \emph{larger} probability functions, the probability that a random graph
is an element of that class tends to \emph{$1$} (``$1$-statement''), and
\item for asymptotically \emph{smaller} probability functions, the probability that a random graph
is an element of that class tends to \emph{$0$} (``$0$-statement'').
\end{itemize}›
definition is_threshold :: "ugraph_class ⇒ (nat ⇒ real) ⇒ bool" where
"is_threshold c t ≡ ugraph_property c ∧ (∀p. nonzero_prob_fun p ⟶
(p ≪ t ⟶ prob_in_class p c ⇢ 0) ∧
(t ≪ p ⟶ prob_in_class p c ⇢ 1))"
lemma is_thresholdI[intro]:
assumes "ugraph_property c"
assumes "⋀p. ⟦ nonzero_prob_fun p; p ≪ t ⟧ ⟹ prob_in_class p c ⇢ 0"
assumes "⋀p. ⟦ nonzero_prob_fun p; t ≪ p ⟧ ⟹ prob_in_class p c ⇢ 1"
shows "is_threshold c t"
using assms unfolding is_threshold_def by blast
end