Maj terminée. Pour consulter la release notes associée voici le lien :
https://about.gitlab.com/releases/2021/07/07/critical-security-release-gitlab-14-0-4-released/

Une nouvelle version du portail de gestion des comptes externes sera mise en production lundi 09 août. Elle permettra d'allonger la validité d'un compte externe jusqu'à 3 ans. Pour plus de détails sur cette version consulter : https://doc-si.inria.fr/x/FCeS

Commit 96f69b5e authored by Stefan Berghofer's avatar Stefan Berghofer Committed by Sylvain Dailler
Browse files

Improved checking of realizations for Isabelle

Rather than using pre-generated files, the *.xml files describing the
Why3 theories to be realized are generated again before compiling the
corresponding Isabelle theories. Instead of the generated *.xml files,
we use a file containing their hash values to detect changes in the
realizations. Since there may be different realizations for different
versions of Isabelle, we provide a file with hash values for every
supported version of Isabelle. The files containing the hash values
can be updated via the update-isabelle target.

(cherry picked from commit 039e0f0a321c36ea3bea231e4376f5833cd2ad8a)
parent cba18b81
......@@ -126,7 +126,7 @@ TOTARGET = > "$@" || (RV=$$?; rm -f "$@"; exit $${RV})
# Variables added for checking realizations
GENERATED_PREFIX_COQ="lib/coq"
GENERATED_PREFIX_ISABELLE="lib/isabelle"
GENERATED_PREFIX_ISABELLE=lib/isabelle
###############
# main target
......@@ -1283,28 +1283,30 @@ clean::
rm -f $(ISABELLEVERSIONSPECIFICTARGETS)
ISABELLELIBS_INT_FILES = Abs ComputerDivision Div2 EuclideanDivision Int MinMax Power
ISABELLELIBS_INT = $(addsuffix .xml, $(addprefix lib/isabelle/int/, $(ISABELLELIBS_INT_FILES)))
ISABELLELIBS_INT = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/int/, $(ISABELLELIBS_INT_FILES)))
ISABELLELIBS_BOOL_FILES = Bool
ISABELLELIBS_BOOL = $(addsuffix .xml, $(addprefix lib/isabelle/bool/, $(ISABELLELIBS_BOOL_FILES)))
ISABELLELIBS_BOOL = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/bool/, $(ISABELLELIBS_BOOL_FILES)))
ISABELLELIBS_REAL_FILES = Real RealInfix Abs MinMax FromInt Truncate Square ExpLog Trigonometry PowerInt # not yet realized : PowerReal Hyperbolic Polar
ISABELLELIBS_REAL = $(addsuffix .xml, $(addprefix lib/isabelle/real/, $(ISABELLELIBS_REAL_FILES)))
ISABELLELIBS_REAL = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/real/, $(ISABELLELIBS_REAL_FILES)))
ISABELLELIBS_NUMBER_FILES = Divisibility Gcd Parity Prime Coprime
ISABELLELIBS_NUMBER = $(addsuffix .xml, $(addprefix lib/isabelle/number/, $(ISABELLELIBS_NUMBER_FILES)))
ISABELLELIBS_NUMBER = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/number/, $(ISABELLELIBS_NUMBER_FILES)))
ISABELLELIBS_SET_FILES = Set Fset
ISABELLELIBS_SET = $(addsuffix .xml, $(addprefix lib/isabelle/set/, $(ISABELLELIBS_SET_FILES)))
ISABELLELIBS_SET = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/set/, $(ISABELLELIBS_SET_FILES)))
ISABELLELIBS_MAP_FILES = Map Const Occ MapPermut MapInjection
ISABELLELIBS_MAP = $(addsuffix .xml, $(addprefix lib/isabelle/map/, $(ISABELLELIBS_MAP_FILES)))
ISABELLELIBS_MAP = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/map/, $(ISABELLELIBS_MAP_FILES)))
ISABELLELIBS_LIST_FILES = List Length Mem Nth NthNoOpt NthLength HdTl NthHdTl Append NthLengthAppend Reverse HdTlNoOpt RevAppend Combine Distinct NumOcc Permut
ISABELLELIBS_LIST = $(addsuffix .xml, $(addprefix lib/isabelle/list/, $(ISABELLELIBS_LIST_FILES)))
ISABELLELIBS_LIST = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/list/, $(ISABELLELIBS_LIST_FILES)))
ISABELLELIBS_BV_FILES = Pow2int BV8 BV16 BV32 BV64 BVConverter_32_64 BVConverter_16_64 BVConverter_8_64 BVConverter_16_32 BVConverter_8_32 BVConverter_8_16
ISABELLELIBS_BV = $(addsuffix .xml, $(addprefix lib/isabelle/bv/, $(ISABELLELIBS_BV_FILES)))
ISABELLELIBS_BV = $(addsuffix .xml, $(addprefix $(GENERATED_PREFIX_ISABELLE)/bv/, $(ISABELLELIBS_BV_FILES)))
ISABELLELIBS = $(ISABELLELIBS_INT) $(ISABELLELIBS_BOOL) $(ISABELLELIBS_REAL) $(ISABELLELIBS_NUMBER) $(ISABELLELIBS_SET) $(ISABELLELIBS_MAP) $(ISABELLELIBS_LIST) $(ISABELLELIBS_OPTION) $(ISABELLELIBS_BV)
drivers/isabelle-realizations.aux: Makefile
$(SHOW) 'Generate $@'
......@@ -1336,7 +1338,10 @@ else
ISABELLE_TARGET_DIR=$(LIBDIR)/why3/isabelle
endif
update-isabelle: $(ISABELLELIBS_INT) $(ISABELLELIBS_BOOL) $(ISABELLELIBS_REAL) $(ISABELLELIBS_NUMBER) $(ISABELLELIBS_SET) $(ISABELLELIBS_MAP) $(ISABELLELIBS_LIST) $(ISABELLELIBS_OPTION) $(ISABELLELIBS_BV)
$(GENERATED_PREFIX_ISABELLE)/realizations.@ISABELLEVERSION@: $(ISABELLELIBS)
$(HIDE)sha1sum $^ | sed -e "s,$(GENERATED_PREFIX_ISABELLE)/,," > $@
update-isabelle: $(GENERATED_PREFIX_ISABELLE)/realizations.@ISABELLEVERSION@
$(ISABELLELIBS_INT): bin/why3realize.@OCAMLBEST@ drivers/isabelle-realizations.aux \
$(ISABELLEREALIZEDRV) drivers/isabelle-common.gen theories/int.why
......@@ -1392,11 +1397,9 @@ $(ISABELLELIBS_BV): bin/why3realize.@OCAMLBEST@ drivers/isabelle-realizations.au
$(HIDE)mkdir -p $(GENERATED_PREFIX_ISABELLE)/bv
$(HIDE)WHY3CONFIG="" bin/why3realize.@OCAMLBEST@ -L theories -D $(ISABELLEREALIZEDRV) -T bv.$(notdir $(basename $@)) -o $(GENERATED_PREFIX_ISABELLE)/bv/
$(GENERATED_PREFIX_ISABELLE)/last_build: $(ISABELLEVERSIONSPECIFICTARGETS)
# $(ISABELLELIBS_INT) $(ISABELLELIBS_BOOL) $(ISABELLELIBS_REAL) $(ISABELLELIBS_NUMBER) $(ISABELLELIBS_SET) $(ISABELLELIBS_MAP) $(ISABELLELIBS_LIST) $(ISABELLELIBS_OPTION) $(ISABELLELIBS_BV)
ifeq (@enable_isabelle_libs@,yes)
$(GENERATED_PREFIX_ISABELLE)/last_build: $(ISABELLEVERSIONSPECIFICTARGETS) $(ISABELLELIBS)
ifneq (@enable_local@,yes)
cp -r $(GENERATED_PREFIX_ISABELLE) "$(LIBDIR)/why3"
endif
......@@ -1410,41 +1413,20 @@ endif
echo " [$(ISABELLE_TARGET_DIR)]"; \
fi)
install_no_local::
$(INSTALL_DATA) drivers/isabelle-realizations.aux $(DATADIR)/why3/drivers/
install_no_local:: $(GENERATED_PREFIX_ISABELLE)/last_build
install_local:: $(GENERATED_PREFIX_ISABELLE)/last_build
clean::
rm -f $(GENERATED_PREFIX_ISABELLE)/*/*.xml
# do not update isabelle realizations systematically
# all: update-isabelle
# Removed cleaning of xml
#clean::
# rm -f $(GENERATED_PREFIX_ISABELLE)/*/*.xml
endif
else
all: drivers/isabelle-realizations.aux
install_no_local::
$(INSTALL_DATA) drivers/isabelle-realizations.aux $(DATADIR)/why3/drivers/
install_no_local:: $(GENERATED_PREFIX_ISABELLE)/last_build
install_local:: $(GENERATED_PREFIX_ISABELLE)/last_build
# do not update isabelle realizations systematically
# all: update-isabelle
# Removed cleaning of xml
#clean::
# rm -f $(GENERATED_PREFIX_ISABELLE)/*/*.xml
endif
all: drivers/isabelle-realizations.aux
clean::
rm -f drivers/isabelle-realizations.aux
......
......@@ -6,15 +6,13 @@ mkdir -p $TMPREAL/lib
res=0
echo "Testing Isabelle realizations"
# First copy current realizations in a tmp directory
cp -r lib/isabelle $TMPREAL/lib/
# We want to use the makefile to be sure to check exhaustively the
# realizations that are built
make GENERATED_PREFIX_ISABELLE="$TMPREAL/lib/isabelle" update-isabelle > /dev/null 2> /dev/null
LANG=C diff -r -q -x '*.bak' -x '*~' -x '*.aux' lib/isabelle $TMPREAL/lib/isabelle > $TMPREAL/diff-isabelle
LANG=C diff lib/isabelle $TMPREAL/lib/isabelle/realizations.* > $TMPREAL/diff-isabelle
if test -s "$TMPREAL/diff-isabelle"; then
echo "Isabelle realizations FAILED, please regenerate and prove them"
sed -e "s,$TMPREAL/lib/isabelle,new," $TMPREAL/diff-isabelle
cat $TMPREAL/diff-isabelle
res=1
else
echo "Isabelle realizations OK"
......
<theory name="bool.Bool" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/></realized><lemma name="andb_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="HOL.conj"/><var name="x"><type name="HOL.bool"/></var><var name="y"><type name="HOL.bool"/></var></app><case><var name="x"><type name="HOL.bool"/></var><pat><const name="HOL.True"/><var name="y"><type name="HOL.bool"/></var></pat><pat><const name="HOL.False"/><const name="HOL.False"/></pat></case></app></concls></lemma><lemma name="orb_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="HOL.disj"/><var name="x"><type name="HOL.bool"/></var><var name="y"><type name="HOL.bool"/></var></app><case><var name="x"><type name="HOL.bool"/></var><pat><const name="HOL.False"/><var name="y"><type name="HOL.bool"/></var></pat><pat><const name="HOL.True"/><const name="HOL.True"/></pat></case></app></concls></lemma><lemma name="notb_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="HOL.Not"/><var name="x"><type name="HOL.bool"/></var></app><case><var name="x"><type name="HOL.bool"/></var><pat><const name="HOL.False"/><const name="HOL.True"/></pat><pat><const name="HOL.True"/><const name="HOL.False"/></pat></case></app></concls></lemma><lemma name="xorb_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="x"><type name="HOL.bool"/></var><var name="y"><type name="HOL.bool"/></var></app></app><case><var name="x"><type name="HOL.bool"/></var><pat><const name="HOL.False"/><var name="y"><type name="HOL.bool"/></var></pat><pat><const name="HOL.True"/><app><const name="HOL.Not"/><var name="y"><type name="HOL.bool"/></var></app></pat></case></app></concls></lemma><lemma name="implb_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="HOL.implies"/><var name="x"><type name="HOL.bool"/></var><var name="y"><type name="HOL.bool"/></var></app><case><var name="x"><type name="HOL.bool"/></var><pat><const name="HOL.False"/><const name="HOL.True"/></pat><pat><const name="HOL.True"/><var name="y"><type name="HOL.bool"/></var></pat></case></app></concls></lemma></theory>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<theory name="bv.BVConverter_16_32" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV32"/><require name="bv.BV16"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_16_32"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV32"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_16_32"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV16"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_16_32"><prems><app><const name="ule" path="bv.BV32"><pred><type name="t" path="bv.BV32"/><type name="t" path="bv.BV32"/></pred></const><var name="x"><type name="t" path="bv.BV32"/></var><num val="65535"><type name="t" path="bv.BV32"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV16"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_16_32"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV32"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="bv.BVConverter_16_64" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV64"/><require name="bv.BV16"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_16_64"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV64"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_16_64"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV16"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_16_64"><prems><app><const name="ule" path="bv.BV64"><pred><type name="t" path="bv.BV64"/><type name="t" path="bv.BV64"/></pred></const><var name="x"><type name="t" path="bv.BV64"/></var><num val="65535"><type name="t" path="bv.BV64"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV16"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_16_64"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV64"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="bv.BVConverter_32_64" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV64"/><require name="bv.BV32"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_32_64"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV64"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_32_64"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV32"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_32_64"><prems><app><const name="ule" path="bv.BV64"><pred><type name="t" path="bv.BV64"/><type name="t" path="bv.BV64"/></pred></const><var name="x"><type name="t" path="bv.BV64"/></var><num val="4294967295"><type name="t" path="bv.BV64"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV32"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_32_64"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV64"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="bv.BVConverter_8_16" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV16"/><require name="bv.BV8"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_8_16"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV16"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_8_16"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV8"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_8_16"><prems><app><const name="ule" path="bv.BV16"><pred><type name="t" path="bv.BV16"/><type name="t" path="bv.BV16"/></pred></const><var name="x"><type name="t" path="bv.BV16"/></var><num val="255"><type name="t" path="bv.BV16"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV16"/><type name="t" path="bv.BV8"/></fun></const><var name="x"><type name="t" path="bv.BV16"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_8_16"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app><app><const name="tqtint" path="bv.BV16"><fun><type name="t" path="bv.BV16"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV16"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="bv.BVConverter_8_32" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV32"/><require name="bv.BV8"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_8_32"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV32"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_8_32"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV8"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_8_32"><prems><app><const name="ule" path="bv.BV32"><pred><type name="t" path="bv.BV32"/><type name="t" path="bv.BV32"/></pred></const><var name="x"><type name="t" path="bv.BV32"/></var><num val="255"><type name="t" path="bv.BV32"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV32"/><type name="t" path="bv.BV8"/></fun></const><var name="x"><type name="t" path="bv.BV32"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_8_32"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app><app><const name="tqtint" path="bv.BV32"><fun><type name="t" path="bv.BV32"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV32"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="bv.BVConverter_8_64" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="bool.Bool"/><require name="int.Int"/><require name="int.Abs"/><require name="int.EuclideanDivision"/><require name="bv.Pow2int"/><require name="bv.BV64"/><require name="bv.BV8"/></realized><param name="toBig" altname="toBig" path="bv.BVConverter_8_64"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV64"/></fun></param><param name="toSmall" altname="toSmall" path="bv.BVConverter_8_64"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV8"/></fun></param><lemma name="toSmall_to_uint" altname="toSmall_to_uint" path="bv.BVConverter_8_64"><prems><app><const name="ule" path="bv.BV64"><pred><type name="t" path="bv.BV64"/><type name="t" path="bv.BV64"/></pred></const><var name="x"><type name="t" path="bv.BV64"/></var><num val="255"><type name="t" path="bv.BV64"/></num></app></prems><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><app><const name="toSmall" local="true"><fun><type name="t" path="bv.BV64"/><type name="t" path="bv.BV8"/></fun></const><var name="x"><type name="t" path="bv.BV64"/></var></app></app></app></concls></lemma><lemma name="toBig_to_uint" altname="toBig_to_uint" path="bv.BVConverter_8_64"><prems/><concls><app><const name="HOL.eq"/><app><const name="tqtint" path="bv.BV8"><fun><type name="t" path="bv.BV8"/><type name="Int.int"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app><app><const name="tqtint" path="bv.BV64"><fun><type name="t" path="bv.BV64"/><type name="Int.int"/></fun></const><app><const name="toBig" local="true"><fun><type name="t" path="bv.BV8"/><type name="t" path="bv.BV64"/></fun></const><var name="x"><type name="t" path="bv.BV8"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
This diff is collapsed.
<theory name="int.Abs" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/></realized><lemma name="abs_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.abs_class.abs"/><var name="x"><type name="Int.int"/></var></app><app><const name="HOL.If"/><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var><app><const name="Groups.uminus_class.uminus"/><var name="x"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Abs_le" altname="Abs_le" path="int.Abs"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.abs_class.abs"/><var name="x"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var></app><app><const name="HOL.conj"/><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.uminus_class.uminus"/><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Abs_pos" altname="Abs_pos" path="int.Abs"><prems/><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="Groups.abs_class.abs"/><var name="x"><type name="Int.int"/></var></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="int.ComputerDivision" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/><require name="int.Abs"/></realized><param name="div" altname="div" path="int.ComputerDivision"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></param><param name="mod" altname="mod" path="int.ComputerDivision"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></param><lemma name="Div_mod" altname="Div_mod" path="int.ComputerDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Div_bound" altname="Div_bound" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="Orderings.ord_class.less_eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Mod_bound" altname="Mod_bound" path="int.ComputerDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="Orderings.ord_class.less"/><app><const name="Groups.uminus_class.uminus"/><app><const name="Groups.abs_class.abs"/><var name="y"><type name="Int.int"/></var></app></app><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="Orderings.ord_class.less"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.abs_class.abs"/><var name="y"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Div_sign_pos" altname="Div_sign_pos" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Div_sign_neg" altname="Div_sign_neg" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Mod_sign_pos" altname="Mod_sign_pos" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Mod_sign_neg" altname="Mod_sign_neg" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Rounds_toward_zero" altname="Rounds_toward_zero" path="int.ComputerDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.abs_class.abs"/><app><const name="Groups.times_class.times"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var></app></app><app><const name="Groups.abs_class.abs"/><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Div_1" altname="Div_1" path="int.ComputerDivision"><prems/><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><num val="1"><type name="Int.int"/></num></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Mod_1" altname="Mod_1" path="int.ComputerDivision"><prems/><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><num val="1"><type name="Int.int"/></num></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Div_inf" altname="Div_inf" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Mod_inf" altname="Mod_inf" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Div_mult" altname="Div_mult" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="z"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="z"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Mod_mult" altname="Mod_mult" path="int.ComputerDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="z"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="z"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="int.Div2" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/></realized><lemma name="div2" altname="div2" path="int.Div2"><prems/><concls><app><const name="HOL.Ex"/><abs name="y"><type name="Int.int"/><app><const name="HOL.disj"/><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.times_class.times"/><num val="2"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></app><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><num val="2"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><num val="1"><type name="Int.int"/></num></app></app></app></abs></app></concls></lemma></theory>
\ No newline at end of file
<theory name="int.EuclideanDivision" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/><require name="int.Abs"/></realized><param name="div" altname="div" path="int.EuclideanDivision"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></param><param name="mod" altname="mod" path="int.EuclideanDivision"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></param><lemma name="Div_mod" altname="Div_mod" path="int.EuclideanDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Mod_bound" altname="Mod_bound" path="int.EuclideanDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="Orderings.ord_class.less"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.abs_class.abs"/><var name="y"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Div_unique" altname="Div_unique" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.times_class.times"/><var name="q"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="q"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var></app></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="q"><type name="Int.int"/></var></app></concls></lemma><lemma name="Div_bound" altname="Div_bound" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app><app><const name="Orderings.ord_class.less_eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Mod_1" altname="Mod_1" path="int.EuclideanDivision"><prems/><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><num val="1"><type name="Int.int"/></num></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Div_1" altname="Div_1" path="int.EuclideanDivision"><prems/><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><num val="1"><type name="Int.int"/></num></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Div_inf" altname="Div_inf" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Div_inf_neg" altname="Div_inf_neg" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.uminus_class.uminus"/><var name="x"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.uminus_class.uminus"/><num val="1"><type name="Int.int"/></num></app></app></concls></lemma><lemma name="Mod_0" altname="Mod_0" path="int.EuclideanDivision"><prems><app><const name="HOL.Not"/><app><const name="HOL.eq"/><var name="y"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><num val="0"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Div_1_left" altname="Div_1_left" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Div_minus1_left" altname="Div_minus1_left" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.uminus_class.uminus"/><num val="1"><type name="Int.int"/></num></app><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.uminus_class.uminus"/><num val="1"><type name="Int.int"/></num></app></app></concls></lemma><lemma name="Mod_1_left" altname="Mod_1_left" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app><num val="1"><type name="Int.int"/></num></app></concls></lemma><lemma name="Mod_minus1_left" altname="Mod_minus1_left" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="1"><type name="Int.int"/></num><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.uminus_class.uminus"/><num val="1"><type name="Int.int"/></num></app><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.minus_class.minus"/><var name="y"><type name="Int.int"/></var><num val="1"><type name="Int.int"/></num></app></app></concls></lemma><lemma name="Div_mult" altname="Div_mult" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><app><const name="div" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="z"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Mod_mult" altname="Mod_mult" path="int.EuclideanDivision"><prems><app><const name="Orderings.ord_class.less"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="mod" local="true"><fun><type name="Int.int"/><type name="Int.int"/><type name="Int.int"/></fun></const><var name="z"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="int.Int" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/></realized><lemma name="infix_lseq_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="HOL.disj"/><app><const name="Orderings.ord_class.less"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Assoc" altname="Assoc" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Unit_def_l" altname="Unit_def_l" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><num val="0"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Unit_def_r" altname="Unit_def_r" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><num val="0"><type name="Int.int"/></num></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Inv_def_l" altname="Inv_def_l" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><app><const name="Groups.uminus_class.uminus"/><var name="x"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Inv_def_r" altname="Inv_def_r" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.uminus_class.uminus"/><var name="x"><type name="Int.int"/></var></app></app><num val="0"><type name="Int.int"/></num></app></concls></lemma><lemma name="Comm" altname="Comm" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Assoc1" altname="Assoc" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.times_class.times"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Mul_distr_l" altname="Mul_distr_l" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Mul_distr_r" altname="Mul_distr_r" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.times_class.times"/><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app><app><const name="Groups.times_class.times"/><var name="z"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="infix_mn_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.minus_class.minus"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><app><const name="Groups.uminus_class.uminus"/><var name="y"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Comm1" altname="Comm" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Unitary" altname="Unitary" path="int.Int"><prems/><concls><app><const name="HOL.eq"/><app><const name="Groups.times_class.times"/><num val="1"><type name="Int.int"/></num><var name="x"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="NonTrivialRing" altname="NonTrivialRing" path="int.Int"><prems/><concls><app><const name="HOL.Not"/><app><const name="HOL.eq"/><num val="0"><type name="Int.int"/></num><num val="1"><type name="Int.int"/></num></app></app></concls></lemma><lemma name="Refl" altname="Refl" path="int.Int"><prems/><concls><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Trans" altname="Trans" path="int.Int"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></concls></lemma><lemma name="Antisymm" altname="Antisymm" path="int.Int"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></concls></lemma><lemma name="Total" altname="Total" path="int.Int"><prems/><concls><app><const name="HOL.disj"/><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="ZeroLessOne" altname="ZeroLessOne" path="int.Int"><prems/><concls><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><num val="1"><type name="Int.int"/></num></app></concls></lemma><lemma name="CompatOrderAdd" altname="CompatOrderAdd" path="int.Int"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.plus_class.plus"/><var name="x"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app><app><const name="Groups.plus_class.plus"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="CompatOrderMult" altname="CompatOrderMult" path="int.Int"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.less_eq"/><num val="0"><type name="Int.int"/></num><var name="z"><type name="Int.int"/></var></app></prems><concls><app><const name="Orderings.ord_class.less_eq"/><app><const name="Groups.times_class.times"/><var name="x"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app><app><const name="Groups.times_class.times"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></concls></lemma></theory>
\ No newline at end of file
<theory name="int.MinMax" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/></realized><lemma name="min_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.min"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="HOL.If"/><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="max_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.max"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="HOL.If"/><app><const name="Orderings.ord_class.less_eq"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Min_r" altname="Min_r" path="int.MinMax"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.min"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="y"><type name="Int.int"/></var></app></concls></lemma><lemma name="Max_l" altname="Max_l" path="int.MinMax"><prems><app><const name="Orderings.ord_class.less_eq"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></prems><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.max"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="x"><type name="Int.int"/></var></app></concls></lemma><lemma name="Min_comm" altname="Min_comm" path="int.MinMax"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.min"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.min"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Max_comm" altname="Max_comm" path="int.MinMax"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.max"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.max"/><var name="y"><type name="Int.int"/></var><var name="x"><type name="Int.int"/></var></app></app></concls></lemma><lemma name="Min_assoc" altname="Min_assoc" path="int.MinMax"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.min"/><app><const name="Orderings.ord_class.min"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.min"/><var name="x"><type name="Int.int"/></var><app><const name="Orderings.ord_class.min"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></app></concls></lemma><lemma name="Max_assoc" altname="Max_assoc" path="int.MinMax"><prems/><concls><app><const name="HOL.eq"/><app><const name="Orderings.ord_class.max"/><app><const name="Orderings.ord_class.max"/><var name="x"><type name="Int.int"/></var><var name="y"><type name="Int.int"/></var></app><var name="z"><type name="Int.int"/></var></app><app><const name="Orderings.ord_class.max"/><var name="x"><type name="Int.int"/></var><app><const name="Orderings.ord_class.max"/><var name="y"><type name="Int.int"/></var><var name="z"><type name="Int.int"/></var></app></app></app></concls></lemma></theory>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment