Theory SD_Incomplete
subsection "Sprenger-Dam Criterion Incompleteness"
theory SD_Incomplete
imports "../Incomplete_Criteria"
begin
datatype node = One
datatype pos= h1 | h1'
definition "Node ≡ {One}"
lemma O_Node[simp]:"One ∈ Node" by(simp add: Node_def)
lemma alw_nodes:"alw (holdsS Node) nds"
unfolding alw_holdsS_iff_snth Node_def apply(rule allI)
subgoal for i apply(induct i)
using node.exhaust by auto .
fun edge::"node ⇒ node ⇒ bool" where
"edge One One = HOL.True"
lemma edge_into_zero:"edge nd nd' ⟷ nd = One ∧ nd' = One" by(cases nd, cases nd', auto)
lemma edgeTrue:"edge nd nd'" by(cases nd, cases nd', auto)
fun PosOf::"node ⇒ pos set" where
"PosOf One = {h1, h1'}"
definition RR_set :: "((node × pos) × (node × pos) × slope) set" where
"RR_set = {
((One, h1), (One, h1'), Decr),
((One, h1'), (One, h1), Main)
}"
definition RR :: "node × pos ⇒ node × pos ⇒ slope ⇒ bool" where
"RR np1 np2 s ≡ ((np1, np2, s) ∈ RR_set)"
lemmas RR_defs = RR_def RR_set_def
lemma RR_ZO[simp]:"RR (One, h1) (One, h1') Decr" unfolding RR_defs by auto
lemma RR_OZ[simp]:"RR (One, h1') (One, h1) Main" unfolding RR_defs by auto
lemma P_inPosOf:"RR (nd, P) (nd', P') sl ⟹ P ∈ PosOf nd"
"RR (nd, P) (nd', P') sl ⟹ P' ∈ PosOf nd'" by(auto simp: RR_defs)