Theory Abstract_Rigorous_Numerics
theory Abstract_Rigorous_Numerics
imports
"HOL-Library.Parallel"
Transfer_Euclidean_Space_Vector
"../Refinement/Enclosure_Operations"
"../Refinement/Refine_Vector_List"
"../Refinement/Refine_Hyperplane"
"../Refinement/Refine_Interval"
"../Refinement/Refine_Invar"
"../Refinement/Refine_Unions"
"../Refinement/Refine_Info"
begin
section ‹misc›
lemma length_listset: "xi ∈ listset xs ⟹ length xi = length xs"
by (induction xs arbitrary: xi) (auto simp: set_Cons_def)
lemma Nil_mem_listset[simp]: "[] ∈ listset list ⟷ list = []"
by (induction list) (auto simp: set_Cons_def)
lemma sing_mem_listset_iff[simp]: "[b] ∈ listset ys ⟷ (∃z. ys = [z] ∧ b ∈ z)"
by (cases ys) (auto simp: set_Cons_def)
no_notation (in autoref_syn) funcset (infixr "→" 60)
definition cfuncset where "cfuncset l u X = funcset {l .. u} X ∩ Collect (continuous_on {l .. u})"
lemma cfuncset_iff: "f ∈ cfuncset l u X ⟷ (∀i∈{l .. u}. f i ∈ X) ∧ continuous_on {l .. u} f"
unfolding cfuncset_def by auto
lemma cfuncset_continuous_onD: "f ∈ cfuncset 0 h X ⟹ continuous_on {0..h} f"
by (simp add: cfuncset_iff)
section ‹Implementations›
subsection ‹locale for sets›
definition "product_listset xs ys = (λ(x, y). x @ y) ` ((xs::real list set) × (ys::real list set))"
abbreviation "rl_rel ≡ ⟨rnv_rel⟩list_rel"
abbreviation "slp_rel ≡ ⟨Id::floatarith rel⟩list_rel"
abbreviation "fas_rel ≡ ⟨Id::floatarith rel⟩list_rel"
type_synonym 'b reduce_argument = "'b list ⇒ nat ⇒ real list ⇒ bool"