Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Doc/Main/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 35 kB image not shown  

Quelle  Main_Doc.thy

  Sprache: Isabelle
 

(*<*)
theory Main_Doc
imports Main
begin

setup 
  Document_Output.antiquotation_pretty_source 🍋term_type_only (
    (fn ctxt => fn (t, T) =>
      (if fastype_of t = Sign.certify_typ (Proof_Context.theory_of ctxt) T then ()
       else error "term_type_only: type mismatch";
       Syntax.pretty_typ ctxt T))

setup 
  Document_Output.antiquotation_pretty_source 🍋expanded_typ A
    Syntax.pretty_typ

(*>*)
text
 
 \begin{abstract}
 This document lists the main types, functions and syntax provided by theory 🍋Main.
\end{abstract}

\section*{HOL}

The basic logic: 🍋x = y🍋True🍋False🍋¬ P🍋P Q,
🍋P Q🍋P Q🍋x. P🍋x. P🍋! x. P,
🍋THE x. P.
🪙

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋HOL.undefined🪙HOL.undefined\java.lang.NullPointerException
🍋HOL.default🪙HOL.default\java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
🍋¬ (x = y) & @{term[source]"¬ (x = y)"} & (🍋~=)java.lang.NullPointerException
@{term[source]"P Q"} & 🍋P Q java.lang.NullPointerException
🍋If x y z & @{term[source]"If x y z"}java.lang.NullPointerException
🍋Let e🪙1 (λx. e🪙2) & @{term[source]"Let e🪙1 (λx. e🪙2)"}java.lang.NullPointerException
\end{tabular}


\section*{Orderings}

A collection of classes defining basic orderings:
preorder, partial order, linear order, dense linear order and wellorder.
🪙

\begin{tabular}{@ {} l @ {~::~} l l @ {}}
🍋Orderings.less_eq🪙Orderings.less_eq & (🍋🚫)java.lang.NullPointerException
🍋Orderings.less🪙Orderings.less\java.lang.NullPointerException
🍋Orderings.Least🪙Orderings.Least\java.lang.NullPointerException
🍋Orderings.Greatest🪙Orderings.Greatest\java.lang.NullPointerException
🍋Orderings.min🪙Orderings.min\java.lang.NullPointerException
🍋Orderings.max🪙Orderings.max\java.lang.NullPointerException
@{const[source] top} & 🪙Orderings.top\java.lang.NullPointerException
@{const[source] bot} & 🪙Orderings.bot\java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
@{term[source]"x y"} & 🍋x y & (🍋>=)java.lang.NullPointerException
@{term[source]"x > y"} & 🍋x > y\java.lang.NullPointerException
🍋xy. P & @{term[source]"x. x y P"}java.lang.NullPointerException
🍋xy. P & @{term[source]"x. x y P"}java.lang.NullPointerException
\multicolumn{2}{@ {}l@ {}}{Similarly for $<$, $\geand $>$}java.lang.NullPointerException
🍋LEAST x. P & @{term[source]"Least (λx. P)"}java.lang.NullPointerException
🍋GREATEST x. P & @{term[source]"Greatest (λx. P)"}java.lang.NullPointerException
\end{tabular}


\section*{Lattices}

Classes semilattice, lattice, distributive lattice and complete lattice (the
latter in theory 🍋HOL.Set).

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Lattices.inf🪙Lattices.inf\java.lang.NullPointerException
🍋Lattices.sup🪙Lattices.sup\java.lang.NullPointerException
🍋Complete_Lattices.Inf & @{term_type_only Complete_Lattices.Inf "'a set ==> 'a::Inf"}java.lang.NullPointerException
🍋Complete_Lattices.Sup & @{term_type_only Complete_Lattices.Sup "'a set ==> 'a::Sup"}java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

Available via 🪙unbundle lattice_syntax.

\begin{supertabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
@{text[source]"x y"} & 🍋x y\java.lang.NullPointerException
@{text[source]"x y"} & 🍋x 🚫\java.lang.NullPointerException
@{text[source]"x y"} & 🍋inf x y\java.lang.NullPointerException
@{text[source]"x y"} & 🍋sup x y\java.lang.NullPointerException
@{text[source]"A"} & 🍋Inf A\java.lang.NullPointerException
@{text[source]"A"} & 🍋Sup A\java.lang.NullPointerException
@{text[source]""} & @{term[source] top}java.lang.NullPointerException
@{text[source]""} & @{term[source] bot}java.lang.NullPointerException
\end{supertabular}


\section*{Set}

\begin{tabular}{@ {} l @ {~::~} l l @ {}}
🍋Set.empty & @{term_type_only "Set.empty" "'a set"}java.lang.NullPointerException
🍋Set.insert & @{term_type_only insert "'a==>'a set==>'a set"}java.lang.NullPointerException
🍋Collect & @{term_type_only Collect "('a==>bool)==>'a set"}java.lang.NullPointerException
🍋Set.member & @{term_type_only Set.member "'a==>'a set==>bool"} & (🍋:)java.lang.NullPointerException
🍋Set.union & @{term_type_only Set.union "'a set==>'a set ==> 'a set"} & (??Un)java.lang.NullPointerException
🍋Set.inter & @{term_type_only Set.inter "'a set==>'a set ==> 'a set"} & (??Int)java.lang.NullPointerException
🍋Union & @{term_type_only Union "'a set set==>'a set"}java.lang.NullPointerException
🍋Inter & @{term_type_only Inter "'a set set==>'a set"}java.lang.NullPointerException
🍋Pow & @{term_type_only Pow "'a set ==>'a set set"}java.lang.NullPointerException
🍋UNIV & @{term_type_only UNIV "'a set"}java.lang.NullPointerException
🍋image & @{term_type_only image "('a==>'b)==>'a set==>'b set"}java.lang.NullPointerException
🍋Ball & @{term_type_only Ball "'a set==>('a==>bool)==>bool"}java.lang.NullPointerException
🍋Bex & @{term_type_only Bex "'a set==>('a==>bool)==>bool"}java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
{a🪙1,,a🪙n}insert a🪙1 ( (insert a🪙n {}))\java.lang.NullPointerException
🍋a A & @{term[source]"¬(x A)"}java.lang.NullPointerException
🍋A B & @{term[source]"A B"}java.lang.NullPointerException
🍋A B & @{term[source]"A < B"}java.lang.NullPointerException
@{term[source]"A 🪙 B"} & @{term[source]"B A"}java.lang.NullPointerException
@{term[source]"A 🪙 B"} & @{term[source]"B < A"}java.lang.NullPointerException
🍋{x. P} & @{term[source]"Collect (λx. P)"}java.lang.NullPointerException
{t | x🪙1 x🪙n. P}{v. x🪙1 x🪙n. v = t P}\java.lang.NullPointerException
@{term[source]"xI. A"} & @{term[source]"((λx. A) ` I)"} & (\texttt{UN})java.lang.NullPointerException
@{term[source]"x. A"} & @{term[source]"((λx. A) ` UNIV)"}java.lang.NullPointerException
@{term[source]"xI. A"} & @{term[source]"((λx. A) ` I)"} & (\texttt{INT})java.lang.NullPointerException
@{term[source]"x. A"} & @{term[source]"((λx. A) ` UNIV)"}java.lang.NullPointerException
🍋xA. P & @{term[source]"Ball A (λx. P)"}java.lang.NullPointerException
🍋xA. P & @{term[source]"Bex A (λx. P)"}java.lang.NullPointerException
🍋range f & @{term[source]"f ` UNIV"}java.lang.NullPointerException
\end{tabular}


\section*{Fun}

\begin{tabular}{@ {} l @ {~::~} l l @ {}}
🍋Fun.id🪙Fun.id\java.lang.NullPointerException
🍋Fun.comp🪙Fun.comp & (\texttt{o})java.lang.NullPointerException
🍋Fun.inj_on & @{term_type_only Fun.inj_on "('a==>'b)==>'a set==>bool"}java.lang.NullPointerException
🍋Fun.inj🪙Fun.inj\java.lang.NullPointerException
🍋Fun.surj🪙Fun.surj\java.lang.NullPointerException
🍋Fun.bij🪙Fun.bij\java.lang.NullPointerException
🍋Fun.bij_betw & @{term_type_only Fun.bij_betw "('a==>'b)==>'a set==>'b set==>bool"}java.lang.NullPointerException
🍋Fun.monotone_on🪙Fun.monotone_on\java.lang.NullPointerException
🍋Fun.monotone🪙Fun.monotone\java.lang.NullPointerException
🍋Fun.mono_on🪙Fun.mono_on\java.lang.NullPointerException
🍋Fun.mono🪙Fun.mono\java.lang.NullPointerException
🍋Fun.strict_mono_on🪙Fun.strict_mono_on\java.lang.NullPointerException
🍋Fun.strict_mono🪙Fun.strict_mono\java.lang.NullPointerException
🍋Fun.antimono🪙Fun.antimono\java.lang.NullPointerException
🍋Fun.fun_upd🪙Fun.fun_upd\java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
🍋fun_upd f x y & @{term[source]"fun_upd f x y"}java.lang.NullPointerException
f(x🪙1:=y🪙1,,x🪙n:=y🪙n)f(x🪙1:=y🪙1)(x🪙n:=y🪙n)\java.lang.NullPointerException
\end{tabular}


\section*{Hilbert\_Choice}

Hilbert's selection ($\varepsilon$) operator: 🍋SOME x. P.
🪙

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Hilbert_Choice.inv_into & @{term_type_only Hilbert_Choice.inv_into "'a set ==> ('a ==> 'b) ==> ('b ==> 'a)"}
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
🍋inv & @{term[source]"inv_into UNIV"}
\end{tabular}

\section*{Fixed Points}

Theory🍋HOL.Inductive.

Least and greatest fixed points in a complete lattice 🍋'a:

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Inductive.lfp🪙Inductive.lfp\java.lang.NullPointerException
🍋Inductive.gfp🪙Inductive.gfp\java.lang.NullPointerException
\end{tabular}

Note that in particular sets (🍋'a ==> bool) are complete lattices.

\section*{Sum\_Type}

Type constructor +.

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Sum_Type.Inl🪙Sum_Type.Inl\java.lang.NullPointerException
🍋Sum_Type.Inr🪙Sum_Type.Inr\java.lang.NullPointerException
🍋Sum_Type.Plus & @{term_type_only Sum_Type.Plus "'a set==>'b set==>('a+'b)set"}
\end{tabular}


\section*{Product\_Type}

Types 🍋unit and ×.

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Product_Type.Unity🪙Product_Type.Unity\java.lang.NullPointerException
🍋Pair🪙Pair\java.lang.NullPointerException
🍋fst🪙fst\java.lang.NullPointerException
🍋snd🪙snd\java.lang.NullPointerException
🍋case_prod🪙case_prod\java.lang.NullPointerException
🍋curry🪙curry\java.lang.NullPointerException
🍋Product_Type.Sigma & @{term_type_only Product_Type.Sigma "'a set==>('a==>'b set)==>('a*'b)set"}java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} ll @ {}}
🍋Pair a b & @{term[source]"Pair a b"}java.lang.NullPointerException
🍋case_prod (λx y. t) & @{term[source]"case_prod (λx y. t)"}java.lang.NullPointerException
🍋A × B &  Sigma A (λ🍋\_. B)
\end{tabular}

Pairs may be nested. Nesting to the right is printed as a tuple,
e.g.\mbox{🍋(a,b,c)is really \mbox{(a, (b, c)).}
Pattern matching with pairs and tuples extends to all binders,
e.g.\mbox{🍋(x,y)A. P,} 🍋{(x,y). P}, etc.


\section*{Relation}

\begin{supertabular}{@ {} l @ {~::~} l @ {}}
🍋Relation.converse & @{term_type_only Relation.converse "('a * 'b)set ==> ('b*'a)set"}java.lang.NullPointerException
🍋Relation.relcomp & @{term_type_only Relation.relcomp "('a*'b)set==>('b*'c)set==>('a*'c)set"}java.lang.NullPointerException
🍋Relation.Image & @{term_type_only Relation.Image "('a*'b)set==>'a set==>'b set"}java.lang.NullPointerException
🍋Relation.inv_image & @{term_type_only Relation.inv_image "('a*'a)set==>('b==>'a)==>('b*'b)set"}java.lang.NullPointerException
🍋Relation.Id_on & @{term_type_only Relation.Id_on "'a set==>('a*'a)set"}java.lang.NullPointerException
🍋Relation.Id & @{term_type_only Relation.Id "('a*'a)set"}java.lang.NullPointerException
🍋Relation.Domain & @{term_type_only Relation.Domain "('a*'b)set==>'a set"}java.lang.NullPointerException
🍋Relation.Range & @{term_type_only Relation.Range "('a*'b)set==>'b set"}java.lang.NullPointerException
🍋Relation.Field & @{term_type_only Relation.Field "('a*'a)set==>'a set"}java.lang.NullPointerException
🍋Relation.refl_on & @{term_type_only Relation.refl_on "'a set==>('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.refl & @{term_type_only Relation.refl "('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.sym & @{term_type_only Relation.sym "('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.antisym & @{term_type_only Relation.antisym "('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.trans & @{term_type_only Relation.trans "('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.irrefl & @{term_type_only Relation.irrefl "('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.total_on & @{term_type_only Relation.total_on "'a set==>('a*'a)set==>bool"}java.lang.NullPointerException
🍋Relation.total & @{term_type_only Relation.total "('a*'a)set==>bool"}java.lang.NullPointerException
\end{supertabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
🍋converse r & @{term[source]"converse r"} & (🍋^-1)
\end{tabular}
🪙

\noindent
Type synonym 🍋'a rel = @{expanded_typ "'a rel"}

\section*{Equiv\_Relations}

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Equiv_Relations.equiv & @{term_type_only Equiv_Relations.equiv "'a set ==> ('a*'a)set==>bool"}java.lang.NullPointerException
🍋Equiv_Relations.quotient & @{term_type_only Equiv_Relations.quotient "'a set ==> ('a × 'a) set ==> 'a set set"}java.lang.NullPointerException
🍋Equiv_Relations.congruent & @{term_type_only Equiv_Relations.congruent "('a*'a)set==>('a==>'b)==>bool"}java.lang.NullPointerException
🍋Equiv_Relations.congruent2 & @{term_type_only Equiv_Relations.congruent2 "('a*'a)set==>('b*'b)set==>('a==>'b==>'c)==>bool"}java.lang.NullPointerException
%@ {const Equiv_Relations.} & @ {term_type_only Equiv_Relations. ""}java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
🍋congruent r f & @{term[source]"congruent r f"}java.lang.NullPointerException
🍋congruent2 r r f & @{term[source]"congruent2 r r f"}java.lang.NullPointerException
\end{tabular}


\section*{Transitive\_Closure}

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Transitive_Closure.rtrancl & @{term_type_only Transitive_Closure.rtrancl "('a*'a)set==>('a*'a)set"}java.lang.NullPointerException
🍋Transitive_Closure.trancl & @{term_type_only Transitive_Closure.trancl "('a*'a)set==>('a*'a)set"}java.lang.NullPointerException
🍋Transitive_Closure.reflcl & @{term_type_only Transitive_Closure.reflcl "('a*'a)set==>('a*'a)set"}java.lang.NullPointerException
🍋Transitive_Closure.acyclic & @{term_type_only Transitive_Closure.acyclic "('a*'a)set==>bool"}java.lang.NullPointerException
🍋compower & @{term_type_only "(^^) :: ('a*'a)set==>nat==>('a*'a)set" "('a*'a)set==>nat==>('a*'a)set"}java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
🍋rtrancl r & @{term[source]"rtrancl r"} & (🍋^*)java.lang.NullPointerException
🍋trancl r & @{term[source]"trancl r"} & (🍋^+)java.lang.NullPointerException
🍋reflcl r & @{term[source]"reflcl r"} & (🍋^=)
\end{tabular}


\section*{Algebra}

Theories 🍋HOL.Groups🍋HOL.Rings,
🍋HOL.Euclidean_Rings and 🍋HOL.Fields
define a large collection of classes describing common algebraic
structures from semigroups up to fields. Everything is done in terms of
overloaded operators:

\begin{tabular}{@ {} l @ {~::~} l l @ {}}
0🪙zero\java.lang.NullPointerException
1🪙one\java.lang.NullPointerException
🍋plus🪙plus\java.lang.NullPointerException
🍋minus🪙minus\java.lang.NullPointerException
🍋uminus🪙uminus & (🍋-)java.lang.NullPointerException
🍋times🪙times\java.lang.NullPointerException
🍋inverse🪙inverse\java.lang.NullPointerException
🍋divide🪙divide\java.lang.NullPointerException
🍋abs🪙abs\java.lang.NullPointerException
🍋sgn🪙sgn\java.lang.NullPointerException
🍋Rings.dvd🪙Rings.dvd\java.lang.NullPointerException
🍋divide🪙divide\java.lang.NullPointerException
🍋modulo🪙modulo\java.lang.NullPointerException
\end{tabular}

\subsubsection*{Syntax}

\begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
🍋x & @{term[source] "abs x"}
\end{tabular}


\section*{Nat}

🪙nat
🪙

\begin{tabular}{@ {} lllllll @ {}}
🍋(+) :: nat ==> nat ==> nat &
🍋(-) :: nat ==> nat ==> nat &
🍋(*) :: nat \ nat \ nat\ &
 🍋(^) :: nat ==> nat ==> nat &
🍋(div) :: nat ==> nat ==> nat&
🍋(mod) :: nat ==> nat ==> nat&
🍋(dvd) :: nat ==> nat ==> bool\java.lang.NullPointerException
🍋() :: nat ==> nat ==> bool &
🍋(🚫:: nat ==> nat ==> bool &
🍋min :: nat ==> nat ==> nat &
🍋max :: nat ==> nat ==> nat &
🍋Min :: nat set ==> nat &
🍋Max :: nat set ==> nat\java.lang.NullPointerException
\end{tabular}

\begin{tabular}{@ {} l @ {~::~} l @ {}}
🍋Nat.of_nat🪙Nat.of_nat\java.lang.NullPointerException
🍋(^^) :: ('a ==> 'a) ==> nat ==> 'a ==> 'a &
  @{term_type_only "(^^) :: ('a ==> 'a) ==> nat ==> 'a ==> 'a" "('a ==> 'a) ==> nat ==> 'a ==> 'a"}
\end{tabular}

\section*{Int}

Type 🍋int
🪙

\begin{tabular}{@ {} llllllll @ {}}
🍋(+) :: int ==> int ==> int &
🍋(-) :: int ==> int ==> int &
🍋uminus :: int ==> int &
🍋(*) :: int \ int \ int\ &

 🍋(^) :: int ==> nat ==> int &

 🍋(div) :: int ==> int ==> int&
 🍋(mod) :: int ==> int ==> int&
java.lang.NullPointerException
 🍋() :: int ==> int ==> bool &
 🍋(🚫:: int ==> int ==> bool &
 🍋min :: int ==> int ==> int &
 🍋max :: int ==> int ==> int &
 🍋Min :: int set ==> int &
java.lang.NullPointerException
 🍋abs :: int ==> int &
java.lang.NullPointerException
 \end{tabular}
 
 \begin{tabular}{@ {} l @ {~::~} l l @ {}}
java.lang.NullPointerException
java.lang.NullPointerException
 🍋Int.Ints & @{term_type_only Int.Ints "'a::ring_1 set"} & (🍋Ints)
 \end{tabular}
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
 🍋of_nat::nat==>int & @{term[source]"of_nat"}\\
 \end{tabular}
 
 
 \section*{Finite\_Set}
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
 🍋Finite_Set.finite & @{term_type_only Finite_Set.finite "'a set==>bool"}\\
 🍋Finite_Set.card & @{term_type_only Finite_Set.card "'a set ==> nat"}\\
 🍋Finite_Set.fold & @{term_type_only Finite_Set.fold "('a ==> 'b ==> 'b) ==> 'b ==> 'a set ==> 'b"}\\
 \end{tabular}
 
 
 \section*{Lattices\_Big}
 
 \begin{tabular}{@ {} l @ {~::~} l l @ {}}
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 \end{tabular}
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
 🍋ARG_MIN f x. P & @{term[source]"arg_min f (λx. P)"}\\
 🍋ARG_MAX f x. P & @{term[source]"arg_max f (λx. P)"}\\
 \end{tabular}
 
 
 \section*{Groups\_Big}
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
 🍋Groups_Big.sum & @{term_type_only Groups_Big.sum "('a ==> 'b) ==> 'a set ==> 'b::comm_monoid_add"}\\
 🍋Groups_Big.prod & @{term_type_only Groups_Big.prod "('a ==> 'b) ==> 'a set ==> 'b::comm_monoid_mult"}\\
 \end{tabular}
 
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l l @ {}}
 🍋sum (λx. x) A & @{term[source]"sum (λx. x) A"} & (🍋SUM)\\
 🍋sum (λx. t) A & @{term[source]"sum (λx. t) A"}\\
java.lang.NullPointerException
 \multicolumn{2}{@ {}l@ {}}{Similarly for instead of } & (🍋PROD)\\
 \end{tabular}
 
 
 \section*{Wellfounded}
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
 🍋Wellfounded.wf & @{term_type_only Wellfounded.wf "('a*'a)set==>bool"}\\
 🍋Wellfounded.acc & @{term_type_only Wellfounded.acc "('a*'a)set==>'a set"}\\
 🍋Wellfounded.measure & @{term_type_only Wellfounded.measure "('a==>nat)==>('a*'a)set"}\\
 🍋Wellfounded.lex_prod & @{term_type_only Wellfounded.lex_prod "('a*'a)set==>('b*'b)set==>(('a*'b)*('a*'b))set"}\\
 🍋Wellfounded.mlex_prod & @{term_type_only Wellfounded.mlex_prod "('a==>nat)==>('a*'a)set==>('a*'a)set"}\\
 🍋Wellfounded.less_than & @{term_type_only Wellfounded.less_than "(nat*nat)set"}\\
 🍋Wellfounded.pred_nat & @{term_type_only Wellfounded.pred_nat "(nat*nat)set"}\\
 \end{tabular}
 
 
 \section*{Set\_Interval} % 🍋HOL.Set_Interval
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
 🍋lessThan & @{term_type_only lessThan "'a::ord ==> 'a set"}\\
 🍋atMost & @{term_type_only atMost "'a::ord ==> 'a set"}\\
 🍋greaterThan & @{term_type_only greaterThan "'a::ord ==> 'a set"}\\
 🍋atLeast & @{term_type_only atLeast "'a::ord ==> 'a set"}\\
 🍋greaterThanLessThan & @{term_type_only greaterThanLessThan "'a::ord ==> 'a ==> 'a set"}\\
 🍋atLeastLessThan & @{term_type_only atLeastLessThan "'a::ord ==> 'a ==> 'a set"}\\
 🍋greaterThanAtMost & @{term_type_only greaterThanAtMost "'a::ord ==> 'a ==> 'a set"}\\
 🍋atLeastAtMost & @{term_type_only atLeastAtMost "'a::ord ==> 'a ==> 'a set"}\\
 \end{tabular}
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
 🍋lessThan y & @{term[source] "lessThan y"}\\
 🍋atMost y & @{term[source] "atMost y"}\\
 🍋greaterThan x & @{term[source] "greaterThan x"}\\
 🍋atLeast x & @{term[source] "atLeast x"}\\
 🍋greaterThanLessThan x y & @{term[source] "greaterThanLessThan x y"}\\
 🍋atLeastLessThan x y & @{term[source] "atLeastLessThan x y"}\\
 🍋greaterThanAtMost x y & @{term[source] "greaterThanAtMost x y"}\\
 🍋atLeastAtMost x y & @{term[source] "atLeastAtMost x y"}\\
 @{term[source] "in. A"} & @{term[source] "i {..n}. A"}\\
 @{term[source] "i🚫 A"} & @{term[source] "i {..🚫. A"}\\
 \multicolumn{2}{@ {}l@ {}}{Similarly for instead of }\\
 🍋sum (λx. t) {a..b} & @{term[source] "sum (λx. t) {a..b}"}\\
 🍋sum (λx. t) {a..🚫 & @{term[source] "sum (λx. t) {a..🚫"}\\
 🍋sum (λx. t) {..b} & @{term[source] "sum (λx. t) {..b}"}\\
 🍋sum (λx. t) {..🚫 & @{term[source] "sum (λx. t) {..🚫"}\\
 \multicolumn{2}{@ {}l@ {}}{Similarly for instead of }\\
 \end{tabular}
 
 
 \section*{Power}
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
 🍋Power.power & 🪙Power.power
 \end{tabular}
 
 
 \section*{Option}
 
 🪙option
 🪙
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
java.lang.NullPointerException
 🍋map_option & @{typ[source]"('a ==> 'b) ==> 'a option ==> 'b option"}\\
 🍋set_option & @{term_type_only set_option "'a option ==> 'a set"}\\
 🍋Option.bind & @{term_type_only Option.bind "'a option ==> ('a ==> 'b option) ==> 'b option"}
 \end{tabular}
 
 \section*{List}
 
 🪙list
 🪙
 
 \begin{supertabular}{@ {} l @ {~::~} l @ {}}
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 🍋List.lenlex & @{term_type_only List.lenlex "('a*'a)set==>('a list * 'a list)set"}\\
 🍋List.lex & @{term_type_only List.lex "('a*'a)set==>('a list * 'a list)set"}\\
 🍋List.lexn & @{term_type_only List.lexn "('a*'a)set==>nat==>('a list * 'a list)set"}\\
 🍋List.lexord & @{term_type_only List.lexord "('a*'a)set==>('a list * 'a list)set"}\\
 🍋List.listrel & @{term_type_only List.listrel "('a*'b)set==>('a list * 'b list)set"}\\
 🍋List.listrel1 & @{term_type_only List.listrel1 "('a*'a)set==>('a list * 'a list)set"}\\
 🍋List.lists & @{term_type_only List.lists "'a set==>'a list set"}\\
 🍋List.listset & @{term_type_only List.listset "'a set list ==> 'a list set"}\\
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 🍋List.measures & @{term_type_only List.measures "('a==>nat)list==>('a*'a)set"}\\
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 🍋List.set & @{term_type_only List.set "'a list ==> 'a set"}\\
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 \end{supertabular}
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
java.lang.NullPointerException
 🍋[m..🚫 & @{term[source]"upt m n"}\\
 🍋[i..j] & @{term[source]"upto i j"}\\
 🍋xs[n := x] & @{term[source]"list_update xs n x"}\\
 🍋xxs. e & @{term[source]"listsum (map (λx. e) xs)"}\\
 \end{tabular}
 🪙
 
 Filter input syntax [pat e. b], where
 pat is a tuple pattern, which stands for 🍋filter (λpat. b) e.
 
 List comprehension input syntax: [e. q🪙1, , q🪙n] where each
 qualifier q🪙i is either a generator \mbox{pat e} or a
 guard, i.e.boolean expression.
 
 \section*{Map}
 
 Maps model partial functions and are often used as finite tables. However,
 the domain of a map may be infinite.
 
 \begin{tabular}{@ {} l @ {~::~} l @ {}}
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 🍋Map.restrict_map & @{term_type_only Map.restrict_map "('a==>'b option)==>'a set==>('a==>'b option)"}\\
 🍋Map.dom & @{term_type_only Map.dom "('a==>'b option)==>'a set"}\\
 🍋Map.ran & @{term_type_only Map.ran "('a==>'b option)==>'b set"}\\
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
 \end{tabular}
 
 \subsubsection*{Syntax}
 
 \begin{tabular}{@ {} l @ {\quad$\equiv$\quad} l @ {}}
 🍋Map.empty & @{term[source] "λ_. None"}\\
 🍋m(x:=Some y) & @{term[source]"m(x:=Some y)"}\\
 m(x🪙1y🪙1,,x🪙ny🪙n) & @{text[source]"m(xlick='alert("unbekannte/s Formatierung/Symbol sub");' ontouchend='alert("unbekannte/s Formatierung/Symbol sub");' >🪙1y🪙1)(x🪙ny🪙n)"}\\
 [x🪙1y🪙1,,x🪙ny🪙n] & @{text[source]"Map.empty(xick='alert("unbekannte/s Formatierung/Symbol sub");' ontouchend='alert("unbekannte/s Formatierung/Symbol sub");' >🪙1y🪙1,,x🪙ny🪙n)"}\\
 🍋map_upds m xs ys & @{term[source]"map_upds m xs ys"}\\
 \end{tabular}
 
 \section*{Infix operators in Main} % 🍋Main
 
 \begin{center}
 \begin{tabular}{llll}
  & Operator & precedence & associativity \\
 \hline
 Meta-logic & ==> & 1 & right \\
 & & 2 \\
 \hline
 Logic & & 35 & right \\
 & & 30 & right \\
 &, & 25 & right\\
 &=, & 50 & left\\
 \hline
 Orderings & , 🚫close>, , > & 50 \\
 \hline
 Sets & , , 🪙, 🪙 & 50 \\
 &, & 50 \\
 & & 70 & left \\
 & & 65 & left \\
 \hline
 Functions and Relations & & 55 & left\\
 &` & 90 & right\\
 &O & 75 & right\\
 &`` & 90 & right\\
 &^^ & 80 & right\\
 \hline
 Numbers & +, - & 65 & left \\
 &*, / & 70 & left \\
 &div, mod & 70 & left\\
 &^ & 80 & right\\
 &dvd & 50 \\
 \hline
 Lists & #, @ & 65 & right\\
 &! & 100 & left
 \end{tabular}
 \end{center}
 
(*<*)
end
(*>*)

Messung V0.5 in Prozent
C=-10 H=-880 G=622

¤ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet am  2026-04-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.