(*<*) theory Permute imports"HOL-Library.BNF_Axiomatization" begin (*>*)
unbundle cardinal_syntax
declare [[bnf_internals]]
bnf_axiomatization (dead 'p, Fset1: 'a1, Fset2: 'a2, Fset3: 'a3) F for map: Fmap rel: Frel type_synonym ('p, 'a1, 'a2, 'a3) F' = "('p, 'a3, 'a1, 'a2) F"
abbreviation Fin :: "'a1 set → 'a2 set → 'a3 set → (('p, 'a1, 'a2, 'a3) F) set" where "Fin A1 A2 A3 ≡ {x. Fset1 x ⊆ A1 ∧ Fset2 x ⊆ A2 ∧ Fset3 x ⊆ A3}"
abbreviation F'map :: "('a1 → 'b1) → ('a2 → 'b2) → ('a3 → 'b3) → ('p, 'a1, 'a2, 'a3) F' →('p, 'b1, 'b2, 'b3) F'" where "F'map f g h ≡ Fmap h f g"
abbreviation F'set1 :: "('p, 'a1, 'a2, 'a3) F' → 'a1 set" where "F'set1 ≡ Fset2"
abbreviation F'set2 :: "('p, 'a1, 'a2, 'a3) F' → 'a2 set" where "F'set2 ≡ Fset3"
abbreviation F'set3 :: "('p, 'a1, 'a2, 'a3) F' → 'a3 set" where "F'set3 ≡ Fset1"
abbreviation F'bd where "F'bd ≡ bd_F"
theorem F'map_id: "F'map id id id = id" by (rule F.map_id0)
theorem F'map_comp: "F'map (f1 o g1) (f2 o g2) (f3 o g3) = F'map f1 f2 f3 o F'map g1 g2 g3" by (rule F.map_comp0)
theorem F'map_cong: "[∧z. z ∈ F'set1 x ==> f1 z = g1 z; ∧z. z ∈ F'set2 x ==> f2 z = g2 z; ∧z. z ∈ F'set3 x ==> f3 z = g3 z] ==> F'map f1 f2 f3 x = F'map g1 g2 g3 x" apply (rule F.map_cong0) apply assumption+ done
theorem F'set1_natural: "F'set1 o F'map f1 f2 f3 = image f1 o F'set1" by (rule F.set_map0(2))
theorem F'set2_natural: "F'set2 o F'map f1 f2 f3 = image f2 o F'set2" by (rule F.set_map0(3))
theorem F'set3_natural: "F'set3 o F'map f1 f2 f3 = image f3 o F'set3" by (rule F.set_map0(1))
theorem F'bd_card_order: "card_order F'bd" by (rule F.bd_card_order)
theorem F'bd_cinfinite: "cinfinite F'bd" by (rule F.bd_cinfinite)
theorem F'bd_regularCard: "regularCard F'bd" by (rule F.bd_regularCard)
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.