(*Reflexivity of rtrancl*) lemma rtrancl_refl: "[a ∈ field(r)]==>⟨a,a⟩∈ r^*" apply (rule rtrancl_unfold [THEN ssubst]) apply (erule idI [THEN UnI1]) done
(*Closure under composition with r *) lemma rtrancl_into_rtrancl: "[⟨a,b⟩∈ r^*; ⟨b,c⟩∈ r]==>⟨a,c⟩∈ r^*" apply (rule rtrancl_unfold [THEN ssubst]) apply (rule compI [THEN UnI2], assumption, assumption) done
(*rtrancl of r contains all pairs in r *) lemma r_into_rtrancl: "⟨a,b⟩∈ r ==>⟨a,b⟩∈ r^*" by (rule rtrancl_refl [THEN rtrancl_into_rtrancl], blast+)
(*The premise ensures that r consists entirely of pairs*) lemma r_subset_rtrancl: "relation(r) ==> r ⊆ r^*" by (simp add: relation_def, blast intro: r_into_rtrancl)
(*r^+ contains all pairs in r *) lemma r_into_trancl: "⟨a,b⟩∈ r ==>⟨a,b⟩∈ r^+" unfolding trancl_def apply (blast intro!: rtrancl_refl) done
(*The premise ensures that r consists entirely of pairs*) lemma r_subset_trancl: "relation(r) ==> r ⊆ r^+" by (simp add: relation_def, blast intro: r_into_trancl)
(*intro rule by definition: from r^* and r *) lemma rtrancl_into_trancl1: "[⟨a,b⟩∈ r^*; ⟨b,c⟩∈ r]==>⟨a,c⟩∈ r^+" by (unfold trancl_def, blast)
(*intro rule from r and r^* *) lemma rtrancl_into_trancl2: "[⟨a,b⟩∈ r; ⟨b,c⟩∈ r^*]==>⟨a,c⟩∈ r^+" apply (erule rtrancl_induct) apply (erule r_into_trancl) apply (blast intro: r_into_trancl trancl_trans) done
(*Nice induction rule for trancl*) lemma trancl_induct [case_names initial step, induct set: trancl]: "[⟨a,b⟩∈ r^+; ∧y. [⟨a,y⟩∈ r]==> P(y); ∧y z.[⟨a,y⟩∈ r^+; ⟨y,z⟩∈ r; P(y)]==> P(z) \==> P(b)" apply (rule compEpair) apply (unfold trancl_def, assumption) (*by induction on this formula*) apply (subgoal_tac "∀z. ⟨y,z⟩∈ r ⟶ P (z) ") (*now solve first subgoal: this formula is sufficient*) apply blast apply (erule rtrancl_induct) apply (blast intro: rtrancl_into_trancl1)+ done
(*elimination of r^+ -- NOT an induction rule*) lemma tranclE: "[⟨a,b⟩∈ r^+; ⟨a,b⟩∈ r ==> P; ∧y.[⟨a,y⟩∈ r^+; ⟨y,b⟩∈ r]==> P \==> P" apply (subgoal_tac "⟨a,b⟩∈ r | (∃y. ⟨a,y⟩∈ r^+ ∧⟨y,b⟩∈ r) ") apply blast apply (rule compEpair) apply (unfold trancl_def, assumption) apply (erule rtranclE) apply (blast intro: rtrancl_into_trancl1)+ done
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-04-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.