doc-src/TutorialI/CTL/CTLind.thy
changeset 23733 3f8ad7418e55
parent 17914 99ead7a7eb42
equal deleted inserted replaced
23732:f9f89b7cfdc7 23733:3f8ad7418e55
    22 A}-avoiding path:
    22 A}-avoiding path:
    23 % Second proof of opposite direction, directly by well-founded induction
    23 % Second proof of opposite direction, directly by well-founded induction
    24 % on the initial segment of M that avoids A.
    24 % on the initial segment of M that avoids A.
    25 *}
    25 *}
    26 
    26 
    27 consts Avoid :: "state \<Rightarrow> state set \<Rightarrow> state set";
    27 inductive_set
    28 inductive "Avoid s A"
    28   Avoid :: "state \<Rightarrow> state set \<Rightarrow> state set"
    29 intros "s \<in> Avoid s A"
    29   for s :: state and A :: "state set"
    30        "\<lbrakk> t \<in> Avoid s A; t \<notin> A; (t,u) \<in> M \<rbrakk> \<Longrightarrow> u \<in> Avoid s A";
    30 where
       
    31     "s \<in> Avoid s A"
       
    32   | "\<lbrakk> t \<in> Avoid s A; t \<notin> A; (t,u) \<in> M \<rbrakk> \<Longrightarrow> u \<in> Avoid s A";
    31 
    33 
    32 text{*
    34 text{*
    33 It is easy to see that for any infinite @{term A}-avoiding path @{term f}
    35 It is easy to see that for any infinite @{term A}-avoiding path @{term f}
    34 with @{prop"f(0::nat) \<in> Avoid s A"} there is an infinite @{term A}-avoiding path
    36 with @{prop"f(0::nat) \<in> Avoid s A"} there is an infinite @{term A}-avoiding path
    35 starting with @{term s} because (by definition of @{const Avoid}) there is a
    37 starting with @{term s} because (by definition of @{const Avoid}) there is a