lemma approx_chain_iso: assumes a: "approx_chain a" assumes [simp]: "∧x. f⋅(g⋅x) = x" assumes [simp]: "∧y. g⋅(f⋅y) = y" shows"approx_chain (λi. f oo a i oo g)" proof - have 1: "f oo g = ID"by (simp add: cfun_eqI) have 2: "ep_pair f g"by (simp add: ep_pair_def) from 1 2 show ?thesis using a unfolding approx_chain_def by (simp add: lub_APP ep_pair.finite_deflation_e_d_p) qed
lemma approx_chain_u_map: assumes"approx_chain a" shows"approx_chain (λi. u_map⋅(a i))" using assms unfolding approx_chain_def by (simp add: lub_APP u_map_ID finite_deflation_u_map)
lemma approx_chain_sfun_map: assumes"approx_chain a"and"approx_chain b" shows"approx_chain (λi. sfun_map⋅(a i)⋅(b i))" using assms unfolding approx_chain_def by (simp add: lub_APP sfun_map_ID finite_deflation_sfun_map)
lemma approx_chain_sprod_map: assumes"approx_chain a"and"approx_chain b" shows"approx_chain (λi. sprod_map⋅(a i)⋅(b i))" using assms unfolding approx_chain_def by (simp add: lub_APP sprod_map_ID finite_deflation_sprod_map)
lemma approx_chain_ssum_map: assumes"approx_chain a"and"approx_chain b" shows"approx_chain (λi. ssum_map⋅(a i)⋅(b i))" using assms unfolding approx_chain_def by (simp add: lub_APP ssum_map_ID finite_deflation_ssum_map)
lemma approx_chain_cfun_map: assumes"approx_chain a"and"approx_chain b" shows"approx_chain (λi. cfun_map⋅(a i)⋅(b i))" using assms unfolding approx_chain_def by (simp add: lub_APP cfun_map_ID finite_deflation_cfun_map)
lemma approx_chain_prod_map: assumes"approx_chain a"and"approx_chain b" shows"approx_chain (λi. prod_map⋅(a i)⋅(b i))" using assms unfolding approx_chain_def by (simp add: lub_APP prod_map_ID finite_deflation_prod_map)
text‹Approx chains for countable discrete types.›
definition discr_approx :: "nat ==> 'a::countable discr u → 'a discr u" where"discr_approx = (λi. Λ(up⋅x). if to_nat (undiscr x) < i then up⋅x else ⊥)"
lemma decode_encode_prod_u [simp]: "decode_prod_u⋅(encode_prod_u⋅x) = x" unfolding encode_prod_u_def decode_prod_u_def apply (cases x) apply simp
subgoal for y by (cases y) simp done
lemma encode_decode_prod_u [simp]: "encode_prod_u⋅(decode_prod_u⋅y) = y" unfolding encode_prod_u_def decode_prod_u_def apply (cases y) apply simp
subgoal for a b apply (cases a, simp) apply (cases b, simp, simp) done done
instance prod :: (profinite, profinite) profinite proof obtain a :: "nat ==> 'a🪙⊥→ 'a🪙⊥"where a: "approx_chain a" using profinite .. obtain b :: "nat ==> 'b🪙⊥→ 'b🪙⊥"where b: "approx_chain b" using profinite .. have"approx_chain (λi. decode_prod_u oo sprod_map⋅(a i)⋅(b i) oo encode_prod_u)" using a b by (simp add: approx_chain_iso approx_chain_sprod_map) thus"∃(a::nat ==> ('a × 'b)🪙⊥→ ('a × 'b)🪙⊥). approx_chain a" by - (rule exI) qed
instance prod :: (bifinite, bifinite) bifinite proof show"∃(a::nat ==> ('a × 'b) → ('a × 'b)). approx_chain a" using bifinite [where 'a='a] and bifinite [where 'a='b] by (fast intro!: approx_chain_prod_map) qed
instance sfun :: (bifinite, bifinite) bifinite proof show"∃(a::nat ==> ('a →! 'b) → ('a →! 'b)). approx_chain a" using bifinite [where 'a='a] and bifinite [where 'a='b] by (fast intro!: approx_chain_sfun_map) qed
instance sprod :: (bifinite, bifinite) bifinite proof show"∃(a::nat ==> ('a ⊗ 'b) → ('a ⊗ 'b)). approx_chain a" using bifinite [where 'a='a] and bifinite [where 'a='b] by (fast intro!: approx_chain_sprod_map) qed
instance ssum :: (bifinite, bifinite) bifinite proof show"∃(a::nat ==> ('a ⊕ 'b) → ('a ⊕ 'b)). approx_chain a" using bifinite [where 'a='a] and bifinite [where 'a='b] by (fast intro!: approx_chain_ssum_map) qed
lemma approx_chain_unit: "approx_chain (⊥ :: nat ==> unit → unit)" by (simp add: approx_chain_def cfun_eq_iff finite_deflation_bottom)
instance unit :: bifinite by standard (fast intro!: approx_chain_unit)
instance discr :: (countable) profinite by standard (fast intro!: discr_approx)
instance lift :: (countable) bifinite proof note [simp] = cont_Abs_lift cont_Rep_lift Rep_lift_inverse Abs_lift_inverse obtain a :: "nat ==> ('a discr)🪙⊥→ ('a discr)🪙⊥"where a: "approx_chain a" using profinite .. hence"approx_chain (λi. (Λ y. Abs_lift y) oo a i oo (Λ x. Rep_lift x))" by (rule approx_chain_iso) simp_all thus"∃(a::nat ==> 'a lift → 'a lift). approx_chain a" by - (rule exI) qed
end
Messung V0.5 in Prozent
¤ 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.12Bemerkung:
(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.