lemma reflp_list_all2: assumes"reflp R" shows"reflp (list_all2 R)" proof (rule reflpI) from assms have *: "∧xs. R xs xs"by (rule reflpE) fix xs show"list_all2 R xs xs" by (induct xs) (simp_all add: *) qed
lemma list_symp: assumes"symp R" shows"symp (list_all2 R)" proof (rule sympI) from assms have *: "∧xs ys. R xs ys ==> R ys xs"by (rule sympE) fix xs ys assume"list_all2 R xs ys" thenshow"list_all2 R ys xs" by (induct xs ys rule: list_induct2') (simp_all add: *) qed
lemma list_transp: assumes"transp R" shows"transp (list_all2 R)" proof (rule transpI) from assms have *: "∧xs ys zs. R xs ys ==> R ys zs ==> R xs zs"by (rule transpE) fix xs ys zs assume"list_all2 R xs ys"and"list_all2 R ys zs" thenshow"list_all2 R xs zs" by (induct arbitrary: zs) (auto simp: list_all2_Cons1 intro: *) qed
lemma list_equivp [quot_equiv]: "equivp R ==> equivp (list_all2 R)" by (blast intro: equivpI reflp_list_all2 list_symp list_transp elim: equivpE)
lemma list_quotient3 [quot_thm]: assumes"Quotient3 R Abs Rep" shows"Quotient3 (list_all2 R) (map Abs) (map Rep)" proof (rule Quotient3I) from assms have"∧x. Abs (Rep x) = x"by (rule Quotient3_abs_rep) thenshow"∧xs. map Abs (map Rep xs) = xs"by (simp add: comp_def) next from assms have"∧x y. R (Rep x) (Rep y) ⟷ x = y"by (rule Quotient3_rel_rep) thenshow"∧xs. list_all2 R (map Rep xs) (map Rep xs)" by (simp add: list_all2_map1 list_all2_map2 list_all2_eq) next fix xs ys from assms have"∧x y. R x x ∧ R y y ∧ Abs x = Abs y ⟷ R x y"by (rule Quotient3_rel) thenshow"list_all2 R xs ys ⟷ list_all2 R xs xs ∧ list_all2 R ys ys ∧ map Abs xs = map Abs ys" by (induct xs ys rule: list_induct2') auto qed
declare [[mapQ3 list = (list_all2, list_quotient3)]]
lemma list_all2_rsp: assumes r: "∀x y. R x y ⟶ (∀a b. R a b ⟶ S x a = T y b)" and l1: "list_all2 R x y" and l2: "list_all2 R a b" shows"list_all2 S x a = list_all2 T y b" using l1 l2 by (induct arbitrary: a b rule: list_all2_induct,
auto simp: list_all2_Cons1 list_all2_Cons2 r)
lemma [quot_respect]: "((R ===> R ===> (=)) ===> list_all2 R ===> list_all2 R ===> (=)) list_all2 list_all2" by (rule list.rel_transfer)
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.