src/HOL/Types_To_Sets/Examples/Linear_Algebra_On.thy
author wenzelm
Thu, 07 Nov 2024 12:26:36 +0100
changeset 81384 6cb5ac3096fa
parent 80914 d97fdabd9e2b
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     1
(*  Title:      HOL/Types_To_Sets/Examples/Linear_Algebra_On.thy
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     2
    Author:     Fabian Immler, TU München
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     3
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     4
theory Linear_Algebra_On
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     5
  imports
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
     6
    "Prerequisites"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     7
    "../Types_To_Sets"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     8
    Linear_Algebra_On_With
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
     9
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    10
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    11
subsection \<open>Rewrite rules to make \<open>ab_group_add\<close> operations implicit.\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    12
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    13
named_theorems implicit_ab_group_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    14
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    15
lemmas [implicit_ab_group_add] = sum_with[symmetric]
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    16
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    17
lemma semigroup_add_on_with_eq[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    18
  "semigroup_add_on_with S ((+)::_::semigroup_add \<Rightarrow> _) \<longleftrightarrow> (\<forall>a\<in>S. \<forall>b\<in>S. a + b \<in> S)"
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
    19
  by (simp add: semigroup_add_on_with_Ball_def ac_simps)
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    20
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    21
lemma ab_semigroup_add_on_with_eq[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    22
  "ab_semigroup_add_on_with S ((+)::_::ab_semigroup_add \<Rightarrow> _) = semigroup_add_on_with S (+)"
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
    23
  unfolding ab_semigroup_add_on_with_Ball_def
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    24
  by (simp add: semigroup_add_on_with_eq ac_simps)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    25
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    26
lemma comm_monoid_add_on_with_eq[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    27
  "comm_monoid_add_on_with S ((+)::_::comm_monoid_add \<Rightarrow> _) 0 \<longleftrightarrow> semigroup_add_on_with S (+) \<and> 0 \<in> S"
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
    28
  unfolding comm_monoid_add_on_with_Ball_def
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    29
  by (simp add: ab_semigroup_add_on_with_eq ac_simps)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    30
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    31
lemma ab_group_add_on_with[implicit_ab_group_add]:
69296
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    32
  "ab_group_add_on_with S ((+)::_::ab_group_add \<Rightarrow> _) 0 (-) uminus \<longleftrightarrow>
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    33
    comm_monoid_add_on_with S (+) 0 \<and> (\<forall>a\<in>S. -a\<in>S)"
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
    34
  unfolding ab_group_add_on_with_Ball_def
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    35
  by simp
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    36
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    37
subsection \<open>Definitions \<^emph>\<open>on\<close> carrier set\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    38
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    39
locale module_on =
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 69688
diff changeset
    40
  fixes S and scale :: "'a::comm_ring_1 \<Rightarrow> 'b::ab_group_add \<Rightarrow> 'b" (infixr \<open>*s\<close> 75)
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    41
  assumes scale_right_distrib_on [algebra_simps]: "x \<in> S \<Longrightarrow> y \<in> S \<Longrightarrow> a *s (x + y) = a *s x + a *s y"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    42
    and scale_left_distrib_on [algebra_simps]: "x \<in> S \<Longrightarrow> (a + b) *s x = a *s x + b *s x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    43
    and scale_scale_on [simp]: "x \<in> S \<Longrightarrow> a *s (b *s x) = (a * b) *s x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    44
    and scale_one_on [simp]: "x \<in> S \<Longrightarrow> 1 *s x = x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    45
    and mem_add: "x \<in> S \<Longrightarrow> y \<in> S \<Longrightarrow> x + y \<in> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    46
    and mem_zero: "0 \<in> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    47
    and mem_scale: "x \<in> S \<Longrightarrow> a *s x \<in> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    48
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    49
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    50
lemma S_ne: "S \<noteq> {}" using mem_zero by auto
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    51
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    52
lemma scale_minus_left_on: "scale (- a) x = - scale a x" if "x \<in> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    53
  by (metis add_cancel_right_right scale_left_distrib_on neg_eq_iff_add_eq_0 that)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    54
69296
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    55
lemma mem_uminus: "x \<in> S \<Longrightarrow> -x \<in> S"
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    56
  by (metis mem_scale scale_minus_left_on scale_one_on)
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    57
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    58
definition subspace :: "'b set \<Rightarrow> bool"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    59
  where subspace_on_def: "subspace T \<longleftrightarrow> 0 \<in> T \<and> (\<forall>x\<in>T. \<forall>y\<in>T. x + y \<in> T) \<and> (\<forall>c. \<forall>x\<in>T. c *s x \<in> T)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    60
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    61
definition span :: "'b set \<Rightarrow> 'b set"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    62
  where span_on_def: "span b = {sum (\<lambda>a. r a *s  a) t | t r. finite t \<and> t \<subseteq> b}"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    63
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    64
definition dependent :: "'b set \<Rightarrow> bool"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    65
  where dependent_on_def: "dependent s \<longleftrightarrow> (\<exists>t u. finite t \<and> t \<subseteq> s \<and> (sum (\<lambda>v. u v *s v) t = 0 \<and> (\<exists>v\<in>t. u v \<noteq> 0)))"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    66
69064
5840724b1d71 Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents: 68620
diff changeset
    67
lemma implicit_subspace_with[implicit_ab_group_add]: "subspace_with (+) 0 (*s) = subspace"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    68
  unfolding subspace_on_def subspace_with_def ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    69
69064
5840724b1d71 Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents: 68620
diff changeset
    70
lemma implicit_dependent_with[implicit_ab_group_add]: "dependent_with (+) 0 (*s) = dependent"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    71
  unfolding dependent_on_def dependent_with_def sum_with ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    72
69064
5840724b1d71 Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents: 68620
diff changeset
    73
lemma implicit_span_with[implicit_ab_group_add]: "span_with (+) 0 (*s) = span"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    74
  unfolding span_on_def span_with_def sum_with ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    75
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    76
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    77
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    78
lemma implicit_module_on_with[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    79
  "module_on_with S (+) (-) uminus 0 = module_on S"
69296
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    80
proof (intro ext iffI)
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    81
  fix s::"'a\<Rightarrow>'b\<Rightarrow>'b" assume "module_on S s"
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    82
  then interpret module_on S s .
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    83
  show "module_on_with S (+) (-) uminus 0 s"
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    84
    by (auto simp: module_on_with_def implicit_ab_group_add
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    85
        mem_add mem_zero mem_uminus scale_right_distrib_on scale_left_distrib_on mem_scale)
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
    86
qed (auto simp: module_on_with_def module_on_def implicit_ab_group_add)
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    87
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    88
locale module_pair_on = m1: module_on S1 scale1 +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    89
                        m2: module_on S2 scale2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    90
                        for S1:: "'b::ab_group_add set" and S2::"'c::ab_group_add set"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    91
                          and scale1::"'a::comm_ring_1 \<Rightarrow> _" and scale2::"'a \<Rightarrow> _"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    92
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    93
lemma implicit_module_pair_on_with[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    94
  "module_pair_on_with S1 S2 (+) (-) uminus 0 s1 (+) (-) uminus 0 s2 = module_pair_on S1 S2 s1 s2"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    95
  unfolding module_pair_on_with_def implicit_module_on_with module_pair_on_def ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    96
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    97
locale module_hom_on = m1: module_on S1 s1 + m2: module_on S2 s2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
    98
  for S1 :: "'b::ab_group_add set" and S2 :: "'c::ab_group_add set"
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 69688
diff changeset
    99
    and s1 :: "'a::comm_ring_1 \<Rightarrow> 'b \<Rightarrow> 'b" (infixr \<open>*a\<close> 75)
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 69688
diff changeset
   100
    and s2 :: "'a::comm_ring_1 \<Rightarrow> 'c \<Rightarrow> 'c" (infixr \<open>*b\<close> 75) +
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   101
  fixes f :: "'b \<Rightarrow> 'c"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   102
  assumes add: "\<And>b1 b2. b1 \<in> S1 \<Longrightarrow> b2 \<in> S1 \<Longrightarrow> f (b1 + b2) = f b1 + f b2"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   103
    and scale: "\<And>b. b \<in> S1 \<Longrightarrow> f (r *a b) = r *b f b"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   104
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   105
lemma implicit_module_hom_on_with[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   106
  "module_hom_on_with S1 S2 (+) (-) uminus 0 s1 (+) (-) uminus 0 s2 = module_hom_on S1 S2 s1 s2"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   107
  unfolding module_hom_on_with_def implicit_module_pair_on_with module_hom_on_def module_pair_on_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   108
    module_hom_on_axioms_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   109
  by (auto intro!: ext)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   110
68524
f5ca4c2157a5 avoid duplicate facts, the "trick" was copied without deeper motivation
immler
parents: 68522
diff changeset
   111
locale vector_space_on = module_on S scale
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 69688
diff changeset
   112
  for S and scale :: "'a::field \<Rightarrow> 'b::ab_group_add \<Rightarrow> 'b" (infixr \<open>*s\<close> 75)
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   113
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   114
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   115
definition dim :: "'b set \<Rightarrow> nat"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   116
  where "dim V = (if \<exists>b\<subseteq>S. \<not> dependent b \<and> span b = span V
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   117
    then card (SOME b. b \<subseteq> S \<and> \<not> dependent b \<and> span b = span V)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   118
    else 0)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   119
69064
5840724b1d71 Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents: 68620
diff changeset
   120
lemma implicit_dim_with[implicit_ab_group_add]: "dim_on_with S (+) 0 (*s) = dim"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   121
  unfolding dim_on_with_def dim_def implicit_ab_group_add ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   122
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   123
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   124
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   125
lemma vector_space_on_alt_def: "vector_space_on S = module_on S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   126
  unfolding vector_space_on_def module_on_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   127
  by auto
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   128
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   129
lemma implicit_vector_space_on_with[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   130
  "vector_space_on_with S (+) (-) uminus 0 = vector_space_on S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   131
  unfolding vector_space_on_alt_def vector_space_on_def vector_space_on_with_def implicit_module_on_with ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   132
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   133
locale linear_on = module_hom_on S1 S2 s1 s2 f
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   134
  for S1 S2 and s1::"'a::field \<Rightarrow> 'b \<Rightarrow> 'b::ab_group_add"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   135
    and s2::"'a::field \<Rightarrow> 'c \<Rightarrow> 'c::ab_group_add"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   136
    and f
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   137
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   138
lemma implicit_linear_on_with[implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   139
  "linear_on_with S1 S2 (+) (-) uminus 0 s1 (+) (-) uminus 0 s2 = linear_on S1 S2 s1 s2"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   140
  unfolding linear_on_with_def linear_on_def implicit_module_hom_on_with ..
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   141
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   142
locale finite_dimensional_vector_space_on = vector_space_on S scale for S scale +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   143
  fixes basis :: "'a set"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   144
  assumes finite_Basis: "finite basis"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   145
  and independent_Basis: "\<not> dependent basis"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   146
  and span_Basis: "span basis = S" and basis_subset: "basis \<subseteq> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   147
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   148
locale vector_space_pair_on = m1: vector_space_on S1 scale1 +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   149
  m2: vector_space_on S2 scale2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   150
  for S1:: "'b::ab_group_add set" and S2::"'c::ab_group_add set"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   151
    and scale1::"'a::field \<Rightarrow> _" and scale2::"'a \<Rightarrow> _"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   152
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   153
locale finite_dimensional_vector_space_pair_1_on =
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   154
  vs1: finite_dimensional_vector_space_on S1 scale1 Basis1 +
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   155
  vs2: vector_space_on S2 scale2
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   156
  for S1 S2
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   157
    and scale1::"'a::field \<Rightarrow> 'b::ab_group_add \<Rightarrow> 'b"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   158
    and scale2::"'a::field \<Rightarrow> 'c::ab_group_add \<Rightarrow> 'c"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   159
    and Basis1
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   160
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   161
locale finite_dimensional_vector_space_pair_on =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   162
  vs1: finite_dimensional_vector_space_on S1 scale1 Basis1 +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   163
  vs2: finite_dimensional_vector_space_on S2 scale2 Basis2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   164
  for S1 S2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   165
    and scale1::"'a::field \<Rightarrow> 'b::ab_group_add \<Rightarrow> 'b"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   166
    and scale2::"'a::field \<Rightarrow> 'c::ab_group_add \<Rightarrow> 'c"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   167
    and Basis1 Basis2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   168
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   169
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   170
subsection \<open>Local Typedef for Subspace\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   171
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   172
locale local_typedef_module_on = module_on S scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   173
  for S and scale::"'a::comm_ring_1\<Rightarrow>'b\<Rightarrow>'b::ab_group_add" and s::"'s itself" +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   174
  assumes Ex_type_definition_S: "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   175
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   176
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   177
lemma mem_sum: "sum f X \<in> S" if "\<And>x. x \<in> X \<Longrightarrow> f x \<in> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   178
  using that
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   179
  by (induction X rule: infinite_finite_induct) (auto intro!: mem_zero mem_add)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   180
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   181
sublocale local_typedef S "TYPE('s)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   182
  using Ex_type_definition_S by unfold_locales
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   183
69297
4cf8a0432650 extract example for ab_group_add_on_with
immler
parents: 69296
diff changeset
   184
sublocale local_typedef_ab_group_add_on_with "(+)::'b\<Rightarrow>'b\<Rightarrow>'b" "0::'b" "(-)" uminus S "TYPE('s)"
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   185
  using mem_zero mem_add mem_scale[of _ "-1"]
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   186
  by unfold_locales (auto simp: scale_minus_left_on)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   187
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   188
context includes lifting_syntax begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   189
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   190
definition scale_S::"'a \<Rightarrow> 's \<Rightarrow> 's" where "scale_S = (id ---> rep ---> Abs) scale"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   191
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   192
lemma scale_S_transfer[transfer_rule]: "((=) ===> cr_S ===> cr_S) scale scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   193
  unfolding scale_S_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   194
  by (auto simp: cr_S_def mem_scale intro!: rel_funI)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   195
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   196
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   197
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   198
lemma type_module_on_with: "module_on_with UNIV plus_S minus_S uminus_S (zero_S::'s) scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   199
proof -
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   200
  have "module_on_with {x. x \<in> S} (+) (-) uminus 0 scale"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   201
    using module_on_axioms
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   202
    by (auto simp: module_on_with_def module_on_def ab_group_add_on_with_Ball_def
69296
bc0b0d465991 generalized local_typedef_ab_group_add
immler
parents: 69295
diff changeset
   203
        comm_monoid_add_on_with_Ball_def mem_uminus
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   204
        ab_semigroup_add_on_with_Ball_def semigroup_add_on_with_def)
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   205
  then show ?thesis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   206
    by transfer'
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   207
qed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   208
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   209
lemma UNIV_transfer[transfer_rule]: "(rel_set cr_S) S UNIV"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   210
  by (auto simp: rel_set_def cr_S_def) (metis Abs_inverse)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   211
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   212
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   213
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   214
context includes lifting_syntax begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   215
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   216
lemma Eps_unique_transfer_lemma:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   217
  "f' (Eps (\<lambda>x. Domainp A x \<and> f x)) = g' (Eps g)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   218
  if [transfer_rule]: "right_total A" "(A ===> (=)) f g" "(A ===> (=)) f' g'"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   219
    and holds: "\<exists>x. Domainp A x \<and> f x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   220
    and unique_g: "\<And>x y. g x \<Longrightarrow> g y \<Longrightarrow> g' x = g' y"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   221
proof -
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   222
  define Epsg where "Epsg = Eps g"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   223
  have "\<exists>x. g x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   224
    by transfer (simp add: holds)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   225
  then have "g Epsg"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   226
    unfolding Epsg_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   227
    by (rule someI_ex)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   228
  obtain x where x[transfer_rule]: "A x Epsg"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   229
    by (meson \<open>right_total A\<close> right_totalE)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   230
  then have "Domainp A x" by auto
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   231
  from \<open>g Epsg\<close>[untransferred] have "f x" .
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   232
  from unique_g have unique:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   233
    "\<And>x y. Domainp A x \<Longrightarrow> Domainp A y \<Longrightarrow> f x \<Longrightarrow> f y \<Longrightarrow> f' x = f' y"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   234
    by transfer
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   235
  have "f' (Eps (\<lambda>x. Domainp A x \<and> f x)) = f' x"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   236
    apply (rule unique[OF _ \<open>Domainp A x\<close> _ \<open>f x\<close>])
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   237
    apply (metis (mono_tags, lifting) local.holds someI_ex)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   238
    apply (metis (mono_tags, lifting) local.holds someI_ex)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   239
    done
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   240
  show "f' (SOME x. Domainp A x \<and> f x) = g' (Eps g)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   241
    using x \<open>f' (Eps _) = f' x\<close> Epsg_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   242
    using rel_funE that(3) by fastforce
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   243
qed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   244
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   245
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   246
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   247
locale local_typedef_vector_space_on = local_typedef_module_on S scale s + vector_space_on S scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   248
  for S and scale::"'a::field\<Rightarrow>'b\<Rightarrow>'b::ab_group_add" and s::"'s itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   249
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   250
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   251
lemma type_vector_space_on_with: "vector_space_on_with UNIV plus_S minus_S uminus_S (zero_S::'s) scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   252
  using type_module_on_with
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   253
  by (auto simp: vector_space_on_with_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   254
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   255
context includes lifting_syntax begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   256
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   257
definition dim_S::"'s set \<Rightarrow> nat" where "dim_S = dim_on_with UNIV plus_S zero_S scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   258
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   259
lemma transfer_dim[transfer_rule]: "(rel_set cr_S ===> (=)) dim dim_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   260
proof (rule rel_funI)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   261
  fix V V'
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   262
  assume [transfer_rule]: "rel_set cr_S V V'"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   263
  then have subset: "V \<subseteq> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   264
    by (auto simp: rel_set_def cr_S_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   265
  then have "span V \<subseteq> S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   266
    by (auto simp: span_on_def intro!: mem_sum mem_scale)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   267
  note type_dim_eq_card =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   268
    vector_space.dim_eq_card[var_simplified explicit_ab_group_add, unoverload_type 'd,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   269
      OF type.ab_group_add_axioms type_vector_space_on_with]
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   270
  have *: "(\<exists>b\<subseteq>UNIV. \<not> dependent_with plus_S zero_S scale_S b \<and> span_with plus_S zero_S scale_S b = span_with plus_S zero_S scale_S V') \<longleftrightarrow>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   271
    (\<exists>b\<subseteq>S. \<not> local.dependent b \<and> local.span b = local.span V)"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   272
    unfolding subset_iff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   273
    by transfer (simp add: implicit_ab_group_add Ball_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   274
  have **[symmetric]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   275
    "card (SOME b. Domainp (rel_set cr_S) b \<and> (\<not> dependent_with (+) 0 scale b \<and> span_with (+) 0 scale b = span_with (+) 0 scale V)) =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   276
      card (SOME b. \<not> dependent_with plus_S zero_S scale_S b \<and> span_with plus_S zero_S scale_S b = span_with plus_S zero_S scale_S V')"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   277
    if "b \<subseteq> S" "\<not>dependent b" "span b = span V" for b
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   278
    apply (rule Eps_unique_transfer_lemma[where f'=card and g'=card])
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   279
    subgoal by (rule right_total_rel_set) (rule transfer_raw)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   280
    subgoal by transfer_prover
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   281
    subgoal by transfer_prover
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   282
    subgoal using that by (auto simp: implicit_ab_group_add Domainp_set Domainp_cr_S)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   283
    subgoal premises prems for b c
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   284
    proof -
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   285
      from type_dim_eq_card[of b V'] type_dim_eq_card[of c V'] prems
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   286
      show ?thesis by simp
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   287
    qed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   288
    done
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   289
  show "local.dim V = dim_S V'"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   290
    unfolding dim_def dim_S_def * dim_on_with_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   291
    by (auto simp: ** Domainp_set Domainp_cr_S implicit_ab_group_add subset_eq)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   292
qed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   293
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   294
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   295
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   296
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   297
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   298
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   299
locale local_typedef_finite_dimensional_vector_space_on = local_typedef_vector_space_on S scale s +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   300
  finite_dimensional_vector_space_on S scale Basis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   301
  for S and scale::"'a::field\<Rightarrow>'b\<Rightarrow>'b::ab_group_add" and Basis and s::"'s itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   302
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   303
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   304
definition "Basis_S = Abs ` Basis"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   305
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   306
lemma Basis_S_transfer[transfer_rule]: "rel_set cr_S Basis Basis_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   307
  using Abs_inverse rep_inverse basis_subset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   308
  by (force simp: rel_set_def Basis_S_def cr_S_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   309
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   310
lemma type_finite_dimensional_vector_space_on_with:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   311
  "finite_dimensional_vector_space_on_with UNIV plus_S minus_S uminus_S zero_S scale_S Basis_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   312
proof -
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   313
  have "finite Basis_S" by transfer (rule finite_Basis)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   314
  moreover have "\<not> dependent_with plus_S zero_S scale_S Basis_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   315
    by transfer (simp add: implicit_dependent_with independent_Basis)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   316
  moreover have "span_with plus_S zero_S scale_S Basis_S = UNIV"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   317
    by transfer (simp add: implicit_span_with span_Basis)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   318
  ultimately show ?thesis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   319
    using type_vector_space_on_with
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   320
    by (auto simp: finite_dimensional_vector_space_on_with_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   321
qed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   322
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   323
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   324
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   325
locale local_typedef_module_pair =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   326
  lt1: local_typedef_module_on S1 scale1 s +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   327
  lt2: local_typedef_module_on S2 scale2 t
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   328
  for S1::"'b::ab_group_add set" and scale1::"'a::comm_ring_1 \<Rightarrow> 'b \<Rightarrow> 'b" and s::"'s itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   329
    and S2::"'c::ab_group_add set" and scale2::"'a \<Rightarrow> 'c \<Rightarrow> 'c" and t::"'t itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   330
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   331
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   332
lemma type_module_pair_on_with:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   333
  "module_pair_on_with UNIV UNIV lt1.plus_S lt1.minus_S lt1.uminus_S (lt1.zero_S::'s) lt1.scale_S
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   334
  lt2.plus_S lt2.minus_S lt2.uminus_S (lt2.zero_S::'t) lt2.scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   335
  by (simp add: lt1.type_module_on_with lt2.type_module_on_with module_pair_on_with_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   336
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   337
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   338
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   339
locale local_typedef_vector_space_pair =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   340
  local_typedef_module_pair S1 scale1 s S2 scale2 t
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   341
  for S1::"'b::ab_group_add set" and scale1::"'a::field \<Rightarrow> 'b \<Rightarrow> 'b" and s::"'s itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   342
    and S2::"'c::ab_group_add set" and scale2::"'a \<Rightarrow> 'c \<Rightarrow> 'c" and t::"'t itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   343
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   344
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   345
lemma type_vector_space_pair_on_with:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   346
  "vector_space_pair_on_with UNIV UNIV lt1.plus_S lt1.minus_S lt1.uminus_S (lt1.zero_S::'s) lt1.scale_S
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   347
  lt2.plus_S lt2.minus_S lt2.uminus_S (lt2.zero_S::'t) lt2.scale_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   348
  by (simp add: type_module_pair_on_with vector_space_pair_on_with_def)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   349
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   350
sublocale lt1: local_typedef_vector_space_on S1 scale1 s by unfold_locales
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   351
sublocale lt2: local_typedef_vector_space_on S2 scale2 t by unfold_locales
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   352
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   353
end
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   354
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   355
locale local_typedef_finite_dimensional_vector_space_pair_1 =
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   356
  lt1: local_typedef_finite_dimensional_vector_space_on S1 scale1 Basis1 s +
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   357
  lt2: local_typedef_vector_space_on S2 scale2 t
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   358
  for S1::"'b::ab_group_add set" and scale1::"'a::field \<Rightarrow> 'b \<Rightarrow> 'b" and Basis1 and s::"'s itself"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   359
    and S2::"'c::ab_group_add set" and scale2::"'a \<Rightarrow> 'c \<Rightarrow> 'c" and t::"'t itself"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   360
begin
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   361
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   362
lemma type_finite_dimensional_vector_space_pair_1_on_with:
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   363
  "finite_dimensional_vector_space_pair_1_on_with UNIV UNIV lt1.plus_S lt1.minus_S lt1.uminus_S (lt1.zero_S::'s) lt1.scale_S lt1.Basis_S
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   364
  lt2.plus_S lt2.minus_S lt2.uminus_S (lt2.zero_S::'t) lt2.scale_S"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   365
  by (simp add: finite_dimensional_vector_space_pair_1_on_with_def
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   366
      lt1.type_finite_dimensional_vector_space_on_with lt2.type_vector_space_on_with)
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   367
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   368
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   369
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   370
locale local_typedef_finite_dimensional_vector_space_pair =
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   371
  lt1: local_typedef_finite_dimensional_vector_space_on S1 scale1 Basis1 s +
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   372
  lt2: local_typedef_finite_dimensional_vector_space_on S2 scale2 Basis2 t
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   373
  for S1::"'b::ab_group_add set" and scale1::"'a::field \<Rightarrow> 'b \<Rightarrow> 'b" and Basis1 and s::"'s itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   374
    and S2::"'c::ab_group_add set" and scale2::"'a \<Rightarrow> 'c \<Rightarrow> 'c" and Basis2 and t::"'t itself"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   375
begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   376
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   377
lemma type_finite_dimensional_vector_space_pair_on_with:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   378
  "finite_dimensional_vector_space_pair_on_with UNIV UNIV lt1.plus_S lt1.minus_S lt1.uminus_S (lt1.zero_S::'s) lt1.scale_S lt1.Basis_S
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   379
  lt2.plus_S lt2.minus_S lt2.uminus_S (lt2.zero_S::'t) lt2.scale_S lt2.Basis_S"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   380
  by (simp add: finite_dimensional_vector_space_pair_on_with_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   381
      lt1.type_finite_dimensional_vector_space_on_with
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   382
      lt2.type_finite_dimensional_vector_space_on_with)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   383
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   384
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   385
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   386
69597
ff784d5a5bfb isabelle update -u control_cartouches;
wenzelm
parents: 69297
diff changeset
   387
subsection \<open>Transfer from type-based \<^theory>\<open>HOL.Modules\<close> and \<^theory>\<open>HOL.Vector_Spaces\<close>\<close>
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   388
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   389
lemmas [transfer_rule] = right_total_fun_eq_transfer
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   390
  and [transfer_rule del] = vimage_parametric
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   391
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   392
subsubsection \<open>Modules\<close>
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   393
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   394
context module_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   395
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   396
context includes lifting_syntax assumes ltd: "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   397
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   398
interpretation local_typedef_module_on S scale "TYPE('s)" by unfold_locales fact
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   399
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   400
text\<open>Get theorem names:\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   401
print_locale! module
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   402
text\<open>Then replace:
69096
62a0d10386c1 fix (non-existent) document generation
immler
parents: 69064
diff changeset
   403
\<^verbatim>\<open>notes[^"]*"([^"]*).*\<close>
62a0d10386c1 fix (non-existent) document generation
immler
parents: 69064
diff changeset
   404
with
62a0d10386c1 fix (non-existent) document generation
immler
parents: 69064
diff changeset
   405
\<^verbatim>\<open>$1 = module.$1\<close>
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   406
\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   407
text \<open>TODO: automate systematic naming!\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   408
lemmas_with [var_simplified explicit_ab_group_add,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   409
    unoverload_type 'd,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   410
    OF type.ab_group_add_axioms type_module_on_with,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   411
    untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   412
    var_simplified implicit_ab_group_add]:
68524
f5ca4c2157a5 avoid duplicate facts, the "trick" was copied without deeper motivation
immler
parents: 68522
diff changeset
   413
    lt_scale_left_commute = module.scale_left_commute
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   414
  and lt_scale_zero_left = module.scale_zero_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   415
  and lt_scale_minus_left = module.scale_minus_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   416
  and lt_scale_left_diff_distrib = module.scale_left_diff_distrib
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   417
  and lt_scale_sum_left = module.scale_sum_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   418
  and lt_scale_zero_right = module.scale_zero_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   419
  and lt_scale_minus_right = module.scale_minus_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   420
  and lt_scale_right_diff_distrib = module.scale_right_diff_distrib
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   421
  and lt_scale_sum_right = module.scale_sum_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   422
  and lt_sum_constant_scale = module.sum_constant_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   423
  and lt_subspace_def = module.subspace_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   424
  and lt_subspaceI = module.subspaceI
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   425
  and lt_subspace_single_0 = module.subspace_single_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   426
  and lt_subspace_0 = module.subspace_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   427
  and lt_subspace_add = module.subspace_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   428
  and lt_subspace_scale = module.subspace_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   429
  and lt_subspace_neg = module.subspace_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   430
  and lt_subspace_diff = module.subspace_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   431
  and lt_subspace_sum = module.subspace_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   432
  and lt_subspace_inter = module.subspace_inter
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   433
  and lt_span_explicit = module.span_explicit
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   434
  and lt_span_explicit' = module.span_explicit'
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   435
  and lt_span_finite = module.span_finite
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   436
  and lt_span_induct_alt = module.span_induct_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   437
  and lt_span_mono = module.span_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   438
  and lt_span_base = module.span_base
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   439
  and lt_span_superset = module.span_superset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   440
  and lt_span_zero = module.span_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   441
  and lt_span_add = module.span_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   442
  and lt_span_scale = module.span_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   443
  and lt_subspace_span = module.subspace_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   444
  and lt_span_neg = module.span_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   445
  and lt_span_diff = module.span_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   446
  and lt_span_sum = module.span_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   447
  and lt_span_minimal = module.span_minimal
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   448
  and lt_span_unique = module.span_unique
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   449
  and lt_span_subspace_induct = module.span_subspace_induct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   450
  and lt_span_induct = module.span_induct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   451
  and lt_span_empty = module.span_empty
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   452
  and lt_span_subspace = module.span_subspace
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   453
  and lt_span_span = module.span_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   454
  and lt_span_add_eq = module.span_add_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   455
  and lt_span_add_eq2 = module.span_add_eq2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   456
  and lt_span_singleton = module.span_singleton
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   457
  and lt_span_Un = module.span_Un
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   458
  and lt_span_insert = module.span_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   459
  and lt_span_breakdown = module.span_breakdown
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   460
  and lt_span_breakdown_eq = module.span_breakdown_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   461
  and lt_span_clauses = module.span_clauses
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   462
  and lt_span_eq_iff = module.span_eq_iff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   463
  and lt_span_eq = module.span_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   464
  and lt_eq_span_insert_eq = module.eq_span_insert_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   465
  and lt_dependent_explicit = module.dependent_explicit
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   466
  and lt_dependent_mono = module.dependent_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   467
  and lt_independent_mono = module.independent_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   468
  and lt_dependent_zero = module.dependent_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   469
  and lt_independent_empty = module.independent_empty
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   470
  and lt_independent_explicit_module = module.independent_explicit_module
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   471
  and lt_independentD = module.independentD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   472
  and lt_independent_Union_directed = module.independent_Union_directed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   473
  and lt_dependent_finite = module.dependent_finite
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   474
  and lt_independentD_alt = module.independentD_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   475
  and lt_independentD_unique = module.independentD_unique
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   476
  and lt_spanning_subset_independent = module.spanning_subset_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   477
  and lt_module_hom_scale_self = module.module_hom_scale_self
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   478
  and lt_module_hom_scale_left = module.module_hom_scale_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   479
  and lt_module_hom_id = module.module_hom_id
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   480
  and lt_module_hom_ident = module.module_hom_ident
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   481
  and lt_module_hom_uminus = module.module_hom_uminus
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   482
  and lt_subspace_UNIV = module.subspace_UNIV
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   483
(* should work but don't:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   484
  and span_def = module.span_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   485
  and span_UNIV = module.span_UNIV
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   486
  and lt_span_alt = module.span_alt
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   487
  and dependent_alt = module.dependent_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   488
  and independent_alt = module.independent_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   489
  and unique_representation = module.unique_representation
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   490
  and subspace_Int = module.subspace_Int
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   491
  and subspace_Inter = module.subspace_Inter
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   492
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   493
(* not expected to work:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   494
and representation_ne_zero = module.representation_ne_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   495
and representation_ne_zero = module.representation_ne_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   496
and finite_representation = module.finite_representation
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   497
and sum_nonzero_representation_eq = module.sum_nonzero_representation_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   498
and sum_representation_eq = module.sum_representation_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   499
and representation_eqI = module.representation_eqI
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   500
and representation_basis = module.representation_basis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   501
and representation_zero = module.representation_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   502
and representation_diff = module.representation_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   503
and representation_neg = module.representation_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   504
and representation_add = module.representation_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   505
and representation_sum = module.representation_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   506
and representation_scale = module.representation_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   507
and representation_extend = module.representation_extend
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   508
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   509
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   510
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   511
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   512
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   513
lemmas_with [cancel_type_definition,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   514
    OF S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   515
    folded subset_iff',
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   516
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   517
    simplified\<comment>\<open>too much?\<close>]:
68524
f5ca4c2157a5 avoid duplicate facts, the "trick" was copied without deeper motivation
immler
parents: 68522
diff changeset
   518
      scale_left_commute = lt_scale_left_commute
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   519
  and scale_zero_left = lt_scale_zero_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   520
  and scale_minus_left = lt_scale_minus_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   521
  and scale_left_diff_distrib = lt_scale_left_diff_distrib
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   522
  and scale_sum_left = lt_scale_sum_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   523
  and scale_zero_right = lt_scale_zero_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   524
  and scale_minus_right = lt_scale_minus_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   525
  and scale_right_diff_distrib = lt_scale_right_diff_distrib
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   526
  and scale_sum_right = lt_scale_sum_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   527
  and sum_constant_scale = lt_sum_constant_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   528
  and subspace_def = lt_subspace_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   529
  and subspaceI = lt_subspaceI
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   530
  and subspace_single_0 = lt_subspace_single_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   531
  and subspace_0 = lt_subspace_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   532
  and subspace_add = lt_subspace_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   533
  and subspace_scale = lt_subspace_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   534
  and subspace_neg = lt_subspace_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   535
  and subspace_diff = lt_subspace_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   536
  and subspace_sum = lt_subspace_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   537
  and subspace_inter = lt_subspace_inter
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   538
  and span_explicit = lt_span_explicit
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   539
  and span_explicit' = lt_span_explicit'
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   540
  and span_finite = lt_span_finite
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   541
  and span_induct_alt[consumes 1, case_names base step, induct set : span] = lt_span_induct_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   542
  and span_mono = lt_span_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   543
  and span_base = lt_span_base
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   544
  and span_superset = lt_span_superset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   545
  and span_zero = lt_span_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   546
  and span_add = lt_span_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   547
  and span_scale = lt_span_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   548
  and subspace_span = lt_subspace_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   549
  and span_neg = lt_span_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   550
  and span_diff = lt_span_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   551
  and span_sum = lt_span_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   552
  and span_minimal = lt_span_minimal
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   553
  and span_unique = lt_span_unique
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   554
  and span_subspace_induct[consumes 2] = lt_span_subspace_induct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   555
  and span_induct[consumes 1, case_names base step, induct set : span] = lt_span_induct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   556
  and span_empty = lt_span_empty
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   557
  and span_subspace = lt_span_subspace
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   558
  and span_span = lt_span_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   559
  and span_add_eq = lt_span_add_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   560
  and span_add_eq2 = lt_span_add_eq2
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   561
  and span_singleton = lt_span_singleton
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   562
  and span_Un = lt_span_Un
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   563
  and span_insert = lt_span_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   564
  and span_breakdown = lt_span_breakdown
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   565
  and span_breakdown_eq = lt_span_breakdown_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   566
  and span_clauses = lt_span_clauses
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   567
  and span_eq_iff = lt_span_eq_iff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   568
  and span_eq = lt_span_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   569
  and eq_span_insert_eq = lt_eq_span_insert_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   570
  and dependent_explicit = lt_dependent_explicit
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   571
  and dependent_mono = lt_dependent_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   572
  and independent_mono = lt_independent_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   573
  and dependent_zero = lt_dependent_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   574
  and independent_empty = lt_independent_empty
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   575
  and independent_explicit_module = lt_independent_explicit_module
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   576
  and independentD = lt_independentD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   577
  and independent_Union_directed = lt_independent_Union_directed
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   578
  and dependent_finite = lt_dependent_finite
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   579
  and independentD_alt = lt_independentD_alt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   580
  and independentD_unique = lt_independentD_unique
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   581
  and spanning_subset_independent = lt_spanning_subset_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   582
  and module_hom_scale_self = lt_module_hom_scale_self
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   583
  and module_hom_scale_left = lt_module_hom_scale_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   584
  and module_hom_id = lt_module_hom_id
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   585
  and module_hom_ident = lt_module_hom_ident
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   586
  and module_hom_uminus = lt_module_hom_uminus
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   587
  and subspace_UNIV = lt_subspace_UNIV
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   588
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   589
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   590
subsubsection \<open>Vector Spaces\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   591
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   592
context vector_space_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   593
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   594
context includes lifting_syntax assumes "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   595
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   596
interpretation local_typedef_vector_space_on S scale "TYPE('s)" by unfold_locales fact
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   597
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   598
lemmas_with [var_simplified explicit_ab_group_add,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   599
    unoverload_type 'd,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   600
    OF type.ab_group_add_axioms type_vector_space_on_with,
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   601
    folded dim_S_def,
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   602
    untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   603
    var_simplified implicit_ab_group_add]:
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   604
    lt_linear_id = vector_space.linear_id
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   605
and lt_linear_ident = vector_space.linear_ident
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   606
and lt_linear_scale_self = vector_space.linear_scale_self
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   607
and lt_linear_scale_left = vector_space.linear_scale_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   608
and lt_linear_uminus = vector_space.linear_uminus
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   609
and lt_linear_imp_scale["consumes" - 1, "case_names" "1"] = vector_space.linear_imp_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   610
and lt_scale_eq_0_iff = vector_space.scale_eq_0_iff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   611
and lt_scale_left_imp_eq = vector_space.scale_left_imp_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   612
and lt_scale_right_imp_eq = vector_space.scale_right_imp_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   613
and lt_scale_cancel_left = vector_space.scale_cancel_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   614
and lt_scale_cancel_right = vector_space.scale_cancel_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   615
and lt_injective_scale = vector_space.injective_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   616
and lt_dependent_def = vector_space.dependent_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   617
and lt_dependent_single = vector_space.dependent_single
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   618
and lt_in_span_insert = vector_space.in_span_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   619
and lt_dependent_insertD = vector_space.dependent_insertD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   620
and lt_independent_insertI = vector_space.independent_insertI
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   621
and lt_independent_insert = vector_space.independent_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   622
and lt_maximal_independent_subset_extend["consumes" - 1, "case_names" "1"] = vector_space.maximal_independent_subset_extend
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   623
and lt_maximal_independent_subset["consumes" - 1, "case_names" "1"] = vector_space.maximal_independent_subset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   624
and lt_in_span_delete = vector_space.in_span_delete
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   625
and lt_span_redundant = vector_space.span_redundant
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   626
and lt_span_trans = vector_space.span_trans
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   627
and lt_span_insert_0 = vector_space.span_insert_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   628
and lt_span_delete_0 = vector_space.span_delete_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   629
and lt_span_image_scale = vector_space.span_image_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   630
and lt_exchange_lemma = vector_space.exchange_lemma
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   631
and lt_independent_span_bound = vector_space.independent_span_bound
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   632
and lt_independent_explicit_finite_subsets = vector_space.independent_explicit_finite_subsets
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   633
and lt_independent_if_scalars_zero = vector_space.independent_if_scalars_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   634
and lt_subspace_sums = vector_space.subspace_sums
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   635
and lt_dim_unique = vector_space.dim_unique
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   636
and lt_dim_eq_card = vector_space.dim_eq_card
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   637
and lt_basis_card_eq_dim = vector_space.basis_card_eq_dim
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   638
and lt_basis_exists = vector_space.basis_exists
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   639
and lt_dim_eq_card_independent = vector_space.dim_eq_card_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   640
and lt_dim_span = vector_space.dim_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   641
and lt_dim_span_eq_card_independent = vector_space.dim_span_eq_card_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   642
and lt_dim_le_card = vector_space.dim_le_card
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   643
and lt_span_eq_dim = vector_space.span_eq_dim
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   644
and lt_dim_le_card' = vector_space.dim_le_card'
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   645
and lt_span_card_ge_dim = vector_space.span_card_ge_dim
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   646
and lt_dim_with = vector_space.dim_with
69295
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   647
(* should work but don't:v
b8b33ef47f40 use locales in Group_On_With
immler
parents: 69096
diff changeset
   648
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   649
and lt_bij_if_span_eq_span_bases = vector_space.bij_if_span_eq_span_bases
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   650
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   651
(* not expected to work:
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   652
and lt_dim_def = vector_space.dim_def
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   653
and lt_extend_basis_superset = vector_space.extend_basis_superset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   654
and lt_independent_extend_basis = vector_space.independent_extend_basis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   655
and lt_span_extend_basis = vector_space.span_extend_basis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   656
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   657
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   658
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   659
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   660
lemmas_with [cancel_type_definition,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   661
    OF S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   662
    folded subset_iff',
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   663
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   664
    simplified\<comment>\<open>too much?\<close>]:
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   665
    linear_id = lt_linear_id
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   666
and linear_ident = lt_linear_ident
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   667
and linear_scale_self = lt_linear_scale_self
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   668
and linear_scale_left = lt_linear_scale_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   669
and linear_uminus = lt_linear_uminus
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   670
and linear_imp_scale["consumes" - 1, "case_names" "1"] = lt_linear_imp_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   671
and scale_eq_0_iff = lt_scale_eq_0_iff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   672
and scale_left_imp_eq = lt_scale_left_imp_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   673
and scale_right_imp_eq = lt_scale_right_imp_eq
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   674
and scale_cancel_left = lt_scale_cancel_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   675
and scale_cancel_right = lt_scale_cancel_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   676
and dependent_def = lt_dependent_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   677
and dependent_single = lt_dependent_single
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   678
and in_span_insert = lt_in_span_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   679
and dependent_insertD = lt_dependent_insertD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   680
and independent_insertI = lt_independent_insertI
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   681
and independent_insert = lt_independent_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   682
and maximal_independent_subset_extend["consumes" - 1, "case_names" "1"] = lt_maximal_independent_subset_extend
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   683
and maximal_independent_subset["consumes" - 1, "case_names" "1"] = lt_maximal_independent_subset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   684
and in_span_delete = lt_in_span_delete
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   685
and span_redundant = lt_span_redundant
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   686
and span_trans = lt_span_trans
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   687
and span_insert_0 = lt_span_insert_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   688
and span_delete_0 = lt_span_delete_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   689
and span_image_scale = lt_span_image_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   690
and exchange_lemma = lt_exchange_lemma
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   691
and independent_span_bound = lt_independent_span_bound
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   692
and independent_explicit_finite_subsets = lt_independent_explicit_finite_subsets
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   693
and independent_if_scalars_zero = lt_independent_if_scalars_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   694
and subspace_sums = lt_subspace_sums
68526
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   695
and dim_unique = lt_dim_unique
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   696
and dim_eq_card = lt_dim_eq_card
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   697
and basis_card_eq_dim = lt_basis_card_eq_dim
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   698
and basis_exists["consumes" - 1, "case_names" "1"] = lt_basis_exists
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   699
and dim_eq_card_independent = lt_dim_eq_card_independent
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   700
and dim_span = lt_dim_span
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   701
and dim_span_eq_card_independent = lt_dim_span_eq_card_independent
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   702
and dim_le_card = lt_dim_le_card
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   703
and span_eq_dim = lt_span_eq_dim
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   704
and dim_le_card' = lt_dim_le_card'
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   705
and span_card_ge_dim = lt_span_card_ge_dim
f1f989b656bb transfer more lemmas
immler
parents: 68525
diff changeset
   706
and dim_with = lt_dim_with
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   707
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   708
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   709
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   710
subsubsection \<open>Finite Dimensional Vector Spaces\<close>
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   711
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   712
context finite_dimensional_vector_space_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   713
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   714
context includes lifting_syntax assumes "\<exists>(Rep::'s \<Rightarrow> 'a) (Abs::'a \<Rightarrow> 's). type_definition Rep Abs S" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   715
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   716
interpretation local_typedef_finite_dimensional_vector_space_on S scale basis "TYPE('s)" by unfold_locales fact
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   717
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   718
lemmas_with [var_simplified explicit_ab_group_add,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   719
    unoverload_type 'd,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   720
    OF type.ab_group_add_axioms type_finite_dimensional_vector_space_on_with,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   721
    folded dim_S_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   722
    untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   723
    var_simplified implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   724
     lt_finiteI_independent = finite_dimensional_vector_space.finiteI_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   725
and  lt_dim_empty = finite_dimensional_vector_space.dim_empty
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   726
and  lt_dim_insert = finite_dimensional_vector_space.dim_insert
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   727
and  lt_dim_singleton = finite_dimensional_vector_space.dim_singleton
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   728
and  lt_choose_subspace_of_subspace["consumes" - 1, "case_names" "1"] = finite_dimensional_vector_space.choose_subspace_of_subspace
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   729
and  lt_basis_subspace_exists["consumes" - 1, "case_names" "1"] = finite_dimensional_vector_space.basis_subspace_exists
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   730
and  lt_dim_mono = finite_dimensional_vector_space.dim_mono
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   731
and  lt_dim_subset = finite_dimensional_vector_space.dim_subset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   732
and  lt_dim_eq_0 = finite_dimensional_vector_space.dim_eq_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   733
and  lt_dim_UNIV = finite_dimensional_vector_space.dim_UNIV
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   734
and  lt_independent_card_le_dim = finite_dimensional_vector_space.independent_card_le_dim
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   735
and  lt_card_ge_dim_independent = finite_dimensional_vector_space.card_ge_dim_independent
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   736
and  lt_card_le_dim_spanning = finite_dimensional_vector_space.card_le_dim_spanning
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   737
and  lt_card_eq_dim = finite_dimensional_vector_space.card_eq_dim
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   738
and  lt_subspace_dim_equal = finite_dimensional_vector_space.subspace_dim_equal
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   739
and  lt_dim_eq_span = finite_dimensional_vector_space.dim_eq_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   740
and  lt_dim_psubset = finite_dimensional_vector_space.dim_psubset
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   741
and  lt_indep_card_eq_dim_span = finite_dimensional_vector_space.indep_card_eq_dim_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   742
and  lt_independent_bound_general = finite_dimensional_vector_space.independent_bound_general
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   743
and  lt_independent_explicit = finite_dimensional_vector_space.independent_explicit
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   744
and  lt_dim_sums_Int = finite_dimensional_vector_space.dim_sums_Int
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   745
and  lt_dependent_biggerset_general = finite_dimensional_vector_space.dependent_biggerset_general
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   746
and  lt_subset_le_dim = finite_dimensional_vector_space.subset_le_dim
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   747
and  lt_linear_inj_imp_surj = finite_dimensional_vector_space.linear_inj_imp_surj
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   748
and  lt_linear_surj_imp_inj = finite_dimensional_vector_space.linear_surj_imp_inj
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   749
and  lt_linear_inverse_left = finite_dimensional_vector_space.linear_inverse_left
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   750
and  lt_left_inverse_linear = finite_dimensional_vector_space.left_inverse_linear
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   751
and  lt_right_inverse_linear = finite_dimensional_vector_space.right_inverse_linear
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   752
(* not expected to work:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   753
     lt_dimension_def = finite_dimensional_vector_space.dimension_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   754
and  lt_dim_subset_UNIV = finite_dimensional_vector_space.dim_subset_UNIV
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   755
and  lt_dim_eq_full = finite_dimensional_vector_space.dim_eq_full
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   756
and  lt_inj_linear_imp_inv_linear = finite_dimensional_vector_space.inj_linear_imp_inv_linear
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   757
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   758
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   759
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   760
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   761
lemmas_with [cancel_type_definition,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   762
    OF S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   763
    folded subset_iff',
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   764
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   765
    simplified\<comment>\<open>too much?\<close>]:
68525
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   766
     finiteI_independent = lt_finiteI_independent
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   767
and  dim_empty = lt_dim_empty
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   768
and  dim_insert = lt_dim_insert
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   769
and  dim_singleton = lt_dim_singleton
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   770
and  choose_subspace_of_subspace["consumes" - 1, "case_names" "1"] = lt_choose_subspace_of_subspace
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   771
and  basis_subspace_exists["consumes" - 1, "case_names" "1"] = lt_basis_subspace_exists
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   772
and  dim_mono = lt_dim_mono
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   773
and  dim_subset = lt_dim_subset
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   774
and  dim_eq_0 = lt_dim_eq_0
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   775
and  dim_UNIV = lt_dim_UNIV
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   776
and  independent_card_le_dim = lt_independent_card_le_dim
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   777
and  card_ge_dim_independent = lt_card_ge_dim_independent
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   778
and  card_le_dim_spanning = lt_card_le_dim_spanning
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   779
and  card_eq_dim = lt_card_eq_dim
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   780
and  subspace_dim_equal = lt_subspace_dim_equal
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   781
and  dim_eq_span = lt_dim_eq_span
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   782
and  dim_psubset = lt_dim_psubset
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   783
and  indep_card_eq_dim_span = lt_indep_card_eq_dim_span
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   784
and  independent_bound_general = lt_independent_bound_general
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   785
and  independent_explicit = lt_independent_explicit
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   786
and  dim_sums_Int = lt_dim_sums_Int
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   787
and  dependent_biggerset_general = lt_dependent_biggerset_general
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   788
and  subset_le_dim = lt_subset_le_dim
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   789
and  linear_inj_imp_surj = lt_linear_inj_imp_surj
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   790
and  linear_surj_imp_inj = lt_linear_surj_imp_inj
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   791
and  linear_inverse_left = lt_linear_inverse_left
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   792
and  left_inverse_linear = lt_left_inverse_linear
e980a0441b61 fixed some oversights
immler
parents: 68524
diff changeset
   793
and  right_inverse_linear = lt_right_inverse_linear
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   794
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   795
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   796
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   797
context module_pair_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   798
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   799
context includes lifting_syntax
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   800
  assumes
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   801
    "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S1"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   802
    "\<exists>(Rep::'t \<Rightarrow> 'c) (Abs::'c \<Rightarrow> 't). type_definition Rep Abs S2" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   803
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   804
interpretation local_typedef_module_pair S1 scale1 "TYPE('s)" S2 scale2 "TYPE('t)" by unfold_locales fact+
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   805
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   806
lemmas_with [var_simplified explicit_ab_group_add,
69688
33843320448f restore type variable names in unoverload_type
immler
parents: 69597
diff changeset
   807
    unoverload_type 'e 'f,
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   808
  OF lt2.type.ab_group_add_axioms lt1.type.ab_group_add_axioms type_module_pair_on_with,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   809
  untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   810
  var_simplified implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   811
  lt_module_hom_zero = module_pair.module_hom_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   812
and lt_module_hom_add = module_pair.module_hom_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   813
and lt_module_hom_sub = module_pair.module_hom_sub
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   814
and lt_module_hom_neg = module_pair.module_hom_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   815
and lt_module_hom_scale = module_pair.module_hom_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   816
and lt_module_hom_compose_scale = module_pair.module_hom_compose_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   817
and lt_module_hom_sum = module_pair.module_hom_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   818
and lt_module_hom_eq_on_span = module_pair.module_hom_eq_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   819
(* should work, but doesnt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   820
and lt_bij_module_hom_imp_inv_module_hom = module_pair.bij_module_hom_imp_inv_module_hom[of scale1 scale2]
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   821
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   822
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   823
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   824
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   825
lemmas_with [cancel_type_definition, OF m1.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   826
  cancel_type_definition, OF m2.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   827
    folded subset_iff' top_set_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   828
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   829
    simplified\<comment>\<open>too much?\<close>]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   830
  module_hom_zero = lt_module_hom_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   831
and module_hom_add = lt_module_hom_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   832
and module_hom_sub = lt_module_hom_sub
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   833
and module_hom_neg = lt_module_hom_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   834
and module_hom_scale = lt_module_hom_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   835
and module_hom_compose_scale = lt_module_hom_compose_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   836
and module_hom_sum = lt_module_hom_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   837
and module_hom_eq_on_span = lt_module_hom_eq_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   838
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   839
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   840
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   841
context vector_space_pair_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   842
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   843
context includes lifting_syntax
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   844
  notes [transfer_rule del] = Collect_transfer
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   845
  assumes
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   846
    "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S1"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   847
    "\<exists>(Rep::'t \<Rightarrow> 'c) (Abs::'c \<Rightarrow> 't). type_definition Rep Abs S2" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   848
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   849
interpretation local_typedef_vector_space_pair S1 scale1 "TYPE('s)" S2 scale2 "TYPE('t)" by unfold_locales fact+
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   850
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   851
lemmas_with [var_simplified explicit_ab_group_add,
69688
33843320448f restore type variable names in unoverload_type
immler
parents: 69597
diff changeset
   852
    unoverload_type 'e 'f,
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   853
  OF lt2.type.ab_group_add_axioms lt1.type.ab_group_add_axioms type_vector_space_pair_on_with,
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   854
  folded lt1.dim_S_def lt2.dim_S_def,
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   855
  untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   856
  var_simplified implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   857
  lt_linear_0 = vector_space_pair.linear_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   858
and lt_linear_add = vector_space_pair.linear_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   859
and lt_linear_scale = vector_space_pair.linear_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   860
and lt_linear_neg = vector_space_pair.linear_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   861
and lt_linear_diff = vector_space_pair.linear_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   862
and lt_linear_sum = vector_space_pair.linear_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   863
and lt_linear_inj_on_iff_eq_0 = vector_space_pair.linear_inj_on_iff_eq_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   864
and lt_linear_inj_iff_eq_0 = vector_space_pair.linear_inj_iff_eq_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   865
and lt_linear_subspace_image = vector_space_pair.linear_subspace_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   866
and lt_linear_subspace_vimage = vector_space_pair.linear_subspace_vimage
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   867
and lt_linear_subspace_kernel = vector_space_pair.linear_subspace_kernel
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   868
and lt_linear_span_image = vector_space_pair.linear_span_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   869
and lt_linear_dependent_inj_imageD = vector_space_pair.linear_dependent_inj_imageD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   870
and lt_linear_eq_0_on_span = vector_space_pair.linear_eq_0_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   871
and lt_linear_independent_injective_image = vector_space_pair.linear_independent_injective_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   872
and lt_linear_inj_on_span_independent_image = vector_space_pair.linear_inj_on_span_independent_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   873
and lt_linear_inj_on_span_iff_independent_image = vector_space_pair.linear_inj_on_span_iff_independent_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   874
and lt_linear_subspace_linear_preimage = vector_space_pair.linear_subspace_linear_preimage
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   875
and lt_linear_spans_image = vector_space_pair.linear_spans_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   876
and lt_linear_spanning_surjective_image = vector_space_pair.linear_spanning_surjective_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   877
and lt_linear_eq_on_span = vector_space_pair.linear_eq_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   878
and lt_linear_compose_scale_right = vector_space_pair.linear_compose_scale_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   879
and lt_linear_compose_add = vector_space_pair.linear_compose_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   880
and lt_linear_zero = vector_space_pair.linear_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   881
and lt_linear_compose_sub = vector_space_pair.linear_compose_sub
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   882
and lt_linear_compose_neg = vector_space_pair.linear_compose_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   883
and lt_linear_compose_scale = vector_space_pair.linear_compose_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   884
and lt_linear_indep_image_lemma = vector_space_pair.linear_indep_image_lemma
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   885
and lt_linear_eq_on = vector_space_pair.linear_eq_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   886
and lt_linear_compose_sum = vector_space_pair.linear_compose_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   887
and lt_linear_independent_extend_subspace = vector_space_pair.linear_independent_extend_subspace
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   888
and lt_linear_independent_extend = vector_space_pair.linear_independent_extend
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   889
and lt_linear_exists_left_inverse_on = vector_space_pair.linear_exists_left_inverse_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   890
and lt_linear_exists_right_inverse_on = vector_space_pair.linear_exists_right_inverse_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   891
and lt_linear_inj_on_left_inverse = vector_space_pair.linear_inj_on_left_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   892
and lt_linear_injective_left_inverse = vector_space_pair.linear_injective_left_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   893
and lt_linear_surj_right_inverse = vector_space_pair.linear_surj_right_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   894
and lt_linear_surjective_right_inverse = vector_space_pair.linear_surjective_right_inverse
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   895
and lt_finite_basis_to_basis_subspace_isomorphism = vector_space_pair.finite_basis_to_basis_subspace_isomorphism
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   896
(* should work, but doesnt
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   897
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   898
(* not expected to work:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   899
  lt_construct_def = vector_space_pair.construct_def
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   900
  lt_construct_cong = vector_space_pair.construct_cong
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   901
  lt_linear_construct = vector_space_pair.linear_construct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   902
  lt_construct_basis = vector_space_pair.construct_basis
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   903
  lt_construct_outside = vector_space_pair.construct_outside
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   904
  lt_construct_add = vector_space_pair.construct_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   905
  lt_construct_scale = vector_space_pair.construct_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   906
  lt_construct_in_span = vector_space_pair.construct_in_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   907
  lt_in_span_in_range_construct = vector_space_pair.in_span_in_range_construct
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   908
  lt_range_construct_eq_span = vector_space_pair.range_construct_eq_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   909
*)
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   910
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   911
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   912
lemmas_with [cancel_type_definition, OF m1.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   913
    cancel_type_definition, OF m2.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   914
    folded subset_iff' top_set_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   915
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   916
    simplified\<comment>\<open>too much?\<close>]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   917
  linear_0 = lt_linear_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   918
  and linear_add = lt_linear_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   919
  and linear_scale = lt_linear_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   920
  and linear_neg = lt_linear_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   921
  and linear_diff = lt_linear_diff
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   922
  and linear_sum = lt_linear_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   923
  and linear_inj_on_iff_eq_0 = lt_linear_inj_on_iff_eq_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   924
  and linear_inj_iff_eq_0 = lt_linear_inj_iff_eq_0
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   925
  and linear_subspace_image = lt_linear_subspace_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   926
  and linear_subspace_vimage = lt_linear_subspace_vimage
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   927
  and linear_subspace_kernel = lt_linear_subspace_kernel
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   928
  and linear_span_image = lt_linear_span_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   929
  and linear_dependent_inj_imageD = lt_linear_dependent_inj_imageD
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   930
  and linear_eq_0_on_span = lt_linear_eq_0_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   931
  and linear_independent_injective_image = lt_linear_independent_injective_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   932
  and linear_inj_on_span_independent_image = lt_linear_inj_on_span_independent_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   933
  and linear_inj_on_span_iff_independent_image = lt_linear_inj_on_span_iff_independent_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   934
  and linear_subspace_linear_preimage = lt_linear_subspace_linear_preimage
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   935
  and linear_spans_image = lt_linear_spans_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   936
  and linear_spanning_surjective_image = lt_linear_spanning_surjective_image
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   937
  and linear_eq_on_span = lt_linear_eq_on_span
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   938
  and linear_compose_scale_right = lt_linear_compose_scale_right
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   939
  and linear_compose_add = lt_linear_compose_add
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   940
  and linear_zero = lt_linear_zero
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   941
  and linear_compose_sub = lt_linear_compose_sub
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   942
  and linear_compose_neg = lt_linear_compose_neg
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   943
  and linear_compose_scale = lt_linear_compose_scale
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   944
  and linear_indep_image_lemma = lt_linear_indep_image_lemma
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   945
  and linear_eq_on = lt_linear_eq_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   946
  and linear_compose_sum = lt_linear_compose_sum
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   947
  and linear_independent_extend_subspace = lt_linear_independent_extend_subspace
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   948
  and linear_independent_extend = lt_linear_independent_extend
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   949
  and linear_exists_left_inverse_on = lt_linear_exists_left_inverse_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   950
  and linear_exists_right_inverse_on = lt_linear_exists_right_inverse_on
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   951
  and linear_inj_on_left_inverse = lt_linear_inj_on_left_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   952
  and linear_injective_left_inverse = lt_linear_injective_left_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   953
  and linear_surj_right_inverse = lt_linear_surj_right_inverse
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   954
  and linear_surjective_right_inverse = lt_linear_surjective_right_inverse
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   955
  and finite_basis_to_basis_subspace_isomorphism = lt_finite_basis_to_basis_subspace_isomorphism
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   956
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   957
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   958
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   959
context finite_dimensional_vector_space_pair_1_on begin
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   960
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   961
context includes lifting_syntax
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   962
  notes [transfer_rule del] = Collect_transfer
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   963
  assumes
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   964
    "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S1"
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   965
    "\<exists>(Rep::'t \<Rightarrow> 'c) (Abs::'c \<Rightarrow> 't). type_definition Rep Abs S2" begin
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   966
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   967
interpretation local_typedef_finite_dimensional_vector_space_pair_1 S1 scale1 Basis1 "TYPE('s)" S2 scale2 "TYPE('t)" by unfold_locales fact+
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   968
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   969
lemmas_with [var_simplified explicit_ab_group_add,
69688
33843320448f restore type variable names in unoverload_type
immler
parents: 69597
diff changeset
   970
    unoverload_type 'e 'f,
68620
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   971
  OF lt2.type.ab_group_add_axioms lt1.type.ab_group_add_axioms type_finite_dimensional_vector_space_pair_1_on_with,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   972
  folded lt1.dim_S_def lt2.dim_S_def,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   973
  untransferred,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   974
  var_simplified implicit_ab_group_add]:
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   975
   lt_dim_image_eq = finite_dimensional_vector_space_pair_1.dim_image_eq
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   976
and lt_dim_image_le = finite_dimensional_vector_space_pair_1.dim_image_le
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   977
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   978
end
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   979
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   980
lemmas_with [cancel_type_definition, OF vs1.S_ne,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   981
    cancel_type_definition, OF vs2.S_ne,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   982
    folded subset_iff' top_set_def,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   983
    simplified pred_fun_def,
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   984
    simplified\<comment>\<open>too much?\<close>]:
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   985
  dim_image_eq = lt_dim_image_eq
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   986
and dim_image_le = lt_dim_image_le
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   987
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   988
end
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   989
707437105595 relaxed assumptions for dim_image_eq and dim_image_le
immler
parents: 68526
diff changeset
   990
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   991
context finite_dimensional_vector_space_pair_on begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   992
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   993
context includes lifting_syntax
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   994
  notes [transfer_rule del] = Collect_transfer
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   995
  assumes
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   996
    "\<exists>(Rep::'s \<Rightarrow> 'b) (Abs::'b \<Rightarrow> 's). type_definition Rep Abs S1"
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   997
    "\<exists>(Rep::'t \<Rightarrow> 'c) (Abs::'c \<Rightarrow> 't). type_definition Rep Abs S2" begin
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   998
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
   999
interpretation local_typedef_finite_dimensional_vector_space_pair S1 scale1 Basis1 "TYPE('s)" S2 scale2 Basis2 "TYPE('t)" by unfold_locales fact+
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1000
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1001
lemmas_with [var_simplified explicit_ab_group_add,
69688
33843320448f restore type variable names in unoverload_type
immler
parents: 69597
diff changeset
  1002
    unoverload_type 'e 'f,
68522
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1003
  OF lt2.type.ab_group_add_axioms lt1.type.ab_group_add_axioms type_finite_dimensional_vector_space_pair_on_with,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1004
  folded lt1.dim_S_def lt2.dim_S_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1005
  untransferred,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1006
  var_simplified implicit_ab_group_add]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1007
lt_linear_surjective_imp_injective = finite_dimensional_vector_space_pair.linear_surjective_imp_injective
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1008
and lt_linear_injective_imp_surjective = finite_dimensional_vector_space_pair.linear_injective_imp_surjective
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1009
and lt_linear_injective_isomorphism = finite_dimensional_vector_space_pair.linear_injective_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1010
and lt_linear_surjective_isomorphism = finite_dimensional_vector_space_pair.linear_surjective_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1011
and lt_basis_to_basis_subspace_isomorphism = finite_dimensional_vector_space_pair.basis_to_basis_subspace_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1012
and lt_subspace_isomorphism = finite_dimensional_vector_space_pair.subspace_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1013
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1014
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1015
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1016
lemmas_with [cancel_type_definition, OF vs1.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1017
    cancel_type_definition, OF vs2.S_ne,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1018
    folded subset_iff' top_set_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1019
    simplified pred_fun_def,
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1020
    simplified\<comment>\<open>too much?\<close>]:
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1021
linear_surjective_imp_injective = lt_linear_surjective_imp_injective
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1022
and linear_injective_imp_surjective = lt_linear_injective_imp_surjective
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1023
and linear_injective_isomorphism = lt_linear_injective_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1024
and linear_surjective_isomorphism = lt_linear_surjective_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1025
and basis_to_basis_subspace_isomorphism = lt_basis_to_basis_subspace_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1026
and subspace_isomorphism = lt_subspace_isomorphism
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1027
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1028
end
d9cbc1e8644d example for Types_To_Sets: transfer from type-based linear algebra to subspaces
immler
parents:
diff changeset
  1029
69096
62a0d10386c1 fix (non-existent) document generation
immler
parents: 69064
diff changeset
  1030
end