where "not_binders_binrelT_ftv_stv R1 R2 a b = True"
definition not_type_constructor_lhs ::
"('a \<Rightarrow> 'b \<Rightarrow> bool) \<Rightarrow> ('c \<Rightarrow> 'd \<Rightarrow> bool) \<Rightarrow> 'a \<Rightarrow> 'a K \<Rightarrow> bool"
where "not_type_constructor_lhs R1 R2 a b = True"
definition not_type_constructor_rhs ::
"('a \<Rightarrow> 'b \<Rightarrow> bool) \<Rightarrow> ('c \<Rightarrow> 'd \<Rightarrow> bool) \<Rightarrow> 'a K \<Rightarrow> 'e \<Rightarrow> bool"
where "not_type_constructor_rhs R1 R2 a b = True"
definition not_identical_type_constructors ::
"('a \<Rightarrow> 'b \<Rightarrow> bool) \<Rightarrow> ('c \<Rightarrow> 'd \<Rightarrow> bool) \<Rightarrow> 'a K \<Rightarrow> 'e L \<Rightarrow> bool"
where "not_identical_type_constructors R1 R2 a b = True"
definition not_identical_type_constructors_lhs ::
"('a \<Rightarrow> 'b \<Rightarrow> bool) \<Rightarrow> ('c \<Rightarrow> 'd \<Rightarrow> bool) \<Rightarrow> 'a K \<Rightarrow> 'b K \<Rightarrow> bool"
where "not_identical_type_constructors_lhs R1 R2 a b = True"
definition not_identical_type_constructors_rhs ::
"('a \<Rightarrow> 'b \<Rightarrow> bool) \<Rightarrow> 'a K \<Rightarrow> 'c K \<Rightarrow> bool"
where "not_identical_type_constructors_rhs R1 a b = True"
subsection\<open>Test data\<close>
lemma mono_ow_transfer':
includes lifting_syntax
assumes [transfer_domain_rule, transfer_rule]: "Domainp B = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
shows
"((A ===> A ===> (=)) ===> (B ===> B ===> (=)) ===> (B ===> A) ===> (=))
(mono_ow UB) mono.with"
unfolding mono_ow_def mono.with_def
by (transfer_prover_start, transfer_step+) simp
ctr_test "mono_with" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::'a\<Rightarrow>'b\<Rightarrow>bool\<close>) and (?'a B)
in mono_ow': mono.with_def
ctr_test "exI" relativization
in mono_ow'': exI
ctr_test "binrel" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b A) and (?'a B)
in mono_ow': mono.with_def
ctr_test "binrel_ftv" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::nat\<Rightarrow>'b\<Rightarrow>bool\<close>) and (?'a B)
in mono_ow': mono.with_def
ctr_test "dup_stvs" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::'a\<Rightarrow>'b\<Rightarrow>bool\<close>) and (?'b B)
in mono_ow': mono.with_def
ctr_test "dup_binrel_ftvs" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::'a\<Rightarrow>'d\<Rightarrow>bool\<close>) and (?'a B)
in mono_ow': mono.with_def
ctr_test "no_relator" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::'a\<Rightarrow>'b\<Rightarrow>bool\<close>) and (?'a B)
in KK_def
ctr_test "invalid_relator" relativization
synthesis ctr_simps_Collect_mem_eq
assumes [transfer_domain_rule, transfer_rule]:
"Domainp (B::'c\<Rightarrow>'d\<Rightarrow>bool) = (\<lambda>x. x \<in> UB)"
and [transfer_rule]: "right_total B"
trp (?'b \<open>A::'a\<Rightarrow>'b\<Rightarrow>bool\<close>) and (?'a B)
HOL-Analysis.Elementary_Topology with minor amendments
to avoid unnecessary dependencies
*)
definition (in topological_space) islimpt:: "'a \<Rightarrow> 'a set \<Rightarrow> bool"
where "islimpt x S \<longleftrightarrow> (\<forall>T. x\<in>T \<longrightarrow> open T \<longrightarrow> (\<exists>y\<in>S. y\<in>T \<and> y\<noteq>x))"
definition closure :: "('a::topological_space) set \<Rightarrow> 'a set"
title = {From {Types} to {Sets} by {Local} {Type} {Definitions} in {Higher}-{Order} {Logic}},
volume = {9807},
isbn = {978-3-319-43144-4},
booktitle = {Interactive {Theorem} {Proving}},
publisher = {Springer},
author = {Kun{\v c}ar, Ond{\v r}ej and Popescu, Andrei},
editor = {Blanchette, Jasmin Christian and Merz, Stephan},
year = {2016},
pages = {200--218},
}
@incollection{berardi_local_2009,
address = {Heidelberg},
title = {Local {Theory} {Specifications} in {Isabelle}/{Isar}},
volume = {5497},
isbn = {978-3-642-02443-6},
booktitle = {Types for {Proofs} and {Programs}},
publisher = {Springer},
author = {Haftmann, Florian and Wenzel, Makarius},
editor = {Berardi, Stefano and Damiani, Ferruccio and de{\textquoteright}Liguoro, Ugo},
year = {2009},
pages = {153--168},
}
@book{urban_isabelle_2019,
title = {The {Isabelle} {Cookbook}: {A} {Gentle} {Tutorial} for {Programming} {Isabelle}/{ML}},
author = {Urban, Christian},
collaborator = {Berghofer, Stefan and Blanchette, Jasmin and Bohme, Sascha and Bulwahn, Lukas and Dawson, Jeremy and Kolanski, Rafal and Krauss, Alexander and Nipkow, Tobias and Schropp, Andreas and Sternagel, Christian},
title = {Smooth {Manifolds} and {Types} to {Sets} for {Linear} {Algebra} in {Isabelle}/{HOL}},
isbn = {978-1-4503-6222-1},
booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {International} {Conference} on {Certified} {Programs} and {Proofs}, {CPP} 2019, {Cascais}, {Portugal}},
publisher = {ACM},
author = {Immler, Fabian and Zhan, Bohua},
editor = {Mahboubi, Assia and Myreen, Magnus O.},
year = {2019},
keywords = {Formalization of Mathematics, Higher Order Logic, Isabelle, Manifolds},
pages = {65--77},
}
@misc{immler_automation_2019,
title = {Automation for unverloading definitions},
title = {Types, {Abstraction} and {Parametric} {Polymorphism} in {Higher}-{Order} {Logic}},
school = {Technische Universit{\"a}t M{\"u}nchen},
author = {Kun{\v c}ar, Ond{\v r}ej},
year = {2015},
}
@unpublished{wenzel_isabelle/isar_2019,
title = {The {Isabelle}/{Isar} {Implementation}},
author = {Wenzel, Makarius},
collaborator = {Berghofer, Stefan and Haftmann, Florian and Paulson, Larry},
year = {2019},
}
@unpublished{wenzel_isabelle/isar_2019-1,
title = {The {Isabelle}/{Isar} {Reference} {Manual}},
author = {Wenzel, Makarius},
collaborator = {Ballarin, Clemens and Berghofer, Stefan and Blanchette, Jasmin and Bourke, Timothy and Bulwahn, Lukas and Chaieb, Amine and Dixon, Lucas and Haftmann, Florian and Huffman, Brian and Hupel, Lars and Klein, Gerwin and Krauss, Alexander and Kun{\v c}ar, Ond{\v r}ej and Lochbihler, Andreas and Nipkow, Tobias and Noschinski, Lars and Oheimb, David von and Paulson, Larry and Skalberg, Sebastian and Sternagel, Christian and Traytel, Dmitriy},
year = {2019},
}
@phdthesis{wenzel_isabelle/isar_2001,
address = {Munich},
title = {Isabelle/{Isar} {\textemdash} {A} {Versatile} {Environment} for {Human}-{Readable} {Formal} {Proof} {Documents}},
school = {Technische Universit{\"a}t M{\"u}nchen},
author = {Wenzel, Markus M.},
year = {2001},
}
@inproceedings{gilcher_conditional_2017,
address = {Bras{\'i}lia, Brazil},
title = {Conditional {Parametricity} in {Isabelle}/{HOL}},
booktitle = {{TABLEAUX}/{FroCoS}/{ITP}},
author = {Gilcher, Jan and Lochbihler, Andreas and Traytel, Dmitriy},
year = {2017},
}
@inproceedings{traytel_foundational_2012,
address = {Dubrovnik},
title = {Foundational, {Compositional} ({Co})datatypes for {Higher}-{Order} {Logic}: {Category} {Theory} {Applied} to {Theorem} {Proving}},
booktitle = {27th {Annual} {IEEE} {Symposium} on {Logic} in {Computer} {Science}},
publisher = {IEEE},
author = {Traytel, Dmitry and Popescu, Andrei and Blanchette, Jasmin C.},
fixes U :: "'ag set" and f :: "['ag, 'ag] \<Rightarrow> 'ag" (infixl \<open>\<^bold>*\<^sub>o\<^sub>w\<close> 70)
assumes f_closed: "\<lbrakk> a \<in> U; b \<in> U \<rbrakk> \<Longrightarrow> a \<^bold>*\<^sub>o\<^sub>w b \<in> U"
and assoc: "\<lbrakk> a \<in> U; b \<in> U; c \<in> U \<rbrakk> \<Longrightarrow> a \<^bold>*\<^sub>o\<^sub>w b \<^bold>*\<^sub>o\<^sub>w c = a \<^bold>*\<^sub>o\<^sub>w (b \<^bold>*\<^sub>o\<^sub>w c)"
begin
notation f (infixl \<open>\<^bold>*\<^sub>o\<^sub>w\<close> 70)
lemma f_closed'[simp]: "\<forall>x\<in>U. \<forall>y\<in>U. x \<^bold>*\<^sub>o\<^sub>w y \<in> U" by (simp add: f_closed)
tts_register_sbts \<open>(\<^bold>*\<^sub>o\<^sub>w)\<close> | U by (rule tts_AA_A_transfer[OF f_closed])
end
locale times_ow =
fixes U :: "'ag set" and times :: "['ag, 'ag] \<Rightarrow> 'ag" (infixl \<open>*\<^sub>o\<^sub>w\<close> 70)
assumes times_closed[simp, intro]: "\<lbrakk> a \<in> U; b \<in> U \<rbrakk> \<Longrightarrow> a *\<^sub>o\<^sub>w b \<in> U"
begin
notation times (infixl \<open>*\<^sub>o\<^sub>w\<close> 70)
lemma times_closed'[simp]: "\<forall>x\<in>U. \<forall>y\<in>U. x *\<^sub>o\<^sub>w y \<in> U" by simp
tts_register_sbts \<open>(*\<^sub>o\<^sub>w)\<close> | U by (rule tts_AA_A_transfer[OF times_closed])
end
locale semigroup_mult_ow = times_ow U times
for U :: "'ag set" and times +
assumes mult_assoc:
"\<lbrakk> a \<in> U; b \<in> U; c \<in> U \<rbrakk> \<Longrightarrow> a *\<^sub>o\<^sub>w b *\<^sub>o\<^sub>w c = a *\<^sub>o\<^sub>w (b *\<^sub>o\<^sub>w c)"
begin
sublocale mult: semigroup_ow U \<open>(*\<^sub>o\<^sub>w)\<close>
by unfold_locales (auto simp: times_closed' mult_assoc)
end
locale semigroup_mult_hom_ow =
dom: semigroup_mult_ow UA times_a +
cod: semigroup_mult_ow UB times_b
for UA :: "'a set"
and UB :: "'b set"
and times_a (infixl \<open>*\<^sub>o\<^sub>w\<^sub>.\<^sub>a\<close> 70)
and times_b (infixl \<open>*\<^sub>o\<^sub>w\<^sub>.\<^sub>b\<close> 70) +
fixes f :: "'a \<Rightarrow> 'b"
assumes f_closed[simp]: "a \<in> UA \<Longrightarrow> f a \<in> UB"
and f_hom: "\<lbrakk> a \<in> UA; b \<in> UA \<rbrakk> \<Longrightarrow> f (a *\<^sub>o\<^sub>w\<^sub>.\<^sub>a b) = f a *\<^sub>o\<^sub>w\<^sub>.\<^sub>b f b"
begin
lemma f_closed'[simp]: "f ` UA \<subseteq> UB" by auto
tts_register_sbts f | UA and UB by (rule tts_AB_transfer[OF f_closed'])
end
context semigroup_mult_hom_ow
begin
lemma tta_left_ideal_ow_closed:
assumes "T \<subseteq> UA"
and "left_ideal_ow UA (*\<^sub>o\<^sub>w\<^sub>.\<^sub>a) T"
title = {From {Types} to {Sets} by {Local} {Type} {Definitions} in {Higher}-{Order} {Logic}},
volume = {9807},
isbn = {978-3-319-43144-4},
booktitle = {Interactive {Theorem} {Proving}},
publisher = {Springer},
author = {Kun{\v c}ar, Ond{\v r}ej and Popescu, Andrei},
editor = {Blanchette, Jasmin Christian and Merz, Stephan},
year = {2016},
pages = {200--218},
}
@book{urban_isabelle_2019,
title = {The {Isabelle} {Cookbook}: {A} {Gentle} {Tutorial} for {Programming} {Isabelle}/{ML}},
author = {Urban, Christian},
collaborator = {Berghofer, Stefan and Blanchette, Jasmin and Bohme, Sascha and Bulwahn, Lukas and Dawson, Jeremy and Kolanski, Rafal and Krauss, Alexander and Nipkow, Tobias and Schropp, Andreas and Sternagel, Christian},
year = {2019},
}
@incollection{immler_smooth_2019,
address = {New York},
series = {{CPP} 2019},
title = {Smooth {Manifolds} and {Types} to {Sets} for {Linear} {Algebra} in {Isabelle}/{HOL}},
isbn = {978-1-4503-6222-1},
booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {International} {Conference} on {Certified} {Programs} and {Proofs}, {CPP} 2019, {Cascais}, {Portugal}},
publisher = {ACM},
author = {Immler, Fabian and Zhan, Bohua},
editor = {Mahboubi, Assia and Myreen, Magnus O.},
year = {2019},
keywords = {Formalization of Mathematics, Higher Order Logic, Isabelle, Manifolds},
pages = {65--77},
}
@misc{immler_automation_2019,
title = {Automation for unverloading definitions},
title = {Types, {Abstraction} and {Parametric} {Polymorphism} in {Higher}-{Order} {Logic}},
school = {Technische Universit{\"a}t M{\"u}nchen},
author = {Kun{\v c}ar, Ond{\v r}ej},
year = {2015},
}
@unpublished{wenzel_isabelle/isar_2019,
title = {The {Isabelle}/{Isar} {Implementation}},
author = {Wenzel, Makarius},
collaborator = {Berghofer, Stefan and Haftmann, Florian and Paulson, Larry},
year = {2019},
}
@unpublished{wenzel_isabelle/isar_2019-1,
title = {The {Isabelle}/{Isar} {Reference} {Manual}},
author = {Wenzel, Makarius},
collaborator = {Ballarin, Clemens and Berghofer, Stefan and Blanchette, Jasmin and Bourke, Timothy and Bulwahn, Lukas and Chaieb, Amine and Dixon, Lucas and Haftmann, Florian and Huffman, Brian and Hupel, Lars and Klein, Gerwin and Krauss, Alexander and Kun{\v c}ar, Ond{\v r}ej and Lochbihler, Andreas and Nipkow, Tobias and Noschinski, Lars and Oheimb, David von and Paulson, Larry and Skalberg, Sebastian and Sternagel, Christian and Traytel, Dmitriy},
year = {2019},
}
@phdthesis{wenzel_isabelle/isar_2001,
address = {Munich},
title = {Isabelle/{Isar} {\textemdash} {A} {Versatile} {Environment} for {Human}-{Readable} {Formal} {Proof} {Documents}},
school = {Technische Universit{\"a}t M{\"u}nchen},
author = {Wenzel, Markus M.},
year = {2001},
}
@inproceedings{gilcher_conditional_2017,
address = {Bras{\'i}lia, Brazil},
title = {Conditional {Parametricity} in {Isabelle}/{HOL}},
booktitle = {{TABLEAUX}/{FroCoS}/{ITP}},
author = {Gilcher, Jan and Lochbihler, Andreas and Traytel, Dmitriy},
year = {2017},
}
@article{divason_perron-frobenius_2016,
title = {Perron-{Frobenius} {Theorem} for {Spectral} {Radius} {Analysis}},
journal = {Archive of Formal Proofs},
author = {Divas{\'o}n, Jose and Kun{\v c}ar, Ond{\v r}ej and Thiemann, Ren{\'e} and Yamada, Akihisa},
year = {2016},
}
@article{maletzky_hilberts_2019,
title = {Hilbert's {Nullstellensatz}},
journal = {Archive of Formal Proofs},
author = {Maletzky, Alexander},
year = {2019},
}
@incollection{berardi_locales_2004,
address = {Heidelberg},
title = {Locales and {Locale} {Expressions} in {Isabelle}/{Isar}},
volume = {3085},
isbn = {978-3-540-22164-7},
booktitle = {Types for {Proofs} and {Programs}},
publisher = {Springer},
author = {Ballarin, Clemens},
editor = {Berardi, Stefano and Coppo, Mario and Damiani, Ferruccio},
year = {2004},
pages = {34--50},
}
@book{ballarin_isabellehol_2020,
title = {The {Isabelle}/{HOL} {Algebra} {Library}},