private lemma map_uprod_parametric': "((A ===> B) ===> rel_prod A A ===> rel_prod B B) (λf. map_prod f f) (λf. map_prod f f)" by transfer_prover
lift_definition map_uprod :: "('a ==> 'b) ==> 'a uprod ==> 'b uprod"is"λf. map_prod f f"
parametric map_uprod_parametric' by auto
lemma map_uprod_simps [simp, code]: "map_uprod f (Upair x y) = Upair (f x) (f y)" by transfer simp
private lemma rel_uprod_transfer': "((A ===> B ===> (=)) ===> rel_prod A A ===> rel_prod B B ===> (=)) (λR (a, b) (c, d). R a c ∧ R b d ∨ R a d ∧ R b c) (λR (a, b) (c, d). R a c ∧ R b d∨ R a d ∧ R b c)" by transfer_prover
lift_definition rel_uprod :: "('a ==> 'b ==> bool) ==> 'a uprod ==> 'b uprod ==> bool" is"λR (a, b) (c, d). R a c ∧ R b d ∨ R a d ∧ R b c" parametric rel_uprod_transfer' by auto
lemma rel_uprod_simps [simp, code]: "rel_uprod R (Upair a b) (Upair c d) ⟷ R a c ∧ R b d ∨ R a d ∧ R b c" by transfer auto
lemma Upair_parametric [transfer_rule]: "(A ===> A ===> rel_uprod A) Upair Upair" unfolding rel_fun_def by transfer auto
lemma case_uprod_parametric [transfer_rule]: "(rel_commute A B ===> rel_uprod A ===> B) case_uprod case_uprod" unfolding rel_fun_def by transfer(force dest: rel_funD)
end
bnf uprod: "'a uprod"
map: map_uprod
sets: set_uprod
bd: natLeq
rel: rel_uprod proof - show"map_uprod id = id"unfolding fun_eq_iff by transfer auto show"map_uprod (g ∘ f) = map_uprod g ∘ map_uprod f"for f :: "'a ==> 'b"and g :: "'b ==> 'c" unfolding fun_eq_iff by transfer auto show"map_uprod f x = map_uprod g x"if"∧z. z ∈ set_uprod x ==> f z = g z" for f :: "'a ==> 'b"and g x using that by transfer auto show"set_uprod ∘ map_uprod f = (`) f ∘ set_uprod"for f :: "'a ==> 'b"by transfer auto show"card_order natLeq"by(rule natLeq_card_order) show"BNF_Cardinal_Arithmetic.cinfinite natLeq"by(rule natLeq_cinfinite) show"regularCard natLeq"by(rule regularCard_natLeq) show"ordLess2 (card_of (set_uprod x)) natLeq"for x :: "'a uprod" by (auto simp flip: finite_iff_ordLess_natLeq) show"rel_uprod R OO rel_uprod S ≤ rel_uprod (R OO S)" for R :: "'a ==> 'b ==> bool"and S :: "'b ==> 'c ==> bool"by(rule predicate2I)(transfer; auto) show"rel_uprod R = (λx y. ∃z. set_uprod z ⊆ {(x, y). R x y} ∧ map_uprod fst z = x∧ map_uprod snd z = y)" for R :: "'a ==> 'b ==> bool"by transfer(auto simp add: fun_eq_iff) qed
lemma pred_uprod_code [simp, code]: "pred_uprod P (Upair x y) ⟷ P x ∧ P y" by(simp add: pred_uprod_def)
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.