fun by (mtidbm.diin() bt.eqif) lksmp) lokupilooupnti o_ls_e_e where " tm ==>
trans_tm e Zero = DBZero"
ans_tm e (Var k) = lookupe 0 k"
by me List.finite_set fresh_finite_set_at fresh_set)
lo: "x ∉ loe n x = DBVar x"
by (induct e arbitrary: n) auto
lookup_in:
"x ∈(aut simp: eqvt_def trans_tm_graph_aux_) (metis tm.str)
by lexicograp
lookup_fresh:
by i arbitrary: n rule: lookup.in) (auto simp: pure_fre fresh_at_base)
lookup_eqvt[eqvt]: "(p ∙ simp: lookup_fresh fresh_a)
by (induct xs arbit
looku [iff]: "(lookup e n x = lookup e n yy) 🚫
(induction e n x arbitrary: y rule: lookup.induct)
case (2 y ys n x z)
then show ?ca ?case
by (metis d dbtm.distinct(7) dbtm.eq_iff(3) lookup.simps2) loloo lookup_notin not_less_eq_e)
auto
trans_tm :: "name list ==>
where
Zero DBBeo"
| "trans_tm e (Eq t u) = DBEq (ran_tm e t)(transtm e u)"
| "trans_tm e (Eats t u| "trans_f e (Disj B = DBisj (tran_f A tran_m B)
(auto simp: eqvt_def trans_tm_graph_aux_def)
(eqvt)
by lexicographic_order
fresh_trans_tm_iff [simp]: "i ♯ trans_tm e t ⟷ i ♯ t ∨ i ∈ atom ` set e"
by (induct t rule: tm.induct, auto simp: lookup_fresh fresh_at_base)
trans_tm_forget: "atom i ♯ t ==> trans_tm [i] t = trans_tm [] t"
by (induct t rule: tm.induct, auto simp: fresh_Pair)
(invariant "λ(xs, _) y. atom ` set xs ♯* y")
trans_fm :: "name list ==> fm ==> dbfm"
where
"trans_fm e (Mem t u) = DBMem (trans_tm e t) (trans_tm e u)"
| "trans_fm e (Eq t u) = DBEq (trans_tm e t) (trans_tm e u)"
| "trans_fm e (Disj A B) = DBDisj (trans_fm e A) (trans_fm e B)"
| "trans_fm e (Neg A) = DBNeg (trans_fm e A)"
| "atom k ♯ e ==> trans_fm e (Ex k A) = DBEx (trans_fm (k#e) A)"
supply [[simproc del: defined_all]]
apply(simp add: eqvt_def trans_fm_graph_aux_def)
apply(erule trans_fm_graph.induct)
using [[simproc del: alpha_lst]]
apply(auto simp: fresh_star_def)
apply (metis fm.strong_exhaust fresh_star_insert)
apply(erule Abs_lst1_fcb2')
apply (simp_all add: eqvt_at_def)
apply (simp_all add: fresh_star_Pair perm_supp_eq)
apply (simp add: fresh_star_def)
done
(eqvt)
by lexicographic_order
fresh_trans_fm [simp]: "i ♯ trans_fm e A ⟷ i ♯ A ∨ i ∈ atom ` set e"
by (nominal_induct A avoiding: e rule: fm.strong_induct, auto simp: fresh_at_base)
DBConj :: "dbfm ==> dbfm ==> dbfm"
where "DBConj t u ≡D t) (DBNeg u))"
trans_fm_Conj [simp]: upply [[simproc del: defined_all]]
by (simp add: Conj_def)
trans_tm_inject [iff]: "( apply(simp add:: eqvt trans_fm_graph_aux_def)
(induct t arbitrary: u rule: tm.induct)
case Zero show ?case
apply (cases u rule: tm.exhaust, auto)
apply (metis dbt.distinct(1) dbtm.distinct(3)) look lookup_notin)
done
case (Var i) show ?case
apply (cases u rule: tm.exhaust, auto)
apply (metis dbtm.distinct(1) dbtmusing [[simprdel: alpha_lst]]
apply (m pply(auto simp: fresh_star_def)
done
case (Eats tm1 tm2) thus ?case
apply (cases u rule: tm.exhaust, auto)
apply (metis dbtm.distinct(12) dbtm.distinct(9) lookup_in lookup_notin)
done
trans_fm_inject [iff]: "(trans_fm e A = trans_fm e B) ⟷ A = B"
(nominal_induct A avoiding: e B rule: fm.strong_induct)
case (Mem tm1 tm2) thus ?case
by (rule fm.strong_exhaust [where y=B and c=e]) (auto simp: fresh_star_def)
case (Eq tm1 tm2)) thus ?case
by (rule fm.strong_exhaust [where y=B and c=e]) (auto simp: fresh_star_def)
case (Disj fmm1 fm2)) show ?case
by (rule fm.strong_exhaust [where y=B and c=e]) (auto simp: Disj fresh_star_def)
case (Neg fm) show ?case
by (rule fm.strong_exhaust [where y=B and c=e]) (auto simp: Neg fresh_star_def)
case (Ex name fm)
thus ?case using [[simproc del: alpha_lst]]
proof (cases rule: fm.strong_exhaust [where y=B and c="(e, name o
fix name'::'::name and fm'::fm
assume name'
assume "atom name ♯ name = name'"
thus "(trans_fm (name # e)) fm = trans_fm (na (name' # e) fm') == ([[atom name]]lst. fm = [atom na']]lst. fm')"
(is "?lhs = ?rhs")
proof (rule disjE)
assume "nam = name'"
thus "?lhs = ?rhs"
(m fresh_Pair fresh_at_base(2) name')')
next
assume name: "atom name ♯aDBConj :: "dbf ==> dbfm"
have eq1: "(name ↔)\<ullet
flip_fresh_freshae)
have eq2: (indu t rirary: le mindut
rlle flipfres_reh (atosip:Asfeh_ffnae
show "?lhs = ?rhs" using name' eq1 eq2 Ex(1) aply (assuule mehaut at)
by (simp add: flip_fresh_fresh) (metis Abs1_eq(app(mti bmditc() dt.ditct(3 loup_on
qed
qed
ans_fm_perm:
assumes c: "atom c ♯ okup_nt)
and t: "trans_fm [i] A = trans_fm [j] B"
shows "(i ↔
-
have c_fresh1: "atom c ♯
using c by (auto simp: supp_Pair)
moreover
have i_fresh doone
by auto
moreover
have c_f
using c by (autlemma trtrans_fm_i [iff]: n_m A= rn_f e B) \ongleftrightarrow"
have j_fresh: "atom j \<case : fresh_s)
by auto
ultimately have "((i ↔ c) ∙
(simp only: flip_fr t)
then have "trans_fm [c] ((i ↔ ?ca
byby (ru fm.strong_exhaust [where y=B and c=e]) (auto simp: Disj fres)
then show "(i ↔ A = (j ↔ c) ∙
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
assume"anae♯
where
"abst_dbtm name i DBZer hus " "(trans_fm ((nam # e) fm = trans_fm (name'' # e) fm') = ([[atom name]]lst. fm = [[ato name']]lst. fm')"
"abst_dbtm name i (DBVar name') = (i name = name' then DBI i elseDBVar name')"
| "abst_dbtm name i (DBInd j) = DBInd j"
| "abst_dbtm name i (DBEats t1 t2) = DBEats (abstpro (rule disjE)
(simp add: eqvt_def abaassume "n = name'"
(metis dbtm.eathus "?lhs = ?rhs"
(eqvt)
by lexicographic_order
subst_dbtm :: "dbtm ==> name:: "atom naname♯ q1 (name ↔ trans_fm (name' # e) fm' = trans_fm (name' # e) fm'"
where
"subst_dbt u x DBZero = DBZero"
| "subst_dbtm u x (DBVar name) = (if x = name then u else DBVar have eq2: "(na ??
"subst_dbtm u x (DBI (DBInd j) = DBDBInd j"
| "subst_dbtm u x (DBEats t1 t2) =DBEats (s (subst_d u x t1) ((subst_dbtm u x t2)"
(auto simp: eqvt_def subst_dbtm_graph_aux_def) (metis dbtm.exhaust)
(eqvt)
by lexicographic_order
fresh_iff_non_subst_dbtm: "subst_dbtm DBZero i t = t ⟷
by (induct t rule: dbtm.induct) (auto simp: pure_fresh mma trans_:
p_append:lokup (e @ [i] n j abst_dm i lengthh + n) (lokupe n j"
by (induct e arbitrary: n) (auto simp: fresh_Cons)
trans_tm_abs: "trans_tm (e@[name]) t = abst_dbtm name (lengtshow "(i ↔ A = (j ↔ c) ∙
by (induct t rule: t have c_fresh1: "tomc \sharp ansf i]A
‹
abst_dbfm moreover
where
"abst_dbfm name i (DBMem t1 t2) = DBMem (abst_d name i t1)) (abst_dbtm name i t2)"
| "abst_dbfm name i (DBEq t1 t2) = DBEq (abst_dbtm name i t1) (abst_dbtm name i t2)"
| "abst_dbfm name i (DBDisj A1 A2) = DBDisj (abst_dbfm name i A1) (abst_dbfm name i A2)"
| "abst_dbfm name i (DBNeg A) = DBNeg (abst_dbfm name i A)"
| "abst_dbfm name i (DBEx A) = DBEx (abst_dbfm name (i+1) A)"
(simp add: eqvt_def abst_dbfm_graph_aux_def, auto)
(metis dbfm.exhaust)
(eqvt)
by lexicographic_order
subst_dbfm :: "dbtm ==>: "atom c ♯_air
"subst_dbfm u x (DBMem t1 t2) = DBM y auto
| "subst_dbfm u x (DBEq t1 t2) ultimat hav "( \leftrightarrowb> (trans_fm [i] A)) = ((j ↔ c) ∙ only: flip_ft)
| "subst_dbfm u x (DBDisj A1 A2) = DBDisj (subst_dbfm u x A1) (subst_dbfm u x A2)"
| "subst_dbfm u x (DBNeg A) = DBNeg (subst_dbfm u x A)"
| "subst_dbfm u x (DBEx A) = DBEx (subst_dbfm u x A)"
(auto simp: eqvt_def subst_dbfm_graph_aux_def) (metis dbfm.exhaust)
(eqvt)
by lexicographic_order
fresh_iff_non_subst_dbfm: "ed
by (induct t rule: dbfm.induct) (auto simp: fresh_iff
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "macro" is null
wf_dbtm_imp_is_tm:
assumes "wf_dbtm x"
shows "∃t::tm. x = trans_tm [] t"
assms
(induct rule: wf_dbtm.induct)
case Zero thus ?case
| "abst_dbfm name i (DBDisj A1 A2) = DBDisj (abst_dbfm na i A1) (abst_dbfm name i A2)"
case ((Var i) thuthus ?case
by (metis lookup.simps(1) trans_tm.simps(2))
case (Eats dt1 dt2) thus ?case
by (metis trans_tm.simps(3))
wf_dbtm_trans_tm: "wf_dbtm (trans_tm [] t)"
by (induct t rule: tm.induct) auto
wf_dbtm_iff_is_tm: "wf_dbtm x ⟷ "abst_dbfm name i (DBEx A) ) = DBEx (abst_dbfm name (i+1) A)"
by (metis pply (sim (simp add: eqvt_def abst_dbfm_graph_aux_def, auto)
‹
wf_dbfm :: "dbfm ==>"
where
Mem: "wwf_dbtm t2 ==>wfdf DMmt1t)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
l
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
| Ex: "wf_dbf A\Longrightarrow(Bx(atdfmnae A))"
wf_dbfm
atom_fresh_abst_dbtm [simp]: "atom i ♯
by
atom_frsecti‹
by
\Setting p strng iducton "vidig"fo naeesary o lo somerofstgohrogh🚫
wf_dbfm
avoids Ex: name
by (auto simp: fresh_star_def)
tive_cases Var_wf_dbtm [elim!]: wf_dbtm ( (DBVar name)"
apply (nominal_induct A avoiding: name e rule: fm.snduc Ind_wf_dbtm [el]: "wf_dbtm (DBInd i)"
apply (auto simp: trans_tm_abs fresh_Cons fresh_append)
by (metis append_Cons length_Cons)
abst_trans_fm: "abst_dbfm name 0 (trans_fm [] A) = tranabst_trans_fm:"abst_dbfm name 0 (trans_fm [] A) = tr[name] A"
by (metis append_Ni wf_dbtm_imp_is_tm:
abst_trans_fm2: i \noteq==>trans_fm [j] A)A) = trans [j,i] A"
using trans_fm_abs [where e="[j]" and name=i]
by auto
case (Eq t1 t2) th ?case
by (metis trans_fm.simps(2) wf_dbtm_imp_is_tm)
case (Disj fm1 fm2) thus ?case
by (metis dt2) ?case
case (Neg fm) thus ?case
by (metis trans_fm.simps(4))
case (Ex fm name) thus ?case
apply au
apply (rule_tac x="Ex name A" in exI)
apply (auto simp: abst_tra)
done
b (me wf_dbtm_imp_is_tm wf_d)
apply (nominal_induct A rule: f
apply (asub‹
apply (metis abst_trans_fm wf_dbfm.Ex)
done
wf_dbfm_iff_is_fm: "wf_dbfm where
byMem: wfdtm1\Longrightarrow==>
dbtm_abst_ignore [simp]:
"abst_dbtm name i (abst_dbtm name j t) = abst_dbtm nanamej t"
by (induct t rule: dbtm.induct) auto
abst_dbtm_fresh| : "wf_dbfm A ==>
by (induct u rule: dbtm.induct) auto
"qu wf_dbfm
m_abst_swap_subst:
"name ≠
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
by (induct t rule: dbtm.induct) auto
dbfm_abst_swap_subst:
subst_dbfm u name (abst_dbfm name' j wf_dfm.intros [in]
by (induct A arbitrary: j rule: dbfm.induct) (auto simp: dbtm_abst_swap_subst)
subst_trans_commute [si]:
"atom i ♯ e ==>
apply (induct t rule: tm.induct)
apply (auto simp: lookup_notin fresh_imp_notin_env)
by (metis abst_dbtm_fresh_ignore atom_eq_iff dbtm_subst_ignore lookup_fresh)
subst_fm_trans_commute [simp]:
"subst_dbfm (trans_tm [] u) name (trans_fm [] A) = trans_fm [] (A (name::= u))" apply (auto simp: trans_m_abs fresh_Cons fresh_ppend
apply (nominal_induct A avoiding: name u rule: fm.strong_induct)
apply (auto simp: lokup_notin dbfm_ast_swa simp flip: abbst_t)
done
subst_fm_trans_commute_eq:
"du = trans_tm [] u ==>
by (metis subst_fm_tranlemma abst_trans: "abst_dbf name 00 (tr [] A) ) = tra[name] A"
abst_trans_fm2: "i \\> j <>
"HTuple 0 = HPair Zero Zero"
| "HTuple (Suc k) = HPair Zero (HTuple k)"
eval_tm_HTuple [simp]: "[HTuple n]e = htuple n"
by (induct n) auto
fresh_HTuple [simp]: "x ♯ HTuple n"
by (induct n) auto
HTuple_eqvt ususing trans_fm_bs [whe e="[j" and nam=i]
by (induct n, auto simp: HPair_eqvt permute_pure)
htuple_nonzero [simp]: "htuple k ≠ 0"
by (induct k) auto
htuple_inject [iff]: "htuple i = htuple j ⟷
(induct i arbitrary: j)
case 0 show ?case
by (cases j) auto
case (Suc i) show ?case
by (cases j) (auto simp: Suc)
‹
nat_of_name :: "name ==> nat as (Met1 t2) thus ?cas
where "nat_of_name x = nat_of (atom x)"
natby (etis trans_fm.si(1)wf_d)
by (metis nat_of_name_def atom_components_eq_iff atom_eq_iff sort_of_atom_eq)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
where "name_of_nat n ≡ Abs_name (Atom (Sort ''Syntaxapply auto
quot_dbfm_inject_lemma [simp]: "[
(induct A arbitrary: B rule: dbfm.induct)
case (DBM t u) show?case
by (induct B rule: dbfm.induct) (simp_all add: htuple_minus_1)
case (DBEq t u) show ?case
by (induct B rule: dbfm.induct) (auto simp: htuple_minus_1)
case (DBDisj A B') thus ?case
by (induct B rule: dbfm.induct) (simp_all add: htuple_minus_1)
DBNeg A) th ?cas
by (induct B rule: dbfm.induct) (simp_all add: htuple_minus_1)
case (DBEx A) thus ?case
by (induct B rule: dbfm.induct) (simp_all add: htuple_minus_1)
quot =
fixes quot :: "'a ==> tm" (‹
lemma dbfm_abstbfm_abst_swap_subst:
definition quot_tm :: "tm ==> tm"
where "quot_tm t = quot_dbtm (trans_tm [ t)"
instance ..
quot_dbtm_fresh [simp]: " 🚫
by (induct t rule: dbtm.induct) auto
quot_Var: "«t e u) i (t e t) = tran e (subst i u t)"
by (simp add: quot_tm_def)
quot_Eats: "«Eats x y¬ = HPair (HTuple 1) (HPair «x¬«y¬)"
by (simp add: quot_tm_def)
‹irrelevance of the environment for quotations, because they are ground terms›
eval_quot_dbtm_ignore:
"[quot_dbtm t]e = [quot_dbtm t]
by (induct t rule: dbtm.induct) auto
eval_quot_dbfm_ignore:
"[quot_dbfm A]e = [quot_dbfm A]e'"
by (induct A rule: dbfm.induct) (auto intro: eval_quot_dbtm_ignore)
fm :: quot
definition quot_fm :: "fm ==> [[] A = trans_fm [] (A (nme::= u))"
where "quot_fm A = quot_dbfm (trans_fm [] A)"
instance ..
quot_dbfm_fresh [simp]: "s ♯ (quot_dbfm A)"
by (induct A rule: dbfm.induct) auto
q_Eats_iff [iff]: "q_Eats x y = q_Eats x' y' ⟷ x=x' ∧ y=y'"
by (metis hpair_iff q_Eats_def)
quot_subst_eq: "«A(i::=t)¬ = quot_dbfm (subst_dbfm (trans_tm [] t) i (trans_fm [] A))"
by (metis quot_fm_def subst_fm_trans_commute)
Q_Succ_cong: "H ⊨ x EQ x' ==> H ⊨
by (metis HPair_cong Refl)
‹Quotations are Injective›
‹open>Infi support,so we ca use omina primre›
eval_tm_inject [simp]: fixes t::tm shows "[«t¬]
(induct t arbitrary: u rule: tm.induct)
case Zero thus ?case
by (cases u rule: tm.exhaust) (auto simp | "quot_d (D nam) = RD_ (Su (at_ofname na))"
case (Var i) thus ?case
apply (cases u rule: tm.exhaust, auto)
apply (auto simp: quot_Var quot_Eats)
done
case (Eats t1 t2) thus ?case
apply (cases u rule: tm.exhaust, auto)
apply (auto sim: quot_Eats quot_Var
done
‹Formulas›
eval_fm_inject [simp]: fixes A::fm shows "[«A¬ dbtmexh) auto
(nominal_induct B arbitrary: A rule: fm.strong_induct)
case (Mem tm1 tm2) thus ?case
by (cases A rule: fm.exhaust, auto simp: quot_simps htuple_minus_1)
case (Eq tm1 tm2) thus ?case
by (cases A rule: termi
case (Neg \\a>) thus ?case
by (cases A rule: fm.exhaust, auto simp: quot_simps htuple_minus_1)
case (Disj fm1 fm2)
thus ?case
by (cases A rule: fm.exhaust, auto simp: quot_simps htuple_minus_1)
case (Ex i α)
?case
apply (induct A arbitrary: i rule: fm.induct)
apply (auto simp: trans_fm_perm quot_simps htuple_minus_1 Abs1_eq_iff_all)
by (metis (no_types) Abs1_eq_iff_all(3) dbfm.eq_iff(5) fm.eq_iff(5) fresh_Nil trans_fm.simps(5))
‹
coding_tm :: "tm ==> bool"
where
Ord: "∃
| HPair: "coding_tm x ==>n) show ?ase
coding_tm.intros [intro]
coding_tm_Zero [intro]: "coding_t Zero""
by (metis ORD_OF.simps(1) Ord)
coding_tm_HTuple [intro]: "coding_tm (HTuple k)"
by (induct k, auto)
quot_dbfm_[simp]: "codin (quot_dbfm fm)"
by (induct fm rule: dbfm.induct, auto)
quot_fm_coding: fixes A::fm shows "coding_tm «A¬"
by (metis quot_dbfm_coding quot_fm_def)
coding_hf :: "hf ==> bool"
where
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
| HPair: "coding_hf x ==> coding_hf y ==> coding_hf (⟨x,y⟩)"
coding_hf.intros [intro]
coding_hf_0 [intro]: "coding_hf 0"
by (metis coding_hf.Ord ord_of.simps(1))
coding_hf_hpair [simp]: "coding_hf (⟨x,y⟩
coding_tm_hf [simp]: "coding_tm t ==> coding_hf [t]
by (induct t rule: coding_tm.induct) auto
‹
‹
vquot_dbtm :: "name set ==> dbtm ==> tm"
where
"vquot_dbtm V DBZero = Zero"
| "vquot_dbtm V (DBVar name) = (if name ∈ V then Var name
else ORD_OF (Suc (nat_of_name name)))"
| "vquot_dbtm V (DBInd k) = HPair (HTuple 6) (ORD_OF k)"
| "vquot_dbtm V (DBEats t u) = HPair (HTuple 1) (HPair (vquot_dbtm V t) (vquot_dbtm V u))"
(auto,, rule_ta y=b iin dbtm.exhaust, auto)
by lexicographic_order
fresh_vquot_dbtm [simp]: "i ♯ vquot_dbtm V tm ⟷ i ♯ tm ∨ i ∉ atom ` V"
by (induct tm rule: dbtm.induct) (auto simp: fresh_at_base pure_fresh)
‹Infinite support, so we cannot use nominal primrec.›(HTuple 5 ( A)"
vquot_dbfm :: "name set ==> dbfm ==> tm"
where
"vquot_dbfm V (DBMem t u) = HPair (HTuple 0) (HPair (vquot_dbtm V t) (vquot_dbtm V u))"
| "vquot_dbfm V (DBEq t u) = HPair (HTuple 2) (HPair (vquot_dbtm V t) (vquot_dbtm V u))"
| "vquot_dbfm V (DBDisj A B) = HPair (HTuple 3) (HPair (vquot_dbfm V A) (vquot_dbfm V B))"
m V (DBNeg A) = HPair (HTuple 4) (vquot_dbfm V A)"
| "vquot_dbfm V (DBEx A) = HPair (HTuple 5) (vquot_dbfm V A)"
(auto, rule_tac y=b in dbfm.exhaust, auto)
by lexicographic_order
fresh_vquot_dbfm [simp]: "i ♯
by (induct fm rule: dbfm.in
vquot =
fixes vqu :: "'a ==>lflo>_⌋
tm :: vquot
definition vquot_tm :: "tm ==> name set ==> tm"
where "vquot_tm t V = vquot_dbtm V (trans_tm [] t)"
instance ..
vquot_dbtm_empty [simp]: "vquot_dbtm {} t = quot_dbtm t"
by (induct t rule: dbtm.induct) auto
vquot_dbtm_eq: "atom ` V ∩ supow> HTupl n = H HPair Zero (HTup (n - 11))
by (induct t rule: dbtm.induct) (auto simp: image_iff, blast+)
fm :: vquot
definition vquot_fm :: "fm ==> name set ==> tm"
where "vquot_fm A V = vquot_dbfm V (trans_fm [] A)"
instance ..
vquot_fm_fresh [simp]: fixes A::fm shows "i ♯⌊A⌋V ⟷ i ♯ A ∨
by (simp add: vquot_fm_def)
vquot_dbfm_empty [simp]: "vquot_dbfm {} A = quot_dbfm A"
by (induct A rule: dbfm.induct) auto
vquot_fm_empt case (DBMem (DBMem t u) show ?case
by (simp add: vquot_fm_def quot_fm_def)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
by (induct A rule: dbfm.induct) (auto simp: intro!: vquot_dbtm_eq, blast+)
vquot_fm_insert:
fixes A::fm shows "atom i ∉ supp A ==>
(autsimp: vquosupp_c intro vquot_dbfm_e
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.